【每周研报复现】基于阻力支撑相对强度(RSRS)的市场择时

news2024/11/20 15:28:00

原创文章第106篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。

今天要复现的研报是:”光大证券_金融工程深度:基于阻力支撑相对强度(RSRS)的市场择时——技术择时系列报告之一“。

研报核心就是提出了一个指标,并以此构建策略。这个指标是RSRS(阻力支撑相对强度)。这个指标,我们基于backtrader实现过,可以参见之前的文章:动量轮动与光大RSRS指标在backtrader的实现; 

阻力支撑指标RSRS策略:光大证券研报复现

RSRS指标,相对阻力支撑指标的实现,qlib扩展自己的特征表达式

我们目前的框架,把qlib的因子表达式的代码抽离出来,使用自己的hdf5存储,没有使用qlib自带的数据格式。

因此需要再来做一点介绍。

class RSRS(PairOperator):
    def __init__(self, feature_left, feature_right, N, M):
        self.N = N
        self.M = M
        super(RSRS, self).__init__(feature_left, feature_right)

    def _load_internal(self, instrument):
        series_left = self.feature_left.load(instrument)
        series_right = self.feature_right.load(instrument)

        slope = []
        R2 = []
        # 计算斜率值
        n = self.N
        for i in range(len(series_left)):
            if i < (self.N - 1):
                slope.append(pd.NA)
                R2.append(pd.NA)
            else:
                x = series_right[i - n + 1:i + 1]
                # iloc左闭右开
                x = sm.add_constant(x)
                y = series_left.iloc[i - n + 1:i + 1]
                regr = sm.OLS(y, x)
                res = regr.fit()
                beta = round(res.params[1], 2)  # 斜率指标
                slope.append(beta)
                R2.append(res.rsquared)

        betas = pd.Series(slope, index=series_left.index)
        betas.name = 'betas'
        r2 = pd.Series(R2, index=series_left.index)
        r2.name = 'r2'
        return betas, r2

用循环的方式使用numpy是无奈之举,没有找到rolling两个序列计算的方法,如果谁有方法可以告知一下。

指标计算好,策略很快就写好的。这就是我们”积木式“策略开发的好处!

e = BacktraderEngine(init_cash=100000, start=datetime(2005, 1, 1), end=datetime(2017, 4, 30))

# 1.添加数据集,即资产候选集
symbols = ['000300.SH']
for s in symbols:
    e.add_data(s)

# 2.特征工程
from engine.datafeed.dataloader import Dataloader

names = []
fields = []

fields += ["RSRS($high,$low,18,600)"]
names += ['RSRS']

fields += ["Ref($close,-1)/$close - 1"]
names += ['label']

names += ['buy',
          'sell']
fields += ['$RSRS_betas>1',
           '$RSRS_betas<0.8']

D = Dataloader()
data = D.load_one_df(symbols, names, fields)
print(data)

# 3. "积木式策略"
from engine.strategy.strategy_base import StratgeyAlgoBase
from engine.strategy.algos import SelectBySignal, WeightEqually

e.cerebro.addstrategy(StratgeyAlgoBase, algo_list=[
    SelectBySignal(features=data),
    WeightEqually()
])

e.run()
e.analysis()

年化19.1%,最大回撤50.6%,与研报(未计算交易成本)的结果类似。

小结:

今天主要是把RSRS指标在我们自己的AI量化平台上再次开发了一次。几点优化:

1、现在支持后一个因子,使用前一列计算结果了。比如前边计算了mom_20,后边可以使用$mom_20直接引用——这个在qlib框架里是不行的。

2、支持返回多个series,比如RSRS_betas, RSRS_r2,或者像布林带这种,一次可以返回上下两轨,不需要写两次。这个qlib的因子表达式也是不支持的。

复现的结果与研报类似,有兴趣的同学可以继续做标准分及修正标准分。

另外说一句,RSRS指标最近几年似乎不太行,而且官方后续的研报也证实了这一点。但研报里的思路还是不错的,值得我们学习。

完整代码、数据请前往星球-量化专栏下载。

