项目地址: https://github.com/ricequant/rqalpha

RQAlpha
简介
RQAlpha 是一个开源的 Python 算法交易和回测引擎,适合 A 股市场,是事件驱动的设计。自带日线数据, 目前暂时仅支持日线回测。
RQAlpha 的逻辑也将会在Ricequant的一些回测部分使用,Ricequant - 是一个开放的量化算法交易社区,有免费的服务器资源给大家测试、实盘模拟您的交易算法,并且可以将交易信号通过微信和邮件实时推送给大家, 如果您想要更好的回测报告体验和实盘模拟交易功能可以把本地写好的策略复制黏贴到我们的网站上运行。
如果您想参与和贡献进来这个项目,可以发邮件给 [email protected] 联系,如果您有功能需求或者 bug 报告的话,都可以开一个 issue : https://github.com/ricequant/rqalpha/issues
特色
- 容易使用: RQAlpha 可以让你集中精力在策略的开发上。可以参考./examples 下的范例
- 需要传入历史数据,计算的结果是 pandas 的 DataFrame, 和 PyData 的生态系统很好的结合在一起
- 可以使用 Python 的统计、机器学习等科学计算库如 matplotlib, scipy, statsmodels 和 sklearn 等
- 免费提供了 Ricequant 的日级别数据,可以通过互联网自己更新 data bundle
安装
# 为了避免一些安装问题,请先升级您的 pip 和 setuptools
pip install -U pip setuptools
# 安装 rqalpha
pip install rqalpha
# 升级 rqalpha
pip install -U rqalpha
# 国内的用户们可以使用镜像
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -U rqalpha
For Windows 用户
如果出现缺失cl.exe,请访问https://wiki.python.org/moin/WindowsCompilers下载 VC 并且安装。
如果在安装bcloz出现编译困难,可以从http://www.lfd.uci.edu/~gohlke/pythonlibs/#bcolz下载bcolz安装,安装bcloz后,再安装rqalpha。
安装依赖
安装 TA-Lib
你可以通过 PyPI 安装:
$ pip install TA-Lib
如果发现无法通过 pip 安装,请访问 https://mrjbq7.github.io/ta-lib/install.html 解决。
对于 Windows 用户,如果编译困难,可以根据您本地的 Python 版本下载指定版本的 whl 包,然后pip install TA_Lib-0.4.9-cp27-none-win_amd64.whl。
- TA_Lib-0.4.9-cp27-none-win32.whl
- TA_Lib-0.4.9-cp27-none-win_amd64.whl
- TA_Lib-0.4.9-cp34-none-win32.whl
- TA_Lib-0.4.9-cp34-none-win_amd64.whl
- TA_Lib-0.4.9-cp35-none-win32.whl
- TA_Lib-0.4.9-cp35-none-win_amd64.whl
Usage
Usage: rqalpha [OPTIONS] COMMAND [ARGS]...
Options:
-v, --verbose
--help Show this message and exit.
Commands:
examples generate example strategies to target folder
plot draw result DataFrame
run run strategy from file
update_bundle update data bundle, download if not found
下载回测需要的数据 bundle
运行以下命令,将会从 Ricequant 的服务器下载最新的日级别数据,为回测提供数据支持。
rqalpha update_bundle
生成样例策略
运行以下命令,将会在指定目录生成一个 examples 文件夹,其中包含几个有趣的样例策略。
rqalpha examples -d ./
运行回测
回测脚本参数如下:
Usage: rqalpha run [OPTIONS]
run strategy from file
Options:
-f, --strategy-file PATH [required]
-s, --start-date DATE [required]
-e, --end-date DATE [required]
-o, --output-file PATH
-i, --init-cash INTEGER
--plot / --no-plot plot result
--progress / --no-progress show progress bar
-d, --data-bundle-path PATH
--help Show this message and exit.
运行以下命令,将开始回测
rqalpha run -f examples/multi_rsi.py -s 2014-01-01 -e 2016-01-01 -o result.pkl --plot
等待回测结束后,将显示您的收益率和 Risk 。

绘制回测结果
如果运行完回测后,还需要再次绘制回测结果,可以运行以下命令:
rqalpha plot result.pkl
分析结果
RQAlpha 可以输出一个 DataFrame ,其中包含了每天的 Portfolio 信息、 Risk 信息、 Trades 和 Positions 。
其 Index 是交易日, columns 包括alpha, annualized_returns, benchmark_annualized_returns, benchmark_daily_returns, benchmark_total_returns, beta, cash, daily_returns, downside_risk, information_rate, market_value, max_drawdown, pnl, portfolio_value, positions, sharpe, sortino, total_commission, total_returns, total_tax, tracking_error, trades, volatility。
其中positions是当日的持仓信息,trades是当日的交易信息。
import pandas as pd
df = pd.read_pickle("result.pkl")
print(df.iloc[-1])
'''
alpha 0.0180666
annualized_returns 0.0559331
benchmark_annualized_returns 0.0454542
benchmark_daily_returns 8.87784e-05
benchmark_total_returns 0.525913
beta 0.518371
cash 4971.44
daily_returns 0.00250376
downside_risk 0.246409
information_rate 0.0380054
market_value 162796
max_drawdown -0.602535
pnl 419
portfolio_value 167767
positions {'000068.XSHE': Position({{'value_percent': 0....
sharpe 2.35011
sortino 2.62967
total_commission 2585.89
total_returns 0.677674
total_tax 1172.01
tracking_error 0.269138
trades []
volatility 0.275721
Name: 2016-07-01 00:00:00, dtype: object
'''
架构图

FAQ
在 Windows 运行报 Error on import matplotlib.pyplot
请访问 Error on import matplotlib.pyplot (on Anaconda3 for Windows 10 Home 64-bit PC) 解决。