4. 特征工程:动量因子、波动率因子、估值因子、资金流向因子
好,咱们进入第四讲。特征工程,说白了就是给聚类算法准备“食材”。你想想看,如果给厨师一堆烂菜叶子,再好的手艺也做不出佛跳墙。量化策略也一样,因子选得不对,聚类出来的结果就是一团浆糊。
我个人习惯把因子分成四大类:动量、波动率、估值、资金流向。这四类基本能覆盖市场的不同维度。咱们一个一个来看。
4.1 动量因子:追涨杀跌的底层逻辑
动量因子,其实就是“过去涨得好,未来可能继续涨”。听起来有点玄学?但实证研究确实支持这个现象。我常用的动量因子有这么几个:
- 过去N日收益率:比如过去20日、60日、120日的累计收益。这是最朴素的动量。
- 均线乖离率:当前价格偏离均线的程度。偏离太大,可能回调。
- RSI(相对强弱指标):衡量近期涨跌幅度,超买超卖信号。
嗯,这里要注意一点:动量因子在A股市场,短期(比如5日)和长期(比如120日)的效果差异很大。我在项目中遇到过,用20日动量做轮动,效果反而比60日好。所以别迷信教科书,多试试不同窗口。
核心经验:动量因子要配合市场环境。震荡市里,动量容易反复打脸;趋势市里,动量就是印钞机。
4.2 波动率因子:风险的另一面
波动率因子,衡量的是“价格上蹿下跳的程度”。很多人觉得波动率是风险,但换个角度看,波动率也是机会。我常用的波动率因子:
- 历史波动率:过去N日收益率的标准差。简单粗暴,但有效。
- 振幅:每日最高价与最低价的比值。能反映日内波动。
- ATR(平均真实波幅):考虑了跳空缺口,更全面。
我曾经犯过一个错误:直接用日收益率标准差做波动率因子,结果发现不同股票的价格水平差异太大,导致波动率数值不可比。后来我改用“对数收益率”的标准差,才解决了这个问题。你想想看,100块的股票波动1%和10块的股票波动1%,绝对数值差10倍,但相对风险是一样的。
避坑指南:计算波动率时,一定要用对数收益率,而不是简单收益率。否则高股价的股票天然波动率就大,这会影响聚类效果。
4.3 估值因子:便宜才是硬道理?
估值因子,说白了就是“这股票贵不贵”。价值投资的核心就是买便宜货。但量化里,估值因子需要标准化处理。我常用的:
- PE(市盈率):股价/每股收益。注意,亏损股的PE是负的,需要特殊处理。
- PB(市净率):股价/每股净资产。银行股常用这个。
- PS(市销率):股价/每股销售额。适合还没盈利的成长股。
我个人习惯把估值因子做“行业中性化”处理。为什么?因为不同行业的PE差异巨大,银行股PE常年5倍,科技股PE可能50倍。如果不做中性化,聚类结果会直接按行业分类,而不是按“估值高低”分类。
警告:估值因子不能直接用原始值。一定要做标准化或行业中性化。否则聚类结果会被行业属性主导,失去轮动意义。
4.4 资金流向因子:跟着聪明钱走
资金流向因子,反映的是“大资金在买还是卖”。这个因子在A股特别有效,因为散户多,大资金的行为有很强的指示意义。我常用的:
- 主力净流入:大单买入金额 - 大单卖出金额。
- 资金流向占比:净流入金额 / 成交额。这个比绝对数值更稳定。
- 机构持仓变化:如果数据可得,这个因子很准。
嗯,这里要提醒一下:资金流向数据有很多种算法,不同数据源算出来的结果可能不一样。我在项目中遇到过,用Level-2数据算出来的主力净流入,和用普通行情数据算出来的,相关性只有0.6左右。所以,选一个稳定的数据源,别换来换去。
4.5 因子相关性分析:别让因子“打架”
因子选好了,下一步就是看它们之间有没有“内讧”。如果两个因子高度相关,那它们提供的信息就是重复的,放进模型里反而会引入噪音。
我一般会做两件事:
- 计算相关系数矩阵:看看哪些因子之间相关性超过0.7。
- 做VIF(方差膨胀因子)检验:多重共线性的定量指标。
举个例子,过去20日收益率和过去60日收益率,相关性通常很高。这时候我会只保留一个,或者做差分处理。你想想看,如果两个因子都反映“涨了多久”,那它们本质上是一个东西。
经验之谈:因子相关性分析不是一次性的。市场环境变了,因子之间的关系也会变。我建议每季度重新算一次相关系数矩阵,动态调整。
4.6 因子筛选:留下最锋利的刀
最后一步,就是筛选出最有效的因子。我常用的方法:
- IC(信息系数)分析:看因子值与未来收益的相关性。IC越高,因子越有效。
- 分层回测:把股票按因子值分成10组,看最高组和最低组的收益差。
- 因子稳定性:因子在不同时间段的IC是否稳定。忽高忽低的因子,不靠谱。
我曾经用过一个因子,IC值很高,但分层回测发现,只有最高组和最低组有收益差,中间8组全是噪音。这种因子其实没什么用,因为它只能区分极端情况,对大部分股票没有区分度。
筛选原则:宁缺毋滥。3-5个高质量因子,比10个垃圾因子强得多。我一般最终保留4-6个因子用于聚类。
知识体系总览
下面这张图,把整个特征工程的流程串起来了。从原始数据到最终选定的因子,每一步都有坑,每一步都需要经验。
好了,特征工程这部分就讲到这里。记住,因子不是越多越好,关键是每个因子都要有清晰的逻辑支撑。下一章,我们会把这些因子喂给聚类算法,看看市场到底能分成几类。