圣杯依然闪耀 --基于短时RSI的均值回归策略跑出30%年化

在这里插入图片描述

圣杯依然闪耀 RSI 永远是我最爱的指标 – 因为潮汐和回归是这个蓝色星球的生命年轮,这样的轮回也存在于交易世界。而 RSI 就是刻画市场中的潮汐和回归的最好指标之一。

年初我介绍过 Connor’s RSI。这次我们将探索 Connors 提出的一个基于短时 RSI 的均值回归策略,重点是介绍策略优化应该从哪些方面入手。

策略实验及评测数据来自于Quantitativo 网。

策略概要

所有人应该都已经熟悉 RSI 指标了。我们常用的 RSI 指标是基于 6,12 和 24 周期计算出来的。

R S = SMMA ( U , n ) SMMA ( D , n ) RS = \frac{\text{SMMA}(U,n)}{\text{SMMA}(D,n)} RS=SMMA(D,n)SMMA(U,n)

R S I = 100 ⋅ SMMA ( U , n ) SMMA ( U , n ) + SMMA ( D , n ) = 100 − 100 1 + R S RSI = 100\cdot\frac{\text{SMMA}(U,n)}{\text{SMMA}(U,n) + \text{SMMA}(D,n)} = 100 - { 100 \over {1 + RS} } RSI=100SMMA(U,n)+SMMA(D,n)SMMA(U,n)=1001+RS100

但是 Larry Connors 认为,2 周期的 RSI 可以更好的反映市场趋势,很可能是技术指标中的圣杯。他把这个观点发表在 2008 年出版的《华尔街的顶级交易员》一书中。在此后的 Connor’s RSI 指标中,streak 的 RSI 正是使用 2 周期来计算的。

基于这样的 RSI,Connors 给出了以下均值回归策略:

  1. 标普 500 指数超过 200 日均线;
  2. 标普 500 指数的 2 周期 RSI 低于 5;
  3. 信号发出时,按收盘价买入;
  4. 当标普 500 高于 5 日均线时卖出。

用交易员的话来讲,这是一个在牛市(指数大于 200 日均线)短线回调(RSI 低于 5)时的买入策略。

因子检验

首先 quantitativo 进行了单因子检验。检验方法是对对所有 2 天 RSI 收于 5 以下的标的进行买入并持有 5 天,再计算收益。

在这里插入图片描述

这个统计包含了超过 21000 个标的,超过 250 万次事件(标普 500 收于 200 天均线之上)。测试中的亮点:

  1. 当任何给定股票的 2 天 RSI 低于 5 并在牛市中持有 5 天时,买入其平均回报率为 3.3%;
  2. 其中 60% 的事件获得正回报,每笔交易的预期回报为 9.8%;
  3. 40%的交易是负面的,每笔交易的预期回报率为-6.6%;
  4. 分布呈正偏。

quantitativo 还统计了反过来的情形,即如果我们在每只标的的 2 天 RSI 收于 5 以上时买入每只股票,并在牛市中持有 5 天的数据。我们将得到:

  1. 当任何给定股票的 2 天 RSI 高于 5 时,买入其预期回报率为 0.3%;
  2. 交易转为正值的可能性为 52%,预期回报率为 5.5%;
  3. 交易转为负值的可能性为 48%,预期回报率为 -5.1%。

quantitativo 还对两次测试是否属于同一分布进行了假设检验,结果 p 值远低于 0.05,证明两个分布显著不同。因此,第一次测试中的因子是存在 Alpha 的。

策略回测

接下来quantitativo进行了策略回测。这里策略设计如下:

  1. 使用SPY作为测试标的。
  2. 当以下条件满足时,在下一次开盘时买入SPY:
    1. 标普指数的RSI(2)收于5之下
    2. SPY高于200日均线
  3. 退出条件
    1. 当SPY收盘价高于前一天高点,则在下一次开盘时退出。
    2. 如果SPY收盘价低于200日均线

可以看出,回测策略与Connor提出的策略略有不同。为什么要进行这样的差异化?

