参数优化

对于开发好的策略,可以使用CtaBacktester内置的优化算法快速进行参数寻优,目前支持穷举和遗传两种优化算法。

设置优化参数

点击【参数优化】按钮,会弹出“优化参数配置”的窗口:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_backtester/37.png

点击【目标】下拉框,选择优化过程中要使用的目标函数(即以该数值最大化为目标进行优化):

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_backtester/45.png

对于要进行优化的策略参数,需要配置:

  • 【开始】和【结束】:用于给定参数优化的范围;

  • 【步进】:用于给定参数每次变化的数值;

举例:如一个参数的【开始】设为10,【结束】设为20,【步进】设为2,则该参数在优化过程中的寻优空间为:10、12、14、16、18、20。

对于要设置固定数值的策略参数,请将【开始】和【结束】都同样设为该数值即可。

穷举算法优化

设置好需要优化的参数后,点击窗口底部的【多进程优化】按钮,此时CtaBacktester会调用Python的multiprocessing模块,根据当前电脑CPU的核心数量,启动对应数量的进程来并行执行穷举优化任务。

在优化的过程中,穷举算法会遍历参数寻优空间中的每一个组合。遍历的过程即使用该组合作为策略参数运行一次历史回测,并返回优化目标函数的数值。完成遍历后,根据所有目标函数的数值进行排序,从而选出最优的参数组合结果。

穷举算法优化的效率和CPU核心数量直接相关:若用户计算机是2核,则优化时间为单核的1/2;若计算机是10核,则优化时间会大幅降低到单核的1/10。

遗传算法优化

设置好需要优化的参数后,点击窗口底部的【遗传算法优化】按钮,此时CtaBacktester会自动调用Python的deap模块,来执行高效智能化的遗传算法优化任务。

附上遗传算法的简要工作原理:

  1. 定义优化方向,如总收益率最大化;

  2. 随机从全局寻优空间中,选择出部分参数组合形成初始族群;

  3. 对族群内所有个体进行评估,即运行回测获取目标函数结果;

  4. 基于目标函数结果进行排序,剔除表现不好的个体(参数组合);

  5. 对剩下的个体进行交叉或者变异,通过评估和筛选后形成新的族群;

  6. 以上3-5步为一次完整的种群迭代,在整个优化过程中需要多次重复;

  7. 多次迭代后,种群内差异性减少,参数收敛向最优解,最终输出结果。

注意以上结果为遗传算法优化的帕累托解集,可以是1个或者数个参数组合,而不会像穷举算法包含全部参数组合。

优化结果分析

优化完成后,会在日志区域输出信息提示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_backtester/49.png

此时点击【优化结果】按钮即可查看相关结果:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_backtester/50.png

上图中的参数优化结果,基于启动优化任务时所选的目标函数【总收益率】的数值,由高到低进行了排序。

最后,点击右下角的【保存】按钮即可将优化结果保存到本地CSV文件中,便于后续分析使用。