
一句话回答自建指数的本质是给一篮子成分股按某种权重加权求和再归一到一个基点。用 AlphaFeed 的instruments.batch取每只票的流通股本、klines.batch取前复权收盘价用「Σ(价格 × 流通股本)」做流通市值加权指数或用等权方式做对比几十行就能给你的自选股组合造一条专属指数。为什么会有这个问题 / 传统做法的痛点想跟踪一个自选股组合、行业篮子或策略持仓的整体走势时直接看个股很乱需要一条合成指数。但自己算常卡在权重从哪来市值加权要用流通股本免费源往往拿不到干净的股本数据复权不统一成分股各自除权除息不用复权价算出来的指数会有假跳空成分对齐不同票停牌/上市时间不同日期不对齐会算错。AlphaFeed 把股本instruments.ext.float_shares和前复权 K 线放在同一套接口里口径一致、可复现。分步骤解决每步配可运行代码第 1 步取成分股的流通股本代码语言pythonAI代码解释from alphafeed import AlphaFeed import pandas as pd af AlphaFeed(api_keyyour-api-key) # 或 export ALPHAFEED_API_KEY 后 AlphaFeed() symbols [600519.SH, 000001.SZ, 601398.SH, 600036.SH, 000858.SZ] insts af.instruments.batch(symbols) # 返回 list[dict] float_shares {} for it in insts: ext it.get(ext, {}) or {} float_shares[it[symbol]] float(ext.get(float_shares) or 0.0) print(float_shares)instruments的ext字段自建指数常用字段含义备注float_shares流通股本股流通市值加权用它total_shares总股本股总市值加权可用它listing_date上市日期判断成分是否在样本期内tick_size最小变动价位—流通市值 价格 × 流通股本。指数只关心相对变化所以用哪种股本口径要和你的目的一致跟踪流通盘用float_shares。第 2 步取前复权收盘价并对齐代码语言pythonAI代码解释bt af.klines.batch(symbols, period1d, count250, adjustforward, to_dataframeTrue) closes {} for sym, df in bt.items(): if df is None or df.empty: continue s df.sort_values(trade_date).set_index(trade_date)[close] closes[sym] s px pd.DataFrame(closes).dropna() # 对齐交易日去掉任一停牌日第 3 步计算流通市值加权指数并与等权对比代码语言pythonAI代码解释def build_index(px, float_shares, base1000.0): w pd.Series({s: float_shares.get(s, 0.0) for s in px.columns}) cap (px * w).sum(axis1) # 每日总流通市值 cap_weighted cap / cap.iloc[0] * base # 归一到基点 base equal_weighted (px / px.iloc[0]).mean(axis1) * base return pd.DataFrame({cap_weighted: cap_weighted, equal_weighted: equal_weighted}) idx build_index(px, float_shares, base1000.0) print(idx.tail(3)) # 例如基点1000 # cap_weighted equal_weighted # 2026-09-11 969.78 923.50两条指数的差异很有信息量市值加权被大盘股主导如工商银行流通盘极大等权更能反映平均个股表现。上例里等权指数明显更低说明样本期内小票整体弱于权重股。关键坑与注意事项必须前复权成分股要用adjustforward否则除权日会在指数里制造假跳空。基点归一指数只有相对意义务必用第一天做分母归一到基点如 1000不同基点只影响绝对数值不影响形态。成分对齐dropna()会丢掉任一成分停牌的交易日成分很多时可考虑前值填充但要注意停牌期用旧价可能失真。权重是否随时间变本文用固定流通股本近似。严格的市值加权指数股本会随增发/回购变化长周期要考虑用当期股本否则会有偏差。别把它当官方指数这是自定义篮子指数用于跟踪你自己的组合/观察不等于中证/沪深官方指数的编制方法后者有分级靠档、自由流通调整等规则。常见问题FAQQ流通市值加权和总市值加权用哪个A跟踪可交易盘的表现用流通股本float_shares想反映公司整体规模用总股本total_shares。两者代码只差取哪个字段。Q为什么我的自建指数和某只权重股几乎一模一样A因为市值加权下超大盘股权重过高会主导指数。想看平均个股就用等权或对权重做上限capping。Q能加入新股/剔除退市股做动态成分吗A可以但要按日期维护成分名单并处理进出场时点属于指数编制的进阶话题本文先给固定成分的最简版本。Q需要付费吗A少量成分股的 K 线与 instruments 在免费额度内即可试跑大篮子/全市场批量取数需 Starter 及以上详见 AlphaFeed 定价页。