机器学习 / 深度学习在量化中的应用

这一页覆盖量化研究面试里关于机器学习与深度学习的核心八股(Q41–Q55):从偏差-方差、正则化、时序交叉验证,到 LSTM/Transformer、AutoEncoder、GAN、GNN、强化学习,再到标签不平衡、信息泄漏、LLM 落地等实战问题。每道难题都配了 🔬 深度拓展(含完整推导、几何直觉与面试追问演练),既适合大一新生打基础,也适合求职者临阵磨枪。

📌 一条贯穿全页的主线

金融数据信噪比极低(信号微弱、噪声巨大)。这一句话几乎是本页所有问题的"题眼":它解释了为什么我们偏好低方差模型、为什么正则化如此重要、为什么时序交叉验证不能泄漏、为什么集成学习的价值在降方差而非提精度。面试时把任何 ML 技巧扣回这条主线,答案就有了灵魂。

机器学习基础(Q41–Q45)

Q41偏差-方差权衡(Bias-Variance Tradeoff)是什么?
🌱 大白话先懂

模型犯错有两种方式。偏差大=模型太笨(像硬用直线去描一条弯路),怎么学都学不会,叫"欠拟合";方差大=模型太较真,把训练题里的噪声都背下来,换套题就废,叫"过拟合"。这俩按下葫芦浮起瓢,得找平衡。金融噪声大,宁可笨一点也别太较真。

标准答案

泛化误差可以分解为三部分:

$$\text{MSE} = \text{Bias}^2 + \text{Variance} + \text{Irreducible Noise}$$

  • 偏差(Bias):模型假设过于简单导致的系统性误差,对应欠拟合
  • 方差(Variance):模型对训练数据过度敏感导致的波动,对应过拟合

在量化中的含义

  • 高偏差模型(如简单线性回归)可能错过非线性 alpha;
  • 高方差模型(如深度神经网络)可能拟合市场噪声;
  • 金融数据信噪比极低,通常偏向低方差模型更安全
  • 原则:宁可欠拟合也不要过拟合——错过一个机会的代价,远小于错误地相信一个不存在的机会。
🔬 深度拓展:MSE = Bias² + Var + 噪声 的完整推导,以及金融为何偏向低方差

1. 一行行推导分解公式。设真实关系为 $y = f(x) + \varepsilon$,其中噪声 $\varepsilon$ 满足 $\mathbb{E}[\varepsilon]=0$、$\text{Var}(\varepsilon)=\sigma^2$。我们用训练集 $D$ 学到一个估计 $\hat f(x)$,关注在某个固定点 $x$ 上的期望平方误差(期望对训练集的随机性与噪声同时取):

$$\mathbb{E}\big[(y - \hat f(x))^2\big] = \mathbb{E}\big[(f(x) + \varepsilon - \hat f(x))^2\big]$$

记 $\bar f(x) = \mathbb{E}_D[\hat f(x)]$ 为模型预测的平均值。把 $\hat f$ 围绕 $\bar f$ 拆开,并利用 $\varepsilon$ 与 $\hat f$ 独立、$\mathbb{E}[\varepsilon]=0$,所有交叉项期望为零,最终得到:

$$\mathbb{E}\big[(y-\hat f)^2\big] = \underbrace{(f - \bar f)^2}_{\text{Bias}^2} + \underbrace{\mathbb{E}[(\hat f - \bar f)^2]}_{\text{Variance}} + \underbrace{\sigma^2}_{\text{噪声}}$$

直觉:Bias 是"平均射偏了多少",Variance 是"每次射击有多分散",噪声是"靶子本身在抖"——再完美的模型也消不掉噪声 $\sigma^2$,它是误差的下界

2. 为什么金融低信噪比下要偏向低方差? 把信噪比写成 $\text{SNR} = \text{Var}(f) / \sigma^2$。金融里 $\sigma^2$ 巨大而 $\text{Var}(f)$ 微小(典型股票日度收益预测 $R^2$ 常常只有 $0.5\%\!-\!2\%$)。这意味着:

  • 可被解释的信号 $\text{Var}(f)$ 很小,降低 Bias 能挤出的收益本来就有限;
  • 而高方差模型会把巨大的 $\sigma^2$ 当成信号去拟合,Variance 项会爆炸。

所以在 $\text{Bias}^2 + \text{Variance}$ 这个可控部分里,控制 Variance 的边际收益远高于压低 Bias。这就是"宁可欠拟合"的数学根据。

🎯 面试追问演练

问:"集成 / Bagging 影响的是 Bias 还是 Variance?"
答:主要降 Variance(平均多个模型抹平随机波动),几乎不动 Bias。Boosting 则主要降 Bias(串行拟合残差)。

问:"增大正则化强度 $\lambda$,Bias 和 Variance 怎么变?"
答:$\lambda \uparrow$ 把模型往简单方向拉,Variance $\downarrow$、Bias $\uparrow$,存在一个最优 $\lambda$ 使总误差最小;金融里通常会把这个最优点主动往大 $\lambda$ 一侧偏

问:"噪声项能通过更多数据消掉吗?"
答:不能。$\sigma^2$ 是不可约误差;更多数据降的是 Variance,不是噪声。

Q42正则化(L1/L2/ElasticNet)的区别和量化应用?
🌱 大白话先懂

正则化就是给模型加一句"别想太多"的紧箍咒,防止它把噪声也当规律学进去。L1 像用刀切,直接把没用的因子砍到 0、只留少数几个;L2 像用手压,所有因子都缩小但都保留;ElasticNet 是这两招混着用。目的都是让模型更简单、更稳。

标准答案

正则化惩罚项效果量化场景
L1(Lasso)$\lambda \sum |w_i|$产生稀疏解,自动选择因子从大量候选因子中筛选有效因子
L2(Ridge)$\lambda \sum w_i^2$缩小权重但不为零因子共线性处理,稳定回归
Elastic Net$\alpha\,L1 + (1-\alpha)\,L2$兼具稀疏和稳定高维因子选择的默认选择

直觉:L1 像用刀切(有的因子直接砍到 0),L2 像用手压(所有因子都缩小但保留)。

量化中的额外考虑:正则化强度 $\lambda$ 的选择不应只看交叉验证误差,还要考虑因子的经济学可解释性——如果 L1 选出了无法解释的因子,可能只是拟合了噪声。

🔬 深度拓展:L1 稀疏的几何直觉(菱形顶点)、L1 vs L2 解的差异、ElasticNet 为何存在

