.. _intro-overview: ==================== 介绍 ==================== .. _Ricequant: https://www.ricequant.com/algorithms .. _Ricequant 社区: https://www.ricequant.com/community .. _RQAlpha 文档: http://rqalpha.io .. _Ricequant 文档: https://www.ricequant.com/api/python/chn RQAlpha 从数据获取、算法交易、回测引擎,实盘模拟,实盘交易到数据分析,为程序化交易者提供了全套解决方案。 RQAlpha 具有灵活的配置方式,强大的扩展性,用户可以非常容易地定制专属于自己的程序化交易系统。 特点 ============================ ====================== ================================================================================= 易于使用 让您集中于策略的开发,一行简单的命令就可以执行您的策略。 完善的文档 您可以直接访问 `RQAlpha 文档`_ 或者 `Ricequant 文档`_ 来获取您需要的信息。 活跃的社区 您可以通过访问 `Ricequant 社区`_ 获取和询问有关 RQAlpha 的一切问题,有很多优秀的童鞋会解答您的问题。 稳定的环境 每天都有会大量的算法交易在 Ricequant 上运行,无论是 RQAlpha,还是数据,我们能会做到问题秒处理,秒解决。 灵活的配置 您可以使用多种方式来配置和运行策略,只需简单的配置就可以构建适合自己的交易系统。 强大的扩展性 开发者可以基于我们提供的 Mod Hook 接口来进行扩展。 ====================== ================================================================================= .. warning:: RQAlpha 本身支持不同周期的回测和实盘交易,但是目前只免费开放A股市场日线数据,如果用户需要做分钟回测或者更细级别的回测可以在 `Ricequant`_ 上进行,也通过实现数据层接口函数来使用自己的数据。自有数据源对接请参考 :ref:`development-event-source` RQAlpha 安装 ================== .. code-block:: bash $ pip install rqalpha .. note:: 我们强烈建议您在虚拟环境下安装RQAlpha 虚拟环境的安装,请参考 :ref:`intro-detail-install` 数据获取 ================== 当 RQAlpha 安装完成后,可以通过如下命令获取我们提供的免费A股日线数据。获取及更新数据的详细内容请参考 :ref:`intro-install-get-data` .. code-block:: bash $ rqalpha download-bundle 生成样例策略 ================== 运行以下命令,将会在指定目录生成一个examples文件夹,其中包含几个有趣的样例策略: .. code-block:: bash $ rqalpha examples -d ./ 运行回测 ================== 运行 RQAlpha 需要传递一些参数,可以通过命令 `rqalpha help` 查看,或者查看文档 :ref:`intro-config` 来获取相关信息。 运行如下命令: .. code-block:: bash $ cd examples $ rqalpha run -f rsi.py -s 2014-01-01 -e 2016-01-01 -o result.pkl --plot --progress --account stock 100000 等待回测结束后,将显示您的收益率和Risk。 绘制回测结果 ================== 如果运行完回测后,还需要再次绘制回测结果,可以运行以下命令: .. code-block:: bash $ 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画图时,记录的值 .. code-block:: python3 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