周三早上 8:50,上海陆家嘴某百亿私募的月度因子轮动委员会;参考宏观面板由 NBS 制造业 PMI、社融存量、SHIBOR、CSI300 IV、10y 国债-1y SHIBOR 斜率与新增基金账户数构成。上周 HML 打印 +4% 让股票组 PM 主张把价值在因子风险中的权重从 20% 提到 30%;宏观主管报出最新 ISM PMI 与收益率曲线斜率两项均翻成价值友好读数;风控主管问出整个因子择时文献当年正是为回答而存在的那个问题:"我们是否有任何证据可以择时这些因子,足以为 50% 权重调整背书?"L1 给了实证记录与夏普比率口径下的表头数字。L2 给了四段经典崩盘与七步解剖。L3 走了 CN 特化层(LSY-3、壳价值、散户 regime、涨跌停 / T+1 / 印花税)。L4 关闭本模块,合成 Asness-AQR 阵营(720 月样本上择时是傻瓜任务)与 Arnott-RAFI 阵营(便宜因子反向倾斜在 3-5 年期挣 ~5-15% 样本内 R²)之间的经典辩论,命名任一多因子模型 PM 必须知道的四条宏观条件 regularity(含低波动因子在波动下行 regime 中的载荷与上行 regime 的崩溃),搭建带 z 分诊断的七步因子轮动包,并合成出周三委员会可以在研究日志条目里实际辩护的六步实务派默认立场。L4 结构与前三课同形:每个枚举分类用 Inline-code 列表(Asness 三论、Arnott 三论、四宏观 regularity、七步诊断、六步实务派默认);factor_valuation_spread 与 contrarian_tilt 用 Fenced python 代码块;收尾配 Exercise。L4 按顺序覆盖五块:
- Asness 阵营反对因子择时的三论。
- Arnott 阵营支持有界反向倾斜的三论。
- 四条宏观条件因子-regime regularity。
- 七步因子轮动诊断包。
- 六步实务派默认立场。
Asness 阵营 —— 反对因子择时的三论
AQR / Asness 2016 《My factor-timing dream is dead》Cliff's Perspective 立场基于三条量化论证:
asness_arguments = [
"historical_sample_too_short", # ~720 monthly FF observations give low factor-timing SNR
"low_out_of_sample_R_squared", # HML-spread predicting next-12m HML R^2 falls from ~5-10% in-sample to ~1-3% OOS
"cost_drag_eliminates_timing_edge", # turnover and tax drag negate the edge for non-extreme tilts
]
# Asness 2016 + Asness-Chandra-Ilmanen-Israel 2017
# practical conclusion: maintain static balanced multi-factor portfolio; do not factor-time
第一,历史样本太短。Ken French 月度因子史约 720 月(60 年 × 12);该样本下,你能写得出的任何择时信号——估值利差、宏观指标、因子动量——的信噪比都太弱,无法在常规显著水平上拒绝"无择时优势"的原假设。第二,HML 利差(多头平均 B/M 比短头平均 B/M)预测下 12 月 HML 收益的样本内 R² 约 5-10%,而在扩展窗口交叉验证下样本外 R² 坍缩到 1-3%——4.1 研究纪律课上的经典样本内到样本外缩水。第三,即便样本外优势为正,对其行动的换手与税费拖累抵消任何小于约 ±30% 倾斜的成本后优势。Asness-Chandra-Ilmanen-Israel 2017 《Contrarian factor timing is deceptively difficult》形式化了立论。AQR 实务结论:保持静态平衡多因子组合;不要择时。
Arnott 阵营 —— 支持有界反向倾斜的三论
Arnott / RAFI 2016 《How can smart beta go horribly wrong?》立场是辩证反方:
arnott_arguments = [
"FVS_predicts_factor_returns_at_3_to_5_year_horizon", # HML-spread R^2 ~5-15% in-sample on 12m HML return
"cheap_factor_tilt_robust_across_factors_and_regions", # HML, RMW, CMA, BAB across US/EM/dev-ex-US
"post_publication_arbitrage_implies_cheap_recovery", # McLean-Pontiff 2016 decay-then-recovery
]
# Arnott-Beck-Kalesnik-West 2016 + Arnott-Hsu-Kalesnik-Tindall 2013
# practical conclusion: tilt cheap untilt expensive with 5-year band capped at +/-20%
第一,因子估值利差(每因子的多头便宜 / 空头贵的特征比)预测后续因子收益,3-5 年期 12 月前瞻收益的样本内 R² 约 5-15%。第二,便宜因子倾斜跨因子家族(HML、RMW、CMA、BAB)与跨区域样本(美股、新兴市场、发达除美)稳健——当一条因子处于深度历史 FVS 折价时,后续 3-5 年收益系统性为正。第三,发表后套利机制(McLean-Pontiff 2016)预示衰减-再恢复模式:因子在发表后随拥挤压利差而衰减;充分被套利掉的便宜因子机械上变成下一段 regime 赢家。RAFI 实务结论:向便宜因子倾斜、向昂贵因子反向,带 5 年评估窗口,逐因子幅度上限约 ±20%。
四条宏观条件因子-regime regularity
独立于 FVS,宏观文献记录四条跨因子 regime regularity:
macro_conditional_regularities = {
"HML_loads_on_rising_rates_steepening_curve": "Fama-French 1989 — value cash flows are shorter-duration",
"UMD_loads_on_stable_trending_crashes_on_reversal": "Daniel-Moskowitz 2016",
"BAB_loads_on_falling_vol_crashes_on_rising_vol": "leverage-constraint mechanism unwinds",
"QMJ_loads_on_slowing_growth_late_cycle": "defensive cash flows valued in pre-recession",
}
# regime-prediction example: rising_rates + slowing_growth -> overweight HML + QMJ, underweight BAB
第一,HML 在加息与曲线变陡时正向载荷(Fama-French 1989),因为价值现金流结构上比成长现金流更短久期,折现率上升对成长伤害更大。第二,UMD 在稳定趋势 regime 中正向载荷,在 regime 反转时崩盘(Daniel-Moskowitz 2016)——L2 的出熊反弹崩盘机制。第三,BAB 在波动下行 regime 中正向载荷(杠杆约束机制在 VIX 压缩、受约束机构在低 beta 中追逐收益时延伸),在波动上行 regime 中崩盘——彼时这些机构同步去杠杆。第四,QMJ 在增长放缓的晚期周期 regime 中正向载荷,因为防御现金流在衰退前窗口被差异化定价。合成 regime 预测是机械的:在加息 + 增长放缓regime,超配 HML 与 QMJ,低配 BAB,UMD 待趋势-vs-反转读数前按 regime 中性处理。
因子估值利差(FVS)计算
Arnott 阵营倾斜机制需要每因子的 FVS 估计:
def factor_valuation_spread(long_leg_chars: pd.Series, short_leg_chars: pd.Series, factor_type: str = "value") -> float:
if factor_type == "value":
return long_leg_chars.mean() / short_leg_chars.mean()
else:
return long_leg_chars.mean() - short_leg_chars.mean()
对价值因子,FVS 是便宜腿(高 B/M 多头股名)平均特征对贵腿(低 B/M 空头股名)平均特征的比率;比率更高意味着便宜腿相对贵腿更便宜,即更宽的价值利差。对质量因子或动量因子,FVS 是差——多头腿平均特征减空头腿平均特征——因为自然标度是加性而非乘性(质量的 ROE 差;动量的过去 12 月收益差)。factor_type='value' 默认值标记 Arnott 文献中最常见情形;对加性形式显式传 factor_type='quality' 或 factor_type='momentum'。
FVS z 分公式的展示形式,被 contrarian_tilt 下游使用:
Formula Explorer
z_score = (fvs_current - mean(fvs_history)) / std(fvs_history)反向倾斜计算
FVS 喂给有界反向倾斜规则:
def contrarian_tilt(fvs_current: float, fvs_history: pd.Series, max_tilt: float = 0.20, z_threshold: float = 1.0) -> float:
z = (fvs_current - fvs_history.mean()) / fvs_history.std()
raw_tilt = -z * (max_tilt / z_threshold)
return np.clip(raw_tilt, -max_tilt, max_tilt)
对 60 月滚动历史计算当前 FVS 的 z 分;转换为与负 z 成比例的原始倾斜分数(便宜因子 z < 0 得到正倾斜——超配;昂贵因子 z > 0 得到负倾斜——低配);幅度封顶 ±max_tilt = 0.20。这正是 Arnott 实务折中——倾斜足够大,能在有效时捕获便宜因子反转;足够小,不被 Asness 阵营的成本拖累与样本外 R² 担忧压倒。CN 私募对 A 股做同样安排时,把 macro 指标换成 SHIBOR、社融、PMI、CSI300 IV 与新增基金账户数。
七步因子轮动诊断包
委员会会议就绪包:
factor_rotation_diagnostic = [
"compute_FVS_per_factor",
"z_score_vs_60_month_history",
"compute_macro_regime_indicators", # yield-curve slope, VIX/IV, PMI
"form_3_to_9_month_forward_tilt_per_factor",
"cap_per_factor_tilt_at_plus_minus_20_pct",
"document_thesis_in_research_log", # per 4.2.1 L3 multi-testing counter
"measure_realised_tilt_vs_static_performance_recalibrate",
]
第一步:对多因子组合中每条因子计算 FVS。第二步:对 60 月滚动历史对每个 FVS 做 z 分。第三步:计算宏观 regime 指标——收益率曲线斜率(10y − 2y)、隐含波动率(美股 VIX;CN 沪深300 IV)、ISM PMI(CN 用 NBS PMI)增长指标。第四步:综合 FVS z 分与宏观 regime 读数形成 3-9 月前瞻倾斜建议(逐因子)。第五步:每因子倾斜按 Arnott 实务规则封顶 ±20%。第六步:把论点写进研究日志(4.2.1 L3 的多重检验计数器),便于后续审查复盘命中率。第七步:测量已实现倾斜 vs 静态业绩并重新校准——若 24 月内倾斜系统性输,Asness "不要择时"告诫为约束生效。
六步实务派默认
合成 L1-L3 + Asness vs Arnott 之辩:
practitioner_default = [
"maintain_static_balanced_multi_factor_portfolio", # equal-Sharpe-contribution / risk-parity baseline
"apply_mild_contrarian_rebalancing_with_5_year_band", # Arnott practical rule capped at +/-20%
"do_not_aggressively_factor_time", # Asness caution holds
"never_zero_weight_long_term_winning_factor_after_drawdown", # L1 rolling-Sharpe rule; every factor crashes; recoveries follow
"document_each_factor_weight_change_with_regime_valuation_macro_thesis", # research log per 4.2.1 L3
"measure_tilt_vs_static_quarterly_recalibrate",
]
# bounded contrarian-tilt at +/-20% rule
第一步:基线是等夏普贡献(或风险平价——等化事前风险贡献)的静态平衡多因子组合——Asness 原假设,任何偏离须辩护。第二步:在 5 年评估窗口内做温和反向再平衡,逐因子封顶 ±20%(Arnott 实务折中)。第三步:不要激进因子择时——Asness 样本太短 / 成本拖累告诫对任何大于 ±20% 的倾斜成立。第四步:回撤后绝不把长期赢家因子零权——L1 滚动夏普规则:每条因子都经历过多年期负实现夏普,复苏随后出现。第五步:研究日志里每一次因子权重变更都附带 regime + 估值 + 宏观三元论点,包含信息比率、跟踪误差、Alpha 衰减假设、最大回撤目标;均值方差优化 / Barra 模型 / MVO 机制是形式化框架,研究日志是审计线索。第六步:逐季度测量倾斜 vs 静态业绩并校准——若倾斜连续两年系统性输,回退靠近静态。这六步清单正是周三委员会能实际辩护的立场。
Exercise
给定 1990-01 至 2024-09 的 Ken French HML 月度收益在 hml 与 HML 利差序列(多头平均 B/M 除以空头平均 B/M)在 hml_spread,加上美股宏观指标在 macro_us_df(列 yc_slope_10y_2y、vix、ism_pmi、tips_10y_inflation_expectations)。(i) 用 (hml_spread - hml_spread.rolling(60).mean()) / hml_spread.rolling(60).std() 计算 hml_spread 滚动 60 月 z 分;识别 z 分 < -1(便宜 HML)与 > +1(昂贵 HML)的时期;预期便宜期包括 2020 年中(深度价值崩盘谷底);预期昂贵期包括 1999 年末(互联网泡沫顶)。(ii) 把下 12 月 HML 累计收益对当前 HML 利差 z 分做回归;报告 R² 与斜率;预期结果为样本内 R² 约 5-10% 且斜率为负(便宜因子预测未来正收益)。(iii) 对 2024-09 样本末 HML 套用七步因子轮动诊断包:计算当前 FVS z 分、当前宏观 regime 指标、形成 12 月前瞻倾斜建议、封顶 ±20%、把论点写进日志。(iv) 在 1990-2024 样本上模拟两策略:Strategy_A = 等权 HML(Asness 默认);Strategy_B = HML × (1 + contrarian_tilt(z_score, max_tilt=0.20))(Arnott 实务带 ±20% 上限);计算各自夏普。(v) 写一段 PM 备忘录回答"我们是否应该因子择时?"——引用 Asness 告诫(低样本外 R²、成本拖累)、Arnott 实务折中(便宜倾斜封顶 ±20%)、宏观 regime 证据(HML 在加息中载荷)、以及"有界反向倾斜是可辩护实务派默认——绝不把长期赢家因子零权"的结论。
提示
(hml_spread - hml_spread.rolling(60).mean()) / hml_spread.rolling(60).std() 计算滚动 60 月 z 分。前 60 月 z 分会为 NaN——这是预期。提示
tilt_t = contrarian_tilt(z_score.iloc[t], hml_spread.iloc[:t], max_tilt=0.20)。只用截至 t 时刻可用数据避免前视——这正是 Asness 阵营坚持的样本外测试。CN 因子轮动委员会的本地参数面板
把 L4 的诊断包落到上海百亿私募的实际参数:宏观 regime 指标用 NBS PMI、社融、CSI300 IV、SHIBOR、DR007、R007、LPR、MLF、RRR、新增基金账户数、融资融券余额;FVS 计算用 LSY 复制档案的 EP_lsy 多头 / 空头特征比;轮动建议提交月度委员会(出席人通常包括宏观、量化、固收、衍生品、风控、合规、运营六组负责人),由 CICC、CITIC、Haitong、GuangFa、Galaxy、Huatai、Tianfeng、Founder、Shenwan-Hongyuan、Industrial-Securities、Orient、Soochow、Zheshang、JuneZheng、TFZQ、CinDA、ZhongTai 等卖方研究的因子专题做交叉验证。监管端 PBOC、CSRC、AMAC、SAFE、CBIRC 的政策文件入研究日志;行业归类按 CITIC、Shenwan、CSRC 三档对照;指数面板 CSI300、CSI500、CSI1000、CSI800、SSE50、SSE180、SZSE100、ChiNext50;股指期货对冲 IF、IH、IC、IM 在 CFFEX 撮合;银行间债券估值 ChinaBond、ChinaClear 提供,银行间撮合在 CFETS。这就是 L4 的实务派默认在 A 股私募端落地的具体形态。
模块 4.3.2 至此关闭。实证记录(L1)、四段经典崩盘与解剖模板(L2)、CN 特化层(L3)、有界反向倾斜实务派默认(L4)合在一起,为多因子 PM 提供两地完整因子投资记忆:已实现数字、regime 分解、崩后应对剧本、CN 特化因子方法论,以及对永远在场的"现在该超配价值吗?"问题的可辩护答案。本 track 下一模块从因子投资走入多因子组合构造层——在跟踪误差、换手与风险预算约束下把这些因子包装成实际组合——把你现在能辩护的因子输入变成可交付头寸。