← 返回模块
4.3.2.2beta 可读 · 未来付费校验通过内容版本 2026-05-28

四大经典因子崩盘:价值、动量、质量与低波动

4.3.2 · 因子表现与中国 A 股 · 量化全流程

周五下午 4:55,深圳福田某百亿私募的因子轮动组,十八个月以来 HML 头寸第一次跑出 +6% 的单周反弹——长久期科技板块前一周回撤 14%,价值缺口第一次实质性收敛。基金经理盯着 P&L 看,风控让你周一早 7 点上一份单页:"这是 regime 翻转,还是又一次假突破?"L1 给了你表头与"滚动​​夏普比率​​每个因子都会崩,不要恐慌"的诊断;L2 是配套的法证库——大到任何 35 岁以下的资深 PM 都至少亲历过一段的四段 episode、应用于每一段的七步崩盘解剖模板、把动量崩盘从职业生涯终结变成可管理的 Barroso-Santa-Clara / Daniel-Moskowitz / AQR 三套缓解工具,以及把峰谷数字拆成系统暴露与​​因子模型​​特异成分的回撤归因回归(此处的​​最大回撤​​与​​贝塔​​载荷一同构成解释变量集)。走完 L2,你能用 regime 标签 + 归因分解 + 历史可比 episode 回答周一晨会问题,而不是挥手敷衍——并按​​信息比率​​与​​质量因子​​两条侧度量评估缓解工具的边际改进。L2 的结构格式延续 L1:每个枚举分类(四段崩盘 episode、七步解剖、三套动量缓解、四段 CN 崩盘)用 Inline-code 列表;两条可复用函数(volatility_scaled_momentumattribute_factor_drawdown)用 Fenced python 代码块;收尾配 Exercise。L2 按顺序回答的四问:

  1. 四段经典崩盘是哪些?各自的直接机制是什么?
  2. 如何应用七步崩盘解剖模板?
  3. 三套动量崩盘缓解之间有何差别?各自的回撤改善幅度多大?
  4. 如何把因子回撤分解为系统暴露与特异成分?

四段经典崩盘 episode

值得熟记的美股​​因子模型​​崩盘案库是这四段:

canonical_crash_episodes = {
    "2018_2020_value_crash":           ("HML peak-to-trough ~-50%",
                                        "mechanism: mega-cap-tech P/E expansion + value-sector macro headwinds"),
    "march_2009_momentum_crash":       ("UMD ~-45% single-month",
                                        "mechanism: bear-market-trough-rebound (Daniel-Moskowitz 2016 JFE)"),
    "post_2008_quality_defensive_bid": ("RMW + USMV outperformed value 2009-2017",
                                        "mechanism: ultra-low-rates-favour-long-duration-cash-flows"),
    "low_vol_BAB_anomaly":             ("BAB Sharpe ~0.78 (FP 2014)",
                                        "mechanism: leverage-constraint explanation"),
}

2018-2020 价值崩盘是 60 年样本中​​价值因子​​的最深回撤——HML 峰谷约 -50%,超过前最差的 1999 互联网回撤(约 -40%)。直接机制是科技大盘市盈率扩张:FAANG 从 2017 年远期约 20 倍一路涨到 2020 年 8 月顶点约 35 倍;同期能源、金融、REITs 价值板块承受宏观逆风(油价崩、收益率曲线变平、金融监管加压)。文献铺得很厚:Israel-Laursen-Richardson 2020 《Is (systematic) value investing dead?》JPM、Asness 2020 《It's time for a venial value-timing sin》Cliff's Perspective、Lev-Srivastava 2020 关于无形资产经济中 B/M 价值信号​​Alpha 衰减​​的实证。

2009 年 3 月​​动量​​崩盘是 Daniel-Moskowitz 2016 JFE 《Momentum crashes》的样板——金融危机熊底反弹时 UMD 单月跌约 -45%。机制:出熊反弹奖励的恰好是动量的空头腿(过去 12 月输家——2008 年崩得最狠的金融与高 beta 周期股),而惩罚多头腿(过去赢家——危机里跑赢的防御股)。Daniel-Moskowitz 论证动量左尾强烈 state-依赖:出熊反弹状态下动量的条件夏普深度为负。

