ETF Benchmark Indices
ETF benchmark index directory with publisher, publication date, base date, base points, and adjustment cycle. Refreshed every Monday.
GET /v2/etf/indicesParameters
symbolstringNoIndex code, e.g. 000300.SHpub_datestringNoPublication date, YYYYMMDDbase_datestringNoBase date, YYYYMMDDResponse Fields
symbolstringIndex codeindx_namestringFull index nameindx_csnamestringShort index namepub_party_namestringIndex publisherpub_datestringPublication date, YYYYMMDDbase_datestringBase date, YYYYMMDDbpnumberBase pointsadj_circlestringConstituent adjustment cycleAPI Example
curl -H "X-API-Key: YOUR_KEY" \
"https://asharehub.com/v2/etf/indices?symbol=000300.SH"from asharehub import AShareHub
client = AShareHub(api_key="YOUR_KEY")
df = client.etf_indices(symbol="000300.SH")
print(df.head())Sample Data
| 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 with daily ETF shares and assets. 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.
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.