# ETF 跟踪指数

ETF 基准指数目录，提供指数名称、发布机构、发布日期、基日和调整周期等资料，每周一刷新。

`GET /v2/etf/indices`

## 请求参数

| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `symbol` | string | 否 | 指数代码，如 000300.SH |
| `pub_date` | string | 否 | 指数发布日期，YYYYMMDD |
| `base_date` | string | 否 | 指数基日，YYYYMMDD |

## 返回字段

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `symbol` | string | 指数代码 |
| `indx_name` | string | 指数全称 |
| `indx_csname` | string | 指数简称 |
| `pub_party_name` | string | 指数发布机构 |
| `pub_date` | string | 发布日期，YYYYMMDD |
| `base_date` | string | 基日，YYYYMMDD |
| `bp` | number | 基点 |
| `adj_circle` | string | 成分调整周期 |

## 接口示例

cURL

```
curl -H "X-API-Key: YOUR_KEY" \
  "https://asharehub.com/v2/etf/indices?symbol=000300.SH"
```

Python SDK

```
from asharehub import AShareHub

client = AShareHub(api_key="YOUR_KEY")
df = client.etf_indices(symbol="000300.SH")
print(df.head())
```

## 数据样例

返回 pandas.DataFrame

| symbol | indx_name | indx_csname | pub_party_name | pub_date | base_date | bp | adj_circle |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 000300.SH | 沪深300指数 | 沪深300 | 中证指数有限公司、上海证券交易所 | 20050408 | 20041231 | 1000 | 半年 |
| 000852.SH | 中证1000指数 | 中证1000 | 中证指数有限公司 | 20141017 | 20041231 | 1000 | 半年 |
| 000905.SH | 中证小盘500指数 | 中证500 | 中证指数有限公司 | 20070115 | 20041231 | 1000 | 半年 |

## 关联 ETF、跟踪指数与资产规模（AUM）

查询中国沪深交易所上市 ETF 的指数映射和 AUM，需要组合 [ETF 基础信息](https://asharehub.com/zh/docs/etf-basic) 与 [ETF 份额规模](https://asharehub.com/zh/docs/etf-share-size)。以 ETF 的 `symbol` 关联两组记录；基础信息中的 `index_symbol` 指向跟踪指数。若需指数发布方、基日等资料，将这个值作为 `symbol` 调用本页的 `etf_indices()`。

下面查询 `510300.SH` 在 2026 年 7 月 30 日至 8 月 3 日的规模记录。`total_size` 的单位为万元，乘以 10,000 得到人民币元口径的 `aum_cny`；不要把单位为万份的 `total_share` 当作资产规模。

Python SDK

```
import pandas as pd
from asharehub import AShareHub

with AShareHub(api_key="YOUR_KEY") as client:
    reference = client.etf_basic(symbol="510300.SH")
    daily = client.etf_share_size(
        symbol="510300.SH",
        start_date="20260730",
        end_date="20260803",
    )

if reference.empty or daily.empty:
    print("No ETF reference or size records for this request.")
else:
    mapping = reference[["symbol", "index_symbol", "index_name"]]
    result = daily.merge(
        mapping, on="symbol", how="left", validate="many_to_one"
    ).sort_values(["symbol", "trade_date"])
    result["aum_cny"] = pd.to_numeric(result["total_size"]) * 10000
    columns = [
        "symbol", "index_symbol", "trade_date", "total_size", "aum_cny"
    ]
    print(result[columns].to_string(index=False))
```

缺失的规模或指数映射应保持为空。基础信息是当前目录，以上关联不能证明 ETF 在每个历史日期都跟踪同一指数；研究历史换基准情况时需要额外的生效日期记录。规模数据按 `trade_date` 对齐，不能把不同日期的记录当作同一时点比较。