后 2008 质量防御出价不是某条因子的崩盘,而是 2009-2017 多年期 regime,RMW、USMV 和低波综合按年跑赢 HML 4-6 个百分点。机制是超低利率环境:折现率敏感的长久期现金流(科技质量、成长、低波防御股)在折现率下行时增值,而价值结构性的短久期现金流挣不到等价顺风。结构性​​低波动因子​ / BAB 异象——Frazzini-Pedersen 2014 给出的 BAB 全样本 0.78 夏普——是同一故事的持续反面,他们论文里归因于受杠杆约束的机构资金抬高 beta、抛弃低 beta。

七步崩盘解剖模板

对每段 episode 都用同一套七步模板:

crash_anatomy_template = [
    "identify_peak_trough_dates",
    "identify_proximate_mechanism",
    "check_factor_valuation_spread_at_drawdown_start",  # cheap-going-in is suspect / rich-going-in is normal
    "check_complementary_factor_regime",                 # does another factor crash at the same time?
    "decompose_into_idiosyncratic_vs_systematic_exposure",  # per L1 method
    "write_one_paragraph_attribution_narrative",
    "forward_point_to_L4_factor_timing_question",
]

第一步:用日频累计收益序列锁定峰谷日期(月频会把月内动作平滑掉)。第二步:识别直接机制——叙事级别的经济 regime。第三步:核查回撤起点的​​因子暴露​​估值利差(多头便宜 / 空头贵的特征比)——一条起点便宜却仍然崩盘的因子可疑(利差本该是防御护城河);一条起点贵的因子崩盘是正常(重估回归公允)。第四步:核查互补因子 regime——同期是否还有别的因子崩?动量与价值常在同一 regime 翻转处一起崩;质量与低波通常齐涨。第五步:跑 L1 回撤分解——回撤窗口内以目标因子对其他因子做 OLS,拆成拟合(系统暴露)与残差(特异)。第六步:写一段归因叙事——机制是什么、分解显示什么、回撤究竟是"在该 regime 下符合预期"还是"无法被其他因子解释"。第七步:前指 L4 因子择时问题——该回撤应触发轮动,还是实务派的静态平衡持仓正确?

三套动量崩盘缓解工具

Daniel-Moskowitz 2016 论证动量左尾 state-依赖;文献回应出三套缓解:

momentum_crash_mitigations = [
    "barroso_santa_clara_2015_volatility_scaled_momentum",  # scale exposure inversely to trailing 6-month vol of momentum
    "daniel_moskowitz_2016_constant_volatility_momentum",   # rebalance to constant ex-ante vol
    "asness_frazzini_israel_moskowitz_2014_residual_momentum",  # momentum after removing market component
]
# trailing-6-month-vol scaling cuts US drawdowns ~50%

Barroso-Santa-Clara 2015 的波动率缩放动量最简单。按动量自身的滚动 6 月已实现波动率反比缩放暴露,瞄准 12% 的恒定事前年化波动。在他们的美股样本里,缩放版本把最差单月回撤约削减 50%(从未缩放的约 -50% 的 2009 年 3 月数变成约 -25%),同时保留无条件夏普。Daniel-Moskowitz 2016 用前瞻事前波动率预测(他们偏好 GARCH(1,1) 估计动量收益)做更精细的恒定波动动量,回撤改善幅度大体相当。Asness-Frazzini-Israel-Moskowitz 2014 的残差动量则是先剔除市场 beta 成分后再按过去 12 月收益排序,机械地去除出熊反弹脆弱性。

Barroso-Santa-Clara 函数是实务派的主力:

def volatility_scaled_momentum(raw_momentum: pd.Series, vol_window: int = 6, target_vol: float = 0.12) -> pd.Series:
    realised_vol = raw_momentum.rolling(vol_window).std() * np.sqrt(12)
    scaling = target_vol / realised_vol
    scaled_momentum = raw_momentum * scaling.shift(1)
    return scaled_momentum

两个关键细节。np.sqrt(12) 把滚动月度标准差年化,使与 target_vol=0.12 同口径比较。.shift(1) 在缩放因子上的滞后是反前视保护:在 tt 月你只知道截至 t1t-1 的滚动 6 月波动,所以施加到 tt 月收益上的缩放只用月初已知信息。砍掉 shift 就拟合了前视版本——回测漂亮,样本外失败。

因子回撤归因回归

L1 的分解封装成 L2 的工具:

