量化杂谈之基础篇系列文章:
【一】获取所有股票的代码和名字:一个爬虫的简单例子https://bbs.pinggu.org/thread-4145710-1-1.html
【二】回测的那些事 https://bbs.pinggu.org/thread-4154818-1-1.html【三】回测环境的搭建以及简单的回测框架 https://bbs.pinggu.org/thread-4154818-1-1.html
关注我的微信公众号,有更多关于量化的原创文章哦!。
我的微信公众号:会掘金的小鹿(NuggetsRoad)
是时候关注一波了!
事件驱动的回测框架是一种更为复杂的回测系统。上篇我们介绍的简单回测框架是以策略为主题的,不考虑交易的委托成交行为,因此与市场真实情况是有一定差距的。而事件驱动的回测框架可以模拟实盘交易,是一种完全仿真的回测环境。事件驱动的回测框架包含了以下几个组成部分:
事件模块包括一个事件的基类,在事件的基类下面则有很多子事件,如市场数据事件(market)、交易信号事件(signal)、委托下单事件(order)和订单成交事件(fill)等。此外,还需要一个事件队列来存储和管理所有子事件。
数据采集模块可以通过接口获取现在的行情数据和历史数据,该模块能够产生市场数据事件。历史数据的获取能直接读取我们搭建好的数据库,而实时的行情数据可能需要用到交易软件的接口。
策略模块与简单回测系统类似,输入bar或者tick数据,生成signal;策略模块可以产生信号事件。
交易执行模块接收信号事件,决定需要开仓和平仓的头寸数量,输出委托下单事件。该模块再根据委托下单事件进行模拟或者真实的交易,当订单成交事件完成时更新持有资产头寸以及其他相关数据。
资产追踪模块贯穿于各个事件之间,它记录资金、仓位、仓位市值等信息。一旦发生了仓位的变动,那么资产头寸模块记录的各种数据将会更新。资产头寸模块的另一个作用是tracing策略执行的全过程,因此会记录所有的交易历史讯息。
在回测系统中,所有事件通过事件队列进行管理。当一个事件完成其使命后,就会自觉排到队伍最后,由下一个事件开始它的任务,如此循环。
下面来谈谈各主要模块它们的功能。
数据采集模块
策略模块
交易执行模块
根据信号和现有的资产头寸决定需要交易的头寸数量,生成委托单。
订单管理系统:管理委托和成交订单,加入风控系统对下单进行风险控制。
算法交易系统:通过算法对委托的订单进行拆分。
模拟交易系统:模拟交易所对委托订单进行处理,其中包含价格撮合模型以及处理滑点的模型。
资产头寸模块
基于事件的复杂回测系统就讲到这里,该回测系统很容易改造成一个能够进行真实量化交易的系统。基于事件的回测系统暂时不会继续展开,下一讲我们会采用一个策略对简单回测系统进行实例讲解,敬请期待~~