Case 02 · 数据建模
风险管理里,波动率常常不等于痛感。真正让人出局的是回撤。这个项目想回答一个问题:什么样的股票,在未来 60 天更容易出现大幅回撤?
传统风险度量多用波动率或 Beta,但它们刻画的是“价格晃得厉害不厉害”,不是“会不会跌得很深”。对持有期较长的资金来说,后者才是真正的约束。
所以我把预测目标换成未来 60 个交易日的最大回撤,把它当作标签,再看哪些特征能提前区分高回撤与低回撤的股票。
两步走:先用聚类把“不同类型的股票”分开,解决全样本异质性的问题;再用 Lasso 在每个群体内部筛因子,让模型自己决定哪些特征值得留下。
评估上以时间序列交叉验证为主,重点看模型在高回撤样本上的召回率——漏掉一次大回撤的代价,远高于多一次误报。
全样本放进一个模型时,因子关系被不同风格的股票互相抵消;分群之后,特征的解释力明显更稳定。最终 8 个因子进入模型,覆盖动量、流动性与波动三类。
这个项目最大的收获不是模型精度,而是流程:标签怎么定义、数据怎么切、指标怎么选,决定了结论可不可信。
交付物是一套可复跑的 Python 流程:从数据清洗、特征构造、聚类、Lasso 到回测评估。
如果继续做,我会加入行业中性化和宏观状态变量,并尝试用生存分析替代二分类,让“什么时候发生”也成为模型的一部分。