返回 市场交易
市场交易
19 分钟阅读

量化交易进阶篇:非线性模型、另类数据与机构级 Alpha

超越 OLS 与 GARCH 的「经典力学」:树模型、深度学习、NLP 与图像另类数据、 走步验证与过拟合防御,勾勒 Two Sigma、幻方等机构 2020s 量化实战的知识地图。

第零章

从经典力学到相对论:为什么还要一篇进阶?

原理篇模型篇 教的是量化世界的经典力学——OLS 回归、GARCH、Markowitz。它们假设(或近似)线性关系、固定参数、可解释的闭式解,在风控归因、波动率估计、组合约束里至今仍是基础设施。

但若把时钟拨到 2026 年的机构实战,画面会不太一样:

  • Two SigmaCitadel、国内 幻方九坤 等头部量化机构,大量研究员的时间花在:高维特征工程非线性模型集成另类数据采购与清洗,以及如何把这一切塞进低延迟、可审计、可回滚的生产管线。
  • Kaggle 式的「一个 XGBoost 打天下」在个人竞赛里有效,在机构里往往活不过第一个季度——竞争对手同样在读你的因子逻辑,alpha 衰减(alpha decay)是常态。

本文是进阶篇:不重复 CAPM 公式,而是回答——经典模型之后,钱从哪里来?代码长什么样?坑在哪里?

线性模型教你市场的语法;非线性模型与另类数据,是在语法之上竞争谁能更快读到尚未被定价的信息。

— 进阶篇的定位
第一章

经典力学的边界:线性世界哪里不够用?

经典工具擅长2020s 实战中的瓶颈
OLS / 因子回归解释 β、剥离风格、快速归因交互效应(价值×动量×流动性)需手工交叉项,维度爆炸
GARCH波动率聚集、VaR对结构突变(政策、熔断)反应慢;多资产联合波动建模笨重
Markowitz组合方差最小化样本协方差矩阵病态,权重极端;难融入非凸约束(换手、行业上限)
协整配对价差回归关系断裂频繁;另类数据时代,价差信号被更快套利抹平

市场的真实映射往往是:

  • 非线性:同样 PE 因子,在流动性充裕时有效,枯竭时失效——阈值与交互,树模型天然擅长。
  • 高维稀疏:数千只股票的数百个特征,每日截面更新——深度学习与梯度提升树的主战场。
  • 非结构化输入:财报电话会语气、新闻实体关系、停车场卫星图——无法直接塞进 OLS 的 X 矩阵。
第二章

非线性机器学习:树模型为何成为中流砥柱?

表格型金融数据(因子截面、财务比率、微观结构特征)上,2015–2025 年实证一致偏向:梯度提升树(XGBoost / LightGBM / CatBoost)往往优于浅层神经网络——特征异构、缺失值多、样本噪声大,树的分段常数逼近更鲁棒。

树模型相对 OLS 的优势

  • 自动交互:无需事先构造 价值 × 动量
  • 非单调:PE 过低过高都可能差,树可拟合 U 型
  • 缺失值处理:内置分裂方向,适合财报字段残缺
  • 特征重要性:比深度网络更易做初步归因(但仍需谨慎解读)

机构常见用法

  1. 截面排序:预测未来 5~20 日收益排名,做多 top decile、做空 bottom decile(市场中性)
  2. 多模型集成:线性因子 + GBDT + 神经网络,按 IC 或夏普加权
  3. 目标工程:预测排名而非绝对收益,降低尺度漂移

下面用 LightGBM 演示截面因子 → 未来收益排名的监督学习(合成数据):

import numpy as np
import pandas as pd
import lightgbm as lgb
from sklearn.metrics import spearmanr
 
np.random.seed(42)
# 500 天 × 50 只股票,3 个因子 + 噪声
days, stocks = 500, 50
dates = pd.date_range("2022-01-01", periods=days, freq="B")
 
records = []
for d in dates:
    f_value = np.random.randn(stocks)
    f_mom   = np.random.randn(stocks)
    f_liq   = np.random.randn(stocks)
    # 真实关系:非线性——动量仅在流动性好时有效
    ret_fwd = (
        0.02 * f_value
        + 0.03 * f_mom * (f_liq > 0).astype(float)
        + np.random.randn(stocks) * 0.1
    )
    for i in range(stocks):
        records.append({
            "date": d, "stock": f"s{i:02d}",
            "value": f_value[i], "mom": f_mom[i], "liq": f_liq[i],
            "ret_fwd": ret_fwd[i],
        })
 
