【特征工程】机器学习的特征构造和筛选

调研论文中,看到datafun的一篇agent文章“智能不够,知识来凑”——知识驱动的金融决策智能体,里面提到了自动因子挖掘,感觉可以用来做机器学习的“特征工程”。

第一部分介绍如何“构造特征”,第二部分介绍如何“分析特征重要度”。第二部分,有一些经济学中的内容,可以忽略。

1.构造特征

1.1自动因子挖掘领域概述

自动因子挖掘,也常被称为“AI因子挖掘”或“算法化Alpha发现”,是指利用机器学习、特别是遗传规划(Genetic Programming)和深度学习等算法,来自动地、系统性地在海量数据中搜索、发现能够预测金融资产未来收益的有效信号(即“因子”或“Alpha”)的过程。

这与传统的因子研究方法形成了鲜明对比:

  • 传统方法:由量化研究员基于金融理论、市场经验或直觉,提出一个经济学假设(例如:“低市盈率的公司长期来看会跑赢大盘”),然后手动地将这个假设编写成数学公式(如 rank(1 / PE_ratio)),最后进行严格的回测验证。这个过程高度依赖研究员的智慧和经验。
  • 自动方法:由算法程序充当研究员的角色。程序在一个巨大的“搜索空间”中,通过类似“进化”或“学习”的方式,自动地组合基础数据和数学算子,生成成千上万个候选因子表达式,并通过适应度函数(如夏普比率、信息系数IC)进行筛选,最终找到新颖且有效的因子。

核心目标:在经典因子(如价值、动量、规模)日益拥挤、Alpha收益衰减的背景下,寻找新的、低相关性的、能带来超额收益的Alpha来源。

1.2核心技术与方法

自动因子挖掘主要依赖以下几种核心技术:

  1. 遗传规划 (Genetic Programming, GP)
    这是最经典、最主流的自动因子挖掘技术。它模拟生物进化论中的“优胜劣汰,适者生存”原则来“进化”出优秀的因子表达式。

    • 基本元素
      • 终端集 (Terminal Set):因子的“原材料”,即各种基础数据,如 开盘价(open)收盘价(close)成交量(volume)市盈率(pe_ratio) 等。
      • 函数集 (Function Set):用于组合原材料的“工具”,即各种数学算子,如 +, -, *, /, log(), rank() (横截面排序), ts_corr() (时间序列相关性), delay() (过去N期的数据) 等。
    • 进化过程
      1. 初始化:随机生成一大批(比如1000个)由基本元素组成的初始因子表达式“种群”。
      2. 适应度评估:对每一个因子进行历史数据回测,计算其“适应度分数”(例如,信息系数IC的均值、夏普比率等)。分数越高,代表因子越优秀。
      3. 选择:根据适应度分数,以“优胜劣汰”的原则选择优秀的因子进入“下一代”。
      4. 交叉与变异:模仿生物进化,对被选中的因子进行:
        • 交叉 (Crossover):将两个“父代”因子的表达式树的一部分进行交换,生成新的“子代”因子。
        • 变异 (Mutation):随机改变一个因子表达式树的某个节点(比如把 + 换成 -,或把 close 换成 vwap)。
      5. 循环:重复步骤2-4,经过成百上千代的“进化”后,最终存活下来的就是表现最好的因子。
  2. 深度学习 (Deep Learning)
    这是一种较新的方法,尤其以AlphaNet为代表。它不直接生成人类可读的因子表达式。

    • 工作原理:构建一个深度神经网络(如LSTM、CNN或Transformer),将大量的市场数据(价格、成交量、技术指标等)作为输入,将未来的收益作为输出标签进行训练。
    • “因子”是什么:模型学习到的复杂非线性关系本身就是“因子”。这个因子是隐藏在网络权重中的一个“黑箱”,解释性较差,但可能捕捉到比GP更复杂的模式。

1.3自动因子挖掘的示例

为了更具体地理解这个过程,我们来看一个完整的示例。