每周复现一篇研报。另外如果问题,请在星球,或者星球专属群中提问。

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

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

相关文章

写个注解帮你净化使用分布式锁的重复操作

RedissonAop实现分布式锁 前言 简介 Aop的意义 AOP 旨在从业务逻辑中分离出来通用逻辑&#xff0c;切面实现了跨越多种类型和对象的关注点&#xff08;例如事务管理、日志记录、权限控制&#xff09;的模块化。 例子 就以这段代码为例子&#xff0c;这段代码总是回去获取锁之…

【HTML】关于height值设置和显示不同的原因以及font-size对象为中文和英文的区别

关于height值设置和显示不同的原因 height: 100px; CSS中把高度设置为100px&#xff0c;但是实际测量发现高度为125px 这个是因为&#xff1a;笔记本默认显示大小为125%&#xff0c;所以100的125%就是125. 还有一点&#xff0c;在你写网页时&#xff0c;要注意网页的缩放一定…

050_阵列天线方向图乘积原理

天线增益概念。原创不易&#xff0c;恐有错误&#xff0c;恳请读者指正。碎片三分钟逛电巢App&#xff0c;收获一丢丢。 天线定向性(directivity) 假设理想的无定向性天线&#xff0c;在远场区的3D球面空间各方向的辐射功率都相等&#xff0c;则定义球面等辐射功率的方向图的定…

Linux内存泄露案例分析和内存管理分享

作者&#xff1a;李遵举 一、问题 近期我们运维同事接到线上LB&#xff08;负载均衡&#xff09;服务内存报警&#xff0c;运维同事反馈说LB集群有部分机器的内存使用率超过80%&#xff0c;有的甚至超过90%&#xff0c;而且内存使用率还再不停的增长。接到内存报警的消息&…

代码随想录day56|583. 两个字符串的删除操作|72. 编辑距离|编辑距离总结篇|Golang

代码随想录day56 考试周了解一下 目录 代码随想录day56 583. 两个字符串的删除操作 72. 编辑距离 动态规划之编辑距离总结篇 583. 两个字符串的删除操作 思路 动态规划一 本题和动态规划&#xff1a;115.不同的子序列相比&#xff0c;其实就是两个字符串都可以删除了&am…

2023职教高考报名开启,报考人数继续增加

进入11月起&#xff0c;各地区2023年职教高考报名已经陆续开始&#xff0c;报考考生主要以中职学校学生为主。根据南京日报的报道&#xff0c;11月1日就启动的江苏省职教高考报名&#xff0c;吸引了不少家长和学生的关注&#xff0c;有些专业的报名人数已经比2022年翻了不止一倍…

Flutter Hooks — 快速了解

Flutter Hooks — 快速了解 前言 Hooks,直译过来就是"钩子"&#xff0c;是前端 React 框架加入的特性&#xff0c;用来分离状态逻辑和视图逻辑。现在这个特性并不只局限在于 React 框架中&#xff0c;其它前端框架也在借鉴。 我们都知道在 FLutter 开发中的一大痛点就…

图解 | 监控系统 Prometheus 的原理

本篇将会以图解的方式剖析 Prometheus 的原理。本文主要内容如下&#xff1a; 一、Prometheus 是什么&#xff1f; ELK Stack 日志收集和检索平台想必大家应该比较熟悉&#xff0c;Elasticsearch Filebeat Logstash Kibana。 ELK 架构 而 Prometheus 就相当于一整个 ELK&a…

功率放大器的主要指标有哪些呢

功率放大器是电子测量行业比较常见的能够放大信号源电压信号的仪器&#xff0c;虽然功率放大器的应用十分广泛&#xff0c;但是很多人对于功率放大器的主要指标参数还不了解&#xff0c;就让安泰电子来为大家介绍功率放大器的主要指标。 功率放大器的核心参数指标包括带宽、电压…

python多线程返回值问题重写Thread类的run方法

python多线程使用 文章目录python多线程使用一、案例二、说明1、针对第一种是有返回值的 &#xff0c;可以通过future.result() 去拿到每个线程返回值2、无返回值问题3、我们可以重写这个Thread类重写了__init__、run方法和join方法&#xff0c;主要是start()涉及的方法太多了而…

