理论上说,历史测试最优的参数,在未来的表现同样最优的几率微乎其微,那么我们该如何对系统测试出的最优参数呢? 我现在是这样做的:先分别测试出每一年的最优参数,然后用这个参数测试其他年份的最大回撤、收益率,这样得到一组二维的表格,把各组参数测试结果中历年表现最不稳定、收益最小、回撤最大(三者之间用“or”)的去除掉,得到表现相对稳定的几组,把这几组参数分别用在同一模型中,把这些模型(不同参数的同一模型,相当于不同的模型)叠加起来使用。 在参数优化方面,哪位还有更好的办法?请指点一二,多谢!
这是个有趣的话题,说实在话,也是一个也很困难的话题。我觉得如果系统或者算法本身不行的话,怎么优化参数都没有用,就跟一个非正期望值的系统,怎么做资金管理,都很难把这个系统变成正的是一样道理的。所以,假设我们讨论的是一个有正期望值的系统。 我现在在自己的系统里是这么做的: 首先,不管一个系统是简单还是复杂,不管你叫它做model,Algo,structure,strategy,system或者任何什么东西,从本质上,我把它看成一个函数,它的形式是这样的: Action=f(P, D); 其中: Action是函数的产出,是一个买卖的信号(在这里假设我们不去考虑position sizing的问题); D是市场的数据,这是由市场决定的,我们无法做任何改变; P是一个参数组,假设P={p1,p2,p3,p4....},由我们自己来设置,修改,优化。 我的做法就是把P这个参数组看成基因,然后我用遗传算法,对{p1,p2,p3,p4....}进行一代又一代的优化,最后产生一个比较稳定而高质量的参数组——说起来跟袁隆平培育超级水稻有点像。 当然,细节还会比这个复杂一点,因为遗传算法经常会导致参数组过度优化,或者收敛在局部最优,所以还需要一些措施来矫正。
“遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。 遗传算法通常实现为一种计算机模拟。对于一个最优化问题,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化。传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法。进化从完全随机个体的种群开始,之后一代一代发生。在每一代中,整个种群的适应度被评价,从当前种群中随机地选择多个个体(基于它们的适应度),通过自然选择和突变产生新的生命种群,该种群在算法的下一次迭代中成为当前种群。” http://zh.wikipedia.org/zh-cn/遗传算法
30^6=7亿2千9百万。 每组几千个,按一千个算。 30^6*1000=7千2百9十亿。。。 1天24小时,86400秒 每秒速度=7千2百9十亿/86400=8百4十3万8千每秒 你那是什么算法啊?
你讨厌~~害得人家的心激动的扑通扑通的:o ------------------------------------------ 运用熵率,以及最大熵,我倒是把部分算法的浮点运算效率提高了8*10^8倍,但是我发现,还是差点儿事儿。