概述
量化交易平台很重要的一个环节就是回测系统,可以通过对历史行情的回放,验证量化交易策略的性能表现。量化交易强化学习环境,则是向Agent提供一个交互的环境,Agent(即量化策略)根据市场环境(强化学习环境)的状态,选择最合适的操作,强化学习环境会根据操作结果,反馈给Agent,供Agent改进其策略网络。通常这两者是单独的系统,我们用强化学习环境来训练Agent即量化交易策略,然后再回测系统中验证策略的性能表现。但是这样做一个明显的缺点就是历史行情和交易过程的模拟需要做两份,所以将二者融合起来,具有很现实的意义。
我们先来看强化学习部分,强化学习环境如下所示:
如上图所示,环境向Agent(即策略)反馈其上一步操作的奖励信号,一般取资产净值增加为正激励,资产净值减少为负激励,Agent根据当前市场行情数据,决定买入、持有、卖出等操作,环境通过执行这些操作,在下一时刻,向Agent返回其本步操作的好坏,同时将更新的市场行情发送给Agent。通常在强化学习环境中,不会考虑期权交易的权利金、保证金、手续费和税费等因素。
回测系统则是充分考虑期权操作的权利金、保证金、手续费和税费后,尽量真实的模拟实际交易环境,然后将历史行情数据进行回放,通过运行训练好的策略,来检查策略的实际性能。
我们要做的事情就是将强化学习环境和回测系统合而为一,提供一个完整的应用系统。
系统整体框架
系统的主体是SopEnv,其是gym.Env的子类,提供强化学习环境的功能。SopEnv中有一个主循环,每一步从MarketDataSource类中拉取TickData数据,包括期权的数据和标的行情数据,Agent.choose_action方法根据这些TickData行情数据,选择买入认购期权、卖出认购期权、买入认沽期权、卖出认沽期权、买入标的、卖出标的、不进行任何操作,SopEnv.take_action会执行Agent选定的操作,生成订单对象,然后会调用Broker来执行,由Broker类根据市场规则,计算权利金、保证金、手续费和税费,然后提交给风险控制模块RiskController进行审核,审核通过后,由Broker来执行,更新用户对应仓位Position类中的状态。
这就是系统的整体架构,我们将在后续博文分模块来介绍具体实现过程。