Ricequant 开源算法交易回测框架 RQalpha - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thinkingmind
V2EX    推广

Ricequant 开源算法交易回测框架 RQalpha

  •  
  •   thinkingmind 2016-07-29 16:58:58 +08:00 6824 次点击
    这是一个创建于 3439 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址: https://github.com/ricequant/rqalpha 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

    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 。

    backtest

    绘制回测结果

    如果运行完回测后,还需要再次绘制回测结果,可以运行以下命令:

    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 ''' 

    架构图

    Architecture

    FAQ

    在 Windows 运行报 Error on import matplotlib.pyplot

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

    8 条回复    2016-08-22 19:54:28 +08:00
    zjupigeon
        1
    zjupigeon  
       2016-07-29 17:10:32 +08:00
    能挣钱么?哈哈
    hansnow
        2
    hansnow  
       2016-07-29 17:11:06 +08:00
    好高级。。。非常外行的问一句,现在都是程序化交易啦?万一程序出了 bug 岂不是要亏大了。。。
    thinkingmind
        3
    thinkingmind  
    OP
       2016-07-29 17:14:18 +08:00
    @hansnow 现在还不能实盘,你说银行代码出 bug 转错了是不是亏得更多
    forest520
        4
    forest520  
       2016-07-29 17:14:21 +08:00
    赞一个。日线数据有复权么?另外指数和 ETF 的数据有么?
    thinkingmind
        5
    thinkingmind  
    OP
       2016-07-29 17:14:30 +08:00
    @zjupigeon 那要看策略啦
    forest520
        6
    forest520  
       2016-07-29 17:16:57 +08:00
    基于这个开源包开发,能做哪些在你们的网站上贴代码做不到的事情?
    thinkingmind
        7
    thinkingmind  
    OP
       2016-07-29 17:19:41 +08:00
    @forest520 作为一家商业公司 开源只是表达一个态度我们认真做平台对用户的策略没有兴趣,用户完全可以自己搭建回测平台测试。所以开源的部分除了更灵活功能不可能比线上多的
    tiankaicomcom
        8
    tiankaicomcom  
       2016-08-22 19:54:28 +08:00
    在 Spyder 怎么实现 rqalpha ,我是个新手,试了下,在 cmd 可以运行。在 Spyder 怎么实现?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2616 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 09:57 PVG 17:57 LAX 01:57 JFK 04:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86