这里的差异化,其实就是回测与实盘的差异。Connor给出的策略更理想化,而quantitativo的验证策略则更加接近实盘。这是我们做策略时一定要考虑的。

首先,尽管我们可以用标普500来回测,但在实盘中,更切合实际的方法是购买对应的ETF。这里的SPY就是以标普500为标的的ETF。

第二,Connor的策略是以收盘价买入。如果你的回测系统不够精确的话,最好是以次日开盘价买入。当然,如果你的回测系统和行情数据精确到分钟级,那么在国内,也可以利用集合竞价前一分钟的收盘价计算信号,再以集合竞价买入。

退出条件的差异,可以看成是quantitativo对原策略的一个优化。不过,我并没有看出来这个优化的意义。它的背后似乎并不存在任何交易上的原理支撑。看起来,这更像是quantitativo通过数据做出的过拟合。

!!! question
quantitativo在本次实验中,使用了长达25年的数据进行测试。如果经过这么长的时间回测,数据表现仍然很好,是否就可以说不存在过拟合?我很想知道你们怎么看。

那么,quantitativo的实验结果又是如何呢?

在SPY上的测试简直就是灾难。在整个回测期(25 年)中,使用 SPY 交易此策略提供了 67% 的回报。主要原因是交易次数太少,仅执行了 157 笔交易。

接着quantitativo改用了纳斯达克100指数ETF(QQQ)和三倍杠杆纳斯达克100ETF(TQQQ)。结果表明,在TQQQ上表现不错:
在这里插入图片描述

夏普比率分别达到了2.3(QQQ)和1.92(TQQQ),对指数标的而言,是相当不错的指标(特别是与A股对比)。

改进策略:增加因子

在前一次实验的基础上,quantitativo增加了资产组合。

他们把资金分成十份(10 slots),用于购买前一天RSI收于5以下的标的;如果universe中有10支以上的标的触发了入场信号,将按市值进行排序,优先考虑市值较小的股票。退出条件改为收盘价低于标的200日均线。

此外,他们还限制只交易流动性较好的标的:

  1. 只交易过去3个月内完全没有停牌的标的
  2. 如果标的过去3个月日均成交量中位数不足资金份额的20倍,则不纳入

在这里插入图片描述

在这里插入图片描述

这次的结果很不错,整体年回报率达到17.8%,是基准的3倍。但也存在问题,即所有这些都是在前8-9年实现的。该策略在 2008 年后停止执行,并从那时起输给基准。

原因何在?通过分析25年回测期间进行的11,380笔交易,quantitativo发现了很多退市。这种幼稚方法的问题在于,该策略优先考虑小盘股(在通过流动性过滤器后),它们退市的概率为 +70%。

第二次改进:降低退市风险

quantitativo再次改进了策略,这次的改进是将universe限制在只交易大型和超大盘股,这些股票的退市概率较低(分别为35%和9%)。

这一次效果非常明显。策略的年化回报达到了23.9%,是同期基准的4倍,夏普达到1.23%,最大回撤为32%,几乎只有标普的一半。

但是,之前就存在的一个问题,交易次数过于频繁仍然存在。现在一年仍然会交易461次。

在这里插入图片描述

第三次改进:减少slots

之前的实验使用了10个slots,这可能是导致交易次数过多的主要原因。于是,quantitativo将同时持有的标的数减少到2支。

现在,交易笔数由461次/年下降到90笔/年。并且实现30.3%的年回报率,是基准的5倍。

这里抛一个问题,年化上升,夏普会跟着上升吗?多给自己一点思考时间,会比全盘接受别人的观点更好。因此,我不在这里公布答案,你可以在留言问我答案,也可以在quantitativo网站上寻找这个答案。

结论

这篇文章介绍了一个基于短时RSI的均值回归策略,并在最后,给出了年化达30.3%的一个实现(未考虑滑点和交易手续费)。

这个策略的内核是短时RSI,尽管这个指标发明以来已经超过45年,但回测结果表明,只要你研究一件事足够深入,就很可能取得成功。

!!! quote
It's not that I'm so smart; it's just that I stay with problems longer. -- Albert Einstein