df = pd.DataFrame(records)
features = ["value", "mom", "liq"]
 
# 走步验证:用过去 400 天训练,预测后 100 天
split = dates[400]
train = df[df["date"] < split]
test  = df[df["date"] >= split]
 
model = lgb.LGBMRegressor(
    n_estimators=200, learning_rate=0.05,
    max_depth=4, subsample=0.8, colsample_bytree=0.8,
    verbosity=-1,
)
model.fit(train[features], train["ret_fwd"])
pred = model.predict(test[features])
 
# 评价:每日截面 Spearman IC(预测排名 vs 真实收益排名)
test = test.copy()
test["pred"] = pred
ic_list = []
for d, g in test.groupby("date"):
    ic, _ = spearmanr(g["pred"], g["ret_fwd"])
    ic_list.append(ic)
print(f"样本外平均 IC: {np.nanmean(ic_list):.4f}")
print("特征重要性:", dict(zip(features, model.feature_importances_.round(2))))

解读IC(信息系数)是截面预测排名与真实收益排名的 Spearman 相关。机构内部常要求 IC > 0.02 且稳定 才值得进入组合层——单看样本内 R² 毫无意义。

第三章

深度学习:序列、图与表征学习

当输入不再是「每只股票几个因子」,而是整段价量序列、新闻文本、供应链图,深度学习的占比上升。

架构典型输入量化场景
LSTM / GRU / Temporal CNN分钟/日频 OHLCV 序列短周期模式、订单流编码
Transformer / Informer长序列多变量跨资产时序、事件窗口
BERT / FinBERT新闻、公告、电话会文本情绪、主题、实体关系
CNN / ViT卫星图、工厂夜光、图表图像宏观行业、产能_PROXY
GNN供应链、持股、行业图风险传染、关联定价

深度学习在量化里的特殊难点

  • 信噪比极低:收益标签噪声大,大模型易记住样本内巧合
  • 非平稳:2020 年的文本分布与 2025 年不同,预训练模型需持续微调
  • 可解释性与合规:监管与风控要求知道「为何买」
  • 算力与延迟:训练贵;推理必须压到收盘前可完成

极简 LSTM 价量序列示意(单标的,教学用):

import numpy as np
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, TensorDataset
 
np.random.seed(0)
torch.manual_seed(0)
 
# 构造序列:用过去 20 日收益预测下一日符号
T, seq_len = 3000, 20
rets = np.random.normal(0, 0.01, T)
# 嵌入微弱可预测性
for t in range(seq_len, T):
    rets[t] += 0.3 * rets[t - 1] + np.random.normal(0, 0.009)
 
X, y = [], []
for t in range(seq_len, T - 1):
    X.append(rets[t - seq_len : t])
    y.append(1 if rets[t + 1] > 0 else 0)
X = torch.tensor(np.array(X), dtype=torch.float32).unsqueeze(-1)
y = torch.tensor(y, dtype=torch.float32)
 
split = int(0.8 * len(y))
train_dl = DataLoader(TensorDataset(X[:split], y[:split]), batch_size=64, shuffle=True)
 
class LSTMClassifier(nn.Module):
    def __init__(self):
        super().__init__()
        self.lstm = nn.LSTM(1, 32, batch_first=True)
        self.fc = nn.Linear(32, 1)
    def forward(self, x):
        out, _ = self.lstm(x)
        return torch.sigmoid(self.fc(out[:, -1, :]))
 
model = LSTMClassifier()
opt = torch.optim.Adam(model.parameters(), lr=1e-3)
loss_fn = nn.BCELoss()
 
for epoch in range(5):
    for xb, yb in train_dl:
        opt.zero_grad()
        loss = loss_fn(model(xb).squeeze(), yb)
        loss.backward()
        opt.step()
 
model.eval()
with torch.no_grad():
    acc = ((model(X[split:]).squeeze() > 0.5) == y[split:]).float().mean()
print(f"样本外方向准确率: {acc:.3f}(微弱优于 50% 即可能有交易价值,需扣费验证)")

幻方、Two Sigma 等机构不会公开架构细节,但招聘与技术分享中反复出现:大规模 GPU 集群、自研训练框架、因子与 DL 的混合流水线——核心壁垒常在数据与工程,而非某一个公开模型结构。

