打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CTA投资与程序化交易:现代研究方法(二)参数寻优技巧:经验、抽样、局部平滑和移动平滑
一、最优化的数学方法和统计方法


(一)数学中的优化方法

在数学中,对于可导函数,可以完美的定义最优化问题:

如果存在一个解
使得
  叫做上述问题的全局最优解。同样可以在某个局部区域定义局部最优解。


数学问题中,处理上述问题的常见方法有几种,我们不展开介绍,主要简述其以导数为核心手段的优化思路。

1、拉格朗日乘数法

对于处处可导的函数,可以通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题,直接求导求解。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。

2、梯度下降法(Gradient Descent)

也叫做最速下降法,如果函数可导,就可以算出梯度,朝梯度下降方向寻找极小值,朝梯度上升方向寻找极大值。可以通过步长逐步搜索,直到函数变化值非常小,停止搜索得到极值。

3、牛顿法(Newton’s Method)和拟牛顿法(Quasi-Newton Methods)

对导数泰勒展开,相当于应用二阶导数寻找极值方向,收敛速度更快。


4、共轭梯度法(Conjugate Gradient)

和梯度下降法类似,仅需要一阶导数信息,但是克服了收敛慢的缺点,算是解大型非线性最优化最有效的算法之一。在各种优化算法中,共轭梯度法是非常重要的一种。



(二)统计意义上的优化

对于凸函数,数学层面的算法会非常有效,但是对于奇异函数的寻优,就需要各种统计意义上的算法找到相对最优的解。

1、遗传算法(Genetic Algorithm)

由美国的J.Holland于1975年首先提出的启发式算法。遗传算法是一种智能随机搜索算法。遗传算法仿照自然界中生物的进化过程,种群的进化遵从自然选择和适者生存,更适应环境的个体有更大机率存活和繁衍,适应性差的个体则会被淘汰,携带较高适应性基因的父母进行繁殖可能产生适应性更强的后代。遗传算法模拟上述过程,其一般流程如下:



2、模拟退火(simulated annealing algorithm)

基于1953的Metropolis思想,由S.Kirkpatrick,C.D.Gelatt 和 M.P.Vecchi在1983年所发明。


模拟退火算法是一种贪心算法,但是在搜索过程中引入了随机因素,以一定的概率接受一个比当前要差的解,因此就为跳出局部最优解到达全局最优解创造了可能。因此模拟退火算法也是一种启发式算法。

其基本思想是把某类优化问题的求解过程与统计热力学的热平衡问题进行对比,试图通过模拟高温物体退火的过程来找到优化问题的全局最优解或近似全局最优解。金属退火原理是将金属加温至充分高,再让其徐徐冷却,加温时,金属内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。



3.蚁群算法(Ant System, Ant Colony System)


是由意大利学者Dorigo、Maniezzo等人于20世纪90年代提出来的启发式算法。


将蚁群算法应用于解决优化问题的基本思路为:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。路径较短的蚂蚁释放的信息素量较多,随着时间的推进,较短的路径上累积的信息素浓度逐渐增高,选择该路径的蚂蚁个数也愈来愈多。最终,整个蚂蚁会在正反馈的作用下集中到最佳的路径上,此时对应的便是待优化问题的最优解。


蚂蚁找到最短路径要归功于信息素和环境,假设有两条路可从蚁窝通向食物,开始时两条路上的蚂蚁数量差不多:当蚂蚁到达终点之后会立即返回,距离短的路上的蚂蚁往返一次时间短,重复频率快,在单位时间里往返蚂蚁的数目就多,留下的信息素也多,会吸引更多蚂蚁过来,会留下更多信息素。而距离长的路正相反,因此越来越多的蚂蚁聚集到最短路径上来。比如下图:



两只蚂蚁从A点出发,一只走AD,一只走ACD,每个单位时间走一步,考虑9个单位时间之后,第一只走到了终点D,第二只刚走到C,仅仅是一半的路程。



