跳转至

M17 Smart Beta、因子择时与资产配置

层级:L4 实战与前沿 | 优先级:★ | 预计学时:10 小时 对应原书:因子第 7 章的配置部分;GK 第 18–19 章的广度 前置知识:M07 的 2022 年连乘;M09 的广度;M12 的不升杠杆。 读书笔记:因子配置与择时 状态:reviewed 数据截至:2026-08|最近复核:2026-10-22


学习目标

  1. 把 2022 年的 French 因子连乘、一条命名的 60/40 指数和基金净值分成三件事。
  2. 在 HML、RMW、CMA、Mom 上比较等权和「过去 12 个月为负就留现金」。
  3. 用手算 60/40 在两种相关下的假设波动,以及股票涨 30% 之后的再平衡换手。
  4. 说明一年只做一次独立判断时,IC = 0.05 的信息比率上界是 0.05。
  5. 不把因子 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 年 French 月频连乘。右:股票波动 16%、债券波动 6%、权重 60/40 时,两种假设相关下的组合波动。

右图不是 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% 其余是机制

费曼自测

  1. 为什么四因子在 2022 年的 +22.60% 不能用来安慰 60/40 的 −16.1%?
  2. 符号规则的 2022 年连乘略高于等权,为什么整段夏普仍然更低?
  3. 平分正号因子的算术年化更高,为什么不是更好的规则?
  4. 卫星信息比率 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. 概念题

  1. smart beta 的基金净值和 French 的 HML 差在哪三件事上?
  2. 为什么市场择时的广度远低于月度选股?
  3. 不摊回和把正号因子平分 1,差在现金上还是差在总权重上?
  4. 杠杆上限 1.0 挡住的是 60/40 的哪一种改法?

B. 计算题

  1. 用脚本打印的 2022 年四列连乘,说明为什么不能把它们加总成一个只做多组合的收益。等权组合的 2022 年连乘是多少?
  2. 股票 +30%、债券 0、期初 60/40。期末股票权重、偏离和单边换手是多少?+10% 时偏离大约是多少?
  3. 相关 −0.2 和 +0.4 时,60/40 的假设波动各是多少?两者差多少个百分点?
  4. 卫星占 30%,主动均值 1.5%、波动 5%,且与核心不相关。超额、跟踪误差和信息比率是多少?IC = 0.05、每年 1 次和每年 12 次独立赌注的上界各是多少?
  5. 逆波动权重是多少?相关 −0.2 和 +0.4 时组合波动是多少?要到 10% 波动各需几倍?费率 15 bps、每侧成本 15 bps 和 25 bps 时,打平的年化单边换手各是多少?

C. 编程实战题

  1. 运行 figures/M17/plot_allocation.py。核对 −0.209896、0.317400、等权夏普 0.7305、现金规则 0.6719、平分规则 0.6153、单边年化 0.608054、拖累 0.001824。
  2. 用与脚本相同的两资产波动公式,核对逆波动权重 0.2727、0.7273,以及 5.5196% 和 7.3018%。不要把 French 因子收益写成基金净值。
  3. 不要为了本题下载因子 ETF 并把某一次的涨跌抄进笔记。费用用说明书上的数字替换 15 bps 之后,再重算打平换手 0.0015 / (2c) 里的分子。

D. 个人实战思考题

  1. 你的核心是只做多的市值组合,卫星是这四条 French 因子。哪一条结果你不能下单?
  2. 符号规则在 2022 年略好于等权。你会因此把 2023 年的权重改成这套规则吗?
  3. 生活现金流需要组合在股债同跌时仍有一笔正收益。SG Trend 的约 +27% 能直接当成这笔现金吗?
  4. 你想买一只动量基金来代替 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
第二列过去 12 个月为负,现金规则不持有它。等权仍给它 0.25。这四格是教学输入,不是 0.6719 那次样本。 **D13.** 不能下单的是四条因子的空头腿,以及任何把总权重放大到 1 以上的债券杠杆。只做多的市值核心可以下单。卫星若只保留因子多头一端,收益不再是表里的 4.1235% 或 0.7305。 **D14.** 不会只看 2022。那一年的差别是 22.8210% 对 22.6023%,而整段夏普是 0.6719 对 0.7305。改权重等于换了一条策略,要事先写进规则,而不是在年末用这一年的符号决定下一年。 **D15.** 不能。约 +27% 是指数编制方的 2022 年约数,M00 要求核对年末水平,而且 2023 年起有低谷。它不是你账户里已经落账的现金。股债同跌时要有一笔支出,得事先放在不能被保证金调走的资产上,而不是放在一条危机里才高的研究曲线上。 **D16.** 补上的是只做多的动量规则和一份可以在说明书里核对的费率、缓冲和调仓月。补不上的是 HML 的空头,也补不上 French 动量因子内部的空头。基金某一年的涨跌仍要另下一张成绩单,不能用 Mom 的 +20.20% 代替。

📌 章节知识总结

一句话核心洞察

  1. 2022 年 Mkt-RF 是 −20.99%,HML 是 +31.74%,Vanguard 美国 60/40 是 −16.1%。三张单不能互相代替。
  2. 四因子等权的夏普是 0.7305。过去 12 个月为负就留现金,夏普降到 0.6719。正号因子平分 1,夏普再降到 0.6153。
  3. 股票涨 30% 后,60/40 的股票权重是 0.661017,单边换手 0.061017。涨 10% 时偏离约 2.26 个百分点。
  4. 相关从 −0.2 到 +0.4,假设波动从 9.4183% 到 10.7867%。这不是 2022 年的净值。
  5. IC = 0.05 且一年一次判断,信息比率上界是 0.05。空头腿在杠杆上限 1.0 的只做多账户里放不下。
  6. 逆波动是 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)
  • 能说出战略配置是政策权重加阈值,战术配置是暂时偏离,而这条符号规则没有提高夏普