【代码发布】Quantlab4.3:lightGBM应用于全球大类资产的多因子智能策略(代码+数据)
原创文章第566篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。
昨天,Quantlab整合Alpha158因子集,为机器学习大类资产配置策略做准备(代码+数据),我们完成了因子集构建,并尝试给数据做了预处理。
今天我们开始引入机器学习——树模型,以lightGBM为主。
代码已经发布。
今天,需要先 pip install lightgbm。
之前我们有分享过类似的文章:
Quantlab3.3代码发布:全新引擎 | 静态花开:年化13.9%,回撤小于15% | lightGBM实现排序学习
今天我们要把lightgbm应用于全球大类资产配置的排序上。
LightGBM 是由微软开发的一个开源机器学习库,它基于决策树算法,特别适用于处理大规模数据集。LightGBM 的核心优势在于其高性能、低内存消耗和高准确率,这些特点使得它在多个领域,包括量化投资,都非常受欢迎。
-
处理大规模数据:量化投资经常涉及到处理大量的历史交易数据和其他市场数据。LightGBM 能够有效地处理这些数据,并从中学习。
-
快速模型训练:量化策略需要快速迭代和测试。LightGBM 的训练速度使得研究人员能够快速评估不同策略的效果。
-
模型解释性:虽然不是 LightGBM 的主要优势,但决策树模型的可解释性可以帮助量化分析师理解模型的决策过程,这对于合规性和策略调整非常重要。
lightGBM有sklearn的接口:
加载内置的房价数据,做回归分析:
"""第三方库导入""" from lightgbm import LGBMRegressor from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.metrics import r2_score, mean_squared_errorfrom sklearn.datasets import fetch_california_housing data = fetch_california_housing() """训练集 验证集构建""" X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2,random_state=42) """模型训练""" model = LGBMRegressor() model.fit(X_train, y_train)def calc_metrics(model, X, y):y_pred = model.predict(X)mse = mean_squared_error(y, y_pred)r2 = r2_score(y, y_pred)print('r2:',r2,'mse:',mse)print('训练集:') calc_metrics(model, X_train, y_train) print("测试集") calc_metrics(model, X_test, y_test)
训练集和测试集,在默认参数下,均获得不错的拟合:
模型调参,调参后训练集r2达到0.94, 测试集也提升至0.85
调参代码如下:
def adj_params():"""模型调参"""params = {'n_estimators': [100, 200, 300, 400],# 'learning_rate': [0.01, 0.03, 0.05, 0.1],'max_depth': [5, 8, 10, 12]}other_params = {'learning_rate': 0.1, 'seed': 42}model_adj = LGBMRegressor(**other_params)# sklearn提供的调参工具,训练集k折交叉验证(消除数据切分产生数据分布不均匀的影响)optimized_param = GridSearchCV(estimator=model_adj, param_grid=params, scoring='r2', cv=5, verbose=1)# 模型训练optimized_param.fit(X_train, y_train)# 对应参数的k折交叉验证平均得分means = optimized_param.cv_results_['mean_test_score']params = optimized_param.cv_results_['params']for mean, param in zip(means, params):print("mean_score: %f, params: %r" % (mean, param))# 最佳模型参数print('参数的最佳取值:{0}'.format(optimized_param.best_params_))# 最佳参数模型得分print('最佳模型得分:{0}'.format(optimized_param.best_score_))
代码在如下位置:
我们来代入大类资产的因子数据,由于量化投资,使用的价量数据是时序数据,因些不能按照train_test_split这样随机划分,我们需要按时间分成两段。
def train(self, train_func):df = self.dfsplit_date = self.split_datedf_train = df.loc[:split_date]df_val = df.loc[split_date:]fields, names = self.alpha.get_fields_names()train_func(df_train, df_val, feature_cols=names)
总体训练代码如下:
symbols = ['CL', # 原油'^TNX', # 美十年期国债'GOLD', # 黄金'^NDX', # 纳指100'000300.SH', # 沪深300'000905.SH', # 中证500'399006.SZ', # 创业板指数'000012.SH', # 国债指数'000832.SH', # 中证转债指数'HSI', # 香港恒生'N225', # 日经225'GDAXI' # 德国DAX指数 ] m = ModelTrainer(symbols=symbols, alpha=Alpha158()) from models.lightgbm_models import trainm.train(train_func=train)
在未进行数据预处理时,容易出现过拟合的情况:
代码在如下位置:
历史文章:
Quantlab整合Alpha158因子集,为机器学习大类资产配置策略做准备(代码+数据)
【研报复现】年化27.1%,人工智能多因子大类资产配置策略之benchmark
AI量化实验室——2024量化投资的星辰大海
相关文章:

【代码发布】Quantlab4.3:lightGBM应用于全球大类资产的多因子智能策略(代码+数据)
原创文章第566篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 昨天,Quantlab整合Alpha158因子集,为机器学习大类资产配置策略做准备(代码数据),我们完成了因子集构建,并尝试…...

【毕业设计】Django 校园二手交易平台(有源码+mysql数据)
此项目有完整实现源码,有需要请联系博主 Django 校园二手交易平台开发项目 项目选择动机 本项目旨在开发一个基于Django的校园二手交易平台,为大学生提供一个安全便捷的二手物品买卖平台。该平台将提供用户注册和认证、物品发布和搜索、交易信息管理等…...

文章自动生成器,在线AI写作工具
随着人工智能AI技术的发展,AI技术被应用到越来越多的场景。对于需要创作内容的同学来说,AI写作-文章内容自动生成器是一个非常好的辅助工具。AI写作工具可以提升我们的创作效率,快速的生成文章,然后在根据需求进行调整修改即可。下…...

Matlab初识:什么是Matlab?它的历史、发展和应用领域
目录 一、什么是Matlab? 二、Matlab的历史与发展 三、Matlab的应用领域 四、安装和启动Matlab 五、界面介绍 六、第一个Matlab程序 七、总结 一、什么是Matlab? Matlab 是由 MathWorks 公司开发的一款用于数值计算、可视化以及编程的高级技术计算…...

大模型之-Seq2Seq介绍
大模型之-Seq2Seq介绍 1. Seq2Seq 模型概述 Seq2Seq(Sequence to Sequence)模型是一种用于处理序列数据的深度学习模型,常用于机器翻译、文本摘要和对话系统等任务。它的核心思想是将一个输入序列转换成一个输出序列。 Seq2Seq模型由两个主…...

NSSCTF-Web题目12
目录 [SWPUCTF 2021 新生赛]finalrce 1、题目 2、知识点 3、思路 [UUCTF 2022 新生赛]ez_rce 1、题目 2、知识点 3、思路 [羊城杯 2020]easycon 1、题目 2、知识点 3、思路 [SWPUCTF 2021 新生赛]finalrce 1、题目 2、知识点 命令执行,tee命令 3、思路…...
22、架构-资源与调度
1、资源与调度 调度是容器编排系统最核心的功能之一,“编排”一词本身便包 含“调度”的含义。调度是指为新创建的Pod找到一个最恰当的宿主机 节点来运行它,这个过程成功与否、结果恰当与否,关键取决于容器 编排系统是如何管理与分配集群节点…...

mac 常用工具命令集合
Iterm2 Command T:新建标签 Command W:关闭当前标签 Command ← →:在标签之间切换 Control U:清除当前行 Control A:跳转到行首 Control E:跳转到行尾 Command F:查找 Command …...
服务器雪崩的应对策略之----限流
限流是一种控制流量的技术,旨在防止系统在高并发请求下被压垮。通过限流,可以确保系统在负载高峰期依然能保持稳定运行。常见的限流策略包括令牌桶算法、漏桶算法、计数器算法和滑动窗口算法。 常见的限流方法 1. 令牌桶算法 (Token Bucket Algorithm)2…...

Python12 列表推导式
1.什么是列表推导式 Python的列表推导式(list comprehension)是一种简洁的构建列表(list)的方法,它可以从一个现有的列表中根据某种指定的规则快速创建一个新列表。这种方法不仅代码更加简洁,执行效率也很…...

threejs 光影投射-与场景进行交互(六)
效果 场景中有三个立方体,三种颜色.点击变成红色,再点恢复自身原有颜色 代码 import ./style.css import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { log } from three/examples/jsm/nodes/Nodes.js//…...

Ubuntu 20.04安装显卡驱动、CUDA和cuDNN(2024.06最新)
一、安装显卡驱动 1.1 查看显卡型号 lspci | grep -i nvidia我们发现输出的信息中有Device 2230,可以根据这个信息查询显卡型号 查询网址:https://admin.pci-ids.ucw.cz/mods/PC/10de?actionhelp?helppci 输入后点击Jump查询 我们发现显卡型号为RTX …...

二叉树的这五种遍历方法你们都会了吗?
说在前面 🎈二叉树大家应该都很熟了吧,那二叉树的这五种遍历方式你们都会了吗? 以这一二叉树为例子,我们来看看不同遍历方式返回的结果都是怎样的。 前序遍历 前序遍历的顺序是:首先访问根节点,然后递归地…...

使用模数转换器的比例电阻测量基础知识
A/D 转换器是比率式的,也就是说,它们的结果与输入电压与参考电压的比值成正比。这可用于简化电阻测量。 测量电阻的标准方法是让电流通过电阻并测量其压降 (见图 1)。然后,欧姆定律(V I x R) 可用于计算电压和电流的…...

(C++语言的设计和演化) C++的设计理念
文章目录 前言📖C 语言设计规则📐规则和原理📐一般性规则📐设计支持规则📐语言的技术性规则📐低级程序设计支持规则 📖标准化(扩充评判准则)📐它精确吗&#…...

AI音乐:创新引擎还是创意终结者?
✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点赞、关注、收藏、评论,是对我最大…...
20240621每日后端---------如何优化项目中的10000个if-else 语句?
如何优化 10000 个 if-else 语句?有没有好的解决方案? 额,本身问题就很奇怪,怎么可能有这种代码。。。世界你让我陌生,但是我们还是假象着看看能不能解决一下。 解决方案1:策略模式 使用策略模式确实可以…...

【STM32】时钟树系统
1.时钟树简介 1.1五个时钟源 LSI是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗和自动唤醒单元使用。 LSE是低速外部时钟,接频率为32.768kHz的石英晶体。这个主要是RTC的时钟源。 HSE是高速外部时钟,可接石英*/陶瓷谐振…...

docker换源
文章目录 前言1. 查找可用的镜像源2. 配置 Docker 镜像源3. 重启 Docker 服务4. 查看dock info是否修改成功5. 验证镜像源是否更换成功注意事项 前言 在pull镜像时遇到如下报错: ┌──(root㉿kali)-[/home/longl] └─# docker pull hello-world Using default …...

百度在线分销商城小程序源码系统 分销+会员组+新用户福利 前后端分离 带完整的安装代码包以及搭建部署教程
系统概述 百度在线分销商城小程序源码系统是一款集分销、会员组管理和新用户福利于一体的前后端分离的系统。它采用先进的技术架构,确保系统的稳定性、高效性和安全性。该系统的前端基于小程序开发,为用户提供了便捷的购物体验和交互界面。用户可以通过…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...