注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

期货期权

算法交易

 
 
 

日志

 
 

浅谈程序化参数优化与选择  

2017-08-23 19:58:41|  分类: 量化交易 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文主要探讨了在建立程序化交易系统时,如何进行模型参数优化和选择,提出了进行参数优化的必要前提—交易系统的合理性、逻辑性,然后以螺纹钢趋势策略为例,对参数优化结果进行了分析,合理的最优参数应该在附近都有较好的效果,最后分析了过度拟合参数。通过参数优化改进模型,让模型更好地匹配价格波动的模式,提高投资收益;另一方面,我们又要防止对参数的过度优化,导致模型的行情适用性大大降低。

  近年来,程序化交易在国内发展迅速,采用程序化作为交易手段的投资者越来越多,国内对程序化交易的研究也越来越深入,开发一个优秀的程序化交易系统,走上稳健获利的投资道路,成为众多交易者追求的目标。在构建程序化交易模型时,不可避免地要进行参数优化,而如何选择合理的模型参数成为投资者重点关注的问题,本文针对模型参数优化进行了分析与讨论。

  一、 程序化交易系统构成

浅谈程序化参数优化与选择

  看似复杂的公式,让读者看起来一头雾水,实际上笔者在开头部分想提出这个公式来说明优秀的程序化交易系统,它的总收益F取决于他的历史平均收益,系统的外在因子对其的影响应该是比较小的,更加通俗的来说,程序化系统模型的好坏,应该是由核心的内在逻辑决定,即模型的本身的思想合理性,系统参数的优化只是可以起到锦上添花的作用,而不是决定性的。借用笔者从网络上看到的一句话可以更加直观的表达,“现代数学对金融市场的数据分析表明,时间价格序列包括两个部分:第一部分是确定项,可以从中找出一定的规律;第二部分是随机项,没有确定性的规律可言,出现某一现象只是概率性的。当我们从市场历史行情中提取交易规则时,需要分析规则的逻辑性和规律性,交易规则需要能够反映市场的规律性,具有一定的合理性。”

  通过上面阐述,读者应该明白,无论是趋势模型还是震荡模型,都应该有核心逻辑在其中,而不是简单的代码堆砌。如果模型本身是信手拈来的代码,无根可循,那么无论做何种参数优化,效果如何完善,系统的本身应该是存在问题的。

  二、程序化模型参数优化

  在拥有一个内在逻辑比较合理的程序化模型之后,我们会希望程序化交易系统能够尽量高的达到历史测试收益,以期达到尽量准确的对未来价格进行预测,不可避免地要涉及对模型参数的正确设置。

  通常我们在选取参数时多会碰到两个难点:一是如何选择合适的指标来评价不同参数下模型的表现;二是如何通过参数设置提升模型对未来的适用性。现在借助计算机强大的计算能力,我们可以迅速得出模型在不同参数下历史行情中的表现,通过历史回测效果,可以快速地观察到不同因子对于系统模型的影响,以下笔者通过实例介绍模型参数调优过程中的认识。

  在交易开拓者平台,选取螺纹钢指数30min合约上市以来的数据,长度约5年,加载拥有 三个参数的趋势策略,收益率曲线如图1所示。

浅谈程序化参数优化与选择
浅谈程序化参数优化与选择
 
 
  
浅谈程序化参数优化与选择
  
从图2、3、4中可以发现,参数在一定取值范围内均有较好的表现,必然是其吻合了品种价格波动的某些特性,因此笔者可以大胆认为在该取值范围内的参数可以使得模型优异的表现在未来具有可复制性。

  从图2、3、4中可以发现,参数在一定取值范围内均有较好的表现,必然是其吻合了品种价格波动的某些特性,因此笔者可以大胆认为在该取值范围内的参数可以使得模型优异的表现在未来具有可复制性。

  上述例子考虑的是单一参数条件下通过使用模型回测来选取合适的参数,而通常一个模型往往会使用多个参数,加大了参数调优的难度,一个较为可行的办法是采用三维视角来评估对比。为了进一步分析多因子对于系统收益的影响,同时优化参数X和Y,三维分析效果如图5所示。