1. 准备“原材料”(终端集)
数据类别示例数据(Terminal)说明
价格/量价open, close, high, low, vwap, volume, returns每日的开、高、低、收、成交均价、成交量、回报率
技术指标sma(close, 10), rsi(14)10日移动平均线,14日相对强弱指数
基本面数据pe_ratio, pb_ratio, market_cap市盈率、市净率、总市值
另类数据sentiment_score, satellite_image_data新闻情绪分、卫星图像数据(如停车场车辆数)
2. 准备“工具箱”(函数集)
算子类别示例算子(Function)说明
算术运算+, -, *, /基本四则运算
数学函数log(), abs(), sign()对数、绝对值、符号函数
横截面运算rank(x), scale(x)rank(x)返回x在所有股票中的百分位排名;scale(x)将x标准化
时间序列运算delay(x, n), delta(x, n), ts_corr(x, y, n)delay(x, n)取n天前的x值;delta(x, n)计算x的n日变化;ts_corr计算x和y在过去n日的相关性
逻辑运算if(cond, a, b)如果条件cond成立,返回a,否则返回b
3. 算法“烹饪”出的因子表达式

遗传规划算法可能会生成以下几种不同复杂度的因子:

  • 简单且可解释的因子 (Simple & Interpretable)

    • 表达式: rank(close / delay(close, 10))
    • 解读: 这实际上就是一个经典的10日动量(Momentum)因子。它计算了过去10天的收盘价变化率,并在所有股票中进行排名。排名高的股票代表近期涨势更强。
  • 中等复杂度的因子 (Moderately Complex)

    • 表达式: ts_corr(rank(volume), rank(high - low), 5)
    • 解读: 这个因子试图捕捉一种量价关系的模式。它计算的是“过去5天里,一只股票的成交量排名与其当日振幅(最高价-最低价)排名之间的相关性”。一个正值可能意味着“放量上涨/下跌”的股票动能更强。这种组合是人类研究员不太容易直接想到的。
  • 高度复杂、类似机器生成的因子 (Complex & Machine-like)

    • 表达式: -1 * rank(delta(log(vwap), 2)) * (ts_corr(rank(close), rank(sma(volume, 60)), 10))
    • 解读: 这个表达式非常复杂,可解释性很差,但它可能是有效的。
      • 第一部分 delta(log(vwap), 2) 衡量了加权平均价在过去2天的对数变化(近似于加速度)。
      • 第二部分 ts_corr(...) 衡量了收盘价排名和60日平均成交量排名在过去10天的相关性。
      • 整个因子将这两个看似无关的部分相乘,并取负排名。它可能发现了一个非常细微的市场异象(anomaly),即“股价加速下跌,且近期价量相关性高的股票,未来可能会反弹”。

1.4知名平台与工具

  • WorldQuant (Brave new anpha platform):全球最知名的量化对冲基金之一,其成功很大程度上就建立在自动因子挖掘之上。它通过其在线平台 WebSim 和内部的 Global Factor Weaver (GFW) 系统,让全球数万名“研究顾问”提交他们发现的Alpha因子(很多就是利用类似GP的思路),形成了一个巨大的因子工厂。
  • Qraft Technologies:一家韩国的金融科技公司,专注于使用AI和深度学习技术来自动发现因子,并基于此发行主动型ETF基金。
  • 开源工具
    • Qlib (by Microsoft):一个面向AI的量化投资综合平台,提供了数据处理、模型训练和回测的全套框架,可以用于因子挖掘。
    • AlphaNet: 一个专门用于深度学习因子挖掘的开源框架。
    • gplearn: Python中的一个通用遗传规划库,可以被量化研究员定制用于金融因子的挖掘。

2.筛选特征

筛选流程:一个多层次的“漏斗”

一个“好”的因子,通常需要具备有效性、稳健性、独立性、可交易性可解释性。筛选过程就是围绕这些特性展开的。


2.1 第一层:初步有效性检验 (Is it Predictive at All?)

这是漏斗最宽的一层,目的是快速剔除大量明显无效的因子。核心指标是信息系数(Information Coefficient, IC)

  • 什么是IC?
    IC衡量的是因子值与资产未来收益率之间的相关性。简单来说,就是**“这个因子到底有没有预测能力?”**
    • 计算方式:通常计算当期因子值与下一期股票收益率的Spearman秩相关系数(Rank IC),因为它对异常值不敏感。
    • IC值 (IC Mean):IC时间序列的均值。一个好的因子,其IC均值应显著大于0(正向预测)或小于0(反向预测)。通常,|IC Mean| > 0.02 是一个最基础的门槛。
    • ICIR (Information Ratio, 信息比率)ICIR = IC均值 / IC标准差。这是对IC进行风险调整后的指标,衡量了因子预测能力的稳定性和强度。它是筛选中最核心的指标之一。通常,ICIR > 0.5 被认为是一个比较好的水平。
    • IC标准差 (IC Std. Dev.):衡量IC值的波动性。标准差越小,说明因子的预测能力越稳定。

