循环首次适应算法_3.基于阈值循环强化学习的自动外汇交易系统

1cbda15988c79cbe061abf4daa959d74.png

这篇论文主要是解决以前强化学习用于自动交易时,双层神经网络干不过单层神经网络的情况。本质原因还是以前的优化算法和过拟合处理不够强大,无法处理深层神经网络。

作者认为《Learning to Trade via Direct Reinforcement》中所提出的RRL交易系统不太能够捕捉金融市场的非线性和剧烈变化的特征(欠拟合?),对循环强化学习的外汇自动交易系统作出了扩展:增加了阈值切换功能。主要是设计训练两套交易系统,然后在不同的行情启用不同的系统交易,或者是2套系统加权 得到最后的结果。论文对阈值循环强化学习做了详细的描述,并在一个简单的回测系统(采用欧指日线数据)验证中证明了所提出的阈值循环强化学习比普通循环强化学习更擅长从非线性金融时间序列中发现盈利模式。

1.模型介绍

1.1 阈值循环强化学习

强化学习算法是一种自适应的策略搜索算法,给定奖励函数(最终收益,夏普比率等),算法会不断尝试试图改变自身行为来把得到的奖励最大化,从而学习到盈利的交易策略。循环强化学习中的“循环”二字则体现在算法的决策会考虑以前的信息,因此它是路径依赖的,这也意味着当前的投资决策也会影响以后的决策。 在交易单个品种,允许做多做空情况下,一个单层的强化学习交易网络可描述如下:

985655979c97b2151a873d7127059b9e.png
  • 代表网络在
    时刻的输出,
    代表做多,
    代表做空。
  • 是价格变动,
  • 是网络的偏置项
  • 是网络的权重参数

实际上,网络的输入不仅限于价格表动和上一时刻的仓位,也可以是其他的有效指标因子。

当前已经有人提出了许多的阈值切换的方法:原始阈值版本;马尔科夫阈值版本;人工神经网络版本等等,都能在一定程度上增强基础的循环强化学习网络。阈值模型因其简单透明的优点对量化交易这个领域来说更具有吸引力,其基本原理如下:

给定2套系统,它们俩的输出的加权和就是

。那么权重怎么来的呢?权重由函数
得到,若
发生,则
=1,否则等于0。

12a7e84c1b62fb693b0d568287dbcd6d.png
  • 这里的
    是一个指标,
    是针对它的一个阈值。
  • 是高斯白噪声

大白话来说就是如果

我就用第一套系统,否则就用第二套系统。

该模型具有很大的灵活性,可以很容易地进行修改以适应不同环境下的高阶ARMA模型。

阈值循环强化学习就可以由上式修改而成:

07b2fc7b731f7f761470dd6ff8032c78.png

直观理解上,需要2个循环强化学习网络,每一种适合于不同的环境。(难道是趋势和震荡?【/ 手动滑稽】)两个网络的输出分别是

,最终根据函数
选择一个作为最终输出。开始的时候,2个网络初始值是一样的。训练阶段,因为指标因子对应权重的变化,每个网络都陆陆续续能得到更新,这套机制促使2个网络各自学习到一组独特的权重。

上面的系统也很容易通过稍加改造将其最终输出改成

的加权和使得系统之间切换更加平滑,或者扩展成多个子网络共同决策,又或者是更多的指标因素来决定子网络间的输出权值。这些状态切换模型可以看作是由专家混合神经网络模型(MoE)发展而来的一种教师指导的学习变体,在MoE模型中,门控网络学习自适应地划分输入空间,并为每个分区分配一个专家。而本文中的阈值循环强化学习间的状态切换模式并不会自主学习如果自动切换状态,而是需要手动给出指标
和函数
来完成切换

1.2差分夏普比率

这里的差分夏普比率就是《Learning to Trade via Direct Reinforcement》中所提出的差分下行背离率,就是今天大家熟知的Sortino比率做了一阶展开和差分操作,这样做有2个好处:

  • 大幅减小计算量。如果是直接用夏普比率,需要在每一个timestep上都将开始到当前的收益历史数据拿去计算夏普比率,而用差分夏普比率只需要传入当前timestep的收益,能大大减少所需计算量。
  • 解决信用分配问题。强化学习面临的一大难点就是信用分配问题,这个问题在奖励稀疏的情况下变得更加突出。如果直接用夏普比率,在 交易
    个时间后停止,计算得到了一个夏普比率,那怎么判断这
    个动作哪个对最终肖普比率的贡献大,哪个贡献小甚至是损害了夏普比率呢?差分夏普比率就在每个时间步骤
    上都能给出一个奖励,如果你直接把这个奖励当成advantege,那就不需要面临信用分配的问题。

差分夏普比率

的计算公式:

5d835cf4a18e44232cf9adb909d003d0.png

088d9f997b5a50cd68cba020a3af201d.png

是交易系统在时间
上的收益:

b58b0b5cd69ada0a9a1a8e91fef5ce77.png
  • :价格变动,
  • :交易手续费率

差分夏普比率从直观上理解是计算你过去收益表现的指数移动均值,当前步数收益表现高于过去均值,就有奖励,差于过去均值就会惩罚。 代码实现也比较简单,只是需要细心一些。

论文中还涉及差分夏普比率对网络的更新的梯度计算推导,由于今天我们用的深度学习框架会自动做这个事情,这里就不展开啦。【pytorch,真香!】

2.实验部分

论文实验部分主要是将 RRL系统 与它提出的改进的 状态切换-RRL 交易系统进行对比。agent可以做多/空,交易单位固定为1手。交易手续费设置为0【过分了啊,喂!】最后使用最终的夏普比率作为对比评价指标。2种算法使用相同的初始条件和相同的初始超参数。相同的初始条件指网络的参数都使用

区间的均匀分布初始化,相同的初始超参数指的是学习率,训练数据,训练次数等,具体的参数数据大家可以去看以下原文。

文中的网络切换决定指标

使用的波动率,训练期间波动率指标的中值作为阈值
,因为之前的研究表明波动性上升增加了回报率出现负自相关的可能性,并且由于波动性具有持久性,因此交易体系几乎不存在因频繁切换状态导致过度交易的风险。

2.1 实验数据

实验数据包括4个著名的欧洲股票指数的日收盘价,即法国市场指数(CAC 40)、伦敦证券交易所的富时100指数、法兰克福证券交易所的DAX指数和瑞士市场指数(SMI)。1999年10月到2007年9月之间的数据用于训练,2007年10月到2008年10月之间的数据用于测试。 价格回报

设置成了涨跌百分比。

下图是瑞士市场指数(SMI):

0215a544eeb5987767f5429d45299690.png
左边是close的日k,中间是价格中涨跌幅度,右边是波动率。训练和测试区间用红线分开

2.2 实验结果

2种交易系统都取得了不错的结果,并且在四个指数的表现上论文所提出的TRRL模型都表现优于原始的RRL模型。性能上的差异主要表现在,当市场环境发生变化时,RRL不能足够快地适应新环境,因此性能很差。然而TRRL开发了两套权重,每一套对应一种状态,实验中第一套权重学习到了在高波动率情况下的交易技巧,而第二套权重学习到了在低波动率下的交易技巧,因此测试期间行情发生急剧变化时,TRRL模型能快速反映。

6a6d779d355037e67aa1268781c429dc.png
实验结果图

分享一些相关学习资源,很多Live如果是知乎会员可以免费看的:

论文原文:

《Threshold Recurrent Reinforcement Learning Model for Automated Trading》 2010
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值