halo 的技术博客

返回

被动投资的第一直觉是「买指数就完事了」。但「指数怎么加权」这件事,远比你想的重要。最常见的市值加权(cap-weighted),本质是让价格决定你的仓位——哪只股票涨得多,你就自动多配它。这听起来中性,实则藏着一个反直觉的陷阱:市值加权会系统性地超配被高估、近期过热的大块头。

结论先放这:基本面指数(Fundamental Index,Arnott-Hsu-West 2005,即 RAFI 思路)改用销售额、现金流、账面价值、股息、员工数这些「真实经济规模」来定权重,而不是用价格。 因为价格会偏离基本面(被高估/低估),按基本面加权就等于每年自动「低买高卖」——跌出基本面的便宜股权重上升,涨过头的贵股权重下降。本文用纯 numpy 从零合成 50 只股票(真实基本面缓慢增长 + 围绕基本面的均值回复错误定价),对比两种加权:基本面加权终值 43.31x(年化 13.38%)跑赢市值加权 26.80x(年化 11.58%),超额约 1.8% 年化,且换手率更低(0.4% vs 2.4%)、集中度更分散。附完整 Python 与五类真实陷阱(中阶)。

市值加权 vs 基本面加权累计净值(对数轴):基本面加权终值更高

一、市值加权到底「加权」了什么#

市值加权指数里,股票 i 的权重是 wicap=Pi/jPjw_i^{cap} = P_i / \sum_j P_j。这里 PiP_i 是股价,但你买的是「价格」。如果某只股票被市场炒高、价格偏离其真实价值一倍,市值加权会让你持有两倍于它经济份额的仓位

问题在:价格 PP 可以写成 P=F×mP = F \times m 其中 FF 是「真实基本面」(经济规模、盈利能力),而 mm 是市场对它的错误定价乘数(m>1 被高估,m<1 被低估,长期均值回复到 1)。市值加权 ∝ P=F×mP = F \times m,于是权重同时被「真实价值」和「错误定价」推着走——被高估的股票,权重被错误定价额外加码。

基本面加权则干脆去掉 mm,只按 FF 定权重:wifund=Fi/jFjw_i^{fund} = F_i / \sum_j F_j。价格涨不涨、市场疯不疯,都不影响你的仓位。这等于:你永远按「企业真实大小」配置,而不是按「市场认为它多大」配置。


二、从零合成「真实价值 + 错误定价」的股票宇宙#

我们造 50 只股票,每只都有一条缓慢增长的基本面 FtF_t(真实经济价值),价格 Pt=Ft×mtP_t = F_t \times m_t,其中 mtm_t 是均值回复的错误定价(OU 过程,均值 1,意味着贵了会回归、便宜了会回归)。

关键在于:收益的来源是价格相对基本面的均值回复。一只被高估(m>1)的股票,之后 m 回归 1 会拖累它的收益;一只被低估(m<1)的,回归会贡献额外收益。市值加权因为超配贵股,会吃这个亏;基本面加权因为权重锚在 F,反而「被动捡便宜」。


三、两种加权权重 + 年度再平衡回测#

权重计算很简单:

回测结果(见封面图):

策略终值年化
市值加权26.80x11.58%
基本面加权43.31x13.38%
超额(基本面 − 市值)+61.6% 累计+1.80% 年化

读这张图:基本面加权一路在市值加权上方(对数轴)。超额不是来自某次神操作,而是结构性地、每年自动地低配贵股、高配便宜股累积出来的。这正是 RAFI 论文的核心 claim——它不是「择时」,是「换了一种更聪明的加权方式」。


四、集中度与换手率:基本面加权反而更省#

很多人以为基本面加权换手率更高(因为要年年调回基本面权重)。在我们的合成里恰恰相反:

市值加权更集中(被大块头绑架)、换手率更高;基本面加权锚定慢变量更稳

指标市值加权基本面加权
平均 HHI 集中度5.655.37
年度再平衡换手率2.4%0.4%

原因很直观:市值加权里,一旦某只股票大涨,它的价格权重立刻膨胀,月间漂移就把权重越推越偏,年度再平衡时要大动干戈扳回;而基本面权重锚在缓慢增长的基本面 F 上,目标权重年年变化很温和,所以再平衡换手反而小。更低的换手 = 更低的交易成本,这对被动策略是实打实的增益。