第一只蚂蚁开始返回,等到第二只蚂蚁走到D时,第一只返回到了起点,这时过了18个单位时间。这时,AD中每一步的留下的信息素是ACD路径中信息素的两倍。36个单位时间后,第二只蚂蚁刚返回起点,ACD每个点上留下2个信息素,但是ABD上留下4个信息素。然后蚁群在AD上增派蚂蚁,ACD上依然一只蚂蚁,再经过36个单位时间后,两条路线上的信息素比例为4:1,这样随着时间的增加,蚁群在AD上增派的蚂蚁越来越多,信息素也越来越多,最终所有蚂蚁都放弃ACD,选择AD。


蚂蚁具有的智能行为得益于其同时具有多样性和正反馈的行为规则。在觅食时,多样性使蚂蚁不会走进死胡同而无限循环,是一种创新能力;正反馈使优良信息保存下来,是一种学习强化能力。两者的巧妙结合使智能行为涌现,如果多样性过剩,系统过于活跃,会导致过多的随机运动,陷入混沌状态;如果多样性不够,正反馈过强,会导致僵化,当环境变化时蚁群不能相应调整。


蚁群算法可以用来解决经典的TSP(Travelling Salesman Problem)问题。


AS算法中,需要定义信息素强度,能见度,随机选择比例等一系列符号体系:


分别为起点和终点,就可以做如下定义:能见度
,相当于两个点之间距离的倒数;信息素强度
,然后就可以定义第
只蚂蚁在
点选择下一个目的地
时的概率:

 不满足时候,概率为0,
是第
只蚂蚁在
时刻,尚未访问过的节点集合。其中,
是常数,表示对信息素和能见度的权重比例。

AS算法的大致步骤如下:


经典蚁群算法可以轻松应对城市小于75的问题,这些年,蚁群算法有大量的变种,越来越完善,可以解决更大型问题。经过对比,在大型TSP问题中(最多包括132个城市),蚁群算法表现要优于遗传算法和模拟熄火。


二、CTA策略的最优化原则

(一)CTA中的优化

在上述的简介中我们看到数学方法的优化往往是针对凸函数,从导数或者梯度的角度进行寻优;统计方法的优化可以放大到复杂函数,用启发式的算法,不断以概率的方式寻找或有的全局最优解,概率最大的意义是给了局部非优解一定容错率,让解可以以概率收敛到更优的解。

CTA策略中,我们优化的目标其实是策略业绩(收益率、回撤、夏普比率、胜率、赔率),函数就是我们的交易规则(包含我们设定的参数),变量就是给定区间内所有的K线信息。我们期待对历史的K线建立交易模型,然后对于未来再现的K线可以进行运算,得到优异的业绩函数取值。

CTA策略的优化中,前面介绍的方法有一些不适用,因为我们并不是对一个确定的函数进行优化,而是对一组自变量是随机数据的函数进行优化。

(二)统计学习原理介绍

对于一组随机数据

,假设
,我们可以拟合
,使其和
之间尽可能的接近,在平方损失准侧下,

是理论最优的函数形式,统计估计的任务就是对上述期望值进行估计。两种常见的方式是:


1、对上述期望值拟合一个参数结构,比如,
这就是回归等参数模型的思想;

2、对上述期望值直接用x领域附近的点进行平均估计,比如

.这就是局部近领的思想。


不管使用什么思路构造估计模型,估计的效果可以用平方损失进行衡量,可以构造一个叫做均方误差(Mean Squared Error,MSE)的指标衡量估计值和真实值之间的差距,假设训练数据集为

,对于观测值

其中

这个指标最直观的解释是,估计误差有两部分组成,第一部分是估计值的方差,这个衡量估计模型的稳定型,模型越稳定,方差越小;第二部分是估计值的偏差,这个衡量估计模型的对训练数据的精确度,模型越复杂灵活,这个值越小。方差和偏差是硬币的两面,如果我们拟合简单的线性结构,估计值不会随着训练样本的变化而显著变化,方差必然小,但是肯定会和真实值之间有一定的差异,也就是方差比较大,估计不够准确(除非真实结构就是稳定的线性结构),对于新的样本点,这有可能造成MSE偏大;反之,如果我们用比较灵活地模型,类似
阶近邻估计,这个估计对训练样本而言,偏差非常小,但是估计值本身的方差肯定会比较大,因为数据一变,
阶近领估计的结果就会大幅度变动,这也有可能造成新样本点MSE的偏大。所谓的过度拟合(Overfitting),其实就是说对训练数据过度建模,在训练数据中偏差几乎为零,但是这个模型本身不稳定,方差很大,样本一变,估计值的变化会很大,进而造成对于未知值的均方误差很大。参数很多的结构化估计趋近于非参数的灵活局部估计,都会有过度拟合的倾向。


