如何避免期货程序化交易中的过度拟合现象
在建立量化交易模型的过程中,很多人都会经历过度拟合的情况。过度拟合其实是机器学习领域和统计学领域的一个概念。一般被用作表示一个模型在测试时表现的非常好,但是在实践过程却成绩却不如预期。
对于传统的机器学习来说过度拟合的影响不是很明显,但金融数据时间序列特征和数据的高噪音特性则决定了过度拟合会带来的巨大影响。所以,我们在进行建模时一定要严谨避免过度拟合的情况发生。
1、过度拟合产生的原因
程序化交易系统的设计过程包括两个部分,这两个部分都有可能造成过度拟合。
交易系统设计的第一部分是形成一个完整的交易规则体系。形成交易规则一般有自上而下和自下而上两种方法:自上而下的方法是基于对市场行情的长期观察总结出来规律,再在规律的基础之上形成数量化的交易策略,这一过程需要长时间交易经验的积累;
自下而上的方法是从市场数据出发,进行统计分析得出市场特征而形成的交易策略。
交易者在将交易系统用历史数据进行回测时,往往会根据测试结果对交易规则进行重新训练形成新的交易规则,或者对这些规则进行组合,这样产生的交易系统很容易是对市场数据的拟合。
同时在数量化实现交易系统的过程中,一般会采用参数来描述系统。设计者会通过增加参数个数和优化这些参数,寻找出最佳的交易系统。
如果参数个数较多或过度优化参数,往往就会产生对历史行情的完美过度拟合,而未来的绩效却大打折扣。
2、如何避免过度拟合
设计交易系统的目标是在未来实盘的行情中可以产生利润,而不是为了追求一条漂亮的历史测试曲线,过度拟合的交易系统是一个“美丽的陷阱”。如何逃离这个陷阱呢?我们认为可以从交易规则的形成和交易系统开发两大方面着手。
现代数学对金融市场的数据分析表明,时间价格序列包括两个部分:
第一部分是确定项,可以从中找出一定的规律;
第二部分是随机项,没有确定性的规律可言,出现某一现象只是概率性的。
当我们从市场历史行情中提取交易规则时,需要分析规则的逻辑性和规律性,交易规则需要能够反映市场的规律性,具有一定的合理性。
3
当交易者通过各种途径形成交易规则后,在具体的交易系统设计过程中,需要注意如下问题:
第一,增加历史测试数据样本容量,避免交易次数过少。
做商品期货的朋友都知道,如果通过分类品种的方式进行回测的话,不活跃的品种可能一年之内都没有多少次交易,即便是几年的时间下来也交易不到100次。
这样少的交易量所作出的结果是没有意义的并且非常容易造成过度拟合。特别是套利类策略持仓的策略就会更加的长,一年也就几次的交易量,这样就更不可靠了。
所以我们在进行策略的回测时就要增加交易策略的次数,一般来说300次以上的交易次数才能证明策略是有效的。
第二,在测试时,将测试的数据样本分为样本内和样本外。
设计系统的时候采用样本内数据,然后用样本外数据测试得出的系统,如果效果大大降低,那么这种系统极有可能是拟合的。
第三,核心参数不宜过多。
参数过多的系统是一个多自由度系统,在优化多个参数之后总会得出一个漂亮的系统,但这种系统的可靠性是令人怀疑的。
第四,在对交易系统的参数进行优化时,我们需要对最优参数附近的参数进行考察。
如果附近参数系统的性能远差于最优参数的性能,那这个最优参数有可能是一个过度拟和的结果,数学上称为奇点解,是不稳定的。如果市场的特征稍微发生变化,最优参数可能会成为最差参数。
第五、保证一定的平均利润。
有些策略我们在验证之后会发现交易的次数比较多,业绩表现也不错,但是平均利润过低。有些朋友可能会觉得,平均利润低有什么关系呢,只要盈利就可以了。但是除了要注意盈利外还要有滑点的意识,如果平均盈利过低,那么就非常有可能受到滑点的影响。稳定盈利的量化交易策略最终也会变成稳定亏损的策略。
-------------------------------------------------------------------------
推荐阅读:
1.一个量化策略师的自白(好文强烈推荐)
2.股票期货经典的量化交易策略都在这里了!(源码)
3.期货/股票数据大全查询(历史/实时/Tick/财务等)
4.史上最全的Python定量金融三方库汇总
5.干货 | 量化选股策略模型大全
6.量化金融经典理论、重要模型、发展简史大全
如何避免期货程序化交易中的过度拟合现象相关推荐
- 放弃文华财经,自己编程实现期货程序化交易
一.目前期货程序化现状: 由于有免费的CTP接口,期货程序化交易目前比较普遍,很多人都尝试过在文华财经.金字塔之类的软件上回测和编写实盘策略. 期货程序化交易有很多优点:程序会按照设计自动执行,不受任 ...
- 期货程序化交易之期货入门知识摘录整理
开发期货程序化交易程序,首先要熟悉期货交易术语,否则不熟悉业务,开发的程序将会漏洞百出.下面是我在学习过程中摘录的一些期货相关知识,还是比较零散,可以作为入门时的资料看看.由于是陆续从网 ...
- 国外期货程序化交易之行情获取讲解
本来是做图像算法,后来稀里糊涂的被拉进期货程序化交易这个方向.刚接触时真是一头雾水,什么合约.保证金.开仓.平仓.看多.看空等等完全不懂,对期货的了解仅仅停留在新闻报道里,各种期货知识一顿恶补后,思路 ...
- 通达信期货程序化交易接口是什么?
通达信期货程序化交易接口是什么?期货办理手续交易先讲期货的程序化交易. 联接国内四大期货交易所的期货交易系统软件关键是前高新科技综合交易服务平台(CTP ).金仕达.易盛(关键联接郑商所)等. 在其中 ...
- 谈谈期货程序化交易策略的客观性
期货价格的波动具有高度的随机性,要找出隐匿在它们背后的动力学机制目前是非常困难的,但是如果仅从价格运动轨迹的现象出发,则可找到一条绕开这种困难的捷径, 采用程序化交易是一种从现象到现象的操作方法,它通 ...
- 过度拟合现象的解决方案
过度拟合现象的解决方案 参考文章: (1)过度拟合现象的解决方案 (2)https://www.cnblogs.com/zhouxiaohui888/p/6008429.html (3)https:/ ...
- python期货程序化交易高手心得_11位顶级高手谈期货心得
位,再多钱也是没有用的. 外盘的价 格变化是国外交易商的预期,跟国内的预期不完全吻合. 我不会去使用程序化交易,我认为程序化交易是有局限性的. 价格是变化的,你很难用一个框子来框它! 有时候期货交易它 ...
- python期货程序化交易高手心得_位顶级高手谈期货心得
位顶级高手谈期货心得 王向洋 14 年期货生涯,多次获得全国期货实盘大赛冠军,曾创造的最高收益率为 5 个 月 54 倍. 期货中国网访谈精彩语录: 比赛时操盘的冒险精神强很多. 在和高手过招中你会思 ...
- Python期货量化交易中常用的数据类型有哪些?
1 常用内置常量 Python解释器在启动时会创建None.True.False三个常量,None表示"无",True表示"真",False表示"假& ...
最新文章
- 24 年前的 IE 仍能在 Win10中运行,这无敌兼容性与你的代码比比?
- nginx子请求并发处理
- Java静态域与静态方法
- java开发学不会_JAVA学不会,快期末了,怎么办?
- linux下msmtp+mutt+shell发送邮件
- struts2生成随机验证码图片
- 测井储层参数预测+人工智能方法
- ae编程语言as_18种常用AE表达式解析
- 锐捷交换机查看配置命令
- 信息系统项目管理师考试备考经验和心得(50天一次性通过)
- 如何使用Apple Watch启动和跟踪锻炼
- 2020电赛F题–简易无接触温度测量与身份识别装置
- python中怎样定位字符串中元素的位置_python查找字符串位置
- 程序员必备的十四款工具,你都用过吗?
- 波动率曲面(完整版)
- 应用Python爬虫技术获取福彩历史数据
- 项目实训第一周2-学习系统的使用
- 毕业设计 基于云平台的火灾报警系统设计与实现 - stm32 物联网 单片机 OneNET云平台
- python生成10个随机密码_python生成随机密码
- 店铺推广前准备工作有哪些?
热门文章
- 广州java培训费用
- Mac安装mysql没有提示初始密码解决办法,看完你会无地自容的一篇博客
- 语音合成(speech synthesis)方向五:多语言模型multi-lingual and code switch speech synthesis
- 打印机错误0x00000bc4,Win11系统找不到打印机怎么办
- AutoBoat自动导航无人船
- 2020年中国FEVE氟碳涂料行业市场运行现状及需求结构分析[图]
- 银行防尾随系统银行现状
- 对于查不到sql server代理(mssqlserver),sql server服务器连接不上的解决方法
- 从房产中介到软件测试工程师,月薪11K|双晨传奇科技
- 杂志征稿 教育杂志征稿