# Shanghai ETF Creation/Redemption Basket

Daily Shanghai Stock Exchange ETF creation and redemption basket, including constituent quantities and cash-substitution attributes.

`GET /v2/etf/basket/sh`

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `symbol` | string | No | ETF code, e.g. 510300.SH |
| `con_symbol` | string | No | Constituent security code |
| `start_date` | string | No | Start date, YYYYMMDD |
| `end_date` | string | No | End date, YYYYMMDD |
| `trade_date` | string | No | Trading date, YYYYMMDD (single-day query) |
| `exchange` | string | No | Exchange code |

## Response Fields

| Field | Type | Description |
| --- | --- | --- |
| `trade_date` | string | Trading date, YYYYMMDD |
| `symbol` | string | ETF code |
| `con_symbol` | string | Constituent security code |
| `con_name` | string | Constituent security name |
| `qty` | integer | Constituent quantity |
| `sub_flag` | string | Cash-substitution flag |
| `cpr` | number | Cash-substitution premium rate |
| `rdr` | number | Redemption cash-substitution discount rate |
| `sca` | number | Cash-substitution amount |
| `exchange` | string | Exchange |

## API Example

cURL

```
curl -H "X-API-Key: YOUR_KEY" \
  "https://asharehub.com/v2/etf/basket/sh?symbol=510300.SH&trade_date=20260731"
```

Python SDK

```
from asharehub import AShareHub

client = AShareHub(api_key="YOUR_KEY")
df = client.etf_sh_basket(symbol="510300.SH", trade_date="20260731")
print(df.head())
```

## Sample Data

returns a pandas.DataFrame

| trade_date | symbol | con_symbol | con_name | qty | sub_flag | cpr | rdr | sca | exchange |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 20260731 | 510300.SH | 600519.SH | 贵州茅台 | 300 | 1 | 0.10 | 0.10 | — | SSE |