这个方案已经值回你的阅读时间,但更为重要的是,我们讨论了策略发现的一般流程和优化角度。我们再梳理一次,作为本篇的结束语:

  1. RSI代表着潮汐和回归,其背后是人性,因此它永远不会过时。
  2. 多因子策略也可以以某个因子为主,在交易过程中,以限制条件的方式引入其它因子。
  3. 文中给出了判断标的流动性强弱的方法,你也可以将其作为一个因子。
  4. 研发策略的步骤往往从单因子检验开始,再编写简单回测,然后根据回测结果一步步优化。
  5. 在优化过程中,quantitativo先是使用ETF,然后改用了10个slots,最终回到2个slots的方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1489309.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

F1冠军版洗地机开售,云鲸能否成为“冠军”?

云鲸,本是一种由风云气象约束为鲸形状而成的大气生物,其遨游苍穹,不染尘埃。而当云鲸“降入尘世”,也代表着一种极简且洁净的品质生活方式。 作为一家专业的清洁机器人企业,以此为名的云鲸将科技清洁与美学设计融为一…

MySQL客户端命令一节将.sql文件导入MySQL

MySql客户端命令 直接输入SQL语句 使用MySQL客户端连接到服务器之后,可以发送SQL语句到服务器执行,并且以;和\g, \G作为结束不同的结束方式显示内容有所不同** TIPS: ;和\g结尾以表格的形式显示结果\G以行的形式显示结果 在连接到服务器之后…

【React】详解受控表单绑定