在这一层,我们会剔除所有|IC Mean|过低或ICIR不达标的因子。


2.2 第二层:统计显著性与稳健性分析 (Is the Predictiveness Real and Robust?)

通过了第一层的因子只是“看起来有效”,但这种有效性可能是由随机运气造成的。这一层要检验其统计上的意义和在不同情况下的表现。

  1. IC的t检验 (t-test of IC Series)

    • 目的:检验IC均值是否在统计上显著不为零。
    • 方法:对IC的时间序列数据进行t检验,计算其t值和p值。通常要求**|t-value| > 2** 或 p-value < 0.05
  2. 分层回测 (Quantile Backtesting)

    • 目的:这是最直观的检验方法,观察因子是否具有良好的单调性。
    • 方法
      1. 在每个调仓周期,根据因子值对所有股票进行排序。
      2. 将股票等分为5组或10组(Quantiles)。
      3. 分别计算每组股票在下一期的平均收益率。
      4. 观察从第一组(因子值最高)到最后一组(因子值最低)的收益率是否呈现单调递减(或递增)的趋势。
    • 好的表现:收益率曲线平滑单调,如下图所示。这说明因子值越高,未来收益确实越好(或越差)。
  3. 多空组合净值曲线 (Long-Short Portfolio Curve)

    • 方法:构建一个“做多”因子值最高的组合,同时“做空”因子值最低的组合。
    • 好的表现:这个多空组合的累计净值曲线应该长期、稳定地向上增长,回撤要小。

在这一层,我们会剔除t值不显著、分层回测没有单调性、或者多空组合表现不佳的因子。


2.3 第三层:独立性分析 (Is it a New Source of Alpha?)

一个因子即使有效且稳健,但如果它和我们已有的因子高度相关,那么它的附加价值就很小。我们希望找到的是新颖的、低相关性的Alpha来源。

  1. 与常见风格因子(Style Factors)的相关性

    • 目的:确保新因子不是某个已知风格(如规模、价值、动量)的简单代理。
    • 方法:计算新因子与Fama-French三因子、五因子模型中的**市值因子(SMB)、账面市值比因子(HML)、动量因子(MOM)**等的相关性。
  2. 与行业因子(Industry Factors)的相关性

    • 目的:确保因子的有效性不是来源于它在某个特定行业的暴露。
    • 方法:将因子在行业虚拟变量上做回归,看其残差(即剔除行业影响后)是否依然有效。
  3. 与自有Alpha因子库的相关性

    • 目的:这是最重要的一步。确保新因子与你策略中已经使用的其他Alpha因子低相关。
    • 方法:计算新因子与因子库中所有因子的相关系数矩阵。通常要求**|相关系数| < 0.3**。

在这一层,我们会剔除与已知因子高度相关的因子,以保证因子库的多样性。


2.4 第四层:可交易性分析 (Can it be Profitably Traded?)

理论上有效的因子,在现实交易中可能因为成本过高而无法盈利。

  1. 因子换手率 (Factor Turnover)
    • 目的:衡量因子的稳定性,以及它所导致的交易成本。
    • 方法:计算在相邻两个调仓周期之间,多空组合中股票成分的变化比例。
    • 考量:换手率越高,意味着交易越频繁,交易成本(佣金、冲击成本、滑点)就越高。一个ICIR为0.7但换手率极高的因子,实际表现可能不如一个ICIR为0.5但换手率很低的因子。

在这一层,我们会对因子进行“成本调整后”的评估,倾向于选择换手率更低的因子。


2.5 第五层:综合评估与经济学意义解释 (Final Verdict)

这是漏斗的最后一层,带有一定的主观判断。

  1. 因子评分卡 (Factor Scorecard)

    • 将通过以上所有考验的因子,按照ICIR、t值、换手率、最大相关性等多个维度进行打分,形成一个综合排名。
  2. 寻找经济学/行为金融学解释 (Economic Intuition)

    • 对于最终胜出的顶级因子,尝试去理解它为什么会有效。它捕捉了市场的何种无效性?是某种投资者行为偏差(如处置效应、注意力有限)?还是某种风险溢价?
    • 一个拥有合理解释的因子,我们更有信心它能在未来持续有效,而不是一个由数据挖掘产生的、可能很快失效的统计假象。