Redis篇(5)——持久化

持久化 RDB 1、save会阻塞所有命令。而bgsave则不能与其他持久化命令同时执行 2、自动rdb的发起&#xff1a;servercorn默认每100ms执行一次&#xff0c;根据redisserver里面记录的dirty&#xff08;上次save后修改的次数&#xff09;和lastsave&#xff08;上次save的时间&a…

sklearn基础篇(七)-- 随机森林(Random forest)

上一节我们提到决策树的一个主要缺点在于经常对训练数据过拟合。随机森林是解决这个问题的一种方法。随机森林是属于集成学习&#xff0c;其核心思想就是集成多个弱分类器以达到一个强分类器的效果。 1 bagging的原理 随机森林采用Bagging的思想&#xff0c;所谓的Bagging可以…

HDFS的高级功能

3.6 HDFS的高级功能 3.6.1 安全模式 安全模式&#xff08;Safemode&#xff09;是HDFS所处的一种特殊状态。处于这种状态时&#xff0c;HDFS只接受读数据请求&#xff0c;不能对文件进行写、删除等操作。安全模式是保证一个系统保密性、完整性及可使用性的一种机制&#xff0…

精彩回顾:CACTER邮件数据防泄露EDLP亮相2022世界互联网大会

2022年世界互联网大会乌镇峰会于11月11日胜利闭幕。 本届峰会是世界互联网大会国际组织成立后的首届年会&#xff0c;以“共建网络世界 共创数字未来—携手构建网络空间命运共同体”为主题&#xff0c;共设置1场全体会议和20场分论坛&#xff0c;围绕全球网络空间热点问题展开讨…

【猿创征文】Vue3 企业级优雅实战 - 组件库框架 - 6 搭建example环境

本系列已更新文章&#xff1a; 分享一个实用的 vite vue3 组件库脚手架工具&#xff0c;提升开发效率 开箱即用 yyg-cli 脚手架&#xff1a;快速创建 vue3 组件库和vue3 全家桶项目 Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo Vue3 企业级优雅实战 - 组件库框架…

线程池相关总结

多线程之线程池总结 1. 概述&#xff1a; 线程池&#xff08;Thread Pool&#xff09;&#xff1a;把一个或多个线程通过统一的方式进行调度和重复使用的技术&#xff0c;统一管理&#xff0c;避免了因线程过多而带来使用上的开销和不可控。 作用&#xff1a; 降低资源消耗…

SpringBoot进阶学习(二)---配置高级

第三方bean属性绑定 在要绑定的类上添加ConfigurationProperties(prefix “”)&#xff0c;prefix为对应的配置类中的内容&#xff0c;在添加注解ConfigurationProperties时候会产生错误&#xff0c;如&#xff1a; 这时候添加依赖&#xff1a; <dependency><groupI…

计算机网络 5 - 链路层

第6章 链路层和局域网(Link Layer and LANs)6.2 差错检测 和 纠正奇偶校验校验和CRC 循环冗余校验6.3 多路访问协议信道划分 MAC协议随机存取MAC协议6.4 LAN 局域网MAC地址 和 ARP无效的MAC帧格式Ethernet 以太网交换机第6章 链路层和局域网(Link Layer and LANs) 6.2 差错检测…

H5基本开发1——(H5简单概述)

html概述 HTML是用来描述网页的一种语言 HTML指的是超文本标记语言Hyper Text Markup Language&#xff0c;是一种用于创建网页的标准标记语言 标记语言是一套标记标签markup tag HTML使用标记标签来描述网页 HTML文档的后缀名&#xff1a;.html或者.htm&#xff0c;两种后缀名…

Deep Leakage from Gradients

Summary 对于分布式学习&#xff0c;特别是相关之前共享梯度的学习&#xff0c;提出了一种攻击方式&#xff08;DLG&#xff09;。通过窃取client之间传递的梯度反推出&#xff08;也是使用机器学习迭代的方式&#xff09;原始的输入。并在图像分类、Masked Language Model方面…