(三)CTA策略的寻优难题


CTA策略的参数寻优问题,看起来很简单,但问题的本质其实和前面介绍的理论背景息息相关,这个问题是数学的,又是统计的,同时更是艺术的。


回到CTA策略的本质,想想我们在构造一个什么样的东西。


1、变量


CTA策略中,最本质的变量其实是价格,和数学问题相比,这个价格变量是随机的,和一般统计问题相比,这个变量是个近似连续的随机过程(每个tick都是一个随机变量)。


当我们引入CTA这个语言体系,其实是已经假设要对趋势进行刻画和跟随,tick层面的数据无法进行有效的趋势跟随,因此把tick数据抽样成给定周期的K线数据,就是非常重要的一步。因此我们的面对的变量,可以看做是个离散时间的随机过程。但是,我们处理这个随机过程的方法并不是追求平稳性变换,最终根据随机过程各个变量在时间层面的稳定性,发掘出整体的概率结构。


2、目标


CTA最核心的假设是,大部分时候随机过程在震荡,少部分时候,出现明显的方向性趋势,我们的目标就是根据方向性趋势的出现进行趋势研判的预测(gen sui),获取收益,如果预测(gen sui)错误,或者方向回调,就止损出场,等待新的信号。


针对这个假设我们构造的交易系统,其实就是一个用来解决上述问题的函数,这个函数的输入虽然是一维随机过程,由于我们要使用随机过程的时间信息,实际上是个高维向量,我们针对高维向量通过交易函数(入场、止损)计算出来对应的交易业绩。

上面

就是我们的交易系统,
是我们的自变量,也就是
线,根据使用的信息,每个变量从1
维(开高低收、成交量)不定。

表示交易系统涉及的
个参数,这里显然
,否则相当于直接拟合了所有
线的信息,
很大的时候,交易系统几乎是不可用的,因为过度参与了市场的个性化波动,而没能找到具有一般性规律的趋势结构。通常我们希望


CTA参数寻优最尴尬的地方在于我们对

线底层的随机结构一无所知,尽管有效市场假说等从随机过程的角度给出了解释,但是交易是否赚钱很难用统计检验去验证。统计假设检验可以以一定的概率证伪某种特定的随机结构,但无法证实,证实接受可能是检验的功效不足无法证伪,也就是假设检验很难证实一个确定的结构,随机游走只是一种猜想。CTA赚钱仅仅是说某些局部的趋势结构具有延续性,整体上趋势结构的盈利空间,大于震荡结构的止损空间,因为样本不足,这个函数结构很难直接去证伪。


回到CTA参数寻优,我们面临的问题并不是数学优化中梯度下降快速找到最优解的问题,也不是统计估计中根据随机结构平衡方差和偏差得到最优估计的问题。真正的问题在于我们面对一个数据随机,但是我们对随机结构并不知晓的估计,同时我们的估计损失函数是一个复杂的交易系统(哪怕最简单的均线系统,也不是一个简单的数学函数),如果我们在样本内暴力寻优,可能可以让估计偏差最小,但是这个交易系统的稳定性非常差,因此大逻辑上可以做到的只能是让交易函数尽可能保持简单,

,保证估计函数的方差较小,然后通过适当的优化,减少估计偏差。


Everything should be made as simple as possible, but not simpler——Albert Einstein


3、手段和方法


1)控制参数个数