从图5的三维效果图中可以更加直观的观察到,在坐标 附近区域,系统的收益率均表现较好,而在较远区域,收益率表现不是很理想。

  从图5的三维效果图中可以更加直观的观察到,在坐标 附近区域,系统的收益率均表现较好,而在较远区域,收益率表现不是很理想。

  参数优化在一定程度上可以很好的改善交易系统的历史回测效果,甚至有时候我们发现通过参数优化后得出了一条完美的收益曲线,这时候笔者认为不要高兴太早,做一做笔者上述工作,很有可能你碰到了过度拟合的问题,下面笔者来阐述这个问题。

  三、过度拟合

  在实际工作过程中,对于程序化稍微了解的朋友,在咨询了解程序化模型时,开始就会问到模型有了几个参数,一般来说,4个以上会被认为已经过度拟合,不可能被接受。笔者认为这种方法太过武断,不可否认参数过多会拟合行情,但是更多的我们应该让数据说话,多做一做观察。图6中阐述参数过度拟合的二维分析效果,分别在数值35和63出现了收益率突增状态。
一般来说,如果附近参数系统的性能远差于最优参数的性能,那这个最优参数有可能是一个过度拟和的结果,在数学上可以认为是奇点解,而不是我们寻找的极大值解。从数学角度来说,奇点是不稳定的,在未来的不确定行情中,一旦市场特征发生变化,最优参数可能变为最差参数。过度拟合是与选取的样本有关系,选取的样本不能代表市场总体走向,只为测试结果为正期望值而调整参数,这叫过度拟合的无效参数。

  一般来说,如果附近参数系统的性能远差于最优参数的性能,那这个最优参数有可能是一个过度拟和的结果,在数学上可以认为是奇点解,而不是我们寻找的极大值解。从数学角度来说,奇点是不稳定的,在未来的不确定行情中,一旦市场特征发生变化,最优参数可能变为最差参数。过度拟合是与选取的样本有关系,选取的样本不能代表市场总体走向,只为测试结果为正期望值而调整参数,这叫过度拟合的无效参数。

  过度拟合与参数优化的主要矛盾在于,我们优化得到的最优参数只是在我们选取的历史数据样本上成立的,但未来行情却是无法预料的,我们可以找到历史上表现最好的参数,但是这个参数未必在未来是最好的,更有甚者可能历史上最好的参数在未来随着行情波动变化可能就是一组很糟糕的参数。比如一个参数的设置刚好让你抓住了一波大行情,在参数优化取到这样的值时很有可能对未来没有任何帮助。当然有些参数优化仅仅是改善了系统的平均亏损率,对整体效果没有太大影响,这种参数优化可能对未来会有一定意义,但也不是绝对的,因为行情的发展有其不可预知的一方面。

  那么还有读者会提到,既然这样,那最好的方法就是交易系统不设置参数,全部固定为经验值,我对这个观点持有不同的看法,我认为市场总是在变化的,而我们使用程序化交易模型就是为了抓住这种变化中的确定性规律,然而这种规律也是时变的,模型参数调整只是为了更好适用行情变化。

  四、总结

  现在借助计算机强大的计算能力,我们可以迅速得出模型在不同参数下历史行情中的表现,但是问题在于,我们判定参数的好坏是基于已经发生过的历史行情数据,而未来的行情是动态变化的,与历史行情相比既有相似性,也有变异性。这种变异性,可能使基于历史行情选出的最优的参数在未来行情中并不适用,甚至带来大幅亏损。在构建程序化模型时,一方面,我们可以通过参数优化改进模型,让模型更好地匹配价格波动的模式,提高投资收益;另一方面,我们又要防止对参数的过度优化,导致模型的行情适用性大大降低。因此,模型参数调优是我们构建交易系统过程中的一项技术性与艺术性并重的工作。

 来源:和讯网

  评论这张
 
阅读(3898)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017