总结

筛选“好的”因子是一个严谨的科学流程,而非单一维度的比较。一个最终被纳入实盘策略的因子,应该是在预测能力、稳定性、独立性和交易可行性等多个维度上都表现优异的“全能选手”。

筛选层次核心问题关键指标/方法
第一层有预测能力吗?IC均值, ICIR
第二层预测能力是真实的、稳健的吗?IC的t检验, 分层回测, 多空组合净值
第三层这是新的Alpha来源吗?与风格/行业/已有Alpha因子的相关性分析
第四层交易成本高吗?能盈利吗?因子换手率 (Turnover)
第五层综合来看表现如何?能理解吗?综合评分卡, 经济学解释, 压力测试

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

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

相关文章

第21节 Node.js 多进程

Node.js本身是以单线程的模式运行的&#xff0c;但它使用的是事件驱动来处理并发&#xff0c;这样有助于我们在多核 cpu 的系统上创建多个子进程&#xff0c;从而提高性能。 每个子进程总是带有三个流对象&#xff1a;child.stdin, child.stdout和child.stderr。他们可能会共享…

【走进Golang】测试SDK环境搭建成功,配置path环境变量

[1]进入控制命令台&#xff1a;win R -->cmd [2]证明SDK环境成功 1.此电脑 2.高级系统设置 3.环境变量 4.点击环境变量&#xff0c;进入找到 path&#xff0c;点击编辑 5.进入编辑,找到对应目录&#xff0c;配置成功 添加完成后&#xff0c;点击确定&#xff0c;确定&#…

LlamaIndex 工作流 并发执行

除了循环和分支之外&#xff0c;工作流还可以并发地执行步骤。当你有多个可以相互独立运行的步骤&#xff0c;并且这些步骤中包含需要等待的耗时操作时&#xff0c;这种并发执行的方式就非常有用&#xff0c;因为它允许其他步骤并行运行。 触发多个事件 到目前为止&#xff0…

精粹汇总:大厂编程规范(持续更新)

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 有很多很多不足的地方&#xff0c;欢迎评论交流&#xff0c;感谢您的阅读和评论&#x1f604;。 目录 1 引言2 并发控制 (Concurrency Control)3 事务控…

curl 检查重定向的命令总结

查看是否发生了重定向&#xff1a; curl -I http://yourdomain.com跟踪整个重定向链&#xff1a; curl -IL http://yourdomain.com禁止跳转&#xff0c;检查是否返回 301/302&#xff1a; curl -I --max-redirs 0 http://yourdomain.com如果你只想看跳没跳 HTTPS&#xff0c…

STM32 Bootloader:使用文件头加载并启动应用程序

文章目录 STM32 Bootloader&#xff1a;使用文件头加载并启动应用程序的完整解析一、系统整体流程二、镜像头结构 image\_header\_t三、Bootloader 主函数流程1. 初始化 UART2. 调用启动函数3. 拷贝 APP 并跳转启动 四、跳转执行 APP 的实现五、总结与扩展思路 明白了&#xff…

无外接物理显示器的Ubuntu系统的远程桌面连接(升级版)