文章目录 一、受控组件的基本概念1. 什么是受控组件?2. 受控组件的优势3. 基本示例导入和初始化定义函数组件处理输入变化处理表单提交渲染表单导出组件 二、受控组件的进阶用法1. 多个输入框的处理使用多个状态变量使用一个对象管理状态 2. 处理选择框(…

拉提查合创5步玩转git工具协作代码开发

1 工具使用场景 开发团队使用git版本管理工具,进行协作代码开发过程中,最常用的场景为: (1)拉取代码 将git远端仓库最新代码拉取到本地。 (2)提交代码 将本地新增修改的代码提交至git远端仓库中…

Django项目中报错:django.template.exceptions.TemplateDoesNotExist: index.html

访问127.0.0.1:8000访问出错 查看报错原因 到Django项目当中找到settings.py,找到TEMPLATES中的DIRS: 添加如下代码,并导入OS模块: "DIRS": [os.path.join(BASE_DIR,templates)] 再次访问IP地址:

Shell编程之正则表达式与文本三剑客

目录 一、正则表达式 1.引言--什么是正则表达式 1.1正则表达式的功能 2.基础正则表达式(BRE) 2.1特殊字符 2.2定位符 2.3非打印字符 3.扩展正则表达式(ERE) 4.元字符操作的案列 二、命令小工具 1.cut:列截取工具 2.sort排序 …

Footprint Analytics 助力 Core 区块链实现数据效率突破

Core 是一个基于比特币并兼容 EVM 的 Layer 1 区块链,正通过其创新解决方案引革新特币金融。作为首个引入非托管 BTC 质押协议及全球首个发行收益型 BTC ETP 产品的区块链,Core 站在了区块链技术的最前沿。通过利用超过 50% 的比特币挖矿哈希算力&#x…

SQL Server 设置端口号:详细步骤与注意事项

目录 一、了解SQL Server端口号的基础知识 1.1 默认端口号 1.2 静态端口与动态端口 二、使用SQL Server配置管理器设置端口号 2.1 打开SQL Server配置管理器 2.2 定位到SQL Server网络配置 2.3 修改TCP/IP属性 2.4 重启SQL Server服务 三、注意事项 3.1 防火墙设置 3…

《GPT-4o mini:开启开发与创新的新纪元》

在科技发展的快速进程中,OpenAI 推出的 GPT-4o mini 模型如同一阵春风,给开发者们带来了新的希望和机遇。它以其卓越的性能和极具吸引力的价格,成为了行业内热议的焦点。 当我首次听闻 GPT-4o mini 的消息时,内心充满了好奇与期待…

【Gin】Gin框架性能优化:精进应用效率与稳定性的对象池策略(上)

【Gin】Gin框架性能优化:精进应用效率与稳定性的对象池策略(上) 大家好 我是寸铁👊 【Gin】Gin框架性能优化:精进应用效率与稳定性的对象池策略(上)✨ 喜欢的小伙伴可以点点关注 💝 前言 本次文章分为上下两部分,上部…

C++初学(2)

2.1、其他简单C语句例子 下面这个程序要求运行时输入值 #include <iostream> int main() {using namespace std;int yuanshi;cout << "How many yuanshi do you have?" << endl;cin >> yuanshi;cout << "Here are two more.&q…

过某开源滑动验证码

过某开源滑动验证码 今天早上我有一点空闲时间&#xff0c;想着回顾一下前几天在某查询网站遇到的滑动验证码&#xff0c;以免时间久了忘记了。那个网站可能使用的是较早版本的开源滑块验证码系统tianai-captcha&#xff0c;但我不确定是否正确。 整体思路&#xff1a; 获取…

开始尝试从0写一个项目--前端(三)

器材管理板块 添加器材管理导航 src\views\home\Home.vue src\router\index.js src\views\equipment\Equipment.vue <template><div>hello!</div></template> 测试 搜索导航分页查询 src\views\equipment\Equipment.vue <template><div&…

【React】详解 Redux 状态管理

文章目录 一、Redux 的基本概念1. 什么是 Redux&#xff1f;2. Redux 的三大原则 二、Redux 的核心组件1. Store2. Action3. Reducer 三、Redux 的使用流程1. 安装 Redux 及其 React 绑定2. 创建 Action3. 创建 Reducer4. 创建 Store5. 在 React 应用中使用 Store6. 连接 React…

Apache Flink窗口详解

Apache Flink窗口详解 Apache Flink 的核心功能之一是窗口处理&#xff0c;它允许开发人员以基于时间或基于计数的方式分组和处理数据流。 窗口技术是一种根据某些标准将数据流划分为有限块&#xff08;称为窗口&#xff09;的技术。 窗口&#xff08;Window&#xff09;是处…

活动报名小程序

#活动报名工具# # 活动报名小程序 ## 项目简介 一款通用的活动报名工具&#xff0c;包含活动展示&#xff0c;微信支付&#xff0c;订单管理&#xff0c;分享评价等功能。 品客聚精彩&#xff0c;有你才精彩&#xff01;不只有线下活动还可以进行线上裂变活动。 …

HTTP ESP8266 获取天气请求 单片机,嵌入式 2024/7/26 日志

通过http请求获取天气信息: 这里借鉴一下 中国气象局网站举例 首先根据网址 分析: http://weather.cma.cn/ 通过vscode插件:REST Client 发送请求我们会得到内容 首先我们的打开浏览器调试工具查看请求格式 筛选以下几个关键的格式,试着用插件发送请求 GET /web/weather…

【项目日记(三)】梦幻笔耕-前端模块

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言,2.登录界面3.注册界面4.博客列表界面5.博客编辑页6.博客详情页7.博客更新界面…

Java 8 中 20 个高频面试题及答案

文章目录 前言20 道高频题问题 1&#xff1a;给定一个整数列表&#xff0c;使用 Stream 函数找出列表中所有的偶数&#xff1f;问题 2&#xff1a;给定一个整数列表&#xff0c;使用 Stream 函数找出所有以 1 开头的数字&#xff1f;问题 3&#xff1a;如何使用 Stream 函数在给…

stm32入门-----TIM定时器(输入捕获模式——下)

目录 前言 一、C语言编程初始化步骤 1.开启时钟 2.配置GPIO口 3.配置时基单元 4.配置输入捕获单元&#xff08;主模式&#xff09; 5.配置触发源于从模式 6.开启定时器 二、项目实操&#xff08;测周法&#xff09; 1.定时器测量方波 2.定时器测量方波的占空比 前言 接…