第四章

另类数据:NLP、图像与「信息套利」

另类数据(Alternative Data)指传统行情与财报之外、可用于预测资产价格的信息源。2020s 机构 alpha 竞赛的重要战场。

数据类型来源示例信号逻辑门槛
文本 / NLP新闻、微博、财报 MD&A、电话会情绪、不确定性、主题突变清洗、实体消歧、点-in-time 对齐
图像卫星停车场、油储罐阴影、作物叶绿素经济活动_PROXY、供应链标注贵、供应商垄断
消费信用卡聚合、App 下载、电商销量营收前瞻合规与隐私
网络招聘页、GitHub 提交、域名注册公司扩张/收缩噪声大
微观结构逐笔委托、订单簿快照短周期压力存储与延迟

NLP 流水线(简化)

原始文本 → 时间戳对齐 → 实体链接(股票代码) → 情绪/主题/事件抽取 → 日频因子 → 与价量合并 → 模型

TF-IDF + 逻辑回归 演示新闻情绪因子(合成文本):

import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
 
np.random.seed(1)
n = 400
# 合成:正面词多的日子,次日收益略高
vocab_pos = ["增长", "超预期", "回购", "突破"]
vocab_neg = ["下滑", "调查", "亏损", "减持"]
 
texts, labels, fwd_ret = [], [], []
for i in range(n):
    pos = np.random.randint(0, 4)
    neg = np.random.randint(0, 4)
    words = vocab_pos[:pos] + vocab_neg[:neg]
    np.random.shuffle(words)
    texts.append(" ".join(words) if words else "平稳")
    sentiment = pos - neg
    labels.append(1 if sentiment > 0 else 0)
    fwd_ret.append(sentiment * 0.002 + np.random.normal(0, 0.01))
 
split = 300
pipe = Pipeline([
    ("tfidf", TfidfVectorizer(max_features=50)),
    ("clf", LogisticRegression(max_iter=500)),
])
pipe.fit(texts[:split], labels[:split])
proba = pipe.predict_proba(texts[split:])[:, 1]
 
# 情绪概率 vs 次日收益
ic = np.corrcoef(proba, fwd_ret[split:])[0, 1]
print(f"情绪概率与次日收益相关: {ic:.4f}")

实务中会换用 FinBERT大模型 Embedding + 下游回归,并严格保证:文章发布时间 < 交易信号生效时间(point-in-time),否则回测虚高。

图像数据

卫星图量化约 2015 年起在美股零售(停车场车流)、能源(油罐储量)中成熟。流程通常是:供应商提供已地理编码的图像 → CV 模型估计指标 → 与营收 surprise 对齐验证 → 纳入基本面预测模型。

对个人研究者:另类数据最大障碍往往是采购成本与许可,而非模型本身。

第五章

过拟合战争:机构比模型更在意验证

非线性模型 + 高维特征 = 过拟合的完美温床。Marcos López de Prado 在 Advances in Financial Machine Learning 中强调的方法,已成为机构研究规范:

技术作用
Purged K-Fold训练/测试之间剔除标签窗口重叠样本,防止信息渗漏
Embargo测试集后再空出几天,模拟执行延迟
Walk-forward滚动训练窗口,永远用「过去」预测「未来」
Deflated Sharpe修正多次试验后的夏普膨胀
组合净化交叉验证(CPCV)更保守的样本外分布估计

走步验证骨架(接 LightGBM 示例):

import numpy as np
import pandas as pd
import lightgbm as lgb
from sklearn.metrics import spearmanr
 
def walk_forward_ic(df, features, train_days=400, test_days=20, embargo=5):
    """滚动训练 test_days,训练集与测试集之间留 embargo 天"""
    dates = sorted(df["date"].unique())
    ics = []
    for start in range(train_days, len(dates) - test_days, test_days):
        train_end = dates[start - embargo - 1]
        test_start = dates[start]
        test_end = dates[min(start + test_days - 1, len(dates) - 1)]
        tr = df[df["date"] <= train_end]
        te = df[(df["date"] >= test_start) & (df["date"] <= test_end)]
        if len(te) < 50:
            continue
        m = lgb.LGBMRegressor(n_estimators=100, verbosity=-1)
        m.fit(tr[features], tr["ret_fwd"])
        te = te.copy()
        te["pred"] = m.predict(te[features])
        for d, g in te.groupby("date"):
            ic, _ = spearmanr(g["pred"], g["ret_fwd"])
            ics.append(ic)
    return np.nanmean(ics), ics
 