def attribute_factor_drawdown(target_factor: pd.Series, other_factors_df: pd.DataFrame,
                              drawdown_start: str, drawdown_end: str) -> dict:
    tgt = target_factor.loc[drawdown_start:drawdown_end]
    oth = other_factors_df.loc[drawdown_start:drawdown_end]
    model = sm.OLS(tgt, sm.add_constant(oth)).fit(cov_type="HAC", cov_kwds={"maxlags": 6})
    fitted = model.predict(sm.add_constant(oth))
    residual = tgt - fitted
    cum_total = (1 + tgt).cumprod()
    total_drawdown = (cum_total / cum_total.cummax() - 1).min()
    cum_fitted = (1 + fitted).cumprod()
    systematic_exposure_drawdown = (cum_fitted / cum_fitted.cummax() - 1).min()
    cum_resid = (1 + residual).cumprod()
    idiosyncratic_drawdown = (cum_resid / cum_resid.cummax() - 1).min()
    return {
        "total_drawdown": total_drawdown,
        "systematic_exposure_drawdown": systematic_exposure_drawdown,
        "idiosyncratic_drawdown": idiosyncratic_drawdown,
        "factor_loadings": model.params.drop("const"),
    }

cov_type="HAC"maxlags=6 给出 Newey-West 自相关一致标准误,6 个月滞后——月度因子回归的标配,处理 OLS 在重叠窗口经济序列上的残差自相关污染。对 2018-2020 HML 回撤用 FF5 做解释集,你能还原约 70% 回撤来自系统暴露(由内嵌的正 UMD 与负 SMB 暴露驱动),约 30% 来自 HML 特异(价值崩盘本体)。

Formula Explorer

scaled_momentum = raw_momentum * (target_vol / realised_vol)

2018-2020 价值崩盘解剖示范

走七步模板。第一步:峰 2017 年 8 月,谷 2020 年 8 月——Ken French HML 序列上的 36 月回撤约 -50%。第二步:机制是科技大盘市盈率扩张 + 价值板块宏观逆风(2014-2016 油价崩、2020 新冠;2019 收益率曲线变平到倒挂;金融业的监管与诉讼周期)。第三步:HML 估值利差在 2017 年 8 月顶点已处于 1963-2024 历史的 80 百分位——起点便宜,所以随后的崩盘可疑(利差本该是护城河)。第四步:互补 regime——UMD 在同窗口跑出约 +15%,因为成长-科技腿复利进入动量多头;SMB 跑 -3%——大盘统治;价值崩盘伴随质量与成长齐涨。第五步:L1 分解归出 ~70% 系统暴露 + ~30% 特异。第六步:归因叙事——价值结构性便宜进场,但折现率 regime(2017-2020 降息)+ 科技大盘市盈率扩张 36 个月里压过利差。第七步:前指 L4——起点便宜却仍崩的特征正是 Arnott 2016 说该触发反向倾斜的情形,而 Asness 2016 说择时的成本拖累抵消优势;有界 ±20% 反向规则是综合答案。

CN 区域崩盘

A 股因子文献有自己的崩盘库,锚点为:

cn_crash_episodes = {
    "2015_Q3_A_share_crash":        ("CSI300 ~-45%",
                                     "mechanism: leverage-fueled retail bull unwind"),
    "2018_deleveraging_crash":      ("CSI300 ~-25%",
                                     "mechanism: post-2017 financial-regulator de-risking campaign"),
    "2021_ChiNext_correction":      ("growth/momentum factors ~-30%",
                                     "mechanism: anti-monopoly + education + property regulatory cycle"),
    "2022_2023_value_rotation":     ("SOE value + China-state-narrative trade outperformed",
                                     "mechanism: state-narrative bid + property-sector deleveraging"),
}

这四段在 L1 沪深300 / 上证 / 深证 / SSE / SZSE 表头中已出现的实证记录里再次出现;L3 深入走 CN 特化机制。从私募从业者视角看,2015-Q3 崩盘的杠杆解套动力学是中国版的"高杠杆配资 + T+1 单边可交易性 + 涨跌停回路"复合事件,300ETF 与 50ETF 上的对冲流量在 CFFEX 股指期货的多空通道里被反复挤压;2021 创业板修正本质上是监管 regime 切换驱动的成长因子反转;2022-2023 价值轮动则是国企叙事出价 + 房地产去杠杆推动的国央企 + 中字头反弹。

