Skip to content

第 10 讲:买多少——先从等权开始

本讲要点

权重是明确规则;入门先把等权做对,再谈更复杂的分法。


1. 轮动已决定「持有谁」,本讲只改「各持多少」

第 8–9 讲固定了:

  • Universe:四只 ETF
  • 信号:月末按上月收益排序,选出动量最强的标的

第 8 讲默认在 Top-2 内 等权(各 50%)。本讲保持选人结果的逻辑不变,只替换权重函数,观察结论如何变。

模块本讲是否改动
股票池不改
谁进 Top不改(仍按月动量排序)
各买多少只改这里

2. 等权是什么

对当期选中的 (N) 只标的,每只权重 (1/N)。

  • Top-2 等权 → 各 50%
  • 平均 HHI(赫芬达尔指数,(\sum w_i^2))= 0.5,分散度固定、规则透明

入门先用等权,因为:

  1. 零额外参数:不引入波动率估计、优化器与约束。
  2. 可复核:他人按同一名单能得到同一权重。
  3. 作基准:任何「更聪明」的加权,都应先证明优于等权,而不是只优于「不交易」。

风险平价(按风险贡献分仓)等方案,解决的是「高波动品种权重过大」;本讲点到为止,不在入门阶段展开优化器。


3. 三种权重规则(信号相同)

方案规则集中度
等权 Top-2前两名各 50%HHI = 0.50
全仓第 1 名只持有动量第一,100%HHI = 1.00
2/3 + 1/3第一名 2/3,第二名 1/3HHI ≈ 0.56
python
def weights_equal(ranked):
    picks = ranked.head(2).index
    return {p: 1 / len(picks) for p in picks}

def weights_top1(ranked):
    return {ranked.index[0]: 1.0}

def weights_two_thirds(ranked):
    a, b = ranked.head(2).index
    return {a: 2 / 3, b: 1 / 3}

脚本:easy-quant/code/10_position_sizing.py


4. 运行结果

固定窗口 2021-01-012026-03-04

text
窗口: 2021-01-01 → 2026-03-04
信号固定: 月末按上月收益排序选人;本讲只改「各买多少」

等权 Top-2: 累计 63.56%  最大回撤 -24.14%  调仓月数 62  平均HHI 0.500
全仓第 1 名: 累计 112.46%  最大回撤 -15.29%  调仓月数 62  平均HHI 1.000
2/3 + 1/3: 累计 79.66%  最大回撤 -18.11%  调仓月数 62  平均HHI 0.556

相对等权 Top-2:
  等权 Top-2: +0.00%
  全仓第 1 名: +48.90%
  2/3 + 1/3: +16.10%
方案累计收益最大回撤平均 HHI
等权 Top-263.56%−24.14%0.500
2/3 + 1/379.66%−18.11%0.556
全仓第 1 名112.46%−15.29%1.000

同一信号下的权重对照

读法:

  • 本窗口内,更集中的权重赚得更多——这很容易诱惑人改成「永远全仓第一名」。
  • 但第 7 讲的教训仍适用:这是样本内路径;集中持仓换一段行情可能回撤更大、或收益反转。
  • 等权未必样本内最优,却是默认研究基准:先报告等权,再声明任何倾斜加权的增量来自何处。
  • HHI 把「有多集中」写成数字,避免口头说「分散」却实际近乎单票。

5. 研究上怎么用等权

建议的写作顺序:

  1. 固定 Universe 与信号
  2. 先给出等权 Top-N 结果(与第 8 讲对齐)
  3. 若试验其他权重,单独成表,并做换窗 / 样本外,而不是只展示最好看的一种

权重本身也是可调结构:Top-N、倾斜比例、是否风险平价,都会带来过拟合空间。


6. 本讲小结

  • 「买多少」必须是规则;入门默认 等权
  • 同一信号下,权重可显著改变收益与回撤
  • 样本内更优的集中持仓,不等于可外推的更优规则

B 单元至此:轮动(8)→ 池子(9)→ 权重(10)。下一讲讨论多久再平衡一次,以及频率如何与成本缠在一起。

上一讲:Universe · 下一讲:再平衡 · 目录