五、估值倾斜:权重到底跟价格走不走#

把「估值 P/F(>1 偏贵)」和权重画在一起,差异最刺眼:

市值加权权重追涨贵股、基本面加权权重与估值脱钩

权重-估值相关市值加权基本面加权
相关系数0.0790.014

市值加权里,权重和估值(P/F)正相关——越贵的股票权重越大(追涨);基本面加权的权重几乎和估值无关(corr≈0.01),因为它压根不看价格。这就是基本面加权「价值倾斜」的本质:你不是主动做价值因子,而是用「不看价格」这件事,被动地复制了一个价值 tilted 的组合。

严谨点说:这里市值加权的估值相关只有 0.08,因为合成里 m 的波动是温和的(OU,σ≈0.06/月)。真实市场里(尤其dot-com 时期)价格泡沫会让这个相关高得多,基本面加权的优势也更夸张。本文用温和设定,是给一个保守的下界演示。


六、五类真实陷阱(不拆穿就是自欺)#

陷阱 1:把「价值倾斜」当成免费午餐(最隐蔽)。 基本面加权跑赢,本质是它被动地做多价值、做空成长。所以它不是「无风险的指数升级」,而是「承担了价值因子暴露」。当价值因子长期跑输(如 2017–2020 美股成长牛),基本面加权会跑输市值加权。对策:把基本面指数当成「带价值 tilt 的被动」,而不是「稳赢的被动」。

陷阱 2:基本面的「再平衡漂移」风险。 基本面权重用的是「滞后财报」的基本面(去年销售额、去年账面值)。财报公布滞后 + 重述,会让目标权重本身带噪声。对策:用最新可得财报、做季度滚动更新,但注意这会增加换手。

陷阱 3:幸存者偏差与基本面口径。 用「销售额/现金流/账面值/股息/员工数」五种基本面做几何平均(RAFI 原始做法)比单一指标更稳,但只用存活公司会系统性高估(退市的公司基本面也消失)。对策:用含退市点的 universe,或接受这是「存活公司」的被动策略。

陷阱 4:低流动性陷阱。 基本面加权天然偏向「便宜的大块头」,但其中一部分是低流动性、小市值的「价值陷阱」股。回测用收盘价、零冲击成本,会高估真实可建仓的收益。对策:加流动性门槛(如仅用沪深 300 / 中证 800 成分),收益会打折但可交易。

陷阱 5:本文收益来自「均值回复」设定(自证)。 合成里 m 被强制均值回复到 1,所以基本面加权必胜——这是演示前提不是市场规律。真实市场里错误定价不一定快速回复(可能有长期动量、可能有 regime)。对策:把本文当「机制演示」,真实 alpha 要用样本外、跨周期、含成本的数据验证,别把合成的 1.8% 年化当成必赚。


七、小结#

市值加权指数不是「中立被动」的代名词——它悄悄把你的仓位交给了价格。基本面指数(RAFI)的聪明之处,是意识到「价格会骗人,但企业的真实经济规模骗人慢得多」,于是改用基本面定权重,等于每年自动低买高卖、且换手更低

要点:

  • 市值加权权重 ∝ P=F×mP = F \times m,自动超配贵股;
  • 基本面加权权重 ∝ FF,与价格脱钩,被动复制价值倾斜;
  • 本文合成:基本面加权年化 13.38% vs 市值 11.58%,换手 0.4% vs 2.4%;
  • 但它是「带价值暴露的被动」,价值因子跑输时它也跑输——不是稳赢。

一句话:被动投资问「买什么」之前,先问「怎么加权」——加权方式决定了你到底是跟着价格走,还是跟着价值走。

代码与数据完全可复现:本文所有图由 gen_fundamental_weighting.py 生成(纯 numpy,无 sklearn/torch 依赖)。市值加权终值 26.80x(年化 11.58%)、基本面加权 43.31x(年化 13.38%)、超额 +1.80% 年化;平均 HHI 5.65 vs 5.37;年度换手 2.4% vs 0.4%;权重-估值相关 0.079 vs 0.014,均直接打印在脚本输出里。

基本面指数加权 vs 市值加权:为什么「不按价格配」反而赚更多
https://blog.halo26812.eu.org/blog/fundamental-index-weighting
Author halo
Published at 2026年7月22日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