年化从19.1%提升到22.5%,全球大类资产轮动,加上RSRS择时,RSRS性能优化70倍。(附策略源码)

本文主要是介绍年化从19.1%提升到22.5%,全球大类资产轮动,加上RSRS择时,RSRS性能优化70倍。(附策略源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原创内容第638篇,专注量化投资、个人成长与财富自由。

今天优化一下RSRS指标,并刷新一下策略。

大家知道,numpy的rolling apply性能不好,我们来优化一下:

import numpy as npfrom numpy.lib.stride_tricks import as_strided as strideddef rolling_window(a: np.array, window: int):'生成滚动窗口,以三维数组的形式展示'shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)strides = a.strides + (a.strides[-1],)return strided(a, shape=shape, strides=strides)def numpy_rolling_regress(x1, y1, window: int = 18, array: bool = False):'在滚动窗口内进行,每个矩阵对应进行回归'x_series = np.array(x1)y_series = np.array(y1)# 创建一个一维数组dd = x_seriesx = rolling_window(dd, window)yT = rolling_window(y_series, window)y = np.array([i.reshape(window, 1) for i in yT])ones_vector = np.ones((1, x.shape[1]))XT = np.stack([np.vstack([ones_vector, row]) for row in x])  # 加入常数项X = np.array([matrix.T for matrix in XT])  # 以行数组表示reg_result = np.linalg.pinv(XT @ X) @ XT @ y  # 线性回归公示if array:return reg_resultelse:frame = pd.DataFrame()result_const = np.zeros(x_series.shape[0])const = reg_result.reshape(-1, 2)[:, 0]result_const[-const.shape[0]:] = constframe['const'] = result_constframe.index = x1.indexfor i in range(1, reg_result.shape[1]):result = np.zeros(x_series.shape[0])beta = reg_result.reshape(-1, 2)[:, i]result[-beta.shape[0]:] = betaframe[f'factor{i}'] = resultreturn frame@calc_by_symbol
def RSRS(low: pd.Series, high: pd.Series, N: int = 18, M: int = 600):beta_series = numpy_rolling_regress(low, high, window=N, array=True)beta = beta_series.reshape(-1, 2)[:, 1]beta_rollwindow = rolling_window(beta, M)beta_mean = np.mean(beta_rollwindow, axis=1)beta_std = np.std(beta_rollwindow, axis=1)zscore = (beta[M - 1:] - beta_mean) / beta_stdlen_to_pad = len(low.index) - len(zscore)# print(len_to_pad)pad = [np.nan for i in range(len_to_pad)]pad.extend(zscore)zscore = pd.Series(pad, index=low.index)len_to_pad = len(low.index) - len(beta)pad = [np.nan for i in range(len_to_pad)]pad.extend(beta)beta = pd.Series(pad,index=low.index)return beta

优化前的时间:

图片

优化之后性能可以接受(性能优化70倍!):

图片

当然我们需要确保计算结果是一致的:

图片

我们来测试一下策略——全球大类资产配置,加上RSRS择时后,

图片

图片

年化从19.1%提升到22.5%

图片

源码在这个位置:

图片

源代码下载:AI量化实验室——2024量化投资的星辰大海

吾日三省吾身

之前聊的“ABCZ”计划人生计划之"ABCZ",

Z计划作为投资系统,这个保持不变——应该是建议所有人都建立起这一样的系统,既是保底方案,在你本金大了之后,更新财富自由的动力。

但Z计划需要其他计划的助力,助力越快,则自由越早。

C计划是你理想中的生活,也许有各种各样的版本,但是,你喜欢什么样的感觉你是知道的。

内向型的人喜欢自己能独立完成事情,外向型的人喜欢张罗一堆人去完成一件事情,这完成不一样。

比如“做一个独立的研究者,创作者。”

万维刚在得到App上的课程火了之后,他辞掉了物理学者的工作,专心写作。

因为写作的收益已经远超他的本职工作。

你可以认为,这其实是他的plan B,而且非常稳妥。

ABCZ本质是要降低对于A计划的依赖,B计划要有积累,可持续,有复利,持续积累之后,其实就是C计划。

C计划不可能凭空出现,哪怕你中了彩票头奖,也是补充Z计划的本金。C计划肯定是B计划里一步步“生长”出来的。

只是B计划有了正反馈后,一步步积累,一点点调整,迭代走出来的。

因此,这里最大的变化,是强化B计划的可积累和复利,架设被动收入管道,这看来是当下最重要的事情。

历史文章:

咱们一起努力三年了!

Quantlab5.8全量代码发布:新增大模型因子挖掘,Deap因子挖掘系统优化

AI量化实验室——2024量化投资的星辰大海

这篇关于年化从19.1%提升到22.5%,全球大类资产轮动,加上RSRS择时,RSRS性能优化70倍。(附策略源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130138

相关文章

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir