单因子年化23.7%,基于deap的因子挖掘,我改进了fitness和metrics方案(附python代码和数据)

原创文章第626篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。

我们目前投入使用的因子挖掘,基于两个框架,deap和gplearn,deap做一点点改动,就可以完美应用于多标的截面因子挖掘。而gplearn如果要支持三维数据,则需要很多改动,但gplearn的优点是代码读起来很顺畅。

——也许我会考虑把gplearn应用于单标的,比如CTA的时序因子挖掘

从结果来看,传统研报里说的IC分析,其实不科学。IC就是因子与收益率的平均相关系数。这个相关系数只能说,可能说能解释一部分,有一定的关系,但关系是什么?如果你把时间分成两段来看,有可能前半段正相关,后半段负相关,然后一平均,看起来这个值还可以。

数据说话,我用全球大类资产,使用咱们quantlab的deap框架挖掘出来的。

直接使用单因子回测来挖掘因子——metrics为年化收益和卡玛比率

图片

直接回测看收益表现:

图片

这个因子是:'sqrt(log(ts_delta(volume, 20)))'

再来一个因子:rank(sqrt(volume))——成交额的截面排序因子

图片

这部分代码在:

图片

更新后的回测函数:

def backtester(self,evaluate, inds):names, features = [], []for i, expr in enumerate(inds):names.append(f'GP_{i:04d}')features.append(stringify_for_sympy(expr))features = [f.lower() for f in features]df = CSVDataloader.calc_expr(self.df.copy(deep=True), fields=features, names=names)# df.set_index([df['symbol'], df.index], inplace=True)import btfrom bt_algos_extend import SelectTopKclose = CSVDataloader.get_col_df(df, 'close')all = []for f in names:if f in df.columns:signal = CSVDataloader.get_col_df(df, f)for K in [1]:s = bt.Strategy('{}'.format(f), [bt.algos.RunWeekly(),SelectTopK(signal, K),bt.algos.WeighEqually(),bt.algos.Rebalance()])all.append(s)stras = [bt.Backtest(s, close) for s in all]res = bt.run(*stras)stats = res.statsprint(stats.loc['cagr'])results = []for name in names:if name not in df.columns:results.append((0,0))else:results.append((stats.loc['cagr'][name],stats.loc['calmar'][name]))return results

后续我们再扩展更多算子,talib的函数来提升因子挖掘效果。

图片

吾日三省吾身

人生是旷野,而不是轨道。

时间一路向前,但人生并不是一条既定的轨道——你永远有的选。

这是上次我同一个创业的朋友说起的话题。

我的建议是,如果你是因为看好这个事情,那就坚持,但如果是因为没有选择,那就需要重新思考。人生永远有的选,至少你可以提前开始准备。

我们当下的状态,位置,是三年前或者五年前的认知、行动所决定的。

你不可能迅速改变它。

但你可以让三年、五年后的生活,如你所愿。

也许你要问,如此不确定的当下,计划都赶不上变化,大家又都说选择大于努力,那要做什么呢?

未来是一个开阔的旷野,你不必执着于某一个目标。

这里分享一个“人生设计课”里的“奥德赛计划”(《奥德赛》是古希腊诗人荷马的代表作,讲述了奥德修斯海上漂流的故事,作者借此隐喻人生如一场探险。)。

图片

制定自己的三个五年计划,每个计划提出2-3个问题。

比如,当前的工作状态,继续往前走,这是一个最常规的计划(需要考虑如果环境有一些变动,如何应对,比如新的方向人工智能大模型——让AI发挥价值)。

比如计划2,你还可以加入量化私募公司,成为职业投资者(让AI在投资里发挥价值,当然不只是AI)。

计划3:成为自由作家(金融,财经,科技,成长),讲书人,独立研究者?——不是所谓自媒体那种,而是作品驱动,比如通过海量阅读,观察,思考,产出有价值的系列作品。

这就是旷野的逻辑,比如计划1里方向还可以有特别多,但这就算一种计划。

也许都不容易,但你会让自己感觉永远有的选,而且看起来差异很大,人就是这么有弹性,你能做的事情,比你想象中要多得多。

早上有同学问,关于续期的事情(提前90天有福利):

图片

历史文章:

自研“因子流水线”之遗传算法的交叉与变异的python代码实现

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#使用Modbus TCP通讯PLC,实现读写寄存器

一、创建一个Moudbus类,引入NModbus和Modbus这两个包 #region ModbusTCPpublic class NmodbusTcpHelper{// 静态成员变量,用于存储TcpClient实例private static TcpClient tcpClient null;// 静态成员变量,用于存储ModbusIpMaster实例privat…

案例 | 生产制造中的直线度测量

关键词:直线度测量仪,直线度 生产中不仅需要评价产品的外观尺寸,还需要对直线度(弯曲度)等尺寸加以测量。作为一种评价产品直度的重要指标——直线度,能够对其进行检测是非常重要的。 关于直线度,对于一些弯…

数字人的形象克隆与语音克隆是伪需求

形象克隆与语音克隆技术,在当前的环境上已经可以成熟的实现,但真的解决了痛点问题吗? 普通人或者一般的公司克隆自己内部人的形象有必要吗?对外界而言,克隆的形象与虚拟的形象并无二致,本身并没有什么知名…

Spring Boot 集成 swagger 3.0 指南

Spring Boot 集成 swagger 3.0 指南 一、Swagger介绍1.springfox-swagger 22.SpringFox 3.0.0 发布 二、Spring Boot 集成 swagger 3.01. 添加Maven依赖2. 创建配置类配置Swagger2.1 创建SwaggerConfig 配置类2.1 创建TestInfoConfig信息配置类 3. 在你的Controller上添加swagg…

《黑神话:悟空》的发布是否能打开元宇宙游戏世界的门

四年漫长等待,8月20日,国产3A游戏巨制《黑神话:悟空》正式上线并彻底引爆全球市场。这背后不仅是中国游戏史的里程碑,也将为元宇宙的未来夯实地基! 游戏上线后,热度持续飙升,成为了社交媒体和游…

while循环中OLED显示中断中的数据不正确

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

HDRP管线下的开放世界游戏与跨平台优化,《仙剑世界》万字分享

《仙剑世界》作为仙剑 IP 系列的最新⻓篇⼒作,从故事和剧情上延续了仙剑的精髓。在仙剑 33 年的世界观下,《仙剑世界》打造出了⼀个由浪漫唯美的江南全景、磅礴恢弘的蜀⼭、神秘苗疆等区域构成的 384 平⽅公⾥完整的⽆缝开放⼤世界。以东⽅题材为起点&am…

【Deep Live Cam】只需一张图片,就可实现视频的人脸替换。

Deep Live Cam 运用尖端AI技术,将实时换脸和视频深伪推向新的境界。只需一张图片,即可实现高质量的人脸替换。 用户在X上对Deep Live Cam的评价。 如何安装它? 1、环境 python (推荐 3.10 ) pip git ffmpeg https://www.youtube.com…

C\C++ Sqlite3使用详解

C\C++ Sqlite3使用详解 一、源码下载二、sqlite3接口说明C++2.1 项目创建以及sqlite3使用2.1 连接数据库2.2 sqlite创建表2.2.1 示例代码2.2.2 注意事项2.3 sqlite插入数据2.3.1 示例代码2.3.2 注意事项2.4 sqlite数据删除2.5 sqlite数据查询一、源码下载 下载地址: https://…

在选择或推荐数据恢复软件之前,您如何测试和审查它?

数据恢复软件可以帮助您从各种存储设备中检索丢失或删除的文件,例如硬盘驱动器,USB闪存驱动器,存储卡或智能手机。但是,并非所有数据恢复软件都是一样的,根据您的情况和需求,有些软件的性能可能比其他软件更…

目标检测 | yolov9 原理和介绍

相关系列: 目标检测 | yolov1 原理和介绍 目标检测 | yolov2/yolo9000 原理和介绍 目标检测 | yolov3 原理和介绍 目标检测 | yolov4 原理和介绍 目标检测 | yolov5 原理和介绍 目标检测 | yolov6 原理和介绍 目标检测 | yolov7 原理和介绍 目标检测 | yolov8 原理和…

笨鸟先飞(疯狂的小鸟)小游戏自制分享

《Flappy Bird》是一款由越南独立游戏开发者阮哈东(Dong Nguyen)制作并发布的移动端小游戏。该游戏最初于2013年上线,在2014年初迅速走红,成为全球范围内的热门现象。 游戏的玩法非常简单,玩家只需通过点击屏幕来控制…

【算法专题】双指针算法

个人主页:CSDN_小八哥向前冲 所属专栏:基础算法 目录 移动零 复写零 快乐数 盛最多水的容器 有效三角形的个数 和为s的两个数 三数之和 四数之和 移动零 题目:【LeetCode】移动零 思路: 这里其实就是一个数组分块的问题&…

机器学习:逻辑回归--下采样

目录 前言 一、为什么使用下采样 1.例如: 2.导致: 3.办法: 4.结果: 二、代码实现 1.完整代码 2.导入库 3.可视化混淆矩阵 4.导入数据 5数据预处理 6.下采样 7.取出训练集和测试集 8.建立模型 9.进行测试 总结 前…

代码签名证书:软件安全的守护者

在数字化时代,软件的安全性和用户信任度成为了不可忽视的关键因素。为了确保软件的真实性和完整性,代码签名证书(Code Signing Certificate)应运而生,成为开发者不可或缺的工具。 什么是代码签名证书? 代…

Vue 3 的 emit 简单使用

在 Vue 3 中使用 emit&#xff0c;子组件可以将事件通知父组件&#xff0c;父组件可以在响应这些事件时执行特定的逻辑。 emit 是一种非常灵活的通信方式&#xff0c;允许组件之间以解耦的方式进行交互。 1. 基本用法 1、使用 defineEmits 子组件 <template><div…

Spring之@Bean注解

1. 使用方式 1.1 Configuration Bean 1.1.1 创建实体类 User Data NoArgsConstructor public class User {private String name;public User(String name) {this.name name;} } 1.1.2 创建配置类 UserConfig Configuration public class UserConfig {Beanpublic User us…

数据结构中的双向链表

1.链表的分类 链表的结构非常多样&#xff0c;以下情况组合起来就是8种&#xff08;2x2x2&#xff09;链表结构&#xff1a; 在带头链表中&#xff0c;除了头结点&#xff0c;其他结点均存储有效的数据。 头结点是占位子的&#xff0c;也叫做“哨兵位”。head结点就是头结点。…

PPT如何添加水印?推荐两种方法!

在PPT演示文稿中添加水印&#xff0c;可以有效地保护版权或在背景上增加品牌标识。本文将介绍两种在PPT中添加水印的方法&#xff0c;帮助你轻松实现这一功能&#xff0c;一起来看看吧&#xff01; 方法一&#xff1a;在单张幻灯片上添加水印 1、选择目标幻灯片 打开PPT文件&…

『深度长文』4种有效提高LLM输出质量的方法!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之路不迷路,2024我们一起变强。 LLM,全…