1. 为什么 L1 产生稀疏解——菱形约束的顶点。 带约束的视角:最小化损失 $\text{RSS}(w)$ 等价于在约束 $\sum|w_i|\le t$(L1)或 $\sum w_i^2 \le t$(L2)下最小化 RSS。RSS 的等高线是椭圆,从最优点向外扩张,第一次碰到约束区域的点就是解。

  • L1 的约束区域是菱形(高维下是带尖角的多面体),尖角正好落在坐标轴上(即某些 $w_i=0$)。椭圆等高线很容易先碰到尖角 → 解是稀疏的。
  • L2 的约束区域是圆球,处处光滑无尖角,椭圆碰到的接触点几乎不会落在坐标轴上 → 权重被压小但极少恰好为 0。
      w2                         w2
       |   L1(菱形)               |   L2(圆)
       |   /\                     |   .-~-.
   ----+--/--\----- w1       ----+-(  o  )---- w1   o=椭圆中心(OLS解)
       | \  /  尖角落在轴上       |   `-_-'
       |  \/  -> w1=0(稀疏)       |   接触点在内部(不稀疏)

2. 软阈值:L1 解的解析形式。 在正交设计下,Lasso 对每个系数做软阈值(soft-thresholding)

$$\hat w_j^{\text{L1}} = \text{sign}(\hat w_j^{\text{OLS}})\cdot \max\big(|\hat w_j^{\text{OLS}}| - \lambda,\ 0\big)$$

小于 $\lambda$ 的系数被直接置 0(这就是稀疏的来源);而 Ridge 是等比例收缩 $\hat w_j^{\text{L2}} = \hat w_j^{\text{OLS}} / (1+\lambda)$,永远不为 0。

3. ElasticNet 为什么存在? 纯 L1 有两个毛病:(a) 当一组因子高度相关时,Lasso 会随机只留一个、砍掉其余,结果不稳定(换个样本就换一个因子);(b) 当因子数 $p$ 大于样本数 $n$ 时,Lasso 最多只能选出 $n$ 个。ElasticNet 的 L2 部分把相关因子的权重"绑在一起"一起进出(grouping effect),既保留稀疏性又稳定。这正是高维量化因子库的默认配置。

🎯 面试追问演练

问:"L1 的损失在 0 点不可导,怎么优化?"
答:用次梯度 / 坐标下降 / 近端梯度(proximal,对应上面的软阈值算子),不能直接用普通梯度下降。

问:"两个几乎一样的因子,L1 和 L2 分别怎么处理?"
答:L1 随机留一个(不稳定);L2 把权重平摊给两者;ElasticNet 让它们成组同进同出。

问:"$\lambda$ 怎么选?金融里有什么额外讲究?"
答:时序交叉验证(不是普通 K-Fold)选 $\lambda$,且要叠加经济可解释性约束——选出的因子能讲出逻辑,否则疑似拟合噪声。

Q43时间序列的交叉验证应该怎么做?为什么不能用普通 K-Fold?
🌱 大白话先懂

考模型要拿它没见过的数据当考题。但金融数据有时间先后,如果随机抽题,就可能拿"未来"去训练、"过去"来考——相当于考前偷看了答案,分数虚高、实盘就崩。正确做法是永远"用过去预测未来",而且训练和测试之间留一道空隙,防止信息偷偷渗过去。

标准答案

问题:普通 K-Fold 随机划分,破坏了时间序列的时序结构,导致未来信息泄漏到训练集。

正确方法

Time →
|---Train---|---Gap---|--Test--|                 第1轮
|------Train-------|---Gap---|--Test--|          第2轮
|---------Train-----------|---Gap---|--Test--|   第3轮
  • Walk-Forward(前向验证):固定或扩展窗口训练,向前滚动测试;
  • Embargo Gap:训练集和测试集之间留缓冲期,防止特征计算中的信息泄漏;
  • Purged K-Fold(López de Prado 提出):在 K-Fold 基础上,清除训练集中与测试集标签在时间上重叠的样本。

Embargo 的计算:如果特征使用了过去 20 天的数据来预测未来 5 天的收益,Embargo 至少应设为 5 天(标签的前瞻窗口)。

🔬 深度拓展:普通 K-Fold 为何泄漏、Walk-Forward 画法、Purged K-Fold + Embargo 的计算细节

1. 普通 K-Fold 到底哪里泄漏? 关键在于金融的标签是有时间跨度的:一个在 $t$ 时刻打的标签(如未来 5 日收益)会用到 $t$ 到 $t+5$ 的信息;而 $t$ 时刻的特征又可能用了 $t-20$ 到 $t$ 的历史。于是相邻样本的特征窗口与标签窗口互相重叠。普通 K-Fold 随机洗牌后,训练集里很可能混入"几乎和测试样本同一时段"的样本,模型相当于偷看了答案,CV 分数虚高、上线就崩。

2. Walk-Forward 两种窗口。

滚动窗口(Rolling, 固定长度):
[==Train==]      [Test]
   [==Train==]      [Test]
      [==Train==]      [Test]   旧数据被丢弃, 适应非平稳

扩展窗口(Expanding, 只增不减):
[==Train==]      [Test]
[====Train====]      [Test]
[======Train======]      [Test]  样本越来越多, 更稳

金融非平稳强时偏向 Rolling(让模型"忘记"过时的市场结构);样本稀缺时用 Expanding。

3. Purged K-Fold + Embargo 的精确机制(López de Prado)。

  • Purge(清洗):对每一个测试 fold,把训练集中"标签时间区间 $[t_{i,0}, t_{i,1}]$ 与测试集任一样本的标签区间相交"的样本全部删除,斩断重叠造成的泄漏。
  • Embargo(禁运):即使不直接重叠,紧跟在测试集之后的训练样本仍可能因序列相关(如波动聚集)而泄漏。于是在测试集结束后再额外删掉一段长度为 $h$ 的样本。常取 $h \approx \lceil \rho \cdot T \rceil$,$\rho$ 约 $1\%$,$T$ 为总样本数;或直接取标签前瞻窗口的长度
... Train Train | PURGE | === Test === | EMBARGO | Train Train ...
                  删除与测试               删除紧随其后
                  标签重叠的样本           的 h 个样本
⚠️ 常见错误

sklearn 默认的 KFold(shuffle=True) 跑金融数据 → 严重泄漏。应使用 TimeSeriesSplit,或自己实现 Purged K-Fold。即便用 TimeSeriesSplit,它也不会自动 Purge/Embargo,标签有跨度时仍需手动清洗。

🎯 面试追问演练

问:"Embargo 设多长?"
答:至少覆盖标签的前瞻窗口;考虑序列相关时再多留几天。给出"特征 20 天 + 标签未来 5 天 → Embargo ≥ 5 天"这个例子最得分。

问:"Walk-Forward 只测一段,方差大怎么办?"
答:多起点滚动、组合多个 OOS 段;或用 Combinatorial Purged CV(CPCV)生成多条回测路径估计分布。

Q44XGBoost / LightGBM 为什么在量化比赛中这么流行?
🌱 大白话先懂

XGBoost / LightGBM 是一种"很多小决策树一起投票"的模型。每棵树都在问一连串"如果…就…"的问题来做判断,特别擅长处理杂乱的表格数据,还自带挑重点、容忍缺失值的本事。但它太聪明,金融噪声大时容易把噪声也当规律背下来,所以未必比简单模型强。

标准答案

核心优势

  1. 天然处理非线性和交互:树模型自动捕捉因子间的非线性关系和交互效应;
  2. 对异常值鲁棒:基于排序分裂,不受因子分布影响;
  3. 特征重要性:内置特征选择,直接看哪些因子有用;
  4. 缺失值处理:原生支持缺失值;
  5. 训练效率高:GPU 加速,大规模因子矩阵可快速训练。

量化中的关键调参

  • max_depth:3–7 即可,太深容易过拟合;
  • learning_rate:0.01–0.1,配合较多的 n_estimators
  • subsample / colsample_bytree:0.5–0.8,增加随机性;
  • min_child_weight:防止拟合噪声。

注意:树模型在量化中的表现上限可能不如线性模型——因为金融数据信噪比极低,复杂模型更容易拟合噪声。实际中线性模型 + 好因子常常比复杂模型 + 普通因子更稳定。

🔬 深度拓展:为何流行、为何金融里上限可能不如线性、关键调参的物理直觉

1. GBDT 在做什么? 梯度提升把预测写成一堆树的加法模型 $F_M(x)=\sum_{m=1}^{M}\nu\, h_m(x)$,每棵新树 $h_m$ 去拟合当前损失的负梯度(伪残差),$\nu$ 是学习率。XGBoost 进一步用二阶泰勒展开 + 显式正则项作分裂,LightGBM 用直方图 + leaf-wise 生长 + GOSS 采样把它做快。它流行的本质:对表格型、特征量纲混杂、含交互与缺失的数据,开箱即用且很难调坏——这恰是因子矩阵的常态。

2. 为什么金融里上限可能不如线性? 三个理由扣回"低信噪比":

  • 树容易把噪声当信号:树能逼近任意复杂函数,自由度太高,在 $R^2$ 只有 1% 的数据上极易过拟合,OOS 衰减剧烈;
  • 金融 alpha 的真实结构常常近似线性 / 单调:因子与收益多是弱单调关系,线性模型的强先验("就是一条线")本身是一种正则,反而稳;
  • 外推能力差:树只能输出训练时见过的分裂区间的均值,遇到分布漂移(新的市场状态)无法外推,而线性模型能延伸。

3. 关键调参的直觉(都在压方差)。

参数调它等于在控制什么
max_depth / num_leaves单棵树能表达的交互阶数;浅树 = 强偏差弱方差,金融偏浅
learning_rate × n_estimators小步多走 → 平滑、抗噪;二者大致成反比,配早停用
subsample / colsample行/列采样注入随机性,降相关、降方差(类 Bagging)
min_child_weight / min_data_in_leaf叶子最小样本/权重,太小的叶子=记住噪声,调大更稳
reg_lambda / reg_alpha叶子权重的 L2/L1,直接惩罚复杂度
🎯 面试追问演练

问:"XGBoost 怎么处理缺失值?"
答:为每个分裂学一个默认方向,缺失样本统一走该方向;金融里缺失常有含义(如某因子停更),别随便填均值。

问:"特征重要性能直接当因子有效性吗?"
答:不能。split/gain importance 对高基数特征有偏,且会因共线性"抢功劳"。更稳的是 SHAP + OOS 的 IC 验证。

问:"LightGBM 比 XGBoost 快在哪?"
答:直方图分裂 + leaf-wise 生长 + GOSS(保留大梯度样本、对小梯度样本采样)+ EFB 特征捆绑。

Q45特征工程在量化 ML 中有哪些关键技巧?
🌱 大白话先懂

喂给模型的"线索"就叫特征,特征工程就是把原始数据加工成更好用的线索(比如排名、近期平均值)。最重要的一条铁律:做预测的那一刻,你必须真能拿到这个线索。要是偷偷用了"未来才知道的事",等于穿越作弊——回测好看,实盘崩盘。

标准答案

技巧描述原因
截面排序 / z-score每个截面时间点标准化消除时间趋势,保留截面排序信息
滞后特征feature_lag1, feature_lag5捕捉因子动量或反转
滚动统计量均值、标准差、偏度、峰度捕捉分布特征的时变性
交互特征因子A × 因子B捕捉条件效应(如"价值+动量"联合信号)
分位数编码连续值 → 分位数桶减少异常值影响,对树模型可提升稳定性
目标编码的陷阱不可对测试集做全局编码信息泄漏的常见来源

最重要的原则:每个特征必须在预测时刻(point-in-time)确实可以获得。回测中使用了未来信息的特征工程是最隐蔽的前视偏差

🔬 深度拓展:point-in-time 原则、目标编码泄漏陷阱、截面标准化 vs 时序标准化

1. point-in-time(PIT)到底防什么? 财报、分析师预期、指数成分、复权因子都会事后被修订。如果你用"今天数据库里这条记录"去回测三年前,那就用到了三年前根本拿不到的修订值——这是最隐蔽的前视偏差,因为代码完全没 bug。正确做法是建 PIT 数据库:每条记录带一个 knowledge_date / 可用时间,回测在 $t$ 时刻只读 知道时间 ≤ t 的版本。典型例子:财报"报告期"是 Q1,但"发布日"可能晚 45 天,特征必须挂在发布日而非报告期。

2. 目标编码(target encoding)为什么是泄漏重灾区。 目标编码用"该类别下 $y$ 的均值"替代类别。如果用全样本算这个均值,每个样本的特征里就掺进了自己标签的信息(自己泄漏给自己),CV 虚高、上线归零。正确做法:

  • 只用训练集算编码,对测试集 transform(fit 在训练、transform 在测试);
  • 训练集内部用 out-of-fold 编码(K 折,每折用其余折算均值),避免折内自泄漏;
  • 金融时序里更要保证编码只用过去的标签(expanding mean),不能用未来。

3. 截面标准化 vs 时序标准化——别用错。

截面(cross-sectional)时序(time-series)
沿哪个维度归一同一时刻、所有股票之间同一只股票、沿时间
消除什么市场整体的时间趋势 / beta该资产自身的量纲与漂移
有无泄漏风险无(只用当期截面)✅有!必须用滚动窗口,禁用全样本均值方差 ⚠️
典型用途多因子选股打分(排序)单资产时序预测、波动归一

选股里几乎都用截面标准化(因为我们要的是同一时刻股票间的相对强弱,且天然无泄漏);时序标准化一旦用了未来均值/方差就泄漏,必须改成 rolling z-score。

🎯 面试追问演练

问:"截面标准化前要不要去极值?"
答:要。先 winsorize / MAD 截尾再标准化,否则一个异常值会把整个截面的均值方差带偏。

问:"滚动窗口 z-score 的窗口怎么定?"
答:权衡——窗口短适应快但噪声大,窗口长平稳但滞后;常用 60/120/252 日并做稳健性检验。

深度学习(Q46–Q49)

Q46RNN / LSTM / Transformer 在量化时间序列预测中各自的优劣?
🌱 大白话先懂

这三个都是处理"有先后顺序的数据"(比如每天股价)的神经网络。RNN 像金鱼,记性短,太久之前的事就忘了;LSTM 给它配了个"记事本",能记长一点;Transformer 更狠,能一眼扫完整段历史、还自动判断哪段最重要。但越复杂越吃数据,金融噪声大时反而容易翻车。

标准答案

模型优势劣势量化适用
RNN简单、参数少梯度消失、长程依赖弱基本淘汰
LSTM门控机制解决长程依赖串行计算慢,超参敏感中频时序预测
GRU比 LSTM 简化、参数更少能力略弱于 LSTMLSTM 的轻量替代
Transformer并行计算、全局注意力对位置敏感,数据需求大多因子截面学习,注意力权重可解释
Temporal Fusion Transformer专为时序设计,内置变量选择复杂度高多变量时序 + 可解释性需求

实践建议:不要迷信模型复杂度。在低信噪比的金融数据中,简单 LSTM 配合好的特征工程和正则化,常常优于 Transformer。

🔬 深度拓展:梯度消失的数学、LSTM 门控机制、注意力为何能并行、低信噪比下的克制

1. 梯度消失/爆炸为什么发生? 朴素 RNN 的隐状态 $h_t = \tanh(W h_{t-1} + U x_t)$。反向传播经过 $T$ 步时,梯度里会出现连乘 $\prod_{k} W^\top \,\text{diag}\big(\tanh'(\cdot)\big)$。这个连乘的量级大致由 $W$ 的谱半径(最大特征值)$\lambda$ 决定:$\lambda \lt 1$ 则梯度 $\sim \lambda^T \to 0$(消失,学不到长程依赖),$\lambda \gt 1$ 则 $\to \infty$(爆炸)。这是 RNN 学不会长记忆的根因。

2. LSTM 门控如何破解。 LSTM 引入一条细胞状态 $C_t$,更新是加法而非反复矩阵相乘:

$$C_t = f_t \odot C_{t-1} + i_t \odot \tilde C_t$$

其中遗忘门 $f_t=\sigma(\cdot)$、输入门 $i_t=\sigma(\cdot)$、输出门 $o_t=\sigma(\cdot)$。梯度沿 $C_t$ 回传时主要乘以 $f_t$(接近 1 时形成"常数误差传送带"),避免了连乘塌缩——这就是它能记住长程依赖的关键。GRU 把三门并成两门(更新门 + 重置门),参数更少、训练更快。

3. 注意力为什么能并行,RNN 为什么不能。 RNN 的 $h_t$ 依赖 $h_{t-1}$,必须按时间步串行。自注意力直接对所有位置算两两关系:

$$\text{Attn}(Q,K,V)=\text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V$$

所有位置的 $Q,K,V$ 可一次性矩阵乘出来,没有时间方向的依赖链,所以能在 GPU 上完全并行;代价是复杂度 $O(T^2)$ 且本身不含顺序信息,必须额外加位置编码。

⚠️ 低信噪比下的克制

Transformer 数据需求大、参数多,在 $R^2 \approx 1\%$ 的金融数据上极易过拟合。经验上:先把特征工程、标签设计、正则化做扎实,再考虑复杂模型;很多时候简单 LSTM / 甚至线性模型 + 好因子就打败了堆叠 Transformer。别用模型复杂度掩盖信号本身的稀薄。

🎯 面试追问演练

问:"残差连接、LayerNorm 为什么对深层 Transformer 重要?"
答:残差给梯度一条恒等捷径缓解消失;LayerNorm 稳定每层分布、加速收敛。

问:"金融里位置编码用哪种?"
答:正弦或可学习位置编码都行;时序更关心相对位置,相对位置编码 / 旋转位置编码(RoPE)往往更合适。

Q47AutoEncoder 和 VAE 在量化中有什么用?
🌱 大白话先懂

AutoEncoder 先把一堆数据压缩成几个核心数字(像把长文章缩成摘要),再尝试还原回去。要是某条数据怎么都还原不像,就说明它很"怪",可以拿来抓异常行情。VAE 是升级版,不仅会压缩,还能照着学到的规律"无中生有"造出新的仿真数据。

标准答案

AutoEncoder(AE)

$$\text{Input} \xrightarrow{\text{Encoder}} \text{Latent} \xrightarrow{\text{Decoder}} \text{Reconstruction}$$

量化应用

  • 因子降维:从上百个原始因子中提取非线性压缩表示;
  • 异常检测:重建误差大的样本可能是异常行情;
  • 缺失值填充:用训练好的 AE 重建缺失的因子值。

VAE(变分自编码器):在 AE 基础上引入概率,latent space 是参数化的高斯分布:$q(z\mid x) \sim N(\mu, \sigma^2)$。

额外能力

  • 生成合成金融数据(数据增强);
  • 对市场状态的不确定性建模;
  • 更平滑的 latent space 有利于下游任务。
🔬 深度拓展:重建误差做异常检测的判据、VAE 的概率 latent 与 ELBO、为何能生成

1. 重建误差为何能检测异常。 AE 在"正常"数据上训练,学到的是正常样本所在的低维流形。对正常样本,它能很好地压缩-重建,误差 $\lVert x - \hat x\rVert^2$ 小;遇到结构罕见的样本(如极端行情、数据异常),落在流形之外,重建误差陡增。实操判据:把训练集重建误差的分布取一个高分位(如 99%)作阈值,超过即报警;金融里常用于检测异常行情、坏数据、流动性骤变。

2. VAE 的概率 latent 与 ELBO。 普通 AE 的 latent 是一个确定向量,空间可能"坑坑洼洼"(采样会解码出乱码)。VAE 让编码器输出一个分布 $q_\phi(z\mid x)=N(\mu,\sigma^2)$,并优化证据下界(ELBO):

$$\mathcal{L} = \underbrace{\mathbb{E}_{q_\phi(z\mid x)}[\log p_\theta(x\mid z)]}_{\text{重建项}} - \underbrace{D_{\text{KL}}\big(q_\phi(z\mid x)\,\Vert\,p(z)\big)}_{\text{正则项: 向先验 }N(0,I)\text{ 靠}}$$

KL 项把 latent 拉向标准正态先验,使空间连续、平滑、可采样。训练时用重参数化技巧 $z=\mu+\sigma\odot\epsilon,\ \epsilon\sim N(0,I)$,把随机性挪到 $\epsilon$ 上,从而能对 $\mu,\sigma$ 求导、反向传播。

3. 为什么 VAE 能生成。 因为 latent 被约束接近 $N(0,I)$,生成时直接从先验采 $z$ 再解码即可得到合成样本——这正是 AE 做不到的(AE 的 latent 没有已知分布可采)。金融里可用于数据增强、市场状态不确定性建模;但要警惕:生成的收益序列必须验证统计特性(见 Q48),否则只是"看起来像"。

🎯 面试追问演练

问:"AE 降维和 PCA 区别?"
答:PCA 只能线性、找方差最大方向;AE 可非线性。但金融低信噪比下 AE 不一定赢,且 PCA 可解释性更好。

问:"VAE 后验坍塌(posterior collapse)是什么?"
答:KL 项把 $q(z\mid x)$ 压成先验导致 latent 不带信息,解码器无视 $z$。常用 KL 退火 / 自由比特缓解。

Q48GAN(生成对抗网络)在量化中有哪些应用?
🌱 大白话先懂

GAN 是让两个网络互相比拼:一个拼命造假数据,一个拼命鉴别真假,你来我往越练越强,最后造出的假数据以假乱真。量化里用它来"造"行情数据补充训练。难点是:金融数据"像不像"很难判断,必须检查它有没有真实市场的怪脾气(比如大跌之后往往更动荡)。

标准答案

金融数据生成

  • 生成合成的价格路径 / 收益率序列,用于扩充训练集;
  • 生成极端行情场景(压力测试);
  • 保护隐私的数据共享。

常用变体

  • TimeGAN:专门针对时间序列数据,保留时序依赖性;
  • WGAN-GP:训练更稳定,避免模式崩塌。

核心挑战

  • 评估生成质量困难——FID 等图像指标不直接适用;
  • 必须验证生成数据的统计特性(自相关、波动率聚集、厚尾、杠杆效应);
  • 用生成数据训练的模型,样本外表现仍需在真实数据上验证。
🔬 深度拓展:金融数据生成评估为何难——必须复刻的"风格化事实"清单

1. 为什么评估金融生成数据特别难? 图像有 FID/IS 这类感知指标,且"好看"人眼可判。金融收益序列没有现成的好/坏标尺,而且真正重要的是那些肉眼看不出的统计风格化事实(stylized facts)。一条生成序列的均值方差对了,仍可能完全错过真实市场的时序结构。必须逐项定量验证:

风格化事实含义怎么验证
收益近乎无自相关$\text{corr}(r_t, r_{t-k})\approx 0$(弱式有效)画收益的 ACF,应快速落入置信带
波动聚集大波动后跟大波动($|r_t|$ 长记忆)$|r_t|$ 或 $r_t^2$ 的 ACF 应缓慢衰减、长期为正
厚尾(leptokurtic)极端收益远比正态频繁,峰度 $\gt 3$样本峰度、QQ 图、尾部幂律指数
杠杆效应下跌后波动上升(负收益→高波动)$\text{corr}(r_t, \sigma_{t+k})\lt 0$ 应为负
聚合高斯性时间尺度拉长,分布趋向正态对比日/周/月收益的峰度递减

2. TimeGAN 为何被设计出来。 普通 GAN 只学边缘分布,常丢掉时序依赖。TimeGAN 在对抗损失外加一个监督损失(用真实序列教生成器"下一步该长什么样")+ 一个嵌入自编码器,专门保留逐步的时序条件分布,因此能更好复刻自相关与波动聚集。

3. WGAN-GP 解决什么。 原始 GAN 用 JS 散度,判别器太强时梯度消失、易模式崩塌(只生成几种样本)。WGAN 改用 Wasserstein 距离提供更平滑的梯度,GP(梯度惩罚)替代权重裁剪来满足 1-Lipschitz 约束,训练更稳。

⚠️ 终极检验

合成数据再逼真也只是训练增强。用合成数据训出的策略/模型,最终必须在真实历史的样本外段验证。否则你可能只是学会了在自己造的世界里赚钱。

🎯 面试追问演练

问:"怎么定量比较生成与真实分布?"
答:多尺度对比上表各统计量;用 train-on-synthetic-test-on-real(TSTR)下游任务表现作终极判据。

Q49图神经网络(GNN)在量化中的应用场景?
🌱 大白话先懂

股票之间有各种关系:上下游供货、同行业、互相影响……把它们用线连起来就是一张"关系网"。GNN 就是专门看这种网的模型,让每只股票参考"邻居"的情况来判断自己。难点是这张网会变——今天的供应商明天可能就换了,关系得不断更新。

标准答案

金融市场天然是图结构:股票之间通过产业链、股东关系、资金流、相关性等形成网络。

应用场景

  • 关联股预测:上下游公司的信息传导(供应链图谱);
  • 行业传导:行业龙头的涨跌对同行业/产业链的影响建模;
  • 风险传染:金融机构间的系统性风险传导;
  • 知识图谱因子:从企业关系图中提取因子(如"供应商动量"因子)。

常用模型:GCN、GAT(Graph Attention Network)、GraphSAGE。

关键难点:图结构本身是动态变化的(公司关系、股东结构会变),需要时序图网络(Temporal GNN)或定期更新图结构。

🔬 深度拓展:图从哪来、消息传递机制、动态图与关系泄漏的难点

1. 图结构的来源(边怎么定义)。 GNN 第一难、也是 alpha 的真正来源,是怎么造图

  • 产业链 / 供应链:上下游买卖关系(供应商动量、客户传导);
  • 股东 / 资本关系:共同大股东、母子公司、参股;
  • 相关性图:用收益相关系数建边(注意会随窗口变、且易泄漏);
  • 新闻共现 / 知识图谱:同一事件被同时提及的公司连边。

边的定义不同,模型学到的"传导"含义完全不同——造图本身就是特征工程。

2. 消息传递(message passing)一句话机制。 每个节点反复"聚合邻居信息 + 更新自身":

$$h_v^{(l+1)} = \sigma\!\Big(W^{(l)}\cdot \text{AGG}\big(\{h_u^{(l)} : u \in \mathcal{N}(v)\}\big)\Big)$$

GCN 用度归一化均值聚合;GAT 用注意力给不同邻居加权(自动判断哪个上下游更重要);GraphSAGE 对邻居采样 + 聚合,能 inductive 地泛化到训练时没见过的新节点(新上市公司)。

3. 动态图的难点。 真实关系随时间变(新增供应商、股东减持、相关性切换)。难点有三:

  • 图随时间演化:需要 Temporal GNN(如把 GNN + RNN/注意力沿时间堆叠),或定期重建快照;
  • 关系信息的 point-in-time:用"今天才公布"的股东关系去回测过去 = 前视偏差,边也必须 PIT;
  • 相关性图的泄漏:用未来收益算相关再连边会直接泄漏,相关性必须只用历史窗口估计。
🎯 面试追问演练

问:"GNN 层数为什么不能太深?"
答:过平滑(over-smoothing)——层数过多后所有节点表示趋同,区分度消失。金融图常 2–3 层够用。

问:"相关性建图最大的坑?"
答:泄漏(用未来算相关)+ 不稳定(相关性随市场状态突变);要滚动估计并做去噪(如随机矩阵理论 / 收缩估计)。

强化学习(Q50)

Q50强化学习(RL)在量化中的应用和挑战?
🌱 大白话先懂

强化学习就是让程序像打游戏一样,通过不断试错、拿"奖励"或"惩罚"来摸索最优操作。量化里最成功的是"怎么把一笔大单拆开慢慢卖、少惊动市场"。难点是金融数据太少、市场又老在变、奖励也难设计,所以拿它直接选股目前还不太靠谱。

标准答案

应用场景

  • 最优执行:将大单拆分为小单逐步执行,最小化冲击成本(Almgren-Chriss 的 RL 版本);
  • 动态组合管理:根据市场状态动态调整持仓,考虑交易成本;
  • 做市策略:动态调整报价价差和挂单量。

常用算法

  • PPO / A2C / SAC(连续动作空间,适合权重/价格决策);
  • DQN(离散动作空间,适合买/卖/持有决策)。

核心挑战

  1. 数据不足:金融数据的有效样本远少于游戏/机器人场景;
  2. 非平稳环境:市场结构持续变化,训练好的 agent 可能快速失效;
  3. 奖励设计困难:简单用 PnL 做 reward 会导致高方差;需要设计风险调整后的 reward;
  4. 模拟器偏差:回测模拟器无法完美还原真实市场的冲击和流动性;
  5. 可解释性差:策略决策过程不透明,难以获得风控信任。

实践建议:RL 在执行优化(Optimal Execution)中最为成熟,在 alpha 策略中仍处于研究阶段。

🔬 深度拓展:为何"最优执行"最成熟而 alpha 仍在研究、奖励设计/非平稳/模拟器偏差三难

1. 为什么最优执行是 RL 在量化里最成熟的场景? 把它对照 RL 成功的前提就懂了:

RL 成功需要最优执行(成熟 ✅)Alpha 策略(仍研究 ⚠️)
奖励清晰明确:相对 VWAP/TWAP 的执行成本,立即可测模糊:风险调整后收益,长期、高噪声
环境相对平稳分钟级微观结构在短时窗内较稳市场结构持续漂移,信号易失效
样本充足每天大量订单、tick 级数据有效独立样本极少(年化就几十个)
模拟器可信冲击模型 + LOB 可较好模拟难以模拟自身策略对未来价格的反馈

执行问题信噪比高、反馈快、可模拟,于是 RL 能学到东西;alpha 问题恰恰每一条都踩雷。

2. 奖励设计:为何不能直接用 PnL。 用单期 PnL 当 reward 会让 agent 学成"高波动赌徒"(PnL 方差巨大、信号被噪声淹没)。常见改良:用风险调整奖励,例如差分夏普(Differential Sharpe Ratio)、或在 reward 里显式扣交易成本与回撤惩罚

$$r_t = \Delta\text{PnL}_t - \lambda_{\text{risk}}\,\sigma_t - \lambda_{\text{cost}}\,|\Delta w_t|$$

3. 非平稳: RL 默认环境是固定 MDP,而市场的转移分布在变。训练期最优的策略,部署期可能因 regime 切换而失效。缓解:滚动重训、加入市场状态特征、用更鲁棒/保守的目标。

4. 模拟器偏差(sim-to-real gap): 最阴险的是反馈缺失——历史回放假设"我的下单不影响价格",但真实大单会推动价格、引来对手反应。模拟器越乐观,回测越虚高。执行场景靠成熟的市场冲击模型部分弥补,alpha 场景几乎无法可信模拟自身的市场影响。

🎯 面试追问演练

问:"为什么不直接拿 DQN 训选股?"
答:样本太少 + 非平稳 + 模拟器不可信 + 奖励高方差,极易过拟合历史;不如把 RL 限定在执行这类高信噪比子问题。

问:"on-policy(PPO)vs off-policy(SAC/DQN)在金融怎么选?"
答:金融数据贵,off-policy 样本利用率高更香;但 off-policy 在非平稳下更易被旧经验带偏,需谨慎管理 replay buffer。

实战问题(Q51–Q55)

Q51如何处理金融数据中标签(Label)不平衡的问题?
🌱 大白话先懂

预测涨跌时,绝大多数时候都是小打小闹(噪声),真正大涨大跌很少——这就叫"样本不平衡"。坏处是模型会偷懒:反正"几乎没动"占多数,它一律猜"没动"也能蒙对很多,却啥也没学到。常见对策是只挑涨得最猛、跌得最惨的来学,中间模糊地带直接扔掉。

标准答案

场景:预测涨跌时,实际中大量微小变动(噪声),真正大涨大跌是少数。

处理方法

  1. 标签重定义:不用涨跌,用超额收益分位数(Top 20% vs Bottom 20%,中间丢弃);
  2. 重采样:过采样少数类(SMOTE)或欠采样多数类;
  3. 损失函数加权class_weight='balanced' 或 Focal Loss;
  4. 评估指标:不用 Accuracy,用 AUC、Precision-Recall、IC 等。

量化特有考虑:金融中"不平衡"不一定是问题——中间区域的样本可能确实不包含有效信号,强行学习反而引入噪声。Triple-barrier 方法(López de Prado)通过止盈、止损、最长持有期三个条件定义标签,是更好的方案。

🔬 深度拓展:Triple-barrier 三重壁垒法详解 + 样本权重

1. Triple-barrier 在解决什么。 传统"固定持有 N 天看涨跌"的标签忽略了路径:可能中途已经暴跌触发止损,却被记成"N 天后上涨"。三重壁垒法模拟真实交易的离场规则,给每个入场点画三道线,谁先被触碰就用谁定标签:

价格
 ↑   ┌──────── 上壁垒(止盈, +profit)  → 触碰记 +1
 │   │
 ●───┼──────────────────────┐ 垂直壁垒(最长持有 T)
 入场│                       │  到期未碰水平线 → 记 0(或按收益符号)
 │   │
 │   └──────── 下壁垒(止损, -stop)   → 触碰记 -1
 └───────────────────────────────→ 时间
  • 上/下水平壁垒:止盈、止损线,常按波动率动态设定(如 $\pm k\cdot\sigma_t$),而非固定百分比——高波动期壁垒自动放宽;
  • 垂直壁垒:最长持有期 $T$,超时强制平仓,避免无限持有。

2. 为什么它天然缓解"不平衡"。 标签来自真实的、风险对称的离场逻辑,而不是把海量"几乎没动"的中间样本硬塞进涨/跌两类。中间噪声样本要么超时记 0、要么干脆按 meta-labeling 过滤,少数类不再是被淹没的零头。

3. 配套:样本唯一性权重。 因为不同入场点的持有区间会重叠(标签共用了同一段未来收益),样本并非独立。López de Prado 提出按标签重叠度给样本降权(uniqueness weight),重叠越多权重越低,避免重复信息让模型高估自信。

🎯 面试追问演练

问:"为什么慎用 SMOTE?"
答:SMOTE 在特征空间插值合成少数类,但金融时序有强序列相关,插值会造出不存在的、且可能泄漏的样本;优先用标签重定义 / 类权重。

问:"meta-labeling 是什么?"
答:第一层模型决定方向,第二层模型只判断"这个信号该不该下注/下多大",专门提升精确率、控制假阳性。

Q52如何在量化 ML 中防止信息泄漏?
🌱 大白话先懂

信息泄漏,就是模型偷偷用到了"预测那一刻根本拿不到的未来信息",于是回测(模拟考试)成绩漂亮得吓人,一上实盘立刻现原形——本质就是考前看了答案。防它的核心一招:所有数据处理都只能"在训练数据上学规则,再原样套到测试数据上",绝不能拿全部数据一起算。

标准答案

常见泄漏来源

  1. 特征泄漏:使用了包含未来信息的因子(如未来才发布的财报数据);用全局统计量做标准化(应该用历史窗口内的统计量)。
  2. 标签泄漏:收益率标签与特征时间窗口重叠。例:用 t-20 到 t 天的均值预测 t 到 t+5 的收益,但 t-20 到 t 已包含了部分 t+5 的信息。
  3. 验证泄漏:用未来数据调参(如用整个时期做网格搜索选最优参数);K-Fold 未保持时序。
  4. 数据处理泄漏:先做全局 PCA 再划分训练/测试集;缺失值用全局均值填充。

防御清单

  • 所有数据处理管道必须在训练集上 fit,在测试集上 transform
  • 建立 point-in-time 数据库,每条数据标注其可用时间;
  • sklearn.pipeline.Pipeline 封装所有预处理步骤。
🔬 深度拓展:四类泄漏各一个真实例子 + Pipeline fit/transform 纪律

四类泄漏,各一个"看不出 bug 但已作弊"的例子:

类型真实例子后果 / 修法
① 特征泄漏用财报"报告期"对齐特征,但财报实际发布晚 45 天;回测在报告期就用上了 → 提前知道业绩发布日对齐,建 PIT 库
② 标签泄漏特征用 t-20→t 的均值,标签是 t→t+5 收益;CV 随机划分使训练样本与测试标签时段重叠Purged K-Fold + Embargo(见 Q43)
③ 验证泄漏全历史上网格搜索选超参,再"回测"同一段;超参已偷看未来调参只在训练段做时序 CV,OOS 段完全隔离
④ 数据处理泄漏先对全数据集做 PCA / StandardScaler / 缺失值填均值,再切训练测试;统计量含了测试集信息所有 fit 只在训练集

Pipeline 纪律:为什么必须 fit 在训练、transform 在测试。 任何"学了参数"的预处理(标准化的均值方差、PCA 的主成分、目标编码的类均值、缺失填充值、分箱边界……)都只能从训练集学,否则测试集信息回流到训练。手工分步极易在某一步漏掉这条纪律,所以用 Pipeline 把预处理 + 模型打包,让 CV 在每个 fold 内部自动重新 fit:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import Ridge

pipe = Pipeline([
    ("scaler", StandardScaler()),   # fit 只发生在训练 fold
    ("pca", PCA(n_components=10)),   # 主成分也只从训练 fold 学
    ("model", Ridge(alpha=1.0)),
])
# 配合时序 CV: 每个 fold 内部自动 fit_transform(训练) + transform(测试)
# from sklearn.model_selection import TimeSeriesSplit
# cross_val_score(pipe, X, y, cv=TimeSeriesSplit(5))
⚠️ 泄漏的信号

CV/回测分数好得不真实(夏普 5+、IC 0.3+)、且无法在最新数据上复现 —— 几乎一定有泄漏。先怀疑泄漏,再怀疑模型。

Q53解释 Attention 机制在多因子选股中的应用
🌱 大白话先懂

传统选股给每个指标(因子)固定的权重。Attention(注意力)机制让模型学会"看情况分配注意力":不同股票、不同行情下,自动多看重要的因子、少看没用的。好处是还能看出模型在关注谁。但它太灵活,金融噪声大时很容易过拟合,得配上强约束和大量数据。

标准答案

传统多因子模型对所有因子等权或固定权重组合,Attention 机制允许模型动态地针对不同股票和不同时期为因子分配不同权重。

具体做法

输入:N只股票 × K个因子 × T个时间步
               ↓
   时间维度 Attention:关注哪些历史时刻更重要
               ↓
   因子维度 Attention:关注哪些因子在当前市场环境下更有效
               ↓
   输出:每只股票的预测收益率 / 排序分数

优势

  • 自动实现"因子择时"——在不同市场状态下侧重不同因子;
  • Attention 权重提供可解释性——可以看到模型关注了哪些因子;
  • Cross-Attention 可以捕捉股票之间的关联信息。

挑战:模型容易过拟合,需要较强的正则化和较大的样本量。

🔬 深度拓展:时间维 vs 因子维注意力的数学、"因子择时"的本质、可解释性的边界

1. 两个维度的注意力分别在算什么。 注意力本质是"算一组归一化权重,再做加权求和":

$$\alpha_i = \frac{\exp(e_i)}{\sum_j \exp(e_j)},\qquad \text{output} = \sum_i \alpha_i v_i$$

  • 时间维注意力:对一只股票的 $T$ 个历史时刻打权重 $\alpha_t$,让模型自己决定"最近 3 天更重要还是上个月那次财报更重要"——动态的、数据驱动的滞后选择,替代手工设 lag。
  • 因子维注意力:对 $K$ 个因子打权重 $\alpha_k$,在不同市场状态下放大有效因子、抑制失效因子。

2. 为什么这等价于"因子择时"。 传统多因子是静态权重 $\hat r = \sum_k w_k f_k$,$w_k$ 全样本固定。因子注意力让权重变成依赖当前状态的函数 $w_k = \alpha_k(\text{context})$:牛市放大动量、震荡市放大反转、危机期放大质量/低波。模型自动学会"什么时候信哪个因子",这正是因子择时的核心诉求,只是用数据端到端地实现了它。

3. 可解释性的真实边界。 注意力权重确实能可视化"模型关注了谁",但要诚实:

  • 注意力权重不等于因果重要性——学界对"attention 是否可解释"有争议,高权重未必是真正驱动预测的变量;
  • 权重可能不稳定,换个随机种子就变;
  • 它是叙事辅助,不能替代严格的因子归因(如 SHAP、剔除实验)。
⚠️ 过拟合警告

注意力参数多、表达力强,在 $R^2 \approx 1\%$ 的截面数据上极易过拟合出"看起来很合理"的择时。必须强正则 + 大样本 + 严格 OOS(Purged CV)验证,否则它学的可能只是噪声的择时。

🎯 面试追问演练

问:"和直接用市场状态变量交叉因子有何区别?"
答:本质相通——都是让因子权重随状态变;注意力是用数据自动学权重函数,手工交叉是用先验指定。低信噪比下后者常更稳。

Q54量化中的集成学习(Ensemble Learning)策略有哪些?
🌱 大白话先懂

集成学习就是"三个臭皮匠顶个诸葛亮",把好几个模型的预测综合起来用。有一点反直觉:它主要不是让你预测得更准,而是让结果更稳、不忽上忽下(降低波动)。在噪声巨大的金融市场里,"稳"往往比"准"更值钱。诀窍是让几个模型尽量不一样、别一起犯同样的错。

标准答案

方法原理量化应用
Bagging多个模型在不同子样本上训练,平均预测随机森林做因子打分
Boosting串行训练,每个模型修正前一个的残差XGBoost/LightGBM 因子选股
Stacking用元模型组合基模型的预测第一层多个异质模型,第二层线性组合
Blending简单加权平均多个模型的输出多策略信号等权/风险平价组合

量化中的特殊集成技巧

  • 时间集成:对不同时间窗口训练的模型取平均,增强稳定性;
  • 因子集成:同一个 Alpha 逻辑,用多个模型(线性、树、NN)分别实现,取中位数信号;
  • 交叉验证集成:K 个 Fold 的模型全部保留,对新数据取 K 个预测的均值。

核心洞察:集成学习的价值不在于提高精度,而在于降低方差——在低信噪比的金融数据中,降低方差比提高精度更重要。

🔬 深度拓展:为何集成的价值在降方差——一个简单的方差公式

1. 用一行公式说清"为什么降方差"。 设 $M$ 个模型,每个预测方差 $\sigma^2$,两两相关系数为 $\rho$。等权平均后的方差是:

$$\text{Var}\!\left(\frac{1}{M}\sum_{i=1}^{M} \hat y_i\right) = \rho\,\sigma^2 + \frac{1-\rho}{M}\,\sigma^2$$

看这个式子能读出两件事:

  • 第二项 $\frac{1-\rho}{M}\sigma^2$ 随 $M\to\infty$ 趋于 0 —— 加更多模型能把"独立的"那部分方差抹平;
  • 但第一项 $\rho\sigma^2$ 是地板,降不下去。所以集成的关键不是堆数量,而是让基模型尽量低相关($\rho$ 小)

这解释了量化为何强调异质集成(线性 + 树 + NN):它们犯错的方式不同,$\rho$ 低,平均后方差大降;而堆 100 个超参微调的同款 XGBoost,$\rho\approx 1$,几乎白堆。

2. 为什么"降方差"比"提精度"在金融里更值钱。 回到 Q41 主线:金融信号 $\text{Var}(f)$ 本就微薄,单模型的预测方差却很大。集成几乎不改变 Bias(平均不会让你更准),但能显著压低预测方差 → 信号更稳、回撤更小、夏普更高。在 $R^2\approx 1\%$ 的世界里,"稳"就是收益

3. 三类技巧分别打哪个变量。

技巧降的是
异质模型集成(线性/树/NN)压低 $\rho$(错误不相关)
时间集成 / CV 集成增大有效 $M$、平滑单期噪声
取中位数而非均值对离群预测更鲁棒(抗厚尾)
🎯 面试追问演练

问:"Bagging 和 Boosting 谁降方差谁降偏差?"
答:Bagging 主降方差(并行、独立子样本平均);Boosting 主降偏差(串行拟合残差),但也更易过拟合,金融里要早停 + 强正则。

问:"Stacking 在金融的风险?"
答:元模型若在含未来信息的预测上训练会泄漏,必须用 out-of-fold 预测做二层输入;且二层模型要简单(如非负线性),否则又过拟合。

Q55大语言模型(LLM)在量化中有哪些应用?
🌱 大白话先懂

LLM 就是 ChatGPT 这类会读会写的 AI。量化里已经在用它读新闻和研报、判断情绪、抽取事件这些"文字活"。但它有两个大坑:一是会"一本正经地胡说"(幻觉),二是会"剧透"——用今天的 AI 去回测两年前的新闻,它可能早就知道后来涨跌了,这是看不见的作弊。

标准答案

已落地的应用

  • 新闻/公告情感分析:用 LLM 解析财报电话会议、新闻、社交媒体的情绪;
  • 事件提取:从非结构化文本中提取并购、高管变动、产品发布等事件;
  • 研报摘要与因子化:将卖方研报的观点量化为多空信号;
  • 代码辅助:加速策略开发、回测代码编写。

前沿探索

  • LLM 作为 Alpha 信号:直接让 LLM 根据新闻判断涨跌方向;
  • 多模态理解:结合文本、表格、图像(如 K 线图)的分析;
  • 策略推理:让 LLM 解释因子失效原因或生成交易假设。

关键限制

  • 推理成本高,实时交易中延迟大;
  • 幻觉问题——LLM 可能自信地给出错误的金融分析;
  • 训练数据截止日期导致的信息滞后;
  • 不适合需要精确数值计算的场景。
🔬 深度拓展:已落地 vs 前沿的分界线、幻觉/延迟/信息滞后/前视的工程化应对

1. 为什么"文本→特征"已落地,而"LLM 直接当 alpha"仍在前沿。 分界线在于LLM 被用在哪一环

  • 已落地:LLM 只做非结构化文本 → 结构化特征(情感分、事件标签、实体抽取),下游仍交给传统量化模型做预测与组合。LLM 在这里替代的是人工读研报/读新闻,价值确定、可验证、可回测。
  • 前沿/谨慎:让 LLM 直接输出涨跌方向或仓位。问题是它没有市场的因果模型、输出不稳定、且极难做无泄漏回测(见下)。

2. 四个限制的工程化应对。

限制本质应对
幻觉会自信地编造数字/事实RAG 接真实数据源、强制引用、结构化输出 + 校验、关键数值不让 LLM 算
延迟/成本大模型推理慢、贵低频/盘后用大模型抽特征;高频严禁在线路径调用;蒸馏成小模型
信息滞后训练截止日 + 不知道最新事件RAG 注入实时信息;别依赖模型"自带"的市场知识
前视/泄漏(回测特有)模型权重里已"知道"历史结局用"知识截止日早于回测期"的模型;或只用其文本理解能力而非记忆,且分时点严格 PIT 喂数据
⚠️ LLM 回测的隐形前视偏差

用今天的 LLM 去"回测"两年前的新闻判断涨跌,模型可能早已在训练语料里见过那段时间的后续走势——这是一种几乎无法察觉的前视偏差。严肃做法是采用知识截止日早于回测起点的模型版本,或仅把 LLM 当作不带记忆的文本编码器。

🎯 面试追问演练

问:"为什么不让 LLM 直接做数值计算/组合优化?"
答:LLM 不擅长精确算术与约束优化,且不可复现;数值环节交给确定性求解器,LLM 只负责理解与抽取。

问:"LLM 情感因子怎么验证有效?"
答:把情感分当普通因子,做 IC / 分层回测 / 与现有因子正交化后看增量,严格 OOS——和任何因子一视同仁。