halo 的技术博客

返回

引言:因子是量化的地基#

量化投资的本质是用规则替代直觉。而规则的载体,就是因子

2026 年,随着 Python 生态的成熟和大模型的渗透,因子挖掘的门槛在快速降低。但门槛低不意味着能赚钱——大多数新手量化研究员的第一课,就是回测漂亮的策略在实盘中亏得底掉。

这篇文章从实战角度,梳理因子挖掘、回测和风控的核心方法论,以及最常见的坑。

量化因子研究流程

一、什么是因子,什么样的因子有价值#

1.1 因子的定义#

因子是一个可量化的特征,用来解释或预测资产收益。形式上就是:每一行是一个交易日,每一列是一个因子值,通过截面或时序的方式和未来收益建立关系。

1.2 因子的分类#

类型典型因子数据来源
价值因子PE、PB、PS、F-Score财报
动量因子过去 N 日收益率、RSI行情
质量因子ROE、毛利率、现金流/利润财报
情绪因子新闻情感、分析师评级变化另类数据
技术因子MACD、布林带位置、成交量异常行情
另类因子卫星图像、信用卡消费、供应链另类数据

2026 年的趋势:传统因子(PE、动量)的 Alpha 已经衰减严重,真正的超额收益来自另类因子因子组合

1.3 好因子的标准#

一个值得进入模型的因子,必须通过以下检验:

  • IC(Information Coefficient):因子值与未来收益的秩相关系数,> 0.03 才算可用
  • ICIR(IC Information Ratio):IC 均值 / IC 标准差,衡量稳定性,> 0.5 合格
  • 单调性:按因子值分组后,各组收益是否单调递增或递减
  • 换手率:因子信号的 turnover 不能太高,否则交易成本吃掉 Alpha
  • 市场状态稳健性:牛熊市中方向可能不同,但区分度要保持

二、因子挖掘的五种方法#

2.1 人工构造(传统派)#

基于金融逻辑手工构造因子。例如:

# 质量因子:经营性现金流 / 总负债
factor = financial_data['operating_cash_flow'] / financial_data['total_liabilities']
python

优点是逻辑清晰、可解释性强。缺点是覆盖面窄、发现新因子的速度慢。

2.2 遗传规划(GP)#

用遗传算法自动组合基础算子(加减乘除、排名、时序运算),生成数百万个候选因子,再筛选。

gplearndeap 等 Python 库可以快速搭建 GP 流水线。但要小心:GP 生成的因子极容易过拟合。

2.3 深度因子模型#

用 Autoencoder、Transformer、GNN 等神经网络从原始数据中提取非线性因子。2026 年主流方案:

  • Autoencoder 变体:将高维行情数据压缩为低维因子
  • 时序 Transformer:对截面+时序数据联合建模
  • Graph Neural Network:基于产业链和供应链关系发现关联因子

2.4 另类数据挖掘#

这是 2026 年 Alpha 竞争的主战场:

  • 文本数据:用 LLM(GPT-4o、DeepSeek-V3)处理财报、新闻、社交媒体
  • 图像数据:卫星图分析零售客流、原油库存、农业产量
  • 交易数据:Level-2 订单流、大单跟踪、暗池数据

2.5 LLM 辅助因子生成#

2026 年新兴的范式。思路是:

让 LLM 阅读金融文献 → 提取潜在因子逻辑 → 生成计算代码 → 自动回测验证

目前准确率还不够用于实盘,但作为因子灵感生成器已经非常实用。

三、回测框架:别被漂亮曲线骗了#

回测陷阱

3.1 回测的本质#

回测 = 用历史数据模拟策略在过去的真实表现。核心公式:

每日收益 = 持仓权重 · 次日涨跌幅 - 交易成本 - 滑点
plaintext

3.2 回测必须处理的六个问题#

  1. 幸存者偏差:历史数据里只有活下来的股票,那些退市的、暴雷的都被剔除了。必须使用包含退市股的全量数据。
  2. 前视偏差:在 t 日用到了 t+1 日才知道的数据。财报发布日期 ≠ 报告期截止日,必须用实际发布日期。
  3. 停牌/涨跌停处理:停牌日不能交易,涨跌停板不能成交,回测中必须模拟这些约束。
  4. 交易成本:佣金 + 印花税 + 冲击成本(大单推动价格)+ 滑点。忽略这些,夏普比率虚高 30%-50%。
  5. 过拟合:因子越多、回测越漂亮,实盘越惨。保持因子数量在 3-8 个区间,样本外测试时间 > 样本内。
  6. 基准偏差:跟沪深 300 比超额 5% 不算厉害,因为沪深 300 本身波动大。用合适的基准衡量 Alpha。

3.3 推荐的 Python 回测工具链#

工具用途特点
zipline-reloaded回测引擎Quantopian 遗留下的工业级框架
backtrader回测引擎支持多资产、自定义佣金、实时交易
alphalens因子分析一站式 IC 分析、分层回测、换手率
pyfolio绩效归因夏普、最大回撤、换手率、行业暴露
pandas + numpy数据处理永远是地基
ray / dask并行计算处理全市场 5000+ 股票的因子计算

3.4 一个真实的因子研究 Pipeline#

# 1. 因子计算
factor = (close.rolling(20).mean() - close.rolling(60).mean()) / close.rolling(60).std()

# 2. 因子中性化(去除市值、行业影响)
from statsmodels.api import OLS
neutralized = OLS(factor, sm.add_constant(market_cap_log)).fit().resid

# 3. IC 分析
from scipy.stats import spearmanr
ic = factor.groupby('date').apply(lambda g: spearmanr(g['factor'], g['forward_return'])[0])

# 4. 分层回测
# 按因子值分 5 组,每组等权,看各组收益是否单调
# 做多第一组、做空第五组的多空收益就是因子的纯 Alpha
python

四、风险控制:Alpha 的保质期很短#

4.1 为什么因子会失效#

  • 拥挤交易:太多人用同一个因子,超额被套利抹平
  • 市场结构变化:注册制、T+0 改革、涨跌停放宽会彻底改变因子表现
  • 宏观切换:牛市有效的因子在熊市可能完全反着走

4.2 风控的三道防线#

  1. 因子层面:每月监控 IC 序列,IC 连续 3 个月为负立即停用
  2. 组合层面:控制行业集中度、市值暴露、风格暴露,单一因子权重不超过 20%
  3. 实盘层面:设置单日最大回撤止损线,异常波动自动降仓

4.3 从回测到实盘的最后一步#

纸交易(Paper Trading):用真实行情模拟交易,但不涉及真金白银。至少跑 1-3 个月,确认回测结果在实时市场中可复现,再考虑放实盘。

五、写给个人量化学习者#

量化投资不是一夜暴富的捷径。它是一个概率游戏:

  • 胜率 55%、赔率 1:1 的策略,长期交易就能赚钱
  • 胜率 80% 但一次大亏就归零的策略,毫无意义

你需要的是:扎实的金融知识 + 过硬的编程能力 + 严格的纪律

推荐学习路径:

  1. 《量化投资:以 Python 为工具》(入门)
  2. 《Active Portfolio Management》(因子研究的圣经)
  3. 在 JoinQuant / RiceQuant 上跑通自己的第一个策略
  4. alphalens 分析因子质量,用 backtrader 做回测
  5. 纸交易验证,小资金实盘

本文仅供学习交流,不构成投资建议。量化有风险,入市需谨慎。

量化因子挖掘与回测实战:从入门到踩坑
https://blog.halo26812.eu.org/blog/quant-factor-mining-backtesting
Author halo
Published at 2026年6月19日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