# ETF Benchmark Indices

ETF benchmark index directory with publisher, publication date, base date, base points, and adjustment cycle. Refreshed every Monday.

`GET /v2/etf/indices`

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `symbol` | string | No | Index code, e.g. 000300.SH |
| `pub_date` | string | No | Publication date, YYYYMMDD |
| `base_date` | string | No | Base date, YYYYMMDD |

## Response Fields

| Field | Type | Description |
| --- | --- | --- |
| `symbol` | string | Index code |
| `indx_name` | string | Full index name |
| `indx_csname` | string | Short index name |
| `pub_party_name` | string | Index publisher |
| `pub_date` | string | Publication date, YYYYMMDD |
| `base_date` | string | Base date, YYYYMMDD |
| `bp` | number | Base points |
| `adj_circle` | string | Constituent adjustment cycle |

## API Example

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())
```

## Sample Data

returns a 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 | 半年 |

## China ETF index mapping and AUM data workflow

For ETFs listed in Shanghai or Shenzhen, combine the [ETF directory](https://asharehub.com/en/docs/etf-basic) with [daily ETF shares and assets](https://asharehub.com/en/docs/etf-share-size). Join both responses on the ETF's `symbol`. The directory's `index_symbol` identifies its tracked index. To retrieve the index publisher, base date, or other benchmark metadata, pass that value as `symbol` to `etf_indices()` on this page.

This example requests asset-size records for `510300.SH` from July 30 through August 3, 2026. `total_size` is reported in CNY 10,000; multiply by 10,000 to calculate `aum_cny` in yuan. `total_share` is measured in 10,000 fund units and is not AUM.

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))
```

Preserve missing asset sizes or index mappings as missing. The directory is a current reference: joining it to past asset records does not prove that the ETF tracked the same index on every historical date. Historical benchmark changes require effective-date records. Align asset observations by `trade_date` before comparing funds.
