一、非线性因子概述
什么是非线性因子
聊因子之前,我先问个问题:
你见过完美的线性关系吗?
反正我没见过。在真实的金融市场里,因子和收益之间的关系,几乎从来不是一条直线。
非线性因子,说白了就是那些不能用简单线性公式描述的因子关系。比如:
- 换手率低到一定程度,收益反而变差
- 波动率超过某个阈值,收益开始反转
- 市值因子在小盘和大盘两端表现不同
这些都不是一条直线能画出来的。我刚开始做量化那会儿,总觉得线性模型够用了。后来被市场狠狠教育了一顿——有些信号,线性模型根本抓不住。
核心定义:非线性因子是指因子值与预期收益之间存在曲线关系、阈值效应或交互效应的因子。简单说,就是因子值翻倍,收益不一定翻倍。
线性模型 vs 非线性模型
咱们直接上对比。我整理了一张表,你一看就明白:
| 对比维度 | 线性模型 | 非线性模型 |
|---|---|---|
| 数学形式 | y = wx + b | y = f(x),f可以是任意函数 |
| 可解释性 | 高,系数直接反映影响 | 低,需要额外解释方法 |
| 过拟合风险 | 低 | 高,需要正则化 |
| 捕捉复杂模式 | 差 | 强 |
| 计算效率 | 快 | 慢(尤其树模型和神经网络) |
| 典型代表 | 线性回归、Fama-French | XGBoost、神经网络、样条回归 |
我个人习惯是:先用线性模型跑一遍,看看哪些因子有潜力。然后对表现好的因子做非线性转换,往往能挖到额外收益。
举个例子。我记得有一次做A股动量因子,线性模型跑出来IC只有0.02,几乎没信号。后来我试着把动量分成三段——低、中、高——发现中间段的动量其实很有效,只是被两端拖累了。这就是典型的非线性关系。
我的经验:线性模型适合做"粗筛",非线性模型适合做"精炼"。别一上来就上复杂模型,容易过拟合。
为什么需要非线性转换
这个问题其实可以反过来问:如果线性模型够用,为什么还要折腾?
原因有三:
- 市场本身就是非线性的——投资者的情绪、资金流向、政策冲击,这些都不是线性叠加的。你想想看,一个利好消息在牛市和熊市里的影响能一样吗?
- 因子存在阈值效应——比如市值因子,小盘股和大盘股的表现差异,不是市值每增加1亿就线性变化。我曾经做过一个回测,把市值取对数后,IC直接从0.03提升到0.08。
- 因子之间存在交互——低波动+高动量,和单独看低波动或高动量,效果完全不同。线性模型没法自动捕捉这种组合效应。
嗯,这里要注意:非线性转换不是万能药。我见过有人把因子做了十几种变换,结果回测漂亮,实盘一塌糊涂。为什么?过拟合了。
避坑指南:我曾经犯过一个错误——对同一个因子同时做平方、开方、对数、Box-Cox变换,然后全部扔进模型。结果模型在样本外表现极差。后来我学乖了:非线性转换要有业务逻辑支撑,别为了非线性而非线性。
下面这张图,是我自己总结的非线性因子处理流程:
这张图的核心逻辑很简单:先检验线性IC,显著就直接用;不显著再做非线性转换,最后一定要交叉验证。我每次做因子研究都走这个流程,基本没出过大问题。
一个小技巧:做非线性转换前,先画散点图看看因子和收益的关系。如果肉眼都看不出模式,那非线性模型也很难学到什么。
最后说一句:非线性因子转换不是银弹。它是个工具,用好了能提升收益预测的精度,用不好就是过拟合的温床。关键还是理解你的因子、理解你的市场。
公众号:蓝海资料掘金营,微信deep3321