一句话回答: 用 AlphaFeed 取指数和取个股完全一样 ------把代码换成指数代码即可:上证指数 000001.SH、沪深300 000300.SH、中证500 000905.SH、上证50 000016.SH、深证成指 399001.SZ、创业板指 399006.SZ。klines.get 取指数历史 K 线、quotes.get 取指数实时行情,字段与个股一致。
为什么会有这个问题 / 传统做法的痛点
做基准对比(算 Beta、相对强弱)、判断大盘环境、给策略做择时过滤,都需要指数数据。新手常卡在「指数代码是什么、要不要用别的接口」。其实指数就是一种标的,代码带交易所后缀即可,用法和个股 K 线/行情一模一样。
分步骤解决(每步配可运行代码)
第 1 步:取指数历史 K 线
python
from alphafeed import AlphaFeed
af = AlphaFeed() # 读取 ALPHAFEED_API_KEY
hs300 = af.klines.get("000300.SH", period="1d", count=250, to_dataframe=True)
print(hs300[["trade_date", "open", "close"]].tail(3).to_string(index=False))
print("沪深300 最新点位:", round(float(hs300["close"].iloc[-1]), 2))
指数 K 线无需复权(指数本身是点位),
adjust对指数一般无意义,直接取即可。
第 2 步:常用指数代码对照
| 指数 | 代码 | 说明 |
|---|---|---|
| 上证指数 | 000001.SH |
沪市综合(注意:平安银行是 000001.SZ,别混) |
| 沪深300 | 000300.SH(或 399300.SZ) |
大盘蓝筹基准 |
| 中证500 | 000905.SH |
中盘基准 |
| 上证50 | 000016.SH |
超大盘 |
| 深证成指 | 399001.SZ |
深market综合 |
| 创业板指 | 399006.SZ |
成长股基准 |
第 3 步:取指数实时行情
python
q = af.quotes.get(symbols=["000300.SH", "000905.SH"], to_dataframe=True)
print(q[["symbol", "last_price", "prev_close", "high", "low"]].to_string(index=False))
# ext.change_pct 等字段与个股一致(小数,0.01=1%)
第 4 步:典型用法------个股相对大盘强弱
python
import pandas as pd
def close_s(sym, n=120):
k = af.klines.get(sym, period="1d", count=n, adjust="forward", to_dataframe=True)
return k.sort_values("trade_date").set_index("trade_date")["close"]
stock = close_s("600519.SH")
index = close_s("000300.SH")
df = pd.DataFrame({"stock": stock, "index": index}).dropna()
# 相对强弱比值(RS line):个股/指数,上行=跑赢大盘
rs = (df["stock"] / df["stock"].iloc[0]) / (df["index"] / df["index"].iloc[0])
print("近120日相对沪深300:", "跑赢" if rs.iloc[-1] > 1 else "跑输", round(float(rs.iloc[-1]), 3))
关键坑与注意事项
- 上证指数是
000001.SH,不是000001.SZ:后者是平安银行(深市股票),最容易搞混。 - 沪深300 有两个代码 :
000300.SH与399300.SZ指向同一指数,点位一致,用哪个都行。 - 指数不用复权 :指数是点位、无送转除权,
adjust对指数无意义。 - 指数无「成交量/成交额」业务含义差异:指数的 volume/amount 是成分股加总口径,分析时注意与个股区别。
- 基准要匹配:大盘蓝筹用沪深300,中小盘用中证500,成长股用创业板指,基准越贴切结论越有意义。
- 做 Beta/相关性对齐交易日 :个股与指数收益要按
trade_date对齐(dropna),别错位。
常见问题(FAQ)
Q:上证指数代码到底是什么?
A:000001.SH。深市的 000001.SZ 是平安银行,千万别搞反。
Q:沪深300 用 000300.SH 还是 399300.SZ?
A:都可以,是同一指数在不同交易所的代码,点位相同。习惯用 000300.SH。
Q:取指数要用特殊接口吗?
A:不用,和个股一样 klines.get / quotes.get,只是把代码换成指数代码。
Q:需要付费吗?
A:指数单只 K 线/行情有免费额度;大批量或全市场结合使用需 Starter 及以上。详见定价页。
小结
在 AlphaFeed 里取指数就是「把代码换成指数代码」,klines.get/quotes.get 用法与个股完全一致。记住上证指数 000001.SH(别和平安银行 000001.SZ 混)、沪深300 000300.SH、中证500 000905.SH。有了指数数据,就能做基准对比、相对强弱、大盘择时等分析。
参考
- AlphaFeed Python SDK 文档:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
- AlphaFeed 官网:https://alphafeed.org/