基本面指数加权 vs 市值加权:为什么「不按价格配」反而赚更多
市值加权被动指数有个隐藏缺陷:它自动超配被高估、近期上涨的股票。基本面指数(RAFI,Arnott 2005)改用销售额、现金流、账面值、股息等「真实经济规模」而非价格来定权重,等于每年自动「低买高卖」。本文从零合成 50 只股票(真实基本面增长 + 均值回复的错误定价),对比两种加权:基本面加权终值 43.31x(年化 13.38%)跑赢市值加权 26.80x(年化 11.58%),且换手率更低、更抗集中度。附完整 Python 与五类真实陷阱(中阶)。
被动投资的第一直觉是「买指数就完事了」。但「指数怎么加权」这件事,远比你想的重要。最常见的市值加权(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 与五类真实陷阱(中阶)。

一、市值加权到底「加权」了什么#
市值加权指数里,股票 i 的权重是 。这里 是股价,但你买的是「价格」。如果某只股票被市场炒高、价格偏离其真实价值一倍,市值加权会让你持有两倍于它经济份额的仓位。
问题在:价格 可以写成 其中 是「真实基本面」(经济规模、盈利能力),而 是市场对它的错误定价乘数(m>1 被高估,m<1 被低估,长期均值回复到 1)。市值加权 ∝ ,于是权重同时被「真实价值」和「错误定价」推着走——被高估的股票,权重被错误定价额外加码。
基本面加权则干脆去掉 ,只按 定权重:。价格涨不涨、市场疯不疯,都不影响你的仓位。这等于:你永远按「企业真实大小」配置,而不是按「市场认为它多大」配置。
二、从零合成「真实价值 + 错误定价」的股票宇宙#
我们造 50 只股票,每只都有一条缓慢增长的基本面 (真实经济价值),价格 ,其中 是均值回复的错误定价(OU 过程,均值 1,意味着贵了会回归、便宜了会回归)。
import numpy as np
N = 50
T = 360 # 月
def gen_panel(seed=20260722):
rng = np.random.default_rng(seed)
g = rng.normal(0.006, 0.004, N) # 每只基本面漂移
F = np.zeros((T + 1, N)); F[0] = rng.uniform(0.8, 1.2, N)
kappa = rng.uniform(0.05, 0.15, N) # 错误定价回复速度
m = np.zeros((T + 1, N)); m[0] = 1.0 + rng.normal(0, 0.25, N)
for t in range(1, T + 1):
F[t] = F[t-1] * (1 + g) * np.exp(rng.normal(0, 0.01, N))
m[t] = m[t-1] + kappa*(1.0 - m[t-1]) + rng.normal(0, 0.06, N)
m[t] = np.clip(m[t], 0.5, 2.0)
P = F * m
R = P[1:] / P[:-1] - 1.0
return F[:-1], P[:-1], Rpython关键在于:收益的来源是价格相对基本面的均值回复。一只被高估(m>1)的股票,之后 m 回归 1 会拖累它的收益;一只被低估(m<1)的,回归会贡献额外收益。市值加权因为超配贵股,会吃这个亏;基本面加权因为权重锚在 F,反而「被动捡便宜」。
三、两种加权权重 + 年度再平衡回测#
权重计算很简单:
def weights(F, P):
w_cap = P / P.sum(1, keepdims=True) # 市值加权:∝ 价格
w_fund = F / F.sum(1, keepdims=True) # 基本面加权:∝ 真实价值
return w_cap, w_fund
def backtest(R, w_cap, w_fund, rebal=12):
nav_cap = np.ones(T); nav_fund = np.ones(T)
wc, wf = w_cap[0].copy(), w_fund[0].copy()
for t in range(1, T):
nav_cap[t] = nav_cap[t-1] * (1 + R[t-1] @ wc)
nav_fund[t] = nav_fund[t-1] * (1 + R[t-1] @ wf)
wc = wc * (1 + R[t-1]); wf = wf * (1 + R[t-1])
wc /= wc.sum(); wf /= wf.sum()
if t % rebal == 0: # 年度再平衡回目标权重
wc = w_cap[t].copy(); wf = w_fund[t].copy()
return nav_cap, nav_fundpython回测结果(见封面图):
| 策略 | 终值 | 年化 |
|---|---|---|
| 市值加权 | 26.80x | 11.58% |
| 基本面加权 | 43.31x | 13.38% |
| 超额(基本面 − 市值) | +61.6% 累计 | +1.80% 年化 |
读这张图:基本面加权一路在市值加权上方(对数轴)。超额不是来自某次神操作,而是结构性地、每年自动地低配贵股、高配便宜股累积出来的。这正是 RAFI 论文的核心 claim——它不是「择时」,是「换了一种更聪明的加权方式」。
四、集中度与换手率:基本面加权反而更省#
很多人以为基本面加权换手率更高(因为要年年调回基本面权重)。在我们的合成里恰恰相反:

| 指标 | 市值加权 | 基本面加权 |
|---|---|---|
| 平均 HHI 集中度 | 5.65 | 5.37 |
| 年度再平衡换手率 | 2.4% | 0.4% |
原因很直观:市值加权里,一旦某只股票大涨,它的价格权重立刻膨胀,月间漂移就把权重越推越偏,年度再平衡时要大动干戈扳回;而基本面权重锚在缓慢增长的基本面 F 上,目标权重年年变化很温和,所以再平衡换手反而小。更低的换手 = 更低的交易成本,这对被动策略是实打实的增益。
五、估值倾斜:权重到底跟价格走不走#
把「估值 P/F(>1 偏贵)」和权重画在一起,差异最刺眼:

| 权重-估值相关 | 市值加权 | 基本面加权 |
|---|---|---|
| 相关系数 | 0.079 | 0.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)的聪明之处,是意识到「价格会骗人,但企业的真实经济规模骗人慢得多」,于是改用基本面定权重,等于每年自动低买高卖、且换手更低。
要点:
- 市值加权权重 ∝ ,自动超配贵股;
- 基本面加权权重 ∝ ,与价格脱钩,被动复制价值倾斜;
- 本文合成:基本面加权年化 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,均直接打印在脚本输出里。