分类
联系方式
  1. 新浪微博
  2. E-mail

基于 BackTrader 的量化回测系统架构

介绍

量化回测系统是用于根据历史数据,验证交易策略好坏的试验场。业界有大量开源或闭源的量化回测系统,在 Python 生态下,也有多个著名的量化开源框架,本文主要基于 BackTrader 框架。

量化回测系统与 BackTrader 框架是什么关系?BackTrader 框架仅提供必要的抽象和核心逻辑。而一个完整的量化系统,还包括金融数据获取,策略效果分析,数据分析等由分析师主观进行的工作。甚至还包括交互界面、运维等能使系统更加易用的计算机技术。

本文系统设计的实现,收到了牙医小赵的开源实现的启发,站在了巨人的肩膀上。

股票数据获取

搞量化研究首先需要股票数据,就如同搞机器学习首先需要数据集一样。数据成为草根进行量化学习的第一道拦路虎。

数据既重要、也不重要,两面都具备。

数据的不重要性

做量化研究,重点是基于数据进行策略分析、挖掘。策略、理论、算法才是重要的。从这一维度上说数据并不重要。

这就好像你花重金买了一套汽修设备,有了设备并不代表自己会修理汽车,而修理汽车一定要有专业设备。

数据的重要性

数据集的好坏会影响到数据决策。包含以下几个因素:

  1. 避免未来信息
  2. 全面性:决定了算法的眼界
  3. 准确性:测量理论,越精确越好
  4. 时效性

我采取的方式

我在这一步里走了很多弯路,原因在于我的重心放在打造一个完美的股票数据系统

这件事情也有意义,但是偏离了主题。

直到我发现,对于学习量化来说,一个不完美的数据系统也足够用。

目前我选择了一个固定的时间段作为数据集,如果数据集固定下来,一切都变得很容易。于是我快速跨过了这个环节,正式进入到量化的殿堂中。

我建议很多跟我一样,自学量化的小伙伴们,初期不要在数据上花费太多时间。快速跳过这一步。

交易系统

交易系统是对 BackTrader 框架的二次封装,包括单股回测、全市场回测以及策略调优等功能。

策略基类

BackTrader 提供了 bt.Strategy 策略基类,供分析师编写策略。但是该基类功能有些单一,通常会进行二次封装,比如在交易过程中打印一些 log,更便于了解回测过程。

策略基类可参见小赵老师的 tradesys 的 Strategy 类。

A 股手续费

建议参见小赵老师的 tradesys,里面给出了一个考虑印花税和佣金的 bt.CommInfoBase 手续费实现 CNA_Commission。

同时还实现了一个手续费分析器 CostAnalyzer。

网络资源

zwdnet/tradesys: 自己建的交易系统框架 (github.com)