量化策略开发中最隐蔽的陷阱并非策略本身的逻辑缺陷,而是回测阶段对历史数据的过度拟合。数据上看,据CFA协会一项覆盖全球2000+个量化策略的研究显示,超半数策略在实盘表现与回测结果的偏差,主要源于过拟合而非市场风格切换。鉴于此,回测样本内优化结果的置信度非常低,只有通过样本外检验与参数敏感性分析才能验证策略的稳健性。
在回测中,多因子量化模型几乎必然存在一定的过拟合现象,关键是要量化这种风险的暴露程度。以下五个指标可以从不同维度判断模型对噪声的敏感度:样本内与样本外表现衰减幅度、因子换手率异动、参数最优点突兀度、随机标签预测胜率反转、杠杆-收益率偏离系数。其中参数最优点突兀度尤其值得关注:当策略在某个参数微小区间内贡献超额收益,而在相邻区间收益断崖式下跌时,这就是典型的数据挖掘过拟合信号。
与之配套的统计方法上,夏普率的置信区间能帮助量化从业者感受到回测中隐含的运气成分。据《金融计量学实践》一书中的推导,若策略回测年化夏普比率为1.5,但样本长度仅有48个月,那么95%置信区间的下边界可能低至0.8,这表明策略的真实表现有较大可能偏离回测结果。
从特征维度来看,多因子量化模型的一个突出问题是拥有数十个甚至上百个备选因子时会产生的维度灾难。直接采用线性回归或传统遗传规划在小样本中回测,容易落入“记忆噪声”的陷阱。针对这个问题,量化从业者常用组合压缩法(该法核心是只允许模型保留市面上稳定出现的一组相互独立性的因子,再以分组回归的方式检验各因子的独立贡献度)来替代穷举回归。
随机选择一个中期样本区间(比如月频数据下随机抽取250个剖截面),将原始全部因子,逐步添加进入模型,记录每添加一个新因子导致的R²增量与夏普衰减情况。下图展示的是构造出来的一个结构化记录:
import pandas as pd
import numpy as np
def factor_shrinkage_analysis(data, factor_list, target):
"""
输入:data - 含有的截面因子数据
factor_list - 因子列名的有序列表
target - 标签列名
输出:保持新增因子的独立贡献水平
"""
contributions = []
fl = list()
for f in factor_list:
fl.append(f)
# 模拟逐步添加因子后的模型表现
X = data[fl].values
y = data[target].values
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score, KFold
kf = KFold(n_splits=5, shuffle=True, random_state=42)
scores = cross_val_score(LinearRegression(), X, y, cv=kf, scoring='r2')
contributions.append((f, round(scores.mean(), 4)))
return contributions
# 使用方法:factor_shrinkage_analysis(panel_data, top_factors, 'future_ret')以上程序代码展示了逐一加入因子后效果变化的观察方法。若因子带来R²提升小于0.005且伴随显著方差上升,就该立即淘汰这个变量。需要注意的是,该测试中的显著性,应该用bootstrap自举检验来评估。
在量化中,任何回测都必须搭配采样切分的思路去验证稳健性。对样本进行维度分割是一个直接思路:进一步区分为分段时间的切分(如多市场时期)与买入并持有的观察窗口切分。方法特点是:在样本上简单呈现高夏普率的策略,经过组卷切入式外推后,极大概率同步实现下跌。因此当某策略的夏普一致性无法贯通时,该策略的Alpha可能来源于特定市场状态,且该状态在样本后不易持续。
更有吸引力的做法是采用以引爆天数为基础的probit-状态分离模型。原始数据进入策略前,先按市场波动率区血量切成非重叠的组;然后复现各因子各个组内的胜率与IC值。若同一行业中量价因子在高波动段的IC明显上扬,但低波段的统计显著性为零,则因子函数的前提必须绑定明确市场环境,这与在标准active return上的中性评估有本质区别。
参数过拟合的另一体征在于回测结果的单峰性比随机模型更脆弱,常被仿真方法称之为“幸运的参数搜索”问题。为了主动区分策略,好的实践是在原有回测数列上加入抽样总体的分布检验:以真实因子会引入的随机波动深度摆动作为可比潜湿度。具体而言,对样本A进行1000次由白噪声生成的模拟投资组合,每次保留相同的进出场逻辑与参数组合,但将收益率序列直方图改由噪声填充。若原策略最终的累计收益位于前95%以上的分位,该模型稳健性才有积蓄讨论的地步;若始终落在随机分布中场,则说明能发现随机参数更蠢的组合。
一个常见的现象是:为了overwrite alpha,人去增加模型的自由度(增加新的虚变量、叠加二次项或引入复数的符号信号),但在收益上却是在近似等价的时序噪声中打转曲。接受方更倾向的态度是参数尽量稀疏,回归排序中用10个级别的基线模型组合简明。以下表格对照不同类型策略的回测差异:
| 模型类别 | 因子数量 | 样本内夏普比 | 样本外衰减率 |
|---|---|---|---|
| 稀疏模型 | 5-10个 | 1.35 | 0.15以内 |
| 中密度模型 | 10-25个 | 1.36 | 0.25-0.35 |
| 高密度模型 | 50个以上 | 1.42 | 大于0.45 |
据AQR资本管理公司在其研究报告中指出,策略衰减率超过0.4属于高风险特征,需要强制考虑极化或重新修正模型形式。参数稀疏原则在对多层价量因子进行贪污持衡的合并,下落暂无主张。
总结以上方法后,提倡阶段只是以增强鲁棒性为目标的框架:第一段以包含全部研究因子的宽泛样本定位,用L1正则化的shrinkage建立稀疏基准池。这一段的目的不是求最大收益,而是找到不够被质疑有效的基础池;然后进入第二阶段,在基准池上以增量检验为核心,在每个因子端口使用样本外表现阈值排序,计取之和输出。这种两层级的设计,能避免一个因子被讽刺地解释为,多因子疯狂重复嵌套时对整体集结的过度削弱。
离散返回表时要谨慎:数据频率从日内到月频过渡和全局模型者迥异,各自应建立独立预期。适配好更偏平庸但持续的特征,优于因量化回测在拆过曲折的拟合中暴涨但实盘溃败的策略。所以把重心放在可解释性小费的因子综合上,同时利用概率预算无时空的适配去尽如此控制。降低系统性的过拟合所致的不积极不只是模型的一个Vanilla评估,正好在你的前面防线,所有的Multi-Factor曲线都被这样看作,通过苗小的扰动识别来得到安全垫。
量化本质在从噪声恍惚里筛出signal信号死磕,在稳健性上若松懈,那么得到临时代的表现实验还会照常把你抽痛。假如能接受低的样本内夏普,但是它的衰减尺寸更小,益所执行会大多数,这也是稳固联结更有效的替代证明。
评论
加载中...