参数优化
对于开发好的策略,可以使用CtaBacktester内置的优化算法快速进行参数寻优,目前支持穷举和遗传两种优化算法。
设置优化参数
点击【参数优化】按钮,会弹出“优化参数配置”的窗口:
点击【目标】下拉框,选择优化过程中要使用的目标函数(即以该数值最大化为目标进行优化):
对于要进行优化的策略参数,需要配置:
【开始】和【结束】:用于给定参数优化的范围;
【步进】:用于给定参数每次变化的数值;
举例:如一个参数的【开始】设为10,【结束】设为20,【步进】设为2,则该参数在优化过程中的寻优空间为:10、12、14、16、18、20。
对于要设置固定数值的策略参数,请将【开始】和【结束】都同样设为该数值即可。
穷举算法优化
设置好需要优化的参数后,点击窗口底部的【多进程优化】按钮,此时CtaBacktester会调用Python的multiprocessing模块,根据当前电脑CPU的核心数量,启动对应数量的进程来并行执行穷举优化任务。
在优化的过程中,穷举算法会遍历参数寻优空间中的每一个组合。遍历的过程即使用该组合作为策略参数运行一次历史回测,并返回优化目标函数的数值。完成遍历后,根据所有目标函数的数值进行排序,从而选出最优的参数组合结果。
穷举算法优化的效率和CPU核心数量直接相关:若用户计算机是2核,则优化时间为单核的1/2;若计算机是10核,则优化时间会大幅降低到单核的1/10。
遗传算法优化
设置好需要优化的参数后,点击窗口底部的【遗传算法优化】按钮,此时CtaBacktester会自动调用Python的deap模块,来执行高效智能化的遗传算法优化任务。
附上遗传算法的简要工作原理:
定义优化方向,如总收益率最大化;
随机从全局寻优空间中,选择出部分参数组合形成初始族群;
对族群内所有个体进行评估,即运行回测获取目标函数结果;
基于目标函数结果进行排序,剔除表现不好的个体(参数组合);
对剩下的个体进行交叉或者变异,通过评估和筛选后形成新的族群;
以上3-5步为一次完整的种群迭代,在整个优化过程中需要多次重复;
多次迭代后,种群内差异性减少,参数收敛向最优解,最终输出结果。
注意以上结果为遗传算法优化的帕累托解集,可以是1个或者数个参数组合,而不会像穷举算法包含全部参数组合。
优化结果分析
优化完成后,会在日志区域输出信息提示:
此时点击【优化结果】按钮即可查看相关结果:
上图中的参数优化结果,基于启动优化任务时所选的目标函数【总收益率】的数值,由高到低进行了排序。
最后,点击右下角的【保存】按钮即可将优化结果保存到本地CSV文件中,便于后续分析使用。