# 复用上一章 df
mean_ic, all_ic = walk_forward_ic(df, features)
print(f"Walk-forward 平均 IC: {mean_ic:.4f}, 窗口数: {len(all_ic)}")

思想实验

样本外 IC 为正,不代表能赚钱。换手、冲击成本、容量(capacity) 会把纸面 alpha 吃掉。Two Sigma 内部常说:edge 的大小要与可部署资金规模匹配——十亿资金能吃的信号,百万资金未必值得做。

第六章

机构级工程:数据湖、特征商店与生产管线

头部量化机构的技术栈,通常分层如下:

另类数据供应商 ─┐
行情/财务 ETL  ─┼→ 数据湖 (Parquet/S3) → 特征商店 (point-in-time)
宏观/舆情     ─┘         ↓
                    研究笔记本 (Python/R)
                         ↓
              模型训练集群 (GPU/CPU 调度)
                         ↓
              信号发布 → 组合优化 → 风控 → OMS/执行
                         ↓
                    归因 & 监控 (alpha decay 报警)

Today Stock Finance 相比,机构管线多了:

  • Point-in-time 数据库:任意历史日只能看到「当时已发布」的财报字段
  • 特征商店:同一因子定义在研究、回测、实盘三处一致
  • 仿真撮合:回测不能永远用收盘价成交
  • Alpha 衰减监控:IC 滚动下滑时自动降权或退役模型

幻方等国内头部在公开报道中强调 AI 全流程——从数据清洗到训练到推理均在自有集群完成,且与极低延迟执行(尤其指增与中高频)深度耦合。对个人研究者,可落地的第一步往往是:把因子计算脚本版本化 + 走步回测自动化,而非急于上大模型。

第七章

2026 知识地图:怎么读进阶篇?

建议路径:

原理篇 → 模型篇(经典力学)→ 本文(非线性 + 另类数据)→ 专项深入
你想做的事下一步
截面选股 ML学 LightGBM + walk-forward + 行业中性化
文本情绪FinBERT / 中文金融语料微调 + point-in-time
高频微观结构C++ / FPGA 与订单簿,已超出本文范围
风控与组合经典 Markowitz + 风险模型仍必修

Edge_t = Signal_t − Cost_t − Crowding_t

**Crowding_t** 表示同类信号被竞品套利后的衰减。2026 年,许多「公开因子」的 Edge 主要死在 Crowding 项——而非 Signal 本身为零。

经典力学仍是地基,相对论在天上

OLS、GARCH、Markowitz 不是「过时」,它们是风控语法研究基准。Two Sigma、幻方等机构的大量收益,来自在同样语法之上,用非线性模型榨取高维交互,用另类数据抢占信息时差,用工程纪律把样本外验证过关的信号送进实盘——并在 alpha 衰减前持续迭代。

对个人研究者,诚实的前景是:

  • 公开数据的 ML edge 极薄,需要极强的验证与成本意识
  • 经典模型仍应掌握——否则无法判断 ML 信号是 alpha 还是隐性因子暴露
  • 工程与数据质量,往往比换一个 Transformer 层数更重要

学习顺序建议不变:先跑通 模型篇 的闭式解,再跑本文的 LightGBM 与 walk-forward——前者让你理解市场结构,后者让你理解 2020s 机构在竞争什么。

相关文章

市场交易
15 分钟
量化交易模型篇:常见金融模型的 Python 实现
用 Python 实现并讲解 CAPM β 回归、多因子模型、Black-Scholes 期权定价、 动量与均值回归信号、GARCH 波动率、Markowitz 组合优化、Kelly 仓位与协整配对交易。
市场交易
13 分钟
量化交易原理篇:从信号到成交的系统闭环
梳理量化交易的数据—信号—仓位—执行—风控闭环, 数学工具全景与研究流程,为模型篇的 Python 实现打好概念基础。
AI 项目
10 分钟
Today Stock Finance:Vibe Coding 驱动的股票分析平台
基于 TypeScript + Koa2 + React + DeepSeek 的本地化股票分析工具,记录从脚手架到真实行情与 AI 研报的全流程工程实践