RQAlpha 从数据获取、算法交易、回测引擎,实盘模拟,实盘交易到数据分析,为程序化交易者提供了全套解决方案。
RQAlpha 具有灵活的配置方式,强大的扩展性,用户可以非常容易地定制专属于自己的程序化交易系统。
易于使用 让您 | 集中于策略的开发,一行简单的命令就可以执行您的策略。 |
完善的文档 您可 | 以直接访问 RQAlpha 文档 或者 Ricequant 文档 来获取您需要的信息。 |
活跃的社区 您可 | 以通过访问 Ricequant 社区 获取和询问有关 RQAlpha 的一切问题,有很多优秀的童鞋会解答您的问题。 |
稳定的环境 每天 | 都有会大量的算法交易在 Ricequant 上运行,无论是 RQAlpha,还是数据,我们能会做到问题秒处理,秒解决。 |
灵活的配置 您可 | 以使用多种方式来配置和运行策略,只需简单的配置就可以构建适合自己的交易系统。 |
强大的扩展性 开发者 | 可以基于我们提供的 Mod Hook 接口来进行扩展。 |
Warning
RQAlpha 本身支持不同周期的回测和实盘交易,但是目前只免费开放A股市场日线数据,如果用户需要做分钟回测或者更细级别的回测可以在 Ricequant 上进行,也通过实现数据层接口函数来使用自己的数据。自有数据源对接请参考 development-event-source
$ pip install rqalpha
Note
我们强烈建议您在虚拟环境下安装RQAlpha
虚拟环境的安装,请参考 intro-detail-install
当 RQAlpha 安装完成后,可以通过如下命令获取我们提供的免费A股日线数据。获取及更新数据的详细内容请参考 intro-install-get-data
$ rqalpha download-bundle
运行以下命令,将会在指定目录生成一个examples文件夹,其中包含几个有趣的样例策略:
$ rqalpha examples -d ./
运行 RQAlpha 需要传递一些参数,可以通过命令 rqalpha help 查看,或者查看文档 intro-config
来获取相关信息。
运行如下命令:
$ cd examples
$ rqalpha run -f rsi.py -s 2014-01-01 -e 2016-01-01 -o result.pkl --plot --progress --account stock 100000
等待回测结束后,将显示您的收益率和Risk。
如果运行完回测后,还需要再次绘制回测结果,可以运行以下命令:
$ rqalpha plot result.pkl
RQAlpha可以输出一个 pickle 文件,里面为一个 dict 。keys 包括
- summary 回测摘要
- stock_portfolios 股票帐号的市值
- future_portfolios 期货帐号的市值
- total_portfolios 总账号的的市值
- benchmark_portfolios 基准帐号的市值
- stock_positions 股票持仓
- future_positions 期货仓位
- benchmark_positions 基准仓位
- trades 交易详情(交割单)
- plots 调用plot画图时,记录的值
import pickle
result_dict = pickle.load(open("/tmp/alpha.pkl", "rb")) # 从输出pickle中读取数据
result_dict.keys()
# Out: dict_keys(['stock_portfolios', 'total_portfolios', 'stock_positions',
# 'benchmark_portfolios', 'plots', 'summary', 'trades', 'benchmark_positions'])
result_dict["summary"]
# Out:
# {'alpha': 0.027,
# 'annualized_returns': 0.025000000000000001,
# 'benchmark': '000001.XSHG',
# 'benchmark_annualized_returns': -0.057285289949864038,
# 'benchmark_total_returns': -0.059871893424000011,
# 'beta': 0.314,
# 'cash': -617.64200000000005,
# 'commission_multiplier': 1,
# 'dividend_receivable': 0.0,
# 'downside_risk': 0.14299999999999999,
# 'end_date': datetime.date(2017, 1, 19),
# 'frequency': '1d',
# 'frozen_cash': 0.0,
# 'information_ratio': 0.45700000000000002,
# 'margin_multiplier': 1,
# 'market_value': 1027242.0,
# 'matching_type': 'CURRENT_BAR_CLOSE',
# 'max_drawdown': 0.087999999999999995,
# 'pnl': 26624.358,
# 'portfolio_value': 1026624.358,
# 'run_type': 'BACKTEST',
# 'sharpe': 0.016,
# 'slippage': 0,
# 'sortino': 0.014,
# 'start_date': datetime.date(2016, 1, 4),
# 'strategy_file': 'rqalpha/examples/simple_macd.py',
# 'strategy_name': 'simple_macd',
# 'strategy_type': 'stock',
# 'total_returns': 0.027,
# 'tracking_error': 0.18099999999999999,
# 'transaction_cost': 27467.462,
# 'volatility': 0.125}
result_dict["total_portfolios"][-5:]
# Out:
# annualized_returns cash daily_pnl daily_returns \
# date
# 2017-01-13 0.024 -617.642 1119.0 0.001
# 2017-01-16 0.021 -617.642 -2238.0 -0.002
# 2017-01-17 0.022 -617.642 1119.0 0.001
# 2017-01-18 0.024 -617.642 2238.0 0.002
# 2017-01-19 0.025 -617.642 1119.0 0.001
# dividend_receivable frozen_cash market_value pnl \
# date
# 2017-01-13 0.0 0.0 1025004.0 24386.358
# 2017-01-16 0.0 0.0 1022766.0 22148.358
# 2017-01-17 0.0 0.0 1023885.0 23267.358
# 2017-01-18 0.0 0.0 1026123.0 25505.358
# 2017-01-19 0.0 0.0 1027242.0 26624.358
# portfolio_value total_returns transaction_cost
# date
# 2017-01-13 1024386.358 0.024 27467.462
# 2017-01-16 1022148.358 0.022 27467.462
# 2017-01-17 1023267.358 0.023 27467.462
# 2017-01-18 1025505.358 0.026 27467.462
# 2017-01-19 1026624.358 0.027 27467.462
result_dict["stock_positions"][-5:]
# Out[6]:
# average_cost avg_price bought_quantity bought_value \
# date
# 2017-01-13 9.15 9.15 111900 1023885.0
# 2017-01-16 9.15 9.15 111900 1023885.0
# 2017-01-17 9.15 9.15 111900 1023885.0
# 2017-01-18 9.15 9.15 111900 1023885.0
# 2017-01-19 9.15 9.15 111900 1023885.0
# market_value order_book_id pnl quantity sellable \
# date
# 2017-01-13 1025004.0 000001.XSHE 1119.0 111900 111900
# 2017-01-16 1022766.0 000001.XSHE -1119.0 111900 111900
# 2017-01-17 1023885.0 000001.XSHE 0.0 111900 111900
# 2017-01-18 1026123.0 000001.XSHE 2238.0 111900 111900
# 2017-01-19 1027242.0 000001.XSHE 3357.0 111900 111900
# sold_quantity sold_value symbol total_orders total_trades \
# date
# 2017-01-13 0 0.0 平安银行 1 1
# 2017-01-16 0 0.0 平安银行 1 1
# 2017-01-17 0 0.0 平安银行 1 1
# 2017-01-18 0 0.0 平安银行 1 1
# 2017-01-19 0 0.0 平安银行 1 1
# transaction_cost value_percent
# date
# 2017-01-13 819.108 1.001
# 2017-01-16 819.108 1.001
# 2017-01-17 819.108 1.001
# 2017-01-18 819.108 1.001
# 2017-01-19 819.108 1.001