一个优秀的交易系统,可变的参数应该是2,最多不要超过3,这一方面控制了交易系统的复杂度防止高度拟合,也防止在更高维度估计参数引起的高维诅咒。因为交易系统本身对K线进行了降维处理,参数的个数类似于变量的个数。


2)避免业绩孤岛


对于

的CTA策略,由于涉及的计算并不是特别复杂,因此我们总是可以对参数进行穷举式运算得到各种可能的业绩值,这时候最主要的问题就是最优的业绩是历史偶然事件,还是真正我们所捕捉到的随机结构?这个时候最核心的方法是看最优业绩周围的参数分布,如过周围参数的业绩是平滑和渐进的,那么最优业绩是可信的,否则只是偶然事件不可信。



3)重视经验参数


漫长的技术分析发展史中,技术分析师们根据交易实践矫正了很多有实际用途的参数,比如5/10/20这种或者7/14/21这种和周、两周、月等历法对应的实践,又比如1/2/3/5/8/13/21/34/55这种Fibonacci数列,经验参数本身就是避免过度拟合的方法之一,如果经典参数和平滑业绩相对应,那一般是可以接受的。


三、客观上的主观:现代统计学技巧

(一)抽样法

为了避免过度寻优,也提升适当计算效率,对于整个寻优的参数寻优进行启发式抽样算法,也是一种有效的办法,这和模拟熄火这种方法类似,但是更加简单直观。

常见算法是:


上述方法是量邦天语定义的后验方法,运行时日志如下:



其输出的热力图示意如下:



(二)局部线性估计


局部线性估计是一种非常重要的现代非参数统计方法,其核心思想是在每个局部用线性结构来拟合目标函数,但是整体上保持灵活性和动态性,从而平衡估计函数的方差和偏差。我们将局部线性估计应用于参数寻优,最核心的思想是暴力寻优后,把参数当做自变量,把业绩当成函数值,然后对业绩曲面进行局部线性估计平滑,从而掌握参数曲面的整体形态,更好应用前面提到的几个参数寻优原则。

局部线性估计的平滑结果受核权重函数的影响并不大,但是受平滑窗宽的影响非常大,包含进平滑的样本点个数决定了业绩曲线的光滑度,会产生平滑不足或者过度平滑的问题。


精确最优的平滑窗宽需要知道模型随机误差的分布信息,实际上这些信息完全不可知。通常的窗宽用一种经验算法来确定,假设随机误差是正态分布,并用到业绩样本标准差信息



(三)移动平滑估计


如果是抽样解决效率和精度问题,局部线性估计提高寻优结果的可读性,移动平滑方法从根本上改变寻优的思路,通过对样本的切割,把寻优数据和评估数据加以区分,沿着样本移动若干次之后,对若干对参数的样本外业绩进行综合评估,这有些借鉴Cross Validation的统计学思想。


假设我们一共有

根K线,首先需设置如下参数:


= 窗口样本中训练样本的长度(K线数目)


 = 窗口样本中测试样本的长度(K线数目)


 = 窗口每次移动的的长度(K线数目)



综合考虑所有窗口中的结果来确定策略表现的有效性和参数的稳定性,输出下表



我们对前面的优化问题进行适当简化,以200天为样本内数据滚动寻优,可以得到下图:


四、分散依然是唯一免费的午餐


有些时候,人们喜欢把多参数和多策略、多品种、多周期并列为同一级别的四多,获取实际意义上的分散。乍看参数寻优并不属于品种、策略思路和周期一个维度的问题,是要通过寻找分个彼此高下的问题,但是我们建议,不妨在一定的程度上,把参数也当做一个策略维度,进行配置,对于两个距离较大,但是业绩都还不错的参数取值而言,这种分散相当于更加稳健的策略结构,有些机器学习boosting的思路。最重要的是,多参数和多策略、多周期,其实也是一种平衡关系。



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
机器学习那些事|盘点组学研究中最常用的7大算法
机器学习相关的面试问题
给人工智能降点温:深度学习不是万能良药
人脸识别技术大总结
回归、分类与聚类:三大方向剖解机器学习算法的优缺点(附Python和R实现)
机器学习与深度学习常见面试题(下)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服