【潘森教育】RSJ高频波动率择时指标 - 1 - 源码复现(潘森cg)

vn.py在易用性方面有了不少提升,现阶段对于许多社区新人来说,可能最难的已经不再是如何安装使用vn.py,而是如何用vn.py开发出优秀的量化策略。

开发策略这件事情确实需要一定的灵感,但更多还是应该参考爱迪生的名言:

天才是1%的灵感加上99%的汗水。

在当今2025年的中文『互联网』上,其实已经可以找到非常丰富的量化策略研究资料:

券商和期货公司研究所发布的金融工程研报;

知名高校和业内公司发表的量化投资论文;

微信公众号等自媒体上分享的策略研究文章;

各家量化平台线上公开的经典策略源代码。

初学者最快的学习方式,无疑是站在这些巨人的肩膀上,付出99%的汗水掌握前人的已有知识和经验,然后再加上1%的灵感来开发出属于自己的量化策略。

所以在许多社区用户的建议下,我们决定推出这个新的【Veighna量化策略实验室】文章系列,帮助大家尽可能体系化的学习量化策略开发:

找到好的量化研究资料;

在vn.py中复现策略代码;

和原资料对比检验正确性;

加入更多灵感来改进提升。

那么,接下来就是本系列的第一篇正式内容,策略资料来源于vn.py社区用户分享的券商金工研报,作者是财通证券研究所的陶勤英博士。

基本信息

策略原理

RV计算公式

高频已实现波动率(Realized Volatility)是一种根据高频数据(这里指的是日内分钟线级别的数据,而非Tick级别数据)计算的日内波动率指标,该指标的计算公式为:

RSJ计算公式

由 Bollerslev 等作者(相关论文请参考研报PDF中的内容)研究的【好】与【坏】的波动率,是在RV的基础上将其分解为单独的上涨(好)和下跌(坏)两种情形下的波动率度量。将波动率分解为【好】波动和【坏】波动后,可以基于其相对的差值,去度量日内价格波动的不对称性(RSJ),该指标的计算公式为:

RSJ指标应用

根据原论文中的内容,日内高频数据计算得出的【好】波动率,描述了价格上涨时候的特征(反之【坏】波动率则是描述了价格下跌时候的特征)。

该指标用于横截面的选股策略上时,对未来收益率可以起到反转的预测效果。如果应用到时序类的CTA策略,则对应的逻辑大概为:

RSJ数值越大,则说明未来越倾向于下跌;

RSJ数值越小,则说明未来越倾向于上涨。

策略核心逻辑

考虑到RSJ指标衡量的是当天日内整体价格波动所反应出来的信息,且每天股票市场的成交量大多集中在开盘和收盘附近的时间,因此我们选择在临近收盘的时间点,计算过去一段时间的RSJ指标,并对隔夜以及第二天日内的价格走势变化进行预测。

具体策略逻辑:

使用5分钟级别的K线来计算RSJ指标;

在每日的14:55计算前一段时间(可调参数)的RSJ指标;

若RSJ指标大于0则发出空头信号,反之则发出多头信号;

基于指标发出的交易信号,在收盘前完成交易(比如14:56);

持仓到第二天的14:55分,然后重复2-4步骤调整仓位。

该策略的特点:

策略始终在市场中(持有仓位),要么做多,要么做空;

每天最多执行一次交易(如果信号方向变化)。

代码实现

计算RSJ指标

由于talib工具库中没有提供RSJ指标的计算功能,因此我们需要自行实现其计算代码,好在整个公式并不复杂。为了保持代码的简洁清爽,我们选择基于vn.py中内置的时间序列缓存容器ArrayManager,来进行扩展实现RSJ的计算。

首先创建子类NewArrayManager继承父类ArrayManager,用于按时间序列缓存bar数据,提供技术指标的计算。注意在构造函数init中,需要传入一个size参数(缓存数据的长度),将其默认值设为100(表示缓存的K线数量为100根),同时也增加了一个用于缓存收益率序列的return_array数组:

接下来构造update_bar函数用于更新K线到容器中,除了缓存K线本身的OHLCV数据外,也同时将收益率数据计算好缓存在return_array数组中,方便后续计算RSJ指标:

之后即可实现RSJ的计算函数,使用上一步已经缓存了的return_array,结合NumPy的向量化计算功能来保证计算速度:

