线性回归指标及其在BTCUSD交易中的策略应用
派客国际投资(集团)有限公司 苏文杰
摘要:本文对线性回归模型进行了算法上的优化和具体的数学计算,根据计算结果编写了改进后的线性回归指标和其对应的EA,取得了较好的回测效果。
一、回归的发现[1]-[2]
弗朗西斯•高尔登(Francis Galton,1822-1911)早年在剑桥大学学习医学,但医生的职业对他并无吸引力。后来他接受了一笔遗产,这使他可以放弃从医的生涯,并于1850年-1852年期间去非洲考察。他所取得的成就使他在1853年获得英国皇家地理学会的金质奖章。此后他研究过多种学科,包括气象学、心理学、社会学、教育学和指纹学等,但1865年后他的主要兴趣转向遗传学。这也许与他的近亲表兄、《物种起源》的作者达尔文对他的影响有关。
1875年,高尔登请了7位朋友帮忙,他精心挑选了7种大小不同的甜豌豆种子,每种70粒。他分给每位朋友各7×10粒,请他们各自去种下。到1877年他完成这试验的数据分析后,除了发现同一大小种子的后代,其大小构成正态分布(这一点在意中,不足为奇),还发现大(小)种子产生的子代,其平均也大(小)一些,但有往母代中心(七种大小的母代的平均)收缩的趋势,且收缩量呈线性形式。
1885年,高尔登以保密和给予金钱报酬为许诺,通过向社会征求的方式,获得了205对夫妇及他们的928个成年子女的身高。他发现了高个子的后代平均说来也高些,但不如其亲代那个高,要向平均身高的方向“回归”一些。
1886年,他发表了关于回归的开山论文《遗传结构中向中心的回归》。如今我们用二维正态密度的形式,很容易把他的发现在数学上解释清楚。
尔后,他的朋友K.Pearson等人搜集了上千个家庭成员的身高数据,分析出儿子的身高y和父亲的身高x大致可归结为以下关系(以英寸为单位):
由于0.516≈0.5,意味着如果父亲身高超过父亲平均身高6英寸,则其儿子的身高大约只超过儿子平均身高3英寸,确实有向平均值返回的趋势。
二、回归效应[3]
我们再举一例来说明回归效应。
某学前班企图增加儿童的智商。儿童进入学前班时接受一次测试(学前测试),结业时再接受一次测试(学后测试)。若在学前测试中低于平均数的儿童在学后测试中平均提高了约5个智商点。与此相反,在学前测试中高于平均数的儿童,在学后测试中平均降低了约5个智商点。这说明了什么呢?学前班的作用就是将智力平均化吗?也许较聪明的儿童与较笨的儿童在一起玩时,两者之间的差异趋于消失,这种说法是对还是错?
上述推测也许很有趣,但实际上好事坏事都未发生。事实上,在所有考试一再考试的情形中,在第一次考试中最低的那部分,在第二次考试中将平均有所提高——而最高的部分将平均有所降低。这就是回归效应。
三、回归分析[2] [4]
回归中的自变量X常称为回归因子或预报因子。回归问题中的Y称为因变量、回归量或预报量。在回归问题中,视Y和X的地位是不对称的。但在许多情形下,这可能是人为的处理。例如,我们可考虑体重对身高的回归,也可考虑身高对体重的回归。不过要注意,这样所得的两条回归曲线一般并不重合。当然Y和X地位不对称的情形也很常见,譬如我们不能做父亲身高对儿子身高的回归,因为说父亲身高统计依赖于儿子身高显然是荒谬的。所以,在实际问题中不能乱用回归方法。
由于理论回归函数一般总是未知的,统计回归分析的任务,就在于根据观察值,去估计这个函数,以及讨论与此有关的种种统计推断问题,如假设检验问题和区间估计问题。
对于回归函数f,一种情况是对f的数学形式并无特殊的假定,这种情况称为“非参数回归”。另一种情况,即目前在应用上最多见的情况,是假定f的数学形式已知,只是其中若干个参数未知,要通过观察值去估计,这种情况称为“参数回归”,其中在应用上最重要且在理论上发展得最完善的特例,是f为线性函数的情形,这种情况叫做“线性回归”。
四、线性回归指标
(一)线性回归指标概述及其算法优化[5]
在金融市场中,一段时间内金融品价格(股票、期货、外汇等)往往总是围绕着一条线性回归趋势线在两侧波动并沿这趋势线方向发展,当价格在波动过程中偏离趋势线距离大了就会向趋势线靠拢。如图1所示。波浪理论认为金融品价格走势都是波浪式发展的,无论处于什么阶段,它在一定时段内都是沿各自回归趋势线两侧波动,并沿趋势线方向发展。因此,我们可以据此编写线性回归指标用于量化交易。
图1
由于程序化交易需要对大量的历史数据进行运算,并依此预测市场未来的趋势,这时模型的算法显得极其重要。目前国内流行的一些金融类的软件(如通达信,同花顺等)对历史数据的指标运算仅仅是做到了“结果正确”,它们存在大量的重复计算,性能很低。比如在“通达信”交易软件中编写一个自定义指标,用它统计主板所有股票的均线值之和,然后将该指标显示在副窗口中,结果软件反应速度大大减慢,甚至经常出现“停止”反应的现象。在“飞狐交易师”软件以及“同花顺”等金融类软件中同样出现这样的现象,究其原因是这类软件的自定义指标在每次有新的价格到来时都要对所有历史数据进行重新计算以确定每一个历史数据所对应的指标值。它会造成大量的重复计算,从而使计算机对行情反应不及时。
国外一些先进的金融类软件(比如MT4,MT5等)因为程序化交易的实时要求,已经考虑到了这一问题,对历史数据的重复计算已经做了粗粒度的优化,避免了对已经计算过的历史数据进行重复计算。但它的模型指标算法依然还有大量的细粒度的重复计算,因此还存在着可优化的空间。文献[5]将线性回归分析法应用在程序化交易模型中,并对线性回归线指标模型的算法进行优化,做到了既在粗粒度上,又在细粒度上避免各种重复计算,大大减少了金融类软件在实时处理市场行情数据时的计算量,使程序化交易的反应速度得以大幅度提高。
(二)数学计算过程
下面将介绍线性回归指标算法优化后的具体数学计算过程,由于篇幅所限,就不对程序的编写做过多的介绍了。
图2
图3
五、线性回归指标的改进和应用
我们可以根据行情的具体波动情况对线性回归指标进行改进,使其具有更强的抗风险能力,具体改进措施就不再赘述了。
在MT5上编写改进后的线性回归指标和与之对应的EA,初始入金为10000美元,利用2018.1.1-2019.7.9的BTCUSD行情数据进行回测,可得59157.67美元,则纯利润为49157.67美元。具体测试情况见下:
图4
图5
六、结论与讨论
本文对线性回归指标进行了算法上的优化和具体的数学计算,所采用的是一元线性回归模型。能否从其他多个因素来进行回归分析,采用多元线性回归模型,乃至多元非线性回归模型?这是今后值得讨论的课题。
此外,根据上文的计算结果,编写了改进后的线性回归指标和其对应的EA,取得了较好的回测效果。由回测结果可知,该指标判断正确的概率是大于判断错误的概率的。但是,此指标并不能适应整个行情的所有特点,在部分行情中依然存在指标失效的情况。因此,在实际应用中,我们往往是将它与其他指标组合在一起使用,从而达到降低风险,获得稳定收益的作用。
参考文献
[1] 陈希孺. 数理统计学简史. 长沙:湖南教育出版社, 2002. 156-165
[2] 陈希孺, 倪国熙. 数理统计学教程. 合肥:中国科学技术大学出版社, 2009. 243-245
[3] David Freedman, Robert Pisani, Roger Purves and Ani Adhikari. 统计学. 魏宗舒, 施锡铨, 林举干, 李毅, 吕乃刚, 范正绮译. 北京:中国统计出版社, 1997. 191
[4] 陈希孺. 概率论与数理统计. 合肥:中国科学技术大学出版社, 2016. 258-260
[5] 杨光豹. 程序化交易系统中线性回归模型及其优化算法. 计算机系统应用, 2014, 23(12):121-124