M17 Smart Beta、因子择时与资产配置¶
层级:L4 实战与前沿 | 优先级:★ | 预计学时:10 小时 对应原书:因子第 7 章的配置部分;GK 第 18–19 章的广度 前置知识:M07 的 2022 年连乘;M09 的广度;M12 的不升杠杆。 读书笔记:因子配置与择时 状态:reviewed 数据截至:2026-08|最近复核:2026-10-22
学习目标¶
- 把 2022 年的 French 因子连乘、一条命名的 60/40 指数和基金净值分成三件事。
- 在 HML、RMW、CMA、Mom 上比较等权和「过去 12 个月为负就留现金」。
- 用手算 60/40 在两种相关下的假设波动,以及股票涨 30% 之后的再平衡换手。
- 说明一年只做一次独立判断时,IC = 0.05 的信息比率上界是 0.05。
- 不把因子 ETF 的某一年涨跌写成本章没有下载的事实。
本章知识拓扑图¶
flowchart TB
MKT["市场超额"] --> CORE["只做多的核心"]
FAC["HML、RMW、CMA、Mom"] --> LS["多空研究组合"]
SIG["过去 12 个月,shift 1"] --> CASH["为负的因子留现金"]
CASH --> LS
CORE --> ACCT["杠杆上限 1.0"]
LS --> ACCT
ACCT --> GAP["空头腿放不下"]
核心可以是市值组合。多空因子是另一本账。把两者相加之前,先看账户能不能持有空头。
🟢 入门层:2022 年有三张不同的成绩单¶
1. 因子连乘不是基金净值¶
French 五因子文件加上动量,2022 年十二个月连乘:Mkt-RF −20.99%,HML +31.74%,Mom +20.20%,CMA +29.09%,RMW +8.45%。样本仍是 1963-07 至 2026-08 的月频,这一年有 12 个月。这些是多空或超额研究序列。HML 的 +31.74% 含空头腿。只买高账面市值比的基金拿不到这个数。M07 已经把「市场超额加一整份 HML」和两列连乘直接相加分开。
同一年,Vanguard 的美国 60/40(标普 500 与 Bloomberg 美国综合债)是 −16.1%。那是一条命名的股债组合,不是 Mkt-RF,也不是 HML。M00 把 SG Trend Index 在 2022 年记为约 +27%,并要求引用时核对年末水平;2023 年转为小幅负收益。约数不能改写成某只管理期货基金的净值。
右图不是 2022 年的债券或股票路径。它只回答:权重不变时,相关从 −0.2 改到 +0.4,组合波动从 9.4183% 升到 10.7867%。股债一起跌,改变的是实现路径和相关,不是这张假设图里的某只基金收益。
2. 基金说明书写规则,净值里还有费用和只做多¶
按规则加权、不按市值加权的指数,通常被叫做 smart beta。基金净值还包含费用、只做多、以及编制方自己的调仓日历。它不等于 French 的 HML 或 Mom。费用若在核心仓位的说明书写着每年 15 bps,核心占净值 70%,拖累是 0.70 × 0.0015 = 0.001050,即净值的 0.105%。15 bps 是用来做这道乘法的假设,不是 2026 年某一只基金的报价。报价以发行方当时的说明书为准。
M12 的逆波动在股票 16%、债券 6% 上给出 0.2727 和 0.7273。那是另一组权重。本轮 target_volatility_scale 的上限是 1,波动低于目标时不会加杠杆。60/40 也不要为了把假设波动从 9.42% 抬到 10% 去借债。
核心仓位之间空出来的现金,不要默认成收益 0,也不要为了「让现金也有收益」而每天买卖短债 ETF。SGOV、BIL 这一类超短债有大约 1–2 bps 的买卖价差,卖出后按 T+1 才交收。非美居民的表格是 W-8BEN;分红预提和合格利息收入的退税以当年税表为准。沿用 M04 的算法:来回 2 bps、每 5 个交易日进出一次,252 / 5 = 50.4 次,摩擦 100.8 bps。持有短于 5 天时,点差先于利息。基金内部的债券换仓已经在净值里,你自己的买卖才另付这一截点差。
3. 市值加权把规模写进权重,规则加权把分数写进权重¶
市值加权指数让权重大约正比于自由流通市值。大公司涨得多,权重还会变大。它不需要预测谁的账面市值比更高,也不在每次调仓时把组合换成另一套股票。你付出的是:规模本身成了暴露。小公司、高盈利或低波动若有溢价,这条指数只在它们碰巧也是大公司时才拿得到。
规则加权先打分,再按分数或优化器给权重。分数可以是动量、估值、盈利、规模或波动。这就是通常说的 smart beta:仍是一套事前写明的规则,不是经理当天的判断。它和 French 的 HML 仍差着三件事。基金只做多,HML 有空头。基金扣费用,French 序列没有这只基金的费率。基金有自己的缓冲、调仓月和行业约束,不是账面市值比两端的市值加权多空。
下面这些美股上市的例子,用来对照规则类型。本章没有下载它们的净值,也不把它们写成持仓建议。缓冲有多宽、行业相对母指数能偏多少、哪个月调仓,以当时的指数方法或基金说明书为准。那些数字会改,不写进这道算术。
| 类型 | 常见上市例子 | 规则在选什么 | 和 French 多空的差别 |
|---|---|---|---|
| 动量 | 跟踪 MSCI 美国动量一类指数的基金,MTUM 是其中一只 | 用风险调整后的中期价格涨幅打分,边缘名字靠缓冲留下来 | 只做多,没有输家一端的空头 |
| 价值 | VLUE 一类的增强价值 | 在行业内部比估值倍数,而不是全市场用一个账面市值比切两半 | 行业中性会拿掉一部分「价值行业」的暴露 |
| 质量 | QUAL 一类的行业中性质量 | 盈利、杠杆和盈利稳定,行业权重大致贴着母指数 | 不是 RMW 的多空 |
| 低波动 | USMV 一类的最小方差 | 优化器在行业、换手等约束下压低组合方差 | 不是「波动最低的一档等权」 |
| 规模 | SIZE 一类的规模倾斜 | 在大中盘母指数里把权重从最大的公司上移开 | 不是 SMB,更不是微型股 |
| 小盘价值 | AVUV | 主动管理,同时看价值和盈利等特征 | 没有一份可以逐月复刻的公开多空公式 |
港股也有按股息、价值或低波动编制的基金。差别不在英文缩写,而在费用、印花税和编制日历。自建组合每交易一元都要付印花税。买已经上市的基金,印花税发生在你买卖基金的那一次,基金内部调仓的税在净值里,不在你的佣金单上。
费用上的分界可以手算。沿用上一节每年 15 bps 的费率假设。自建的拖累按 M13 写成 2τ c,τ 是年化单边换手,c 是每侧成本。令拖累等于费率:
τ = 0.0015/2c
每侧 15 bps 时,τ = 0.5000。年化单边换手低于 0.50,自建的交易成本假设就低于这 15 bps。每侧换成教学里的港股 25 bps 时,τ = 0.3000。印花税把「自己做更便宜」的换手上限从 0.50 降到 0.30。这只比费用。它没有加上你复制不了的空头腿,也没有加上基金相对指数的跟踪差。本章四因子规则自己的年化单边换手是 0.608054,已经高于 0.50,而且那还没算因子内部换股。
🟡 进阶层:战略权重、战术偏离,以及一条没有提高夏普的规则¶
4. 信号用的是已经结束的 12 个月¶
四个因子是 HML、RMW、CMA、Mom。月 t 的信号是截至 t − 1 的 12 个月连乘,用 shift(1) 对齐。等权每条因子 0.25。另一条规则:过去 12 个月为负的因子权重改为 0,不把空出来的权重摊给其余因子。全负的月份整组是现金。对照规则把当月为正的因子平分 1。
可用月份是 1964-07 至 2026-08,共 746 个月。夏普是月均除以月标准差再乘 √12。这四列已经是多空,不再减无风险利率。
不摊回的规则把算术年化从 4.1235% 降到 3.5063%,夏普从 0.7305 降到 0.6719。平分 1 把算术年化抬到 5.0879%,夏普降到 0.6153。2022 年三条都是正的,是因为这一年四列因子的连乘都是正的,不是因为择时避开了 Mkt-RF 的 −20.99%。等权组合 2022 年的 +22.60% 仍然是多空研究组合,不是只做多账户。
不摊回规则的平均总权重是 0.656501。746 个月里有 10 个月四条都是负的,权重为 0。月均单边换手 0.050671,乘 12 是 0.608054。若把这个数当成 M13 的单边换手、每侧成本 15 bps,拖累是
2 × 0.608054 × 0.0015 = 0.001824
即每年 0.1824 个百分点。这只计算了四条因子之间的权重变化,没有加上每条因子内部的换手,也没有从上面的夏普里扣掉。
HML 与 Mom 在 1963-07 至 2026-08 的相关是 −0.190352。各持一半的算术年化 5.3415%,波动 8.0790%,夏普 0.6612。这与 M07 的 −0.190、5.34%、8.08%、0.66 是同一次读取的舍入。相关是这两列收益的时间序列相关。它不保证每一年两列符号相反:2022 年两列都是正的。
5. 再平衡的换手发生在偏离之后¶
期初权重 0.60 和 0.40。股票收益 +30%,债券收益 0。股票部位变成 0.78,净值 1.18,股票权重
0.78/1.18 = 0.661017
偏离 6.1017 个百分点。若阈值是 5 个百分点,这笔要交易。回到 0.60 和 0.40 时,单边换手是 0.061017。股票只涨 10% 时,部位 0.66,净值 1.06,权重 0.66/1.06 = 0.622642,偏离 2.264 个百分点,5 个百分点的阈值下不交易。阈值挡住的是小偏离,不是趋势本身。卖出涨多的一侧,在动量继续时会少赚,在均值回归时会少亏。哪一种占上风,要看这段样本,不能从「再平衡」三个字推出来。
6. 卫星的超额要先减去核心¶
假设核心收益是 R,卫星收益是 R 加上与 R 不相关的主动部分,主动均值 1.5%、波动 5%。卫星占 30%:
0.30 × 0.015 = 0.0045, 0.30 × 0.05 = 0.015, 0.0045/0.015 = 0.30
组合相对核心的超额是 0.45%,跟踪误差是 1.5%,信息比率是 0.30。核心自己是 8% 还是 10%,在这个差额里会被减掉,所以没有进入算式。1.5% 和 5% 是假设,不是某只因子基金的估计。跟踪误差按权重成比例缩小,只在主动部分与核心不相关、并且没有其他偏离时成立。
一年只做一次独立的市场判断,IC = 0.05、转移系数是 1 时,上界是 0.05 × √1 = 0.050000。改成每月一次且彼此独立,是 0.05 × √12 = 0.173205。M09 在每年 6,000 个独立赌注时的上界是 3.873。市场择时的广度低,上界就低。这不是说择时的 IC 真有 0.05。
7. 战略配置定政策权重,战术配置只是暂时偏离¶
战略资产配置(SAA)先定一组准备持有多年的政策权重,再规定偏离多大才交易。本章的 60/40 就是这样一组政策权重。股票涨 30% 之后权重变成 0.661017,偏离 6.1017 个百分点,越过 5 个百分点的阈值才回到 0.60。涨 10% 时偏离 2.264 个百分点,不交易。阈值是战略配置的一部分,不是一个新的预测。
战术资产配置(TAA)是暂时离开政策权重,理由是某个信号。第 4 节的符号规则就是对四条因子做战术偏离:过去 12 个月为负就把 0.25 留成现金。它没有提高夏普。所以「有一个信号」本身不是离开 60/40 或离开等权因子的充分理由。信号要先在事后样本里胜过你写明的政策组合,再谈要不要执行。
60/40 隐含的宏观图景可以收成增长和通胀两轴,但只有一格有本章已经核对过的净值。
| 增长 | 通胀 | 60/40 通常指望什么 | 本章有没有这条净值 |
|---|---|---|---|
| 上行 | 下行 | 股票拿增长,债券在相关为负时提供对冲 | 没有单独的指数收益 |
| 下行 | 下行 | 债券往往比股票稳 | 没有 |
| 上行 | 上行 | 名义增长还在,债券被通胀压着 | 没有 |
| 下行 | 上行 | 股票和债券可能一起跌 | 有:2022 年那条命名的 60/40 是 −16.1% |
表里前三格是机制,不是四段历史收益。右图只说明相关从 −0.2 改到 +0.4 时,同样的 16% 和 6%、同样的 60/40,假设波动从 9.4183% 升到 10.7867%,差 1.3684 个百分点。2022 年的 −16.1% 是标普 500 加 Bloomberg 美国综合债的实现收益,不是这张假设波动。同一年四因子等权连乘 +22.60%,持仓里是多空因子,不是这只股债组合。增长下行、通胀上行可以让股债同跌,不能从这句话推出每一年都是 −16.1%。
风险平价要的是风险份额,不是名义权重。股票波动 16%、债券波动 6% 时,逆波动权重是 0.2727 和 0.7273。两边的「权重乘波动」都是 0.043636。在相关为常数时,两资产的逆波动就是风险平价。组合波动在相关 −0.2 时是 5.5196%,在相关 +0.4 时是 7.3018%。若有人想把波动抬到 10%,需要的倍数分别是
0.10/0.055196 = 1.8117, 0.10/0.073018 = 1.3695
仓库函数的上限是 1,两个倍数都不会被执行,仓位停在 1。不加杠杆的风险平价因此更接近「多放债券、少放股票」,波动低于 60/40 的 9.4183%。全天候这一类说法也是在几个增长和通胀的篮子之间分风险。它仍要回答杠杆从哪来。上限 1.0 时,分风险的结果是低波动,不是把 5.5196% 放大到 10% 之后的那条曲线。M12 把同一组权重的波动记到 5.52% 和 7.30%,是这里 5.5196% 和 7.3018% 的四位舍入。
flowchart TB
POL["政策权重 60/40"] --> BAND["偏离超过 5 个百分点才再平衡"]
SIG["战术信号"] --> POL
INV["逆波动 0.2727 / 0.7273"] --> CAP["想乘 1.8117 或 1.3695"]
CAP --> ONE["函数返回 1"]
🔴 深入层:别人的回归覆盖不了这 746 个月¶
8. 文献里的择时,和这条规则不是同一次实验¶
Asness(2016,Journal of Portfolio Management 42(5))讨论用因子估值价差做择时:价差很吵,而且价差本身往往就是价值赌注。Asness、Chandra、Ilmanen 与 Israel(2017,JPM 43(5))继续写估值择时为什么容易被高估。本章没有重做他们的回归。
Haddad、Kozak 与 Santosh(2020,RFS 33(5))在主成分因子上报告了可预测性。Ehsani 与 Linnainmaa(2022,JF 77(3))讨论因子动量和个股动量的关系。Gupta 与 Kelly(2019,JPM 45(3))也研究因子动量。这些是他们的样本和构造。上面 746 个月的符号规则是另一件事:不摊回时夏普低于等权。不能用别人论文里的改善,覆盖这条规则在这四列上的 0.6719 对 0.7305。
Moreira 与 Muir(2017,JF 72(4))研究波动高时降低因子暴露。M04 里,SPY 的波动目标没有提高夏普:上限 1.0 时是 0.70,买入持有是 0.73。M04 的夏普是 SPY 种子上的波动目标,不是他们的因子样本。波动缩放和估值价差、因子动量是三条不同的战术。一条文献里的改善,不能自动加到另一条规则上。
这条四因子规则自己的账已经够说明为什么等权难被打败。信号只有一个:截至上月的 12 个月连乘是正还是负。因子只有四条。不摊回时,负号的权重变成现金,平均只投下 0.656501,有 10 个月什么都不持有。少投下的那些月份若后来为正,算术年化就从 4.1235% 掉到 3.5063%,夏普从 0.7305 掉到 0.6719。平分正号因子把总权重维持在 1,年化升到 5.0879%,但波动升得更多,夏普降到 0.6153。两条战术都没有在夏普上超过「每条永远 0.25」。
import numpy as np
def sign_timing(trailing: np.ndarray, nxt: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
"""过去 12 个月为负的因子留在现金,不把 0.25 摊给其余因子。"""
keep = trailing > 0.0
cash = np.where(keep, 0.25, 0.0)
equal = np.full(nxt.shape, 0.25)
return cash * nxt, equal * nxt
def rebalance_due(weight: float, policy: float = 0.60, band: float = 0.05) -> bool:
# 带内的偏离不交易,避免用一笔佣金去修很小的权重。
return abs(weight - policy) > band
def fee_breakeven_turnover(fee: float, side_cost: float) -> float:
"""年化单边换手。费率与每侧成本同一单位。自建换手高于它,费用上就没有优势。"""
return fee / (2.0 * side_cost)
746 个月的夏普 0.6719 与 0.7305 由 figures/M17/plot_allocation.py 在 French 月频上打印。上面的函数是同一条规则。股票从 0.60 涨 30% 之后权重约 0.661017,rebalance_due 为真。费率 15 bps、每侧 15 bps 和 25 bps 的打平换手是 0.5000 和 0.3000。
估值价差还会和价值因子缠在一起。价差极宽的时候,你加的往往就是价值暴露本身。若这段样本里价值已经很便宜,择时组合和一直持有价值会很像,夏普的差别不一定来自「择时技术」。因子动量则和个股动量共享一段价格路径。Ehsani 与 Linnainmaa 讨论的正是这种重叠。本章的 Mom 列已经在等权里占了 0.25。再用 Mom 过去 12 个月的符号去加减它,是在同一列上做第二次赌注,不是新的广度。广度上界在一年一次判断时只有 0.050000。四条因子的符号也远不是 6,000 个独立赌注。
只做多的核心加上一条需要空头的卫星,在杠杆上限 1.0 的账户里,卫星的空头腿仍然放不下。策略预算的示例是净值的 30%,那是额度,不是把多空夏普乘上 0.30 就能得到的收益。买上一节那些基金,拿到的是规则加权的多头和一份费率,不是把 HML 的 +31.74% 放进 2022 年的账户。自建若年化单边换手高于 0.50(每侧 15 bps)或 0.30(每侧 25 bps),费用假设上就已经不便宜。这条择时规则的权重换手是 0.608054,还没算内部换股。
9. 把 9.4183% 从三项里加出来¶
60/40 的假设波动不是一个从行情里读出来的数。权重 0.60 和 0.40,波动 0.16 和 0.06,相关 −0.2。方差是三项:
0.60² × 0.16² = 0.009216
0.40² × 0.06² = 0.000576
2 × 0.60 × 0.40 × 0.16 × 0.06 × (−0.2) = −0.0009216
相加是 0.009216 + 0.000576 − 0.0009216 = 0.0088704。开方是 0.094183,也就是 9.4183%。相关改成 +0.4 时,交叉项变成 +0.0018432,方差开方是 0.107867,也就是 10.7867%。股票那一项 0.009216 已经远大于债券的 0.000576。所以 60/40 的名义权重看起来平衡,风险仍集中在股票。相关从负变正,动的是那一项交叉项,不是把债券的 0.000576 突然变成股票。
逆波动把权重改成 0.2727 和 0.7273。相关 −0.2 时三项大约是 0.001904、0.001904 和 −0.000762,开方 0.055196。相关 +0.4 时交叉项约为 +0.001523,开方 0.073018。两列「权重乘波动」在相关进入公式之前就已经相等,都是 0.043636。这就是两资产风险平价在相关为常数时和逆波动重合的原因。想把 0.055196 抬到 0.10,倍数是 1.8117。上限为 1 的函数不乘这个数。
读一只规则基金的说明书时,按下面的顺序问。问完才决定它是核心还是卫星,而不是先看去年涨了多少:
| 序号 | 要点 |
|---|---|
| 1 | 母指数是哪一个股票范围,包不包括你买不到的微盘。 |
| 2 | 分数用哪些变量,变量的截止日是再平衡日之前。 |
| 3 | 缓冲留住边缘名字,还是每次把名单换一遍。 |
| 4 | 调仓是一年两次、每季,还是优化器自己决定。 |
| 5 | 行业权重是贴着母指数,还是可以整个行业超配。 |
| 6 | 低波动产品是排序还是带约束的优化。 |
| 7 | 基金是指数复制还是主动管理。AVUV 是主动的小盘价值,不是一份公开的多空公式。 |
| 8 | 费率写在哪一行,用那个数替换本章的 15 bps。 |
| 9 | 你买卖基金的那一次成本,和基金内部换股的成本,分别记在谁的账上。 |
| 10 | 基金只做多。它的净值不能和 HML 的空头腿相加。 |
| 11 | 跟踪差是相对它自己的指数,不是相对 French 因子。 |
| 12 | 港股印花税若在你这边,每侧成本用 25 bps 这一档教学值时,打平换手是 0.30。 |
| 13 | 缓冲和行业约束会让基金偏离「纯因子」。这是设计,不是跟踪错误。 |
| 14 | 某一年的净值没有下载,就不写进和 −16.1% 并列的表。 |
| 15 | 战略权重先写下来。战术信号只有在整段夏普更高时才替代它。 |
| 16 | 这条四因子符号规则的整段夏普是 0.6719,低于等权 0.7305,所以它替代不了等权。 |
| 17 | 2022 年符号规则略高,只说明那一年四列都是正的,规则几乎没有离场。 |
| 18 | 再平衡阈值用偏离的百分点,不用「涨了就卖」这句话。 |
| 19 | 杠杆上限 1.0 写在风险政策里。1.8117 这个倍数留在草稿纸上。 |
| 20 | 生活需要的现金和一条危机年才高的研究曲线分开存放。 |
10. 写进月记之前先对上三张单¶
2022 年的数字可以排成一张对照,每一行只属于一种持仓。写月记时从这里抄,不要从记忆里把它们加总。
| 成绩单名称 | 2022 年数字 | 持仓构成与做空假设 | 个人只做多账户能否直接对应 |
|---|---|---|---|
| French 多空或超额因子连乘 | Mkt-RF −20.99%;HML +31.74%;Mom +20.20%;CMA +29.09%;RMW +8.45%;四因子等权 +22.60% | 多空或超额因子,含空头腿 | 不能直接对应。只做多账户没有这条空头腿 |
| Vanguard 美国 60/40 | −16.1% | 标普 500 与 Bloomberg 美国综合债券,只做多 | 只有持有同一组合时,净值才能对上这一行 |
| 规则化只做多聪明贝塔 ETF | 本章没有这张净值,不另写一个收益率 | 带市场贝塔,扣除费用,没有空头腿 | 不能用上面两行代替它的净值 |
真实案例¶
案例 1:三张 2022 年的单¶
Mkt-RF 连乘 −20.99%。HML、Mom、CMA、RMW 分别是 +31.74%、+20.20%、+29.09%、+8.45%。四因子等权的连乘是 +22.60%。Vanguard 美国 60/40 是 −16.1%。三张单的资产不同。用 HML 的 +31.74% 去解释一只只做多价值基金,或者用四因子的 +22.60% 去解释 60/40,都对不上持仓。
案例 2:符号规则的夏普更低¶
1964-07 至 2026-08。等权夏普 0.7305,不摊回的符号规则 0.6719,平分正号因子 0.6153。算术年化分别是 4.1235%、3.5063% 和 5.0879%。平分提高了年化、降低了夏普。平均总权重 0.656501,有 10 个月完全是现金。权重变化若按每侧 15 bps 计,每年 0.1824 个百分点,而且这还不是因子内部的换手。
案例 3:涨 30% 才越过 5 个百分点¶
股票 +30%、债券 0,净值 1.18,股票权重 0.661017,偏离 6.1017 个百分点,单边换手 0.061017。股票 +10% 时偏离约 2.26 个百分点,同一阈值下不交易。核心占 70%、费用假设 15 bps 时,对总净值的拖累是 0.105%。卫星 30% 乘假设主动 1.5%,相对核心的超额是 0.45%,信息比率 0.30。一年一次判断的上界,在 IC = 0.05 时只有 0.05。
案例 4:不加杠杆的风险平价更像多放债券¶
逆波动权重 0.2727 和 0.7273,两边的权重乘波动都是 0.043636。相关 −0.2 时组合波动 5.5196%,要到 10% 得乘 1.8117。相关 +0.4 时波动 7.3018%,要乘 1.3695。函数返回 1,所以你留下的是低波动的债券倾斜,不是放大之后的全天候曲线。60/40 在同样两种相关下是 9.4183% 和 10.7867%。名义上各出六成和四成,风险大多仍在股票上。这是政策选择,不是 2022 年的净值。
案例 5:换手先于「哪只基金更好」¶
费率假设 15 bps。自建每侧也是 15 bps 时,年化单边换手 0.50 就和这笔费率打平。每侧 25 bps 时,打平点降到 0.30。四因子符号规则的权重换手已经是 0.608054。在费用这一项上,它没有赢过「付 15 bps 买一只规则基金」的假设,而且还缺空头腿、缺因子内部换股。MTUM、VLUE、QUAL、USMV、SIZE 是不同的规则,AVUV 是主动小盘价值。它们的某一年涨跌不在本章的图里。
方法论来源¶
| 概念 / 模型 | 核心文献或规范出处 |
|---|---|
| 因子估值择时 | Asness (2016), JPM 42(5);Asness, Chandra, Ilmanen & Israel (2017), JPM 43(5) |
| 因子可预测性 | Haddad, Kozak & Santosh (2020), RFS 33(5) |
| 因子动量 | Ehsani & Linnainmaa (2022), JF 77(3);Gupta & Kelly (2019), JPM 45(3) |
| 波动缩放 | Moreira & Muir (2017), JF 72(4)。本章四因子符号规则的夏普低于等权 |
| 60/40 | 教学波动 16% 与 6%。2022 年 −16.1% 是标普 500 加 Bloomberg 美国综合债,不是这张假设波动 |
| 打平换手 | 费率除以两倍每侧成本。15 bps 对 15 bps 是 0.50,对 25 bps 是 0.30 |
| 图 | figures/M17/plot_allocation.py |
💡 思考回顾与巩固¶
核心认知纠偏¶
| 误区 | 反例 | 用法 |
|---|---|---|
| 2022 年价值基金大约赚了 HML 的 31.74% | Mkt-RF 同年是 −20.99%,HML 含空头 | 因子和基金分开 |
| 四因子等权的 +22.60% 就是 60/40 | Vanguard 美国 60/40 是 −16.1% | 写明指数对 |
| 因子择时至少不会更差 | 不摊回的夏普 0.6719,低于等权 0.7305 | 先看这条规则 |
| 平分正号因子提高了夏普 | 算术年化升到 5.0879%,夏普降到 0.6153 | 年化和夏普分开 |
| 2022 年价值和动量一正一负 | 两列连乘都是正的;−0.190 是 758 个月的相关 | 相关不是每年的符号 |
| 右图 10.79% 是 2022 年的波动 | 16% 和 6% 是给定的波动 | 假设相关 |
| 再平衡每涨一点就要做 | +10% 的偏离约 2.26 个百分点,低于 5 个百分点阈值 | 先算偏离 |
| 核心收益 8% 会留在卫星的超额里 | 超额是 0.30×1.5%=0.45%,8% 被减掉 | 相对核心 |
| 一年择时一次,上界仍接近选股 | IC = 0.05 时上界是 0.05,不是 3.873 | 广度 |
| 15 bps 是当前某只 ETF 的费率 | 0.105% 来自 70%×15 bps 的假设 | 以说明书为准 |
| 低波动基金等于风险平价加杠杆 | 逆波动波动 5.5196%,放大到 10% 要 1.8117 倍,函数返回 1 | 先看上限 |
| 自建一定比基金便宜 | 每侧 15 bps 时,年化单边换手超过 0.50 就更贵 | 先算 2τ c |
| 增长和通胀的四格都有本章的收益 | 只有 2022 年那条 60/40 是 −16.1% | 其余是机制 |
费曼自测¶
- 为什么四因子在 2022 年的 +22.60% 不能用来安慰 60/40 的 −16.1%?
- 符号规则的 2022 年连乘略高于等权,为什么整段夏普仍然更低?
- 平分正号因子的算术年化更高,为什么不是更好的规则?
- 卫星信息比率 0.30 里,为什么看不到核心的收益水平?
自测要点
1. +22.60% 是四条多空因子的等权连乘。−16.1% 是标普 500 加 Bloomberg 美国综合债的一条 60/40。持仓里没有那些空头腿,也没有同一组债券。Mkt-RF 的 −20.99% 是第三个数。 2. 2022 年四列因子都是正的,符号规则几乎仍持有它们,所以这一年只差 0.22 个百分点。整段里规则把一些后来为正的月份留成了现金,算术年化降到 3.5063%,夏普降到 0.6719。 3. 平分把正号因子的权重大于 0.25,收益和波动一起放大。算术年化 5.0879% 高于等权,夏普 0.6153 低于等权的 0.7305,也低于不摊回的 0.6719。 4. 卫星被写成核心收益加上与核心不相关的主动部分。相减之后核心的水平消失,只剩下 0.30 乘主动均值。8% 或 10% 都不进入 0.45%。四维习题¶
A. 概念题¶
- smart beta 的基金净值和 French 的 HML 差在哪三件事上?
- 为什么市场择时的广度远低于月度选股?
- 不摊回和把正号因子平分 1,差在现金上还是差在总权重上?
- 杠杆上限 1.0 挡住的是 60/40 的哪一种改法?
B. 计算题¶
- 用脚本打印的 2022 年四列连乘,说明为什么不能把它们加总成一个只做多组合的收益。等权组合的 2022 年连乘是多少?
- 股票 +30%、债券 0、期初 60/40。期末股票权重、偏离和单边换手是多少?+10% 时偏离大约是多少?
- 相关 −0.2 和 +0.4 时,60/40 的假设波动各是多少?两者差多少个百分点?
- 卫星占 30%,主动均值 1.5%、波动 5%,且与核心不相关。超额、跟踪误差和信息比率是多少?IC = 0.05、每年 1 次和每年 12 次独立赌注的上界各是多少?
- 逆波动权重是多少?相关 −0.2 和 +0.4 时组合波动是多少?要到 10% 波动各需几倍?费率 15 bps、每侧成本 15 bps 和 25 bps 时,打平的年化单边换手各是多少?
C. 编程实战题¶
- 运行
figures/M17/plot_allocation.py。核对 −0.209896、0.317400、等权夏普 0.7305、现金规则 0.6719、平分规则 0.6153、单边年化 0.608054、拖累 0.001824。 - 用与脚本相同的两资产波动公式,核对逆波动权重 0.2727、0.7273,以及 5.5196% 和 7.3018%。不要把 French 因子收益写成基金净值。
- 不要为了本题下载因子 ETF 并把某一次的涨跌抄进笔记。费用用说明书上的数字替换 15 bps 之后,再重算打平换手 0.0015 / (2c) 里的分子。
D. 个人实战思考题¶
- 你的核心是只做多的市值组合,卫星是这四条 French 因子。哪一条结果你不能下单?
- 符号规则在 2022 年略好于等权。你会因此把 2023 年的权重改成这套规则吗?
- 生活现金流需要组合在股债同跌时仍有一笔正收益。SG Trend 的约 +27% 能直接当成这笔现金吗?
- 你想买一只动量基金来代替 HML 的空头腿。这只基金补上了哪一块,又补不上哪一块?
完整参考答案与解析
**A1.** 基金只做多,HML 有空头腿。基金净值扣除费用,French 序列没有这只基金的费率。基金按自己的日历和行业约束调仓,不是账面市值比两端的市值加权多空。所以基金某一年的涨跌不能用 HML 的连乘代替。 **A2.** 广度是独立判断的次数。全市场一年一次方向判断,次数是 1。月度在大量股票上做截面排序,次数可以到 M09 里的几千。IC 同为 0.05 时,上界从 0.05 变成 0.05 √12 = 0.173205,再远低于 6,000 次赌注的 3.873。上界低,不表示那一次判断的 IC 有 0.05。 **A3.** 不摊回时,负号因子的 0.25 留在现金,平均总权重 0.656501。平分 1 时,只要还有正号因子,总权重就是 1,正号因子的权重大于 0.25。全负的月份两条都是现金;这样的月份有 10 个。 **A4.** 挡住的是为了把低波动资产的风险凑到目标而加的杠杆。逆波动给债券更高的权重,再乘一个大于 1 的系数,才会用到杠杆。上限 1 时这个系数不会大于 1。60/40 本身的权重和是 1,不需要这道放大。 **B5.** 四列是可以同时做多做空的研究收益。加总没有对上任何一只只做多基金的持仓,也没有扣费。等权是先把每月四列平均,再对 2022 年十二个月连乘,结果是 +22.6023%,不是四列百分数的平均。 **B6.** 净值 0.60 × 1.30 + 0.40 = 1.18。股票权重 0.78/1.18 = 0.661017。偏离 6.1017 个百分点。单边换手 0.061017。股票 +10% 时权重 0.66/1.06 = 0.622642,偏离 2.264 个百分点。 **B7.** 相关 −0.2 时波动 9.4183%,相关 +0.4 时 10.7867%,差 1.3684 个百分点。股票波动 16%、债券波动 6%、权重 0.60 和 0.40 是输入,不是 2022 年的实现波动。 **B8.** 超额 0.45%,跟踪误差 1.5%,信息比率 0.30。每年 1 次的上界是 0.050000,每年 12 次且独立是 0.173205。核心的收益水平被相对收益减掉了。 **B9.** 权重 (1/0.16) / (1/0.16 + 1/0.06) = 0.2727,债券 0.7273。相关 −0.2 时波动 5.5196%,倍数 0.10/0.055196 = 1.8117。相关 +0.4 时波动 7.3018%,倍数 1.3695。函数上限是 1,两个倍数都不执行。打平换手:每侧 15 bps 时 0.0015 / (2 × 0.0015) = 0.5000;每侧 25 bps 时 0.0015 / (2 × 0.0025) = 0.3000。 **C10–C12.** French 连乘和 60/40 波动由 `figures/M17/plot_allocation.py` 打印。下面复算符号规则、再平衡带和打平换手。import numpy as np
trailing = np.array([[0.02, -0.01, 0.03, 0.01]])
nxt = np.array([[0.01, 0.02, -0.01, 0.00]])
cash, equal = sign_timing(trailing, nxt)
assert abs(float(cash.sum())) < 1e-12
assert abs(float(equal.sum()) - 0.005) < 1e-12
grown = np.array([0.60, 0.40]) * np.array([1.30, 1.0])
weight = float(grown[0] / grown.sum())
assert rebalance_due(weight)
assert abs(fee_breakeven_turnover(0.0015, 0.0015) - 0.5) < 1e-12
assert abs(fee_breakeven_turnover(0.0015, 0.0025) - 0.3) < 1e-12
📌 章节知识总结¶
一句话核心洞察¶
- 2022 年 Mkt-RF 是 −20.99%,HML 是 +31.74%,Vanguard 美国 60/40 是 −16.1%。三张单不能互相代替。
- 四因子等权的夏普是 0.7305。过去 12 个月为负就留现金,夏普降到 0.6719。正号因子平分 1,夏普再降到 0.6153。
- 股票涨 30% 后,60/40 的股票权重是 0.661017,单边换手 0.061017。涨 10% 时偏离约 2.26 个百分点。
- 相关从 −0.2 到 +0.4,假设波动从 9.4183% 到 10.7867%。这不是 2022 年的净值。
- IC = 0.05 且一年一次判断,信息比率上界是 0.05。空头腿在杠杆上限 1.0 的只做多账户里放不下。
- 逆波动是 0.2727 和 0.7273。不加杠杆时,相关 −0.2 的波动是 5.5196%,不是放大 1.8117 倍之后的 10%。
公式与样本¶
| 对象 | 数值 | 前提 |
|---|---|---|
| 月频样本 | 1963-07 至 2026-08,758 个月 | French 五因子与 Mom |
| 2022 连乘 | −20.99%、+31.74%、+20.20%、+29.09%、+8.45% | Mkt-RF、HML、Mom、CMA、RMW |
| 60/40 指数 | −16.1% | 标普 500 与 Bloomberg 美国综合债 |
| 择时窗口 | 1964-07 至 2026-08,746 个月 | 12 个月信号再 shift(1) |
| 等权 | 年化 4.1235%,夏普 0.7305,2022 +22.6023% | 每条 0.25 |
| 不摊回 | 年化 3.5063%,夏普 0.6719,2022 +22.8210% | 负号权重改为 0 |
| 平分 | 年化 5.0879%,夏普 0.6153,2022 +25.3147% | 正号因子和为 1 |
| 换手 | 月均单边 0.050671,年化 0.608054 | 只含四条权重的变化 |
| 费用拖累 | 0.1824 个百分点 | 每侧 15 bps,未扣进夏普 |
| 平均总权重 | 0.656501 | 10 个月为 0 |
| HML 与 Mom | 相关 −0.190352,各半夏普 0.6612 | 758 个月 |
| 60/40 假设波动 | 9.4183% 与 10.7867% | 波动 16% 和 6%,相关 −0.2 与 +0.4 |
| 再平衡 | 权重 0.661017,单边 0.061017 | 股票 +30%,债券 0 |
| 卫星 | 超额 0.45%,跟踪误差 1.5%,IR 0.30 | 主动 1.5% 与 5% 是假设 |
| 广度 | 0.050000 与 0.173205 | IC = 0.05,1 次与 12 次 |
| 核心费用 | 净值的 0.105% | 70%×15 bps,费率是假设 |
| 费用打平换手 | 0.5000 与 0.3000 | 费率 15 bps;每侧 15 bps 或 25 bps |
| 逆波动 | 0.2727 与 0.7273 | 波动 16% 与 6%;权重乘波动都是 0.043636 |
| 逆波动组合 | 5.5196% 与 7.3018% | 相关 −0.2 与 +0.4 |
| 放到 10% 波动 | 需要 1.8117 与 1.3695,函数返回 1 | 与 M12 的 5.52%、7.30% 同一舍入 |
跨模块¶
| 结论 | 交给 | 位置 |
|---|---|---|
| HML 不是价值基金 | 2022 年的持仓对照 | M07 |
| 6,000 次赌注的上界 3.873 | 广度 | M09 |
| 波动目标不升杠杆 | 60/40 不再加杠杆 | M04,M12 |
| 权重变化的拖累 | 2τ c | M13 |
| 约 +27% 的趋势指数 | 二次来源与低谷 | M00 |
| 策略预算示例 | 卫星额度 | ../../../docs/risk_policy.md |
| 复算脚本 | 图 | ../figures/M17/plot_allocation.py |
学习指引¶
- 精读:因子书里把大类资产看成因子暴露的那一节,对照本章的三张 2022 年成绩单。GK 第 18–19 章的市场择时,对照 0.05 和 0.173205 这两个上界。
- 对照:连乘、夏普和换手以脚本打印为准。基金费率换成说明书上的数字后再乘仓位。
- 下一步:学习计划的后面阶段若要写第一套可交易规则,先写只做多的核心和再平衡阈值。多空因子的夏普留在研究账上。
自检清单¶
- 能把 −20.99%、+31.74% 和 −16.1% 分别归到 Mkt-RF、HML 和一条命名的 60/40
- 能说出符号规则的夏普 0.6719 低于等权 0.7305,平分规则的夏普是 0.6153
- 能把股票 +30% 算成权重 0.661017、单边换手 0.061017
- 能把两种相关下的假设波动算成 9.4183% 和 10.7867%
- 能说明一年一次判断的上界是 0.05,以及 15 bps 只是费用假设
- 能说明 +22.60% 的四因子组合含有空头腿
- 能把逆波动算成 0.2727 / 0.7273,并说明 1.8117 倍不会被函数执行
- 能把 15 bps 费率下的打平换手算成 0.50(每侧 15 bps)和 0.30(每侧 25 bps)
- 能说出战略配置是政策权重加阈值,战术配置是暂时偏离,而这条符号规则没有提高夏普