交易信号执行

由于选择了5分钟K线来计算RSJ指标,因此我们需要先使用BarGenerator将1分钟K线合成为5分钟K线,在RsjStrategy类的构造函数下创建NewArrayManager对象am和BarGenerator对象bg,其中bg对象传入了额外的5分钟合成回调函数(self.on_5min_bar):

收到1分钟K线的推送后,将其推送到bg中合成5分钟K线:

每当有5分钟K线合成后,on_5min_bar函数会被自动调用,在其中驱动策略的核心交易逻辑:

一些注意点:

vn.py中的K线采用合成时间段的开始时间戳,因此14:55分合成出的K线其时间戳(datetime)应该为14:50;

当发出做多信号时,策略应该持有1手的多头仓位,此时如果有昨日空头仓位,应该先买入平仓(cover),再买入开仓(buy);

当发出做多信号时,策略应该持有1手的空头仓位,此时如果有昨日多头仓位,应该先卖出平仓(sell),再卖出开仓(short)。

回测结果

回测数据上,本文中选择使用米筐RQData提供的IH888平滑主力合约数据,在后续的篇幅中我们会尝试更多的品种,在CtaBacktester中的回测配置如下:

本地代码:IH888.CFFEX

K线周期:1分钟

开始日期:2017-7-30

结束日期:2020-7-22

手续费率:0.00003

交易滑点:0.4

合约乘数:300

价格跳动:0.2

回测资金:100W

作为原始版本策略的源码复现,初步回测结果还不错:

特别声明:[【潘森教育】RSJ高频波动率择时指标 - 1 - 源码复现(潘森cg)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

哺乳期怎么吃减肥又有奶(哺乳期吃什么减脂)

哺乳期女性♀️可以通过调整饮食结构、增加优质蛋白摄入、保证充足水分、选择健康加餐和适当进行运动,在保证乳汁分泌的同时达到减肥目的。哺乳期减肥需要兼顾营养均衡与热量控制,避免过度节食影响母乳质量

哺乳期怎么吃减肥又有奶(哺乳期吃什么减脂)

内分泌垂体肾上腺门诊可以看吗(内分泌垂体肾上腺)

如果您怀疑自己存在内分泌垂体或肾上腺功能异常,可以考虑前往内分泌科门诊。内分泌科专门处理激素分泌调节问题,这些问题可能导致代谢紊乱和相关症状。专业的内分泌医生能够进行全面评估和诊断,并提供个性化的治疗方案

内分泌垂体肾上腺门诊可以看吗(内分泌垂体肾上腺)

『李湘』全家聚会同框!王诗龄比耶,母女瘦身状态佳(『李湘』全家聚会视频)

照片中,王诗龄自然地将一只手搭在爸爸王岳伦的肩膀上,朝镜头比了个耶,露出轻松的笑容;『李湘』站在旁边,看起来状态明显比以前清爽许多,母女俩的身形变化尤为引人注目——她们都瘦了,而且这种瘦非常自然、贴近日常生活。照…

『李湘』全家聚会同框!王诗龄比耶,母女瘦身状态佳(『李湘』全家聚会视频)

意念打字成现实?脑机接口技术打开医疗新天地(用意念打字是真还是假)

随着技术的进步,脑机接口正在从实验室走向实际临床应用。无论是医疗领域的脑机接口技术,还是企业管理中的信息化系统,核心都在于通过技术手段精准解决行业痛点。北京、上海等地也发布了相关行动方案,对脑机接口领域的监…

意念打字成现实?脑机接口技术打开医疗新天地(用意念打字是真还是假)

蓝焰突击两对CP,李溪成温亦冰好甜,叶启恒贺蓁蓁有点酸(蓝焰突击什么时候上线)

尤其是李溪成(『任嘉伦』 饰)和温亦冰(陈小纭 饰)这对成冰CP,看得让人越来越心动;而叶启恒(韩宇辰 饰)和贺蓁蓁(谢林彤饰)组成的恒蓁CP,则带有一些微妙的酸涩感。 另一边,叶启恒一直是李溪成的克星,他…

蓝焰突击两对CP,李溪成温亦冰好甜,叶启恒贺蓁蓁有点酸(蓝焰突击什么时候上线)