Appearance
第 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,分散度固定、规则透明
入门先用等权,因为:
- 零额外参数:不引入波动率估计、优化器与约束。
- 可复核:他人按同一名单能得到同一权重。
- 作基准:任何「更聪明」的加权,都应先证明优于等权,而不是只优于「不交易」。
风险平价(按风险贡献分仓)等方案,解决的是「高波动品种权重过大」;本讲点到为止,不在入门阶段展开优化器。
3. 三种权重规则(信号相同)
| 方案 | 规则 | 集中度 |
|---|---|---|
| 等权 Top-2 | 前两名各 50% | HHI = 0.50 |
| 全仓第 1 名 | 只持有动量第一,100% | HHI = 1.00 |
| 2/3 + 1/3 | 第一名 2/3,第二名 1/3 | HHI ≈ 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-01—2026-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-2 | 63.56% | −24.14% | 0.500 |
| 2/3 + 1/3 | 79.66% | −18.11% | 0.556 |
| 全仓第 1 名 | 112.46% | −15.29% | 1.000 |

读法:
- 本窗口内,更集中的权重赚得更多——这很容易诱惑人改成「永远全仓第一名」。
- 但第 7 讲的教训仍适用:这是样本内路径;集中持仓换一段行情可能回撤更大、或收益反转。
- 等权未必样本内最优,却是默认研究基准:先报告等权,再声明任何倾斜加权的增量来自何处。
- HHI 把「有多集中」写成数字,避免口头说「分散」却实际近乎单票。
5. 研究上怎么用等权
建议的写作顺序:
- 固定 Universe 与信号
- 先给出等权 Top-N 结果(与第 8 讲对齐)
- 若试验其他权重,单独成表,并做换窗 / 样本外,而不是只展示最好看的一种
权重本身也是可调结构:Top-N、倾斜比例、是否风险平价,都会带来过拟合空间。
6. 本讲小结
- 「买多少」必须是规则;入门默认 等权
- 同一信号下,权重可显著改变收益与回撤
- 样本内更优的集中持仓,不等于可外推的更优规则
B 单元至此:轮动(8)→ 池子(9)→ 权重(10)。下一讲讨论多久再平衡一次,以及频率如何与成本缠在一起。
→ 上一讲:Universe · 下一讲:再平衡 · 目录