初始化数据回测框架:PyAlgoTrade
一、常用的数据回测框架
常用的数据回测框架有哪些?
- ZipLine:比较适用于美股,A股的话还需要另外去修改,由于它的适用性和复杂性,对应编程能力的要求很高, 所以我们暂时不用它来实验。
- PyAlgoTrade:使用简单,方便,比较容易理解,适应的品种主要是股票和数字币, 待会我们来看这一个框架开源代码和使用说明,
- BackTrader:它比较全面,包括回测,策略交易。不只是股票,它还适合期权,大宗商品交易都支持,它的类比较多,对于编程能力要求较高。
综上,我们选择PyAlgoTrade
框架来进行实验。
关于数据回测的功能我们之前已经写过了,Stragedy
/base.py
里面有写过。收益率、夏普率都是回测的内容。只不过我们写的比较简单,缺乏一些细节, 如果你要使用其它的框架,那么用我们的xuhssquant
就用不上了,因为其它的框架有自己的体系。
因此,我们后期会优化base.py
文件。
接着我们浏览一下源码
二、源码浏览
开源项目地址
https://github.com/gbeced/pyalgotrade
这个是官网的介绍:
http://gbeced.github.io/pyalgotrade/
可以看到这里有交易
、 优化
和绘图
的模块。
这里还有6个重要的组件:
数据相关部分
- Feeds(喂食数据)
- DataSeries(序列化数据组件)
策略和计算部分
- Strategies(交易)
- Technicals(计算一些技术指标的组件)
交易优化部分
- Brokers(执行订单的组件)
- Optimizer(优化组件)
这个开源项目有19个发布版本
切换到insight可以看到项目的贡献的历史信息
这个和我们之前自己写的相差不大,只是会更加完整一些,核心的组件都差不多。它相对来说比较好理解。
三、实战
创建backtest
文件夹,并创建pyalgotrade.py
文件
这里应该如何回测呢,我们有2
种回测的思路:
第一种就是完全利用这个开源项目,先看它的源码,可以看到它的很多策略都是放在technical
里面,这里的架构很清晰,值得学习。
假设我要用这个框架进行回测,比如说回测ma,那么我们就要调用ma对应的代码,这是第一种方式,直接利用这个项目进行一些策略的制定,然后进行回测,所有的操作都是在这个开源项目中的。
另一种回测的方式是,我们可以借助自己写的项目,然后去借鉴这个开源项目的代码,来构建一个完整的 回测。
这里我会先用pyalgotrade
带大家了解大致的回测流程,后面我们希望这个开源项目为我们自己的项目来服务的。
我们会借用它的一些代码来匹配到自己的项目中。
安装pyalgotrade
pip install pyalgotrade
使用这个库
#使用pyalgotrade进行数据回测
import pyalgotrade