量化读书会7:如何改良线性交易模型

avatar
· 阅读量 2,307

在前文讨论线性模型的成败的时候,

岑秋苑:量化读书会6:线性交易模型的成与败

作者指出,线性交易模型存在一些问题,诸如:

1.非线性; 2.独立性; 3.共线性; 4.同方差; 5.正态性

线性模型遇到非线性,从名字上就能感觉到有问题。

趋势追踪/动量因子就是最常见的一个非线性的问题。趋势和动量描述的就是过去价格上涨,那么未来价格会继续上涨;过去价格下跌,那么未来价格会继续下跌。但是,在线性模型框架下,是不是过去价格上涨的多,未来价格就上涨的多呢?显然这是不一定的。

过去价格上涨0.1%,噪音影响很大;价格上涨1%,上涨就比较明确了,在0.1%到1%这个区间内,很可能价格涨幅越大,对应未来的上涨就越明确,未来的平均涨幅就越大,过去和未来成正相关。

但价格上涨8%,未来上涨得就一定比价格上涨1%多么,显然很多情况不是这样。首先,国内市场有严格的涨跌停板制度,未来价格上涨更多,从制度上就不允许。其次,突发事件或者市场情绪,对价格的作用力是有限的,价格上涨太多,往往要回落;下跌太多,也需要企稳。这样,当过去价格变动较大时,其和未来价格的关系,可能是负相关的。

因此,如果在构建过去价格变化和未来价格变化的时候,使用单一的线性关系,那么模型在一些情况下,就会受到一段正相关和一段负相关的拉扯作用,变得效果很差。价格涨停了,你疯狂追多,高位站岗;上涨行情刚启动,模型却反应很小,错失机会。

那么如何解决非线性问题呢?作者提出了三个思路。

作者的研究的案例是温度和人们户外活动(租自行车)的关系,这显然和动量问题有相似的逻辑。在冬季温度低的时候,温度越高,人们越愿意出门;想反,在夏季温度高的时候,温度越高,人们越想在家里吹空调。

变换法

作者的第一个解决方案是特征值变换。

量化读书会7:如何改良线性交易模型

作者将左图的线性关系,变成了右图的非线性关系。需要做的只是把左图的回归特征值,做log(x+10)的变化,这样在温度很低的时候,温度微小的增加,户外活动量就会快速增加。而温度很高的时候,温度增加对户外活动量就没有什么贡献。

当然,由于对数依然保持单调递增关系,因此没有办法描述温度特别高时候的负影响。但是,作者指出可以使用根号、指数、高次等方式进行变换,存在很多非单调的变换方式。

 

分组法

分组法其实就是一个等长分类的树模型,将影响因素分成若干等距的小区间,用小区间的平均值来作为预测结果。

量化读书会7:如何改良线性交易模型

分组法在交易上的好处是,可以用来描述很多人类奇怪的认知。比如人类对价格行情是有审美的,典型就是那些数浪啊什么的方法,要求斐波那契数或者黄金分割结构,来预判价格关键点位啥的。在这种假设下,通常的线性模型,是没办法很好描述这种非连续情况的,比如在1-10的区间内,3、5、8未来价格会反转,2、4、7、9,价格反而会延续。这种奇怪的预测结构,线性模型肯定傻,但是分组法就可以轻松搞定。

当然分组法的坏处也和树模型一样,就是贼不稳定,赚不赚钱有时候真的看分组的运气。

GAM大法

量化读书会7:如何改良线性交易模型

广义加性模型GAM可以说是变化法和分组法的集大成者,基本模型如下。

量化读书会7:如何改良线性交易模型

基本理念就是通过样条函数,将特征值进行变换,再加起来,这样的过程在计算的时候省时省力。更形象的说,就是通过样条,将特征值x变换成各种函数,然后相加起来逼近建模的目标y。其实和大家捏橡皮泥没啥区别。

量化读书会7:如何改良线性交易模型

如图,作者将特征值转换成4个不同的函数,然后找到每个函数的合适的权重,相加,最后拟合成模型。

量化读书会7:如何改良线性交易模型

看着复杂,不过实际上有很多现成的软件工具,把x和y往里面一扔,用就行了。

当然,非线性问题的案例和解决方法绝对不止以上的几种。线性模型存在这么多年,但凡有问题,就基本上有解决方案,当然解决方案也会有新的问题,子子孙孙无穷匮。因为作者讨论的是模型的可解释性,因此,在对线性模型进行改良的时候,要记得,做复杂的改良,是以模型的可解释性下降为代价的。比如GAM这种,你不好好研究底层逻辑,当黑盒你也可以用,但是真的出了问题,要如何解决,你就抓瞎了。

天下没有免费的午餐。

风险提示:本文所述仅代表作者个人观点,不代表 Followme 的官方立场。Followme 不对内容的准确性、完整性或可靠性作出任何保证,对于基于该内容所采取的任何行为,不承担任何责任,除非另有书面明确说明。

喜欢的话,赞赏支持一下
回复 2

暂无评论,立马抢沙发

  • tradingContest