幸存者偏差?简述程序化交易模型参数确定

数据分为测试集和训练集:

几乎可以肯定的说,来这个市场,每个人都是为了赚钱。那么好的,我们选取一段数据作为训练集数据(training set),比如10000个时间序列长度的70%,剩余30%作为测试集数据。然后就可以通过训练集(testing set)建立你的模型,在测试集上去验证你的模型。

另一种方式是,设置一个窗口(滑动窗),比如每1000个数据为训练集,后面500个数据为测试集,去不断建立新的模型,在测试集上运行,然后输出性能值(应该说叫做绩效报告)。

既然是滑动窗,就可以设置间隔,比如每10个时间序列间隔,那么理论上,在这10000个数据长度上,就要进行(10000-1000)/10=900次建模和900次测试,压力不小哦。

此外,还有一种蒙特卡洛方式,比如说你的时间序列数据一共5000个,划分为测试训练集可能不够用,那么,可以用这5000个数据建模,然后,再对数据做蒙特卡洛模拟,制造出很多组新的数据,当做训练集。蒙特卡罗模拟是一种随机模拟方法,实现对时间序列的统计模拟或抽样,以获得新的时间序列。然后在各种新的,充满变化的数据上去检验建模效果,会对模型提出更加严格的要求,某种程度上是对未来实战的检验。

 

确定目标函数:

目标函数是,我们以什么目标去不断推进这个测试。比如说,我们要得到一个收益率最高的参数组合,那么就用收益率,来作为目标函数。或者说,我们要得到一个Sharpe比率最高的结果(将Sharpe比率作为目标函数),那么就去遍历参数(如果2个参数以上,就是参数组合),去寻找这个结果。

常见的目标函数有:累计收益率、Shapre比率、R平方值、平均净利润、盈亏比。目前的量化软件基本上都是在遍历每个参数组合的时候,计算出各项性能值,然后最终按照使用者要求,对参数组合进行排序。

当然,如果涉及到较大资金量构建投资组合,还可以去按照Beta和Alpha作为目标函数去优化组合方式。这里给出几个量化投资领域常见的投资绩效评估因子和计算方式,公开课中是不是讲过了……

  • Annualized Returns: 策略年化收益率。表示投资期限为一年的预期收益率。具体计算方式为 (策略最终价值 / 策略初始价值 - 1) / 回测交易日数量 × 250
  • Benchmark Returns:参考标准年化收益率。具体计算方式为 (参考标准最终指数 / 参考标准初始指数 - 1) / 回测交易日数量 × 250 。
  • Alpha:阿尔法。具体计算方式为 (策略年化收益 - 无风险收益) - beta × (参考标准年化收益 - 无风险收益),这里的无风险收益指的是中国固定利率国债收益率曲线上10年期国债的年化到期收益率。
  • Beta:贝塔。具体计算方法为 策略每日收益与参考标准每日收益的协方差 / 参考标准每日收益的方差 。
  • Sharpe Ratio:夏普比率。表示每承受一单位总风险,会产生多少的超额报酬。具体计算方法为 (策略年化收益率 - 回测起始交易日的无风险利率) / 策略收益波动率 。
  • Volatility:策略收益波动率。用来测量资产的风险性。具体计算方法为 策略每日收益的年化标准差 。
  • Information Ratio:信息比率。衡量超额风险带来的超额收益。具体计算方法为 (策略每日收益 - 参考标准每日收益)的年化均值 / 年化标准差 。
  • Max Drawdown:最大回撤。描述策略可能出现的最糟糕的情况。具体计算方法为 max(1 - 策略当日价值 / 当日之前虚拟账户最高价值)

啰嗦一句:以Shapre比率、R平方值构建目标函数,再充分考虑回撤,才能安全稳健一些,最好不只使用收益率来做扫描。

 

区分参数功能:

一般简单模型,也会涉及到1-3个参数,如果是复杂模型,参数就更多了,但是复杂模型并不是用多个参数去控制某一公式,而是不同的参数,对应着不同的功能模块。

比如一个通道突破模型,再加上ATR止损,再加上固定幅度止盈,那么它一定需要三部分参数来控制,每部分可能1-3个,这样就是3-9个参数,在优化的时候,一定要先屏蔽某些功能,去得到大致的性能表现,然后再逐步加上功能模块,去考察其整体稳定性表现。

为什么强调区分功能后再分析,因为全局大规模优化,很容易陷入局部最优解,即使找到全局最优解,也有可能是一个在分布形态上的尖峰值,使用中稳定性受到考验。

 

看清参数分布形态——参数孤岛和高原

参数优化中一个重要的原则就是要争取选择参数高原而不是参数孤岛。所谓参数高原,是指存在着一个较宽的参数范围,模型在这个参数范围内都能取得较好的效果,一般会以高原的中心形成近似正态分布状。而所谓参数孤岛,是指只有在参数值处于某个很小的范围内时,模型才有较好表现,而当参数偏离该值时,模型的表现便会显著变差。

比如我们看上图,右侧的参数孤岛更加严重,在性能已经出现下降的区域,突然出现一个性能极高值尖峰。这样的参数组合,最好不要尝试去使用,因为只要行情突变,立刻会出现参数性能分布形态的突变,这种尖峰,就再也看不到了。而此时你收获的参数结果,很可能是一个不稳定的,或者性能较差的结果。

再做一点提示:参数性能尖峰(或者叫做孤岛),往往存在着交易次数过少的辅助判断特征。因为更多的交易次数,可以证明此模型在发出很多交易信号的情况下,依然能够稳定盈利。所以实际分析中,可以注意观察这种高性能参数,是否存在交易次数的大幅度降低。

明天的文章计划讲解几种常见的参数分布形态,后天的文章,则计划讲解一些需要排除的参数组合,甚至参数体现出的模型逻辑错误。

免责声明:信息仅供参考,不构成投资及交易建议。投资者据此操作,风险自担。
如果觉得文章对你有用,请随意赞赏收藏
qrl8891 1人赞赏收藏
相关推荐
相关下载
登录后评论
Copyright © 2019 宽客在线