Exercise

给定 2008-01 至 2010-12 的 Ken French UMD 日收益在 umd_daily,以及 FF5 日收益在 ff5_daily(列 MKT_RFSMBHMLRMWCMA)。(i) 在该窗口内识别 UMD 回撤最大的单一日历月(预期:2009 年 3 月,约 -45%);套用七步崩盘解剖模板(月内峰谷日期、按 Daniel-Moskowitz 2016 归因于熊底反弹、核查同期市场收益、核查 HML 与 SMB 联动、用 attribute_factor_drawdown(umd_monthly_subset, ff5_monthly_subset.drop("UMD_RF", axis=1, errors="ignore"), "2009-03-01", "2009-03-31") 分解、写一段归因叙事)。(ii) 对 UMD 日收益应用 Barroso-Santa-Clara 波动率缩放:umd_monthly = umd_daily.resample("M").sum();应用 volatility_scaled_momentum(umd_monthly, vol_window=6, target_vol=0.12);报告 2009 年 3 月的缩放后动量收益;观察回撤约削减 50%(预期:从约 -45% 到约 -22%)。(iii) 对 2020-03 UMD 回撤(约 -25% 单月)做同样操作;报告 2020 年 3 月缩放后动量收益;观察约 50% 削减。(iv) 对 CN 区域崩盘择一应用七步模板(cn 区域:2018-Q4 去杠杆崩盘中 CN 动量约 -15%);报告归因。(v) 写一段 PM 备忘录回答"经历 45% 单月动量崩盘后是否应恐慌退出动量?"——引用 Daniel-Moskowitz 模式(崩盘后跟随部分复苏)、Barroso-Santa-Clara 缓解(波动率缩放把下一次崩盘回撤砍约 50%)、L1 滚动夏普规则(每个因子都崩过,不恐慌)。

提示
先用 umd_monthly = umd_daily.resample("M").sum() 聚合到月频;umd_monthly.idxmin() 给你最差月;月内峰谷请切片日序列并算累计收益的 min/max。
提示
第 (ii) 步应用 volatility_scaled_momentum(umd_monthly, vol_window=6, target_vol=0.12) 后比较 2009-03 缩放打印与原始 UMD:比值约 0.5,因为 2009-03 入月的滚动 6 月波动已抬升。

CN 崩盘案库的本地映射

把上述四段崩盘对应到 A 股本地史:2015-Q3 杠杆牛崩对应 CSI300、CSI500、CSI1000、SSE50 同步深跌,卖方研究(CICC、CITIC、Haitong、GuangFa、Galaxy、Huatai、Tianfeng、Founder、Shenwan-Hongyuan、Industrial-Securities、Orient、Soochow、Zheshang)对融资盘 unwind 与场外配资清查的归因文献是事后教科书;2018 去杠杆崩对应 CBIRC、CSRC、PBOC、SAFE 协同推出的资管新规过渡期,Wind、Tushare、Qlib、RESSET、CSMAR、GTA、CNINFO、JuChao 提供的口径一致的 ST 与停牌数据是清理回测的必备;2021 ChiNext-科创板 修正对应 SHIBOR、DR007、R007、LPR、MLF、RRR 与 CFETS 流动性面板的同步异动;2022-2023 国央企-中字头-SOE 价值轮动对应 CICC、Soochow、TFZQ、CinDA、ZhongTai 的策略研究中"中特估"叙事的兴起,与 CITIC、Shenwan、CSRC 三档行业分类下 SOE 银行(ICBC、ABC、CCB、BOC、CMB、CMS)与能源(PetroChina、Sinopec、CNOOC)的同步反弹。CFFEX 的 IF、IH、IC、IM 与 ChinaBond、ChinaClear 估值通路是事后归因不可绕过的微结构信息源。

L2 把四段 episode 案库、七步解剖、三套动量缓解与归因回归交付到了你手里——任一资深 PM 写崩后备忘录无需诉诸恐慌叙事所需的全套工具。L3 把 CN 特化层再深一层——LSY-3 对 FF3 的 A 股重构、排除底部 30% 市值的壳价值调整、翻转动量符号的散户主导 regime,以及任何生产级 CN 因子栈必须清理的涨跌停 + T+1 微结构——使你带进 L4 因子择时问题的实证记录两地都诚实。