文章目录 操作步骤实践截图配置 Xorg 的虚拟显示界面(升级版) 操作步骤 “远程连接”,在设置里直接打开就可以.进行配置就行. 1.配置 GRUB 以支持无显示器启动 sudo nano /etc/default/grub (里面有一行改为: GRUB_CMDLINE_LINUX_DEFAULT"quiet splash videovesa:off vi…

ACCU-100安科瑞协调控制器:精准调控光伏逆变器

产品概述 ACCU-100微电网协调控制器是一款应用于微电网、分布式发电、储能等领域的智能协调控制器。它能接入光伏系统、风力发电、储能系统以及充电桩等设备&#xff0c;通过对微电网系统进行数据采集与分析&#xff0c;实时监控各类设备的运行状态和健康状况。在此基础上&…

长春光博会 | 麒麟信安:构建工业数字化安全基座,赋能智能制造转型升级

6月10日-13日&#xff0c;2025长春国际光电博览会Light国际会议&#xff08;简称长春光博会&#xff09;在长春东北亚国际博览中心盛大举行&#xff0c;吉林省委书记黄强出席并宣布开幕&#xff0c;省委副书记、省长胡玉亭致辞。本届大会聚焦光电信息领域的前沿技术和最新产品&…

书写时垂直笔画比水平笔画表现更好的心理机制分析

你有写字的时候总是垂直方向笔画好写&#xff0c;水平方向的笔画不好写的情况存在吗&#xff1f; 书写时垂直笔画比水平笔画表现更好的心理机制分析 从人类认知和行为模式的角度来理解这种现象。以下是深度心理分析&#xff1a; 核心心理动因 重力知觉内化&#xff1a; 垂直…

SpringAI使用总结

SpringAI使用总结 基本使用ChatModel和ChatClient简单对话流式输出预设角色prompt&#xff08;提示词&#xff09;function call&#xff08;工具调用&#xff09;参考 基本使用 ChatModel和ChatClient SpringAi支持非常多的模型&#xff0c;为了统一处理&#xff0c;SpringA…

历史交易数据涨跌分级

历史交易数据涨跌分级 # encoding:utf-8 import sys,traceback from loguru import loggersys.path.append("..") from QhSpiderTool import QhDorpFiled from QhCsvMode import *def QhZhangDieFenJi(QhDfData,QhFangFa"A"):"""历史交易数…

Kafka入门4.0.0版本(基于Java、SpringBoot操作)

Kafka入门4.0.0版本&#xff08;基于Java、SpringBoot操作&#xff09; 一、kafka概述 Kafka最初是由LinkedIn公司开发的&#xff0c;是一个高可靠、高吞吐量、低延迟的分布式发布订阅消息系统&#xff0c;它使用Scala语言编写&#xff0c;并于2010年被贡献给了Apache基金会&…

react react-router-dom中获取自定义参数v6.4版本之后

路由配置, AutnToken 组件作为权限、登录管理 import { createBrowserRouter, Navigate } from react-router-dom; import Layout from /layout/index; import Login from /pages/login; import Page404 from /pages/404;import AutnToken from /components/authToken; import…

AI中的Prompt

1. System 作用&#xff1a;设定 AI 的“角色设定”和“行为准则”。 内容&#xff1a;通常是描述 LLM 的身份、语气、行为范围、约束规则。 类似&#xff1a;在大语言模型中是最优先被考虑的提示。 示例&#xff1a; 你是一个专业的商品评价分析助手&#xff0c;请根据用户…

从人工到智能:IACheck如何重构检测报告审核工作流?

从人工到智能&#xff1a;IACheck如何重构检测报告审核工作流&#xff1f; 在当今AI技术迅猛发展的时代&#xff0c;各行各业正经历从“人工驱动”到“智能驱动”的根本性变革。检测认证&#xff08;TIC&#xff09;行业作为关乎质量与安全的重要支柱&#xff0c;也不例外。在…

React事件处理:如何给按钮绑定onClick点击事件?

系列回顾&#xff1a; 在前几篇文章中&#xff0c;我们已经学会了如何使用 State 管理组件的内部数据&#xff0c;以及如何通过 Props 实现父子组件之间的通信。我们的组件现在已经有了“数据”和“外观”。但是&#xff0c;它还像一个只能看的“模型”&#xff0c;无法与用户进…

【机器学习|学习笔记】粒子群优化(Particle Swarm Optimization, PSO)详解,附代码。

【机器学习|学习笔记】粒子群优化&#xff08;Particle Swarm Optimization, PSO&#xff09;详解&#xff0c;附代码。 【机器学习|学习笔记】粒子群优化&#xff08;Particle Swarm Optimization, PSO&#xff09;详解&#xff0c;附代码。 文章目录 【机器学习|学习笔记】粒…

深度剖析:AI 社媒矩阵营销工具,如何高效获客?

在社交媒体营销领域&#xff0c;竞争日益激烈&#xff0c;传统的社媒矩阵运营方式面临诸多挑战。而 AI 社媒矩阵营销工具的出现&#xff0c;正以前所未有的方式重构社媒矩阵的底层架构&#xff0c;为营销人员带来了全新的机遇与变革。接下来&#xff0c;我们将从技术破局、实战…

Spring XML 常用命名空间配置

Spring XML 常用命名空间配置 下面是一个综合性的Spring XML配置样例&#xff0c;展示了各种常用命名空间的使用方式&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&quo…