个人简介
作者简介:全栈研发,具备端到端系统落地能力,专注大模型的压缩部署、多模态理解与 Agent 架构设计。 热爱“结构”与“秩序”,相信复杂系统背后总有简洁可控的可能。
我叫观熵。不是在控熵,就是在观测熵的流动
个人主页:观熵
个人邮箱:privatexxxx@163.com
座右铭:愿科技之光,不止照亮智能,也照亮人心!
专栏导航
观熵系列专栏导航:
AI前沿探索:从大模型进化、多模态交互、AIGC内容生成,到AI在行业中的落地应用,我们将深入剖析最前沿的AI技术,分享实用的开发经验,并探讨AI未来的发展趋势
AI开源框架实战:面向 AI 工程师的大模型框架实战指南,覆盖训练、推理、部署与评估的全链路最佳实践
计算机视觉:聚焦计算机视觉前沿技术,涵盖图像识别、目标检测、自动驾驶、医疗影像等领域的最新进展和应用案例
国产大模型部署实战:持续更新的国产开源大模型部署实战教程,覆盖从 模型选型 → 环境配置 → 本地推理 → API封装 → 高性能部署 → 多模型管理 的完整全流程
TensorFlow 全栈实战:从建模到部署:覆盖模型构建、训练优化、跨平台部署与工程交付,帮助开发者掌握从原型到上线的完整 AI 开发流程
PyTorch 全栈实战专栏: PyTorch 框架的全栈实战应用,涵盖从模型训练、优化、部署到维护的完整流程
深入理解 TensorRT:深入解析 TensorRT 的核心机制与部署实践,助力构建高性能 AI 推理系统
Megatron-LM 实战笔记:聚焦于 Megatron-LM 框架的实战应用,涵盖从预训练、微调到部署的全流程
AI Agent:系统学习并亲手构建一个完整的 AI Agent 系统,从基础理论、算法实战、框架应用,到私有部署、多端集成
DeepSeek 实战与解析:聚焦 DeepSeek 系列模型原理解析与实战应用,涵盖部署、推理、微调与多场景集成,助你高效上手国产大模型
端侧大模型:聚焦大模型在移动设备上的部署与优化,探索端侧智能的实现路径
行业大模型 · 数据全流程指南:大模型预训练数据的设计、采集、清洗与合规治理,聚焦行业场景,从需求定义到数据闭环,帮助您构建专属的智能数据基座
机器人研发全栈进阶指南:从ROS到AI智能控制:机器人系统架构、感知建图、路径规划、控制系统、AI智能决策、系统集成等核心能力模块
人工智能下的网络安全:通过实战案例和系统化方法,帮助开发者和安全工程师识别风险、构建防御机制,确保 AI 系统的稳定与安全
智能 DevOps 工厂:AI 驱动的持续交付实践:构建以 AI 为核心的智能 DevOps 平台,涵盖从 CI/CD 流水线、AIOps、MLOps 到 DevSecOps 的全流程实践。
C++学习笔记?:聚焦于现代 C++ 编程的核心概念与实践,涵盖 STL 源码剖析、内存管理、模板元编程等关键技术
AI × Quant 系统化落地实战:从数据、策略到实盘,打造全栈智能量化交易系统
AI 因子工程全拆解:从特征构造到策略信号的闭环设计
一、因子是什么?为什么它是所有策略的灵魂?
无论你是用最传统的 Alpha 策略,还是用最新的 GPT 多模态 Agent,最终你都绕不开一个词:
因子(Factor)
而因子,基本可以理解为——
你用某种方式给“资产”打的分,用来选谁、选多少、什么时候出手。
✅ 因子是策略的“信号源”,不是“附属信息”
举个例子:
- 你构造了一个因子叫
roe_growth
(净资产收益率同比增长率); - 你每季度选
roe_growth
排名前30%的股票; - 然后你均衡持仓、每季度调仓一次;
- 你的策略逻辑就跑起来了。
所以说:
策略 = 因子逻辑 + 权重规则 + 风控边界 + 调仓方式
而其中的因子,就是整个链条的“灵魂角色”。
✅ AI × Quant 时代,因子变了,但地位更重了
传统量化策略用因子做的是:
- 打分;
- 排序;
- 过滤。
AI 时代的因子还能做:
- 输入到深度模型中(如 LSTM / Transformer / GNN);
- 被大模型解释成自然语言逻辑;
- 和图像/文本/图谱等模态融合;
📌 你现在不只是要会“构造因子”,更得会“设计一套因子系统”,包括:
维度 | 你得想清楚 |
---|---|
来源 | 哪些数据构造?行情?财报?新闻?图像? |
表现 | 怎么衡量它的好坏?收益/IC/回撤? |
可扩展性 | 怎么支持新模态因子?多模态融合? |
模型友好度 | 适合分类模型?时序模型?回归模型? |
✅ 因子系统必须具备的“闭环思维”
构造一个好的因子系统不能只停在“做几个字段”,你需要闭环:
数据源头 → 因子生成 → 信号提取 → 策略设计 → 回测验证 → 因子优化
只有跑通这个循环,你的因子才不是“孤立的变量”,而是一个真实跑得起来的系统组件。
二、因子的分类方式全景图(模态 × 来源 × 方法)
搞因子前,先别急着上代码。
先搞清楚你到底有哪些类型的因子可做、该做、值得做。
✅ 维度一:按数据来源分类
来源 | 代表因子 | 用途 |
---|---|---|
行情 | 收盘价、换手率、成交额、波动率 | 做技术面因子、短线预测 |
财报 | ROE、净利润率、毛利率、营业增长 | 做价值/成长因子 |
公告 | 重大合同、业绩预告、增发减持 | 做事件驱动因子 |
舆情 | 情绪得分、热词强度、评论量 | 做短期情绪/异动判断 |
图像 | K线图形状、龙虎榜截图 | 做视觉因子、多模态融合 |
图谱 | 公司-高管-行业的图结构 | 做关系型因子(GNN) |
✅ 维度二:按构造方法分类
类型 | 方法说明 | 工具 |
---|---|---|
规则因子 | 手动公式,基于金融知识(如 PE < 20) | pandas, ta-lib |
统计因子 | 标准化、滑动窗口、分位数构造 | numpy, scipy |
机器学习因子 | 用模型输出构造(如 LGB预测分数) | sklearn, xgboost |
LLM 因子 | LLM结构抽取出的标签(如“是否利好”) | ChatGLM, DeepSeek |
多模态因子 | 图像/文本+行情融合的嵌入特征 | CLIP, DeepSeek-VL |
图神经因子 | 公司间图结构上的评分节点 | PyG, DGL |
✅ 维度三:按策略目标功能分类
功能类型 | 说明 | 示例因子 |
---|---|---|
选股因子 | 决定买谁、持有谁 | 基本面、技术面、组合打分 |
择时因子 | 决定买不买、什么时候买 | 情绪指标、成交量异动 |
风控因子 | 规避风险区域或标的 | 波动率因子、尾部风险预警 |
解释因子 | 用于向用户/模型解释策略理由 | LLM标签、事件注释因子 |
📌 全景图参考:
因子全谱分类
──────────────────────────────────────────────
数据来源 → 行情 / 财报 / 公告 / 舆情 / 图像 / 图谱
构造方式 → 规则 / 统计 / 机器学习 / LLM / 多模态 / GNN
功能归属 → 选股 / 择时 / 风控 / 解释
──────────────────────────────────────────────
三、传统因子构造方法:规则 + 金融逻辑 + 技术指标
如果你是从传统量化或交易系统入行的,你会发现“因子构造”最初其实很“手工”——
- 想个逻辑 → 写个公式 → 拿数据算一遍 → 看有没有用。
虽然听起来“老土”,但这些传统方法的好处是:
- 易于解释(可监管 / 可理解);
- 和金融逻辑强相关(回测上限稳定);
- 能跑出“平稳、慢盈利”的核心底仓策略。
✅ 1、技术指标因子(行情数据)
常见技术因子直接基于 K 线序列计算,构造如下:
指标 | 说明 |
---|---|
MA | 移动平均线(常用5日、10日、20日) |
RSI | 相对强弱指标 |
MACD | 移动平均收敛发散指标 |
ATR | 平均真实波幅,用于波动率因子 |
示例(用 ta-lib
快速计算):
import talib
import pandas as pd
df['ma5'] = talib.SMA(df['close'], timeperiod=5)
df['rsi14'] = talib.RSI(df['close'], timeperiod=14)
df['macd'], _, _ = talib.MACD(df['close'])
📌 技术面因子优点是:响应快,适合短周期策略;
缺点是:信号易“抖动”、回撤控制不稳。
✅ 2、财务类因子(基本面)
常见财务因子来自年报 / 季报等,构造规则如下:
因子名 | 计算公式 | 解读 |
---|---|---|
ROE | 净利润 / 净资产 | 越高代表公司赚钱能力强 |
GPM | 毛利率 = (营收 - 成本)/ 营收 | 越高越健康 |
AssetTurnover | 营收 / 总资产 | 资产使用效率 |
DebtRatio | 负债 / 总资产 | 杠杆水平指标 |
示例(财报数据构造 ROE):
df['roe'] = df['net_profit'] / df['total_equity']
📌 需要注意:
- 财报发布时间不等于归属时间 → 请使用 真实发布日做对齐;
- 所有数据都要防止“未来数据穿越”问题!
✅ 3、统计型因子(辅助归一、标准化)
方法 | 用途 |
---|---|
z-score 标准化 | 把因子变成“相对于平均水平偏移” |
Winsorization | 限制极端值对策略扰动 |
分位数分组 | 方便做排序策略 / 分组回测 |
Rolling mean/std | 构造波动率类因子 |
示例(z-score 标准化):
df['z_roe'] = (df['roe'] - df['roe'].rolling(20).mean()) / df['roe'].rolling(20).std()
✅ 4、构建规则因子组合(手工策略原型)
假设我们手动构造如下策略:
选取同时满足:
- PE < 15(估值低)
- ROE > 10%(质量好)
- RSI < 40(技术超卖)
那么构造因子即可如下:
df['factor1'] = (df['pe'] < 15).astype(int)
df['factor2'] = (df['roe'] > 0.1).astype(int)
df['factor3'] = (df['rsi'] < 40).astype(int)
df['composite_score'] = df['factor1'] + df['factor2'] + df['factor3']
然后选 composite_score == 3
的股票持仓即可。
✅ 小结:
- 传统因子构造方法是AI因子系统的地基;
- 越基础的因子越容易在组合中产生稳定贡献;
- 你不需要造新轮子,而是把旧轮子标准化、结构化、可组合。
四、AI 因子构建方法(一):机器学习因子生成器
你可能已经用 XGBoost / LightGBM 做过分类模型,但有没有想过:
模型里的每个“分裂路径”,其实都可以看作一个新的“组合因子”。
AI 不只可以“用来预测”,还可以“用来生成因子”——这是 AI × 因子构造的第一种能力。
✅ 1、基本流程:用 ML 模型做“特征打分器”
假设我们想预测“未来一周是否上涨”,可以做以下流程:
- 构造基础因子(如:MA5、ROE、volume等)
- 构造标签(涨 or 跌)
- 使用 LGB/XGB 训练分类模型
- 获取特征重要性排名 → 选择前N个作为因子集
示例:
from lightgbm import LGBMClassifier
from sklearn.model_selection import train_test_split
X = df[feature_columns]
y = df['label']
model = LGBMClassifier()
model.fit(X, y)
importances = model.feature_importances_
然后你可以挑选出 top-k 特征:
top_factors = sorted(zip(importances, feature_columns), reverse=True)[:20]
✅ 2、组合特征构造器:AutoML / FeatureTools / Optuna
AutoML 的强项之一就是自动组合特征,比如:
ma5 / ma20
(短长期均线比);volume / rolling_std(close)
(量价背离);roe * gross_margin
(盈利能力 × 成本效率)。
这些组合可以被自动挖掘,而不需要你人脑穷举。
📦 推荐工具:
- FeatureTools:结构化特征自动提取
- flaml:微软 AutoML 开源项目,轻量可控
- Optuna:搜索超参 + 特征空间优化的利器
✅ 3、模型输出本身就是一个因子(打分因子)
你训练一个二分类模型,输出的 predict_proba[:, 1]
就可以是一个“AI打分因子”。
df['model_score'] = model.predict_proba(X)[:, 1]
可用于排序选股 / 择时信号 / 风控监测。
✅ 4、模型 → 因子框架建议封装结构
/factor_engine/
├── features/
│ ├── basic.py
│ ├── ml_based.py
├── models/
│ ├── lgb_factor_selector.py
├── pipeline.py # 执行流程串联
└── config.yaml # 特征配置参数表
✅ 小结:
- ML模型的输入特征 ≠ 最终因子,但可以筛选出有预测能力的变量;
- 使用 LightGBM / AutoML 可以批量构造“可用特征池”;
- 模型输出值可以作为独立因子使用,尤其适合构建“择时因子”;
五、AI 因子构建方法(二):LLM × 文本因子提取器
公告、研报、新闻……你看不完,但模型能读得又快又准
你知道在机构量化里,分析师最值钱的是什么?
不是看K线的能力,是能**“读公告+看研报+下判断”的能力**。
现在 LLM(大语言模型)能替你干这件事了,而且还能结构化输出成模型因子,直接喂进选股模型。
✅1、文本因子来源全景图
来源 | 内容 | 示例因子 |
---|---|---|
公司公告 | 合作、订单、增减持、财报预告 | 事件类型 / 方向 / 涉及金额 |
新闻 / RSS | 行业趋势、突发消息 | 舆论情绪 / 主题标签 |
社交平台 | 雪球、微博、X | 热点关键词 / 正负面强度 |
研报段落 | 分析师观点 / 投资评级 | 推荐评级 / 涉及业务板块 |
✅ 2、从文本到因子的完整流程
文本内容 → LLM提问(prompt)→ 抽取结构化标签 → 存入因子表
示例:公司公告 → LLM
prompt = f"""
请你提取以下公告中的关键信息,输出为JSON格式:
1. 是否为利好/利空?
2. 涉及哪项业务?
3. 是否有合作对象?
公告内容:
“公司于2024年3月20日与比亚迪签署战略合作框架协议,未来五年订单规模不低于30亿人民币...”
"""
输出结构化因子:
{
"事件类型": "战略合作",
"方向": "利好",
"合作对象": "比亚迪",
"金额": 30.0
}
✅ 3、技术栈建议(可选模型)
模型 / API | 适用场景 | 优点 |
---|---|---|
DeepSeek-VL / Qwen-VL | 图文公告提取 | 中文优化、多模态处理 |
GPT-4-turbo | 多语言支持 / 结构生成 | 强稳定性、表达自然 |
ChatGLM3 / Yi | 私有化部署 | 可控、调试成本低 |
通义千问 | 中文文本抽取 | 免费易用、逻辑清晰 |
✅ 4、落盘结构建议(parquet 表)
stock_code | date | event_type | direction | entity | amount |
---|---|---|---|---|---|
000001.SZ | 2024-03-20 | 战略合作 | 利好 | 比亚迪 | 30 |
可作为一个完整的“事件因子”,后续用于:
- 因子打分;
- 策略触发(事件驱动策略);
- 模型训练输入特征;
- LLM解释提示词上下文拼接。
✅ 5、多轮抽取:事件 × 主题 × 情绪 × 涉及方
你可以通过多轮 prompt 把原始文本抽出多个维度:
prompt_1:抽事件类型
prompt_2:判断是否为利好
prompt_3:判断影响业务是哪块(新能源/AI/制造)
prompt_4:抽关键词用于训练文本 embedding
最后形成一组“LLM生成因子集”,也就是因子生成的智能辅助系统。
✅ 小结:
- 公告 + 新闻 + 舆情,这些非结构化文本不再浪费;
- 用 LLM 建因子 = “模型读懂内容 → 输出结构化标签 → 喂给下游”;
- 一个高质量事件因子,胜过100个指标堆砌;
六、AI 因子构建方法(三):多模态因子构建实战
模型能“看图说话”了,那你为什么还只用表格数据?
多模态模型现在已经成熟到可以“边看图,边读文字,还能提判断”。
在金融领域,多模态因子的意义非常大:
- 有些 K 线形态、龙虎榜图,你看一眼能懂,但模型没图就只能靠猜;
- 有些公告是图文混排(图片 + 表格),传统结构提取完全没法搞;
- 多模态融合能补足“表格没捕捉到的结构信息”。
✅ 1、典型的多模态因子场景
数据 | 类型 | 可提因子 |
---|---|---|
K线图 | 图像 | 图形结构:双底、旗形、突破 |
龙虎榜图 | 图像 | 热区动向、主力分布 |
图文公告 | 图 + 文 | 结构化内容抽取、嵌入向量 |
舆情长图 | 图像 | 文本OCR + 多图对比趋势判断 |
✅ 2、K线图形因子提取方案(YOLOv8 / CNN / ViT)
- 生成带标注的 K 线图(可用 backtrader/plotly/mplfinance)
- 用人工标注形态(如“双顶”、“趋势上行”、“底背离”)
- 训练一个 YOLOv8 / CNN 模型提取图形标签
- 生成因子表:
stock_code | date | pattern_type | confidence |
---|---|---|---|
000001.SZ | 2024-03-18 | 旗形整理 | 0.91 |
✅ 3、图文公告提取(Qwen-VL / DeepSeek-VL)
-
输入整份图文 PDF → 模型提问:
- “这份公告是否包含利润预测?”
- “你能提取里面的业务合作关系吗?”
-
输出结构化事件/标签 + 图片坐标/引用截图。
📌 非常适合自动生成可解释策略提示:“如图所示,公司合作方为华为”。
✅ 4、图谱型因子构建(GNN)
构建公司之间的“图关系”,例如:
- 公司与高管;
- 子母公司;
- 上下游链路;
- 相似持仓机构;
- 热门主题共同提及关系(AI+芯片+车载等)
用 GNN(图神经网络)进行节点嵌入,得到每家公司在图中的“角色分数”:
stock_code | influence_score | degree_centrality | cluster_id |
---|---|---|---|
000001.SZ | 0.73 | 12 | 3 |
可以作为板块热度因子 / 涨停预判因子。
✅ 5、多模态融合:一票多视角,让模型更聪明
构建如下结构作为最终模型输入:
{
"text_features": ["公告文本", "研报摘要", ...],
"image_features": [图像向量1, 图像向量2],
"tabular_features": [ROE, RSI, MA5等],
"graph_features": [节点度数, 聚类ID]
}
这才是现代因子系统该有的样子。
✅ 小结:
- 模型看图、听话、读字早已不是幻想;
- 多模态因子 = 提升策略质量 / 可解释性 / 鲁棒性的重要维度;
- 它是最复杂的因子形态,但也是“AI价值放大器”的典范;
七、因子打分与筛选机制设计(IC / IR / 稳定性)
你构造了 30 个因子,其中 25 个可能是“看起来有逻辑”,但实际表现极差,甚至是反指。
所以这一步你必须“用数据说话”:
哪些因子“长期稳定赚钱”?
哪些“只是特定阶段的偶发有效”?
哪些“本身就是噪声因子”?
✅ 1、常用因子评价指标全表
指标 | 含义 | 解读方式 |
---|---|---|
信息系数(IC) | 因子值与未来收益的相关性 | 越高越好,>0.05 初步有效 |
信息比率(IR) | IC 的稳定性(均值/波动) | >0.3 更稳健 |
胜率 | 因子值高者赚钱概率 | 配合盈亏比使用 |
分组回测收益 | 分成N组后累计收益表现 | 顶/底组差值最重要 |
因子收益衰减图 | 时间窗口下收益能力 | 看时效性(3天/5天/20天) |
因子覆盖率 | 有效数据占比 | 低于80%易出问题 |
✅ 2、示例:计算某因子的 IC 值(Spearman 相关系数)
from scipy.stats import spearmanr
# 假设有 df['factor'], df['future_return']
ic, _ = spearmanr(df['factor'], df['future_return'])
可滚动窗口计算 IC 时间序列:
rolling_ic = df.rolling(60).apply(lambda x: spearmanr(x['factor'], x['future_return'])[0])
📌 常用分析周期:日IC、周IC、月IC(看短期 vs 中期 vs 长期)
✅ 3、IR:比 IC 更靠谱的“稳定性指标”
ICs = all_days_ic_series
IR = ICs.mean() / ICs.std()
- 如果你 IC 很高但极不稳定(正负反复),那策略很难执行;
- IR 是筛选因子的第二道防线。
✅ 4、因子分组回测法:直观看效果
- 将因子按数值分为 N 分组(如5组)
- 每组独立构建模拟组合(等权买入)
- 回测每组的收益曲线
df['group'] = pd.qcut(df['factor'], 5, labels=False)
group_returns = df.groupby('group')['future_return'].mean()
📈 顶组(group=4)和底组(group=0)的差异拉得越大,因子越有用。
✅ 5、滑窗评估:防止“偶发好因子”
很多因子在某一段时间有效,是因为“时代红利”或“因果错觉”。
你需要滑窗验证它:
# 每30天滚动一次重新评估 IC
for i in range(0, len(df), 30):
sub = df.iloc[i:i+30]
ic = spearmanr(sub['factor'], sub['future_return'])[0]
ic_list.append(ic)
最终画出:
- 因子表现波动曲线;
- 收益贡献热力图。
✅ 6、自动因子筛选器框架建议
def evaluate_factor(df, factor_col, return_col):
ic = spearmanr(df[factor_col], df[return_col])[0]
ic_std = df.rolling(60)[factor_col].apply(lambda x: spearmanr(x, df[return_col])[0]).std()
ir = ic / ic_std
return {'ic': ic, 'ir': ir}
# 用于批量筛选因子池中表现较好的因子
📦 建议将因子池统一放入数据库 / Parquet 表,每日更新评估指标。
八、因子组合策略生成:从单因子到多因子模型
因子单独有效 ≠ 策略整体赚钱。真正的策略,需要因子组合:
“像评选股票选美大赛,每个因子就是一个打分维度”
✅ 1、因子加权组合方式
方法 | 描述 |
---|---|
等权加权 | 最稳基础做法 |
IR 加权 | 越稳定因子权重越高 |
自学习加权 | AI 自动拟合权重(回归 / stacking) |
风控加权 | 给波动大的因子低权重(防回撤) |
df['score'] = (
0.3 * df['factor_roe'] +
0.4 * df['factor_sentiment'] +
0.3 * df['factor_announcement']
)
✅ 2、因子打分排序策略(选股/持仓权重)
典型策略:
- 每天用因子组合打分
- 排序(从高到低)
- 选前N个股票作为持仓(或按比例持仓)
df['rank'] = df['score'].rank(ascending=False)
selected = df[df['rank'] <= 20]
✅ 3、AI 驱动的因子组合优化
- 用 LGB/XGBoost 拟合“高收益选股标签” → 输出重要性即为权重
- 用 stacking / 集成模型组合多个因子评分器
- 用 AutoML 生成最佳因子组合方式(feature union)
✅ 4、策略解释能力(基于 LLM 的“选股理由”输出)
AI 给出的打分,不应是黑盒
可以将因子打分拼接成 Prompt:
prompt = f"""
你是一名智能投顾,今天推荐股票 $000001.SZ$。
打分详情:
- ROE因子:0.82
- 舆情因子:积极,情绪分0.93
- 公告因子:利好合作,与华为合作新项目
请用一句话总结推荐理由。
"""
输出:
“该股票盈利能力强,近期情绪积极,且与龙头企业合作,是不错的中期配置标的。”
✅ 5、组合策略回测建议
组合因子构建策略后,一定要:
- 回测:近3年多周期表现
- 对比:与市值策略 / 基准对比收益
- 分析:主要回撤时间段 / 贡献因子
📌 可以直接接入前面搭建的回测系统
九、因子系统的工程实现:从数据到信号的完整路径
你现在已经拥有了:
- 多种类型的因子(规则、机器学习、LLM、多模态);
- 因子效果评估体系(IC/IR/分组回测);
- 因子组合与打分机制;
- 能跑出策略结果、甚至解释逻辑。
但如果你还在 notebook 里“手工跑一次”,那不叫系统,那叫研究小样本实验。
✅ 1、因子系统应该具备哪些工程能力?
模块 | 功能 | 说明 |
---|---|---|
数据接入 | 读取数据湖的标准格式 | 封装数据源统一结构接口 |
因子生成器 | 多种类型因子模块化产出 | 每个因子可配置、可禁用 |
因子评估器 | 自动输出 IC/IR/胜率等指标 | 滚动窗口、周期性计算 |
因子选择器 | 根据设定规则挑选子因子集 | 支持阈值 / TopN / 多因子规则 |
因子组合器 | 打分模型封装 + 策略信号生成 | 排序 + 分组 + 权重整合 |
可视化接口 | 输出因子图表、解释文本 | 与策略页面对接 |
接口调用层 | 对接模型 / 回测 / 策略系统 | 提供统一 API 调用 |
✅ 2、目录结构建议(支持复用 / 测试 / 部署)
/factor_engine/
├── base/ # 公共工具类、字段定义
│ ├── config.py
│ └── utils.py
├── features/ # 各类因子生成器
│ ├── rule_based.py
│ ├── ml_based.py
│ ├── llm_extracted.py
│ └── multimodal.py
├── evaluators/ # IC、IR、回测分组等评估器
│ ├── ic_calc.py
│ ├── group_backtest.py
├── selectors/ # 因子筛选逻辑
│ ├── top_n_selector.py
│ └── stability_filter.py
├── combiners/ # 因子打分/策略组合模块
│ ├── equal_weight.py
│ ├── ml_ensemble.py
├── pipelines/ # 全流程封装
│ ├── build_factor_table.py
│ └── run_factor_signal.py
└── api/ # 接口层封装
└── get_factor_scores.py
✅ 3、统一因子格式建议(结构清晰、调度方便)
因子落地结构(可存入 Parquet 或数据库):
date | stock_code | factor_name | factor_value | ic | ir | tag |
---|---|---|---|---|---|---|
2024-03-01 | 000001.SZ | roe_zscore | 1.23 | 0.062 | 0.33 | basic |
2024-03-01 | 000001.SZ | announcement_event_score | 0.88 | 0.093 | 0.42 | llm |
这样便于:
- 批量筛选;
- 多期回测;
- 可视化展示;
- 组合调用。
✅ 4、与策略系统 / 模型系统的调用接口规范
from factor_engine.api import get_factor_scores
scores = get_factor_scores(
stock_pool=["000001.SZ", "002415.SZ"],
factor_list=["roe_zscore", "llm_sentiment", "ma5_ma20_ratio"],
trade_date="2024-03-28"
)
# scores: DataFrame,含打分字段、解释字段
可以用于:
- 下游策略选股;
- 模型特征喂入;
- 解释系统展示因子理由。
✅ 5、因子解释组件(策略透明化模块)
为每个因子设定解释模板:
EXPLAIN_TEMPLATES = {
"roe_zscore": "该股票的盈利能力高于过去20日平均,表现为ROE因子偏高。",
"llm_sentiment": "公司最新公告被AI判定为积极事件。",
"ma5_ma20_ratio": "短期均线上穿长期均线,呈现技术性走强态势。"
}
组合解释:
explanation = "\n".join([EXPLAIN_TEMPLATES[f] for f in selected_factors])
十、小结
因子系统不是“研究用的”,是整个 AI × Quant 系统的“中控室”。
到目前为止,你已经完成了一个完整的智能因子系统:
✅ 可构造:涵盖规则、ML、LLM、多模态、GNN 等多类型因子
✅ 可评估:用 IC / IR / 分组收益系统性判断因子优劣
✅ 可组合:支持多策略打分、排序选股、择时信号构造
✅ 可调用:通过接口与策略系统、模型系统、前端解释系统对接
✅ 可迭代:支持增量更新、指标更新、因子表现滑窗分析
🌟 如果本文对你有帮助,欢迎三连支持!
👍 点个赞,给我一些反馈动力
⭐ 收藏起来,方便之后复习查阅
🔔 关注我,后续还有更多实战内容持续更新
写系统,也写秩序;写代码,也写世界。
观熵出品,皆为实战沉淀。