分享

量化交易--交易策略超参数优化

 禁忌石 2022-05-24 发布于浙江

上一节我们经过简单优化后实现了第一个盈利的策略,但我们依然需要思考一下策略参数是不是最优的,是否还有优化的空间?

本节我们将基于 freqtrade 的Hyperopt模块,对我们的策略参数进行优化,Hyperopt本质上还是基于scikit-optimize进行开发的。

我们先简单介绍一下原理,超参数优化一般有三种方式:

1、网格搜索(Grid Search)

网格搜索是暴力搜索,在给定超参搜索空间内,尝试所有超参组合,最后搜索出最优的超参组合,主要缺点是耗时,不适应大量参数的穷举,如下图:

文章图片1

2、随机搜索(Randomized Search)

随机搜索是在搜索空间中采样出超参组合,然后选出采样组合中最优的超参组合。随机搜索的好处如下图所示:

文章图片2

网格搜索和随机搜索的对比[2]

网格搜索不会care这个参数是否为important parameter,对于所有参数一视同仁,穷举所有的情况,寻找最优参数组合;而随机搜索会有更多的参数值参与到important parameter中,减少搜索范围,提升搜索效率。

3、贝叶斯优化(Bayesian Optimization)

调优的目的是要找到一组最优的超参组合,能使目标函数f达到全局最小值。

文章图片3

举个例子,若学习率设置过大,模型可能会在代价函数的全局最优点附近不断来回震荡,甚至跳出全局最优点,而设置过小,又可能会陷入局部最优,因此调学习率这一参数,是为了让模型能收敛到代价函数的全局最小值。可是在机器学习中,目标函数f常是被称作expensive blackbox function,计算开销大且不一定为凸函数。为此,贝叶斯优化出现了,它特别适合针对expensive blackbox function找到全局最优。

文章图片4

随机采样10个点的目标函数f(x)[4]

贝叶斯优化使用了高斯过程(gasussian processes, GP)去构建代理模型,基于给定的输入和输出,GP会推断出一个模型(这里为代理模型)。假设我们从expensive step的f(x)采样了4个点,然后我们把这4个点交给GP,它会返回一个代理模型

文章图片5

绿色实线就是GP的代理模型,绿色条带是输出分布的标准差(即为Uncertainty)。我们有了代理模型,后续我们去找下一个合适的超参值,就能带入到计算开销相对较小的代理模型中,评估给定超参值的情况。

对上述原理感兴趣的小伙伴,还可以再深入了解一下。

Code

实现我们HyperOpt的超参数调优代码:(相对比较简单)

# Hyperoptable parametersbuy_rsi = IntParameter(low=1, high=50, default=30, space='buy', optimize=True, load=True)sell_rsi = IntParameter(low=50, high=100, default=70, space='sell', optimize=True, load=True)short_rsi = IntParameter(low=51, high=100, default=70, space='sell', optimize=True, load=True)exit_short_rsi = IntParameter(low=1, high=50, default=30, space='buy', optimize=True, load=True)

将买入参数变量替换至买入策略中:

文章图片6

同理将卖出参数变量替换至卖出策略中:

文章图片7

启动参数调优,设置为500epoch:

docker-compose run --rm freqtrade hyperopt --config user_data/config.json --hyperopt-loss SharpeHyperOptLossDaily --strategy HyperIndexStrategy -e 500
文章图片8

参数调优结果

从截图中可以看到,500 epoch运行完成后,best结果是在第141个epoch中得到,最大收益率1.6%,最大回撤2.02%。给出最优参数(买入、卖出、ROI、止损)组合如下:

文章图片9

(吐槽:参数调优太消耗CPU了,小机器调2次,2个晚上就没了,伤不起。。。。。)

下一节准备部署介绍一下如何将策略部署实盘。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多