RiceQuant开源框架RQAlpha学习笔记

一、关于RQAlpha

RQAlpha是一个由米筐科技Ricequant开源的Python算法交易和回测引擎,适合A股市场,是事件驱动的设计。RQAlpha 从数据获取、算法交易、回测引擎,实盘模拟,实盘交易到数据分析,为程序化交易者提供了全套解决方案。RQAlpha 具有灵活的配置方式,强大的扩展性,用户可以非常容易地定制专属于自己的程序化交易系统。

二、相关背景知识

股票回测:股票回测是指设定了某些股票指标组合后,基于历史已经发生过的真实行情数据,在历史上某一个时间点开始,严格按照设定的组合进行选股,并模拟真实金融市场交易的规则进行模型买入、模型卖出,得出一个时间段内的盈利率、最大回撤率等数据。

最大回撤(Max Drawdown):策略在整个时间段上亏损最严重的时候相比净值最高值下跌的百分比。描述策略可能出现的最糟糕的情况。例如一个账户的净值是100,200,50,300,150,100, 200,那最大的亏损就是从300那个点开始一直亏到100。MaxDrawDown=1-(100/300)=0.67

最大回撤是策略评估时非常关键的一个指标,通常与风险承受能力相关。

三、RQAlpha框架代码结构


RQAlpha框架代码结构

四、RQAlpha事件机制

· 事件注册:

RQAlpha 大部分的组件是以 add_listener 的方式进行事件的注册。

以策略执行为例:

1. 当Bar数据生成时,触发 EVENT.BAR 事件,那么用户的 handle_bar 相关的代码注册了该事件则会立即执行。

2. 当订单下单时,触发 EVENT.ORDER_PENDING_NEW 事件,前端风控模块注册了该事件,则可以立即对该订单进行审核,如果不满足风控要求,则直接指定执行 order._cancel(reason) 来保证有问题的订单不会进入实际下单环节。

3. 当订单成交时,触发 EVENT.TRADE 事件,那么系统的账户模块因为注册了该事件,就可以立即计算成交以后的收益和资金变化。

程序化交易中很多操作,都是通过注册事件的方式插入到 RQAlpha 中进行扩展的

· 事件源:

1. 获取回测时间段内的交易日;

2. 遍历交易日获取日线/分钟线/tick的行情数据,发布事件到事件总线。

EVENT.TICK tick数据更新事件

· PRE_TICK

· HANDLE_TICK

· POST_TICK

EVENT.BAR bar数据更新事件

· PRE_BAR

· HANDLE_BAR

· POST_BAR

EVENT.BEFORE_TRADING 交易发生前事件

· PRE_BEFORE_TRADING

· HANDLE_BEFORE_TRADING

· POST_BEFORE_TRADING

EVENT.AFTER_TRADING 交易成交后事件

· PRE_AFTER_TRADING

· HANDLE_AFTER_TRADING

· POST_AFTER_TRADING

EVENT.SETTLEMENT 结算事件

· PRE_SETTLEMENT

· HANDLE_SETTLEMENT

· POST_SETTLEMENT

· 事件分类:


RQAlpha事件分类

五、日回测系统流程


日回测系统流程图

六、RQAlpha策略


· 策略运行方式:


RQAlpha策略运行方式


· RQAlpha的API:


RQAlpha的API

RQAlpha 抽离了策略框架的所有技术细节,以API的方式提供给策略研发者用于编写策略,从而避免陷入过多的技术细节,而非金融程序建模本身。


· 策略编写流程:

RQAlpha策略编写流程

· 范例策略的运行:

(1)buy_and_hold.py:

buy_and_hold策略:在回测开始的第一天买入资金量的100%的平安银行并且一直持有。

命令行运行:

回测的起始时间为 2016-06-01, 结束时间为 2016-12-01,我们给策略分配的起始资金为 100000, Benchmark 设置为 000300.XSHG。

运行结果:

(2)golden_cross.py:

golden_cross策略:使用talib计算长短两根均线,如果短均线从上往下跌破长均线,也就是在目前的bar短线平均值低于长线平均值,而上一个bar的短线平均值高于长线平均值,即进行清仓;如果短均线从下往上突破长均线,为入场信号。

命令行运行:

回测的起始时间为 2016-06-01, 结束时间为 2017-12-01,我们给策略分配的起始资金为 300000, Benchmark 设置为 000300.XSHG。

运行结果:


(3)macd.py:

单股票macd策略:用Talib计算MACD取值,macd 是长短均线的差值,signal是macd的均线。 如果macd从上往下跌破macd_signal,进行清仓。如果短均线从下往上突破长均线,为入场信号,满仓入股。

命令行运行:

回测的起始时间为 2016-06-01, 结束时间为 2017-12-01,我们给策略分配的起始资金为 300000, Benchmark 设置为 000300.XSHG。

运行结果:


回测衡量指标:


阿尔法(Alpha):表示策略所持有投资组合的收益中和市场整体收益无关的部分,是策略选股能力的度量。当策略所选股票的总体表现优于市场基准组合成分股时,阿尔法取正值;反之取负值,该值越大越好。

贝塔(Beta):表示投资的系统性风险,反映了策略对大盘变化的敏感性。例如,一个策略的Beta为1.3,则大盘涨1%的时候,策略可能涨1.3%,反之亦然;如果一个策略的Beta为-1.3,说明大盘涨1%的时候,策略可能跌1.3%,反之亦然。该值越小越好。

夏普比率(Sharpe Ratio):表示每承受一单位总风险,会产生多少的超额报酬,可以同时对策略的收益与风险进行综合考虑。sharp是衡量策略最重要的一个指标,该指标的计算不仅考虑收益率,还考虑了风险,因此比较具有参考价值,可以理解为经过风险调整后的收益率。

信息比率(Information Ratio):衡量单位超额风险带来的超额收益。信息比率越大,说明该策略单位跟踪误差所获得的超额收益越高,因此,信息比率较大的策略的表现要优于信息比率较低的。

索提诺比率(Sortino ratio):应该是每承担一单位的下行波动(相对于比较基准或无风险收益率)所能获得的单位收益,数值越大,说明承担同样下跌风险的情况下,可以获得更多的超额收益或者基准上的回报。

收益波动率(Volatility):金融资产价格的波动程度,是对资产收益率不确定性的衡量,用于反映金融资产的风险水平。波动率越高,金融资产价格的波动越剧烈,资产收益率的不确定性就越强;波动率越低,金融资产价格的波动越平缓,资产收益率的确定性就越强。


参考文档:

Geosmart's Notes

RQAlpha 3.0.x Documentation

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容