#018. 量化方向综合追问:从估计到风险控制
#学习目标:把公式接到交易决策
1. 看懂追问在问什么
量化追问很少只考“会不会写公式”。它通常在问:这个估计值可信吗、误差从哪里来、误差会怎样传导到仓位、风险和上线决策。
2. 能从零解释符号
遇到 \(y=X\beta+\varepsilon\)、\(\Sigma\)、\(SR\)、\(VaR\)、\(p\)-value 时,要能说明每个量在策略研究里对应什么数据对象,而不是只背数学定义。
3. 能完成手算例子
面试里常见的是小矩阵、小样本、小收益序列。你需要把每一步算清楚:为什么这样代入、单位是什么、结果如何影响策略判断。
4. 能说出边界条件
同一个公式在理想假设下成立,在真实市场里会被异方差、相关性、成本、容量、非平稳和多重检验破坏。本章的重点是把这些边界说清楚。
- 你应该能解释 OLS 中“点估计还能用”和“标准误已经坏了”的区别。
- 你应该能说明协方差 shrinkage 为什么是用偏差换方差,而不是神奇地提高预测能力。
- 你应该能判断 PCA 因子什么时候只是噪声方向,什么时候可能是稳定风险因子。
- 你应该能把 Sharpe、t-stat、样本长度、自相关和回测显著性连起来。
- 你应该能把 VaR/CVaR、成本、容量、样本外验证、非平稳、多重检验放进一个上线前检查框架。
#概念起点:估计、预测、组合与风控
量化研究的数学链路可以先粗略理解成四步:先从历史数据估计规律,再用规律预测未来收益或风险,然后把预测变成仓位,最后用风控和交易约束限制损失。公式不是孤立存在的,每个公式都会进入这条链路。
第 \(t\) 天或第 \(t\) 个周期的策略收益。若账户从 100 变到 101,简单收益是 \(r=1\%\)。量化指标多数最终都基于一串 \(r_1,r_2,\ldots,r_n\)。
每一行通常是一只股票、一个时间点或一个样本;每一列是一个因子或特征,例如估值、动量、波动率、行业暴露。
想解释或预测的对象,例如未来一天收益、未来一周超额收益、是否跑赢基准。OLS 中的 \(y=X\beta+\varepsilon\) 就是在问 \(X\) 能解释多少 \(y\)。
描述资产之间如何一起波动。组合风险常写成 \(w^T\Sigma w\),其中 \(w\) 是权重。协方差估错,会直接把组合权重带偏。
Sharpe、VaR、CVaR 都不是收益本身,而是在问“为了赚这些收益,你承担了多少波动或尾部损失”。
把一个策略想成一台机器:输入是历史价格、成交量、财报和因子;中间模型估计规律;输出是买卖和仓位。量化数学追问就是检查这台机器的零件:估计有没有偏、风险有没有漏、回测是不是只在历史噪声上调出来的。
| 面试官问法 | 真正想听什么 | 不要只回答什么 |
|---|---|---|
| 这个因子显著吗? | 显著性、样本外、成本后表现、是否数据挖掘。 | 只说 IC 或 t-stat 很高。 |
| 这个组合风险怎么估? | 协方差估计、正定性、稳定性、尾部风险、压力场景。 | 只写 \(w^T\Sigma w\)。 |
| 这个回测能上线吗? | 样本外、walk-forward、成本、容量、延迟、风控、监控。 | 只展示收益曲线。 |
| PCA 因子能解释什么? | 共同波动方向、eigengap、稳定性、经济解释。 | 只说第一主成分解释方差最大。 |
#追问 1:OLS 假设到底保证什么
线性模型 \(y=X\beta+\varepsilon\) 中,OLS 解为 \(\hat\beta=(X^TX)^{-1}X^Ty\)。如果误差存在异方差,OLS 还能不能用?它会坏在哪里?
先解释符号。\(y\) 是你要解释的结果,例如未来收益;\(X\) 是特征矩阵,例如价值、动量、规模等因子;\(\beta\) 是每个因子的线性权重;\(\varepsilon\) 是模型没解释掉的误差。
OLS 的点估计来自最小化平方残差,也就是让预测值 \(X\beta\) 尽量接近真实 \(y\):
对目标函数求导。平方残差是 \((y-X\beta)^T(y-X\beta)\),对 \(\beta\) 求导并令其为 0:
整理得到正规方程:
如果 \(X^TX\) 可逆,就得到:
现在看异方差。异方差是说误差的方差不是常数,例如小盘股收益误差更大、大盘股误差更小。形式上可以写成 \(\operatorname{Var}(\varepsilon_i\mid X)=\sigma_i^2\),不同样本 \(i\) 的 \(\sigma_i^2\) 不一样。
如果满足外生性 \(E[\varepsilon\mid X]=0\),即误差没有系统性地跟特征 \(X\) 相关,即使误差异方差,\(\hat\beta\) 的方向通常仍然可以是无偏或一致的。坏掉的是经典标准误,因为经典公式依赖同方差:
异方差时,真实方差应该包含每个样本自己的误差方差。更一般地写成:
这里 \(\Omega=\operatorname{Var}(\varepsilon\mid X)\)。如果同方差,\(\Omega=\sigma^2I\),它会退化成经典公式;如果异方差,不能再把它简化成 \(\sigma^2(X^TX)^{-1}\)。所以问题不是“系数一定不能算”,而是“你对系数显著性的信心可能算错”。
金融数据里波动聚集很常见。OLS 系数看起来还能算出来,但“这个因子显著吗”的置信判断可能已经坏了。面试里要区分点估计和不确定性估计:前者回答因子方向,后者回答这个方向是不是可靠。
假设只有一个因子 \(x\),且已经做过中心化,所以 \(\bar x=0\)、\(\bar y=0\)。三天数据为 \(x=(-1,0,1)\),未来收益 \(y=(-0.02,0.00,0.03)\)。求 OLS 斜率。
一元中心化 OLS 的斜率是:
分子表示因子和未来收益的共同变化:
分母表示因子自己的波动大小:
所以:
解释成交易语言:因子 \(x\) 每增加 1 个单位,模型预计未来收益增加约 \(2.5\%\)。但这个例子只有 3 个样本,不能据此说因子可靠;它只是说明系数的计算和经济含义。
常见误区:异方差等于 OLS 无效
不一定。若外生性成立,点估计仍可能一致;真正立即受伤的是标准误、t-stat 和置信区间。
常见误区:t-stat 高就能交易
t-stat 只说明历史样本中估计较稳定,还要看交易成本、换手、容量、样本外、风格暴露和多重检验。
面试补一句
“我会先检查外生性和残差结构;如果异方差明显,会报告 robust standard error,必要时用加权最小二乘或重新建模波动。”
#追问 2:协方差估计为什么要 shrinkage
协方差矩阵 \(\Sigma\) 描述资产之间一起涨跌的关系。组合权重是 \(w\) 时,组合方差是:
这条公式非常重要,因为优化器会根据 \(\Sigma\) 决定“哪些资产可以一起买、哪些风险会相互抵消”。如果 \(\Sigma\) 的非对角项被噪声夸大,优化器可能给出极端权重;如果 \(\Sigma\) 不是正定矩阵,优化问题甚至会出现数值问题。
样本协方差为 \(S=\begin{bmatrix}0.04&0.036\\0.036&0.04\end{bmatrix}\),目标矩阵取对角矩阵 \(F=\begin{bmatrix}0.04&0\\0&0.04\end{bmatrix}\)。若 shrinkage 强度 \(\lambda=0.5\),求 \(\Sigma=(1-\lambda)S+\lambda F\),并解释它的意义。
先看符号。\(S\) 是样本协方差,直接从历史数据算;\(F\) 是更简单、更稳定的目标结构,这里假设资产之间没有相关性,只保留各自方差;\(\lambda\) 是收缩强度,越大越相信目标矩阵,越小越相信样本矩阵。
代入公式:
对角线保持不变,非对角协方差从 \(0.036\) 被拉到 \(0.018\)。这相当于承认样本相关性可能被噪声夸大,把估计往更稳定、更保守的结构拉回去。
协方差矩阵是组合优化的核心输入,但它通常很难估准。均值估错会影响收益预期,协方差估错会直接改变权重和风险。shrinkage 的思想是用一点偏差换更低方差。
两个资产等权,\(w=(0.5,0.5)^T\)。比较原始样本协方差 \(S\) 和 shrinkage 后 \(\Sigma\) 下的组合波动。
原始样本矩阵下:
组合波动是 \(\sqrt{0.038}\approx19.5\%\)。shrinkage 后:
组合波动是 \(\sqrt{0.029}\approx17.0\%\)。这里风险估计下降,是因为两个资产之间的相关性被拉低了。真实研究里不应该机械地希望风险下降,而要问 shrinkage 是否让估计更稳定、样本外风险预测更准。
为什么不是直接用样本协方差
资产数量多、历史窗口短时,样本协方差参数很多,很容易估出噪声相关性。优化器会放大这些噪声。
目标矩阵可以是什么
可以是对角矩阵、常相关结构、因子模型协方差,或者其他有经济含义的低维结构。
面试回答边界
shrinkage 不是让矩阵“更真实”,而是在有限样本下追求更好的样本外风险预测和更稳定的优化权重。
#追问 3:PCA 因子为什么会不稳定
PCA 的目标是从协方差矩阵里找“最大共同波动方向”。如果把股票收益看成很多维向量,第一主成分就是历史上解释方差最多的方向。数学上它来自特征分解:
\(v_i\) 是方向,\(\lambda_i\) 是这个方向上的方差大小。量化里常把前几个主成分当作统计风险因子,但这一步有风险:解释方差最大,不等于有稳定经济含义,也不等于未来还稳定。
二维协方差矩阵 \(\Sigma=\begin{bmatrix}1&\rho\\ \rho&1\end{bmatrix}\)。求特征值,并解释为什么当 \(\rho\) 很小时 PCA 方向容易不稳定。
这个矩阵表示两个资产方差都是 1,相关程度由 \(\rho\) 控制。求特征值时解:
也就是:
所以:
特征向量 \((1,1)^T\) 对应特征值 \(1+\rho\),特征向量 \((1,-1)^T\) 对应特征值 \(1-\rho\)。eigengap 是:
当 \(\rho\) 很小,两个特征值非常接近,数据里的微小噪声就可能改变“第一主成分”的方向。此时 PCA 给出的主方向看似精确,其实统计上很脆弱。
PCA 因子不是天然有经济含义。只有当主特征值明显大、跨样本稳定,并且能解释可重复的共同波动时,才更值得被当作风险因子。
若 \(\rho=0.02\),两个特征值分别是多少?如果样本噪声造成协方差估计误差约为 \(0.03\),你会怎样评价 PCA 因子的可靠性?
特征值为:
eigengap 是:
如果协方差估计噪声大约是 \(0.03\),它已经接近 eigengap。此时第一主成分比第二主成分多解释的方差很少,噪声足以改变排序或旋转方向。面试回答不能说“PCA 自动找到了市场因子”,更谨慎的说法是“当前样本中存在一个略强的共同波动方向,但需要用滚动窗口、样本外和经济解释验证稳定性”。
- 做 PCA 前要问是否中心化、是否标准化;不标准化时,高波动资产可能主导第一主成分。
- 要看前几个特征值之间的 gap;gap 小时,方向容易被噪声扰动。
- 要做滚动窗口稳定性检查;如果主成分暴露频繁翻转,就不适合作为稳定风险因子。
- 要区分统计因子和经济因子;统计解释方差高,不代表能赚钱或有可解释风险来源。
#追问 4:Sharpe 与显著性怎么算
Sharpe Ratio 衡量单位波动下的平均超额收益。最基础形式是:
如果讨论日收益,并且无风险利率可忽略,常简化为 \(\bar r/s\)。其中 \(\bar r\) 是样本平均日收益,\(s\) 是样本日波动。
一个策略日均收益 \(0.001\),日波动 \(0.02\)。求日 Sharpe、年化 Sharpe,并估算 252 天样本下均值大于 0 的 t-stat。
日 Sharpe:
若假设独立同分布,年化 Sharpe 约为:
252 天样本下,均值的 t-stat 约为:
这并不是很强的显著性证据。即使年化 Sharpe 看起来接近 0.8,一年样本也很容易只是噪声。
Sharpe 年化依赖独立同分布、无强自相关、波动稳定等假设。真实策略还要考虑交易成本、容量、换手、尾部损失和样本外表现。
两个策略日 Sharpe 都是 \(0.05\)。A 只有 252 天样本,B 有 1008 天样本。忽略自相关时,比较均值大于 0 的 t-stat。
t-stat 近似为:
A 的样本长度 \(n=252\):
B 的样本长度 \(n=1008\):
同样的日 Sharpe,样本越长,均值估计越稳定。但 \(1.59\) 也还不是特别强的证据。面试里要强调:Sharpe 的大小和 Sharpe 的可信度不是一回事。
某日频策略有平滑收益,今天收益和昨天收益正相关。为什么不能简单用 \(SR_d\sqrt{252}\)?
\(\sqrt{252}\) 年化隐含假设是日收益近似独立。如果收益有正自相关,很多天的收益不是 252 个独立观察,而像更少个有效观察。均值的不确定性会比独立假设更大。
直觉上,假设连续几天收益都由同一个慢变量驱动,那么 5 天收益不能当成 5 条全新的证据。此时直接年化会高估显著性。实际研究中会用 Newey-West 标准误、block bootstrap 或按交易周期重新聚合收益。
#追问 5:VaR 与 CVaR 如何解释尾部风险
Sharpe 主要看均值和波动,但很多策略真正危险的地方在尾部。VaR 和 CVaR 是面试里常被追问的尾部风险指标。
\(95\%\) VaR 可以理解成“在正常模型和历史分布下,最差 \(5\%\) 情况的门槛损失”。如果一天 \(95\%\) VaR 是 2 万,意思不是最多亏 2 万,而是约有 \(5\%\) 的日子亏损可能超过 2 万。
CVaR 也叫 Expected Shortfall,问的是“已经进入最差 \(5\%\) 情况后,平均亏多少”。它比 VaR 更关注尾部深处。
VaR 给尾部入口,CVaR 看尾部平均损失。一个策略可能 VaR 不高,但一旦穿过 VaR,亏损非常深,此时 CVaR 会暴露问题。
某策略 10 天损益从差到好排序为:\(-10,-6,-3,-2,-1,0,1,2,3,4\),单位为万元。用最差 20% 定义尾部,求 80% VaR 和 80% CVaR。
10 天里最差 20% 是最差的 2 天:\(-10\) 和 \(-6\)。如果用损失正数表示,它们对应亏损 10 万和 6 万。
80% VaR 是尾部入口。排序后第 2 个最差结果是 \(-6\),所以:
80% CVaR 是进入最差 20% 后的平均亏损:
解释:这个策略 80% VaR 是 6 万,表示约最差 20% 的日子会亏超过或接近 6 万;一旦进入这类尾部日,平均亏损约 8 万。
A 策略每天收益比较平滑,偶尔大亏;B 策略日常波动稍大,但没有极端亏损。它们 Sharpe 相同,你会怎么比较?
Sharpe 只用均值和标准差压缩收益分布,无法完整描述偏度、峰度和跳跃损失。若 A 的亏损集中在极端尾部,标准差可能没有充分惩罚“爆仓式”风险。
我会补充看最大回撤、VaR、CVaR、压力测试、单日和连续多日亏损分布,并检查尾部事件是否和流动性枯竭、拥挤交易、杠杆或保证金机制相关。上线时,A 可能需要更低杠杆、更严格止损或更小容量。
VaR 回答“尾部从哪里开始”,CVaR 回答“尾部里面平均有多痛”。如果只看 VaR,可能忽略超过门槛之后的损失深度。
#追问 6:交易成本、换手与容量
很多回测从毛收益开始,但真实上线看的是成本后收益。成本不是一个固定小数,它通常和换手、滑点、冲击成本、市场流动性和资金规模有关。
衡量仓位变化有多频繁。简单理解,今天从旧权重 \(w_{old}\) 调到新权重 \(w_{new}\),换手大约与 \(\sum_i |w_{new,i}-w_{old,i}|\) 有关。
佣金、税费、固定 bid-ask spread 可近似看成成交金额的线性比例,例如每换手 1 元成本 5 bps。
资金越大、成交越急,价格冲击越明显。容量问题通常来自非线性成本:规模扩大后,收益不按比例扩大,成本却可能更快上升。
某策略日均毛收益 \(0.08\%\),日波动 \(1.0\%\),每天单边换手 \(60\%\),单边交易成本 5 bps。忽略自相关,估算成本后日均收益和年化 Sharpe。
先统一单位。5 bps 等于 \(0.05\%\),也就是 \(0.0005\)。每天单边换手 \(60\%=0.6\)。日成本约为:
成本后日均收益:
成本后日 Sharpe:
年化 Sharpe:
如果不扣成本,日 Sharpe 是 \(0.0008/0.01=0.08\),年化约 \(1.27\)。成本把看起来不错的策略明显拉低。面试里要主动说“毛收益 Sharpe”和“成本后 Sharpe”必须分开。
策略在 1 亿资金下年化收益 12%,线性成本后还剩 10%。如果资金扩大到 10 亿,冲击成本每年额外增加 6%,策略是否还能按 10 倍规模上线?
1 亿时成本后收益约 10%。10 亿时,如果毛 alpha 没变,但额外冲击成本增加 6%,则成本后收益变为:
收益没有随资金线性扩张。更重要的是,冲击成本往往还会增加尾部风险:市场压力大时更难成交,止损和调仓可能变贵。容量评估不能只看小资金回测收益,要看成交量占比、订单参与率、滑点模型、极端日流动性和拥挤程度。
| 成本/容量问题 | 数学对象 | 策略行为含义 |
|---|---|---|
| 换手太高 | \(\sum_i |w_{t,i}-w_{t-1,i}|\) | 频繁调仓,毛 alpha 容易被成本吃掉。 |
| 滑点偏高 | 成交价与决策价差异 | 回测成交价过于理想,上线收益下降。 |
| 容量有限 | 成本随规模非线性增长 | 小资金有效,大资金后 alpha 衰减。 |
| 流动性尾部 | 压力日成交量下降、价差扩大 | 正常日成本可控,极端日无法退出。 |
#追问 7:样本外、非平稳与多重检验
回测过拟合的本质是:你在历史噪声中反复搜索,最后挑出了看起来最好的参数、因子或策略。单次检验的 \(p\)-value 不知道你试过多少次,所以会过度乐观。
如果你测试了 100 个互相独立、真实无效的策略,并用 \(p<0.05\) 作为显著标准,期望会看到几个“显著”的策略?这说明什么?
每个无效策略误报显著的概率是 5%。100 个策略下,假阳性的期望数量是:
所以你很可能在一堆无效策略中找到几个看似显著的结果。问题不在于单次检验公式错了,而在于你进行了多重搜索,却还用单次检验的阈值解释结果。
回测过拟合本质是“从噪声里挑赢家”。如果没有样本外、walk-forward、成本、容量和多重检验修正,漂亮的回测曲线经常只是搜索过程的产物。
你测试了 100 个策略,希望整体误报概率控制在 5%。若使用 Bonferroni 修正,单个策略的 \(p\)-value 阈值是多少?
Bonferroni 的想法很直接:如果做了 \(m\) 次检验,要把单次阈值降到 \(\alpha/m\)。这里 \(m=100\),整体 \(\alpha=0.05\),所以:
这意味着某个策略的 \(p=0.03\) 在单次检验里看似显著,但在你试了 100 个策略之后完全不够强。面试里可以说 Bonferroni 很保守,但它清楚表达了多重搜索会制造假阳性。
某因子在 2015-2020 年样本内年化 Sharpe 为 1.5,在 2021-2025 年样本外年化 Sharpe 为 0.1。你会直接说因子失效吗?
不能只给一个结论。合理拆解是:
- 先确认样本外是否按时间切分,避免未来数据泄露。
- 检查成本、换手、股票池、生存者偏差和停牌处理是否一致。
- 检查市场状态是否变化,例如流动性、监管、利率环境、行业结构、拥挤交易。
- 把样本外继续拆成滚动窗口,看是持续衰减还是少数极端阶段拖累。
如果样本内强、样本外接近 0,而且没有合理机制解释,优先怀疑过拟合或非平稳;如果某些市场状态下仍有效,可以考虑把它从单独 alpha 改成条件因子或风险监控信号。
把没有参与建模、调参、筛选的数据留到最后检验。它回答“这个规律是否能迁移到没见过的时间”。
用过去一段训练,下一段验证,再向前滚动。它更接近真实上线:模型只能用当时已经发生的数据。
市场分布会变。均值、波动、相关性、成交成本、参与者结构都可能变化,所以过去最优参数不一定未来最优。
试的因子越多,碰巧显著的概率越高。要报告试验次数、修正显著性、保留真正未触碰的测试集。
#面试回答模板与最后检查清单
量化综合追问的好答案通常遵循一个顺序:先定义对象,再写公式,再解释假设,然后说真实市场里会怎样坏,最后给验证和风控动作。不要一上来堆术语,也不要只给结论。
| 问题 | 回答时必须补的边界 | 为什么重要 |
|---|---|---|
| 这个因子显著吗? | 样本外、t-stat、换手、行业/风格暴露、数据挖掘次数。 | 避免把噪声因子当 alpha。 |
| 协方差矩阵怎么估? | 样本长度、非平稳、正定性、shrinkage、因子结构。 | 协方差直接决定组合风险和优化权重。 |
| PCA 因子是什么? | 中心化/标准化、eigengap、稳定性、经济解释。 | 主成分方向不等于可交易因子。 |
| Sharpe 高说明什么? | 样本长度、年化假设、自相关、尾部、成本和容量。 | 高 Sharpe 可能来自短样本或未计成本。 |
| VaR 够低说明安全吗? | CVaR、压力测试、分布假设、流动性尾部、杠杆。 | VaR 不描述超过门槛后的损失深度。 |
| 回测结果能上线吗? | 样本外、延迟、滑点、交易成本、风控、容量、监控。 | 回测通过只是研发入口,不是上线保证。 |
我不会只根据 Sharpe 1.8 决定上线。第一步先确认这个 Sharpe 是毛收益还是成本后收益,样本多长,是否用独立样本算出来。第二步看年化假设是否成立:如果收益有自相关或波动聚集,需要用稳健标准误或 bootstrap 重新估显著性。第三步看风险分布:除了均值和波动,还要看最大回撤、VaR、CVaR、极端日和压力场景。第四步看可交易性:换手、滑点、成交量占比和容量是否会吃掉 alpha。第五步看研究流程:是否做过多重检验,是否有真正样本外或 walk-forward,是否存在未来函数和生存者偏差。只有这些检查都通过,Sharpe 1.8 才是上线讨论的起点,而不是上线保证。
我会从四个方向排查。第一,统计显著不等于经济显著,系数可能很稳定但收益幅度不足以覆盖成本。第二,标准误可能低估了不确定性,例如异方差、自相关、行业聚类会让 t-stat 虚高。第三,样本内可能存在过拟合和多重检验,如果试了很多因子,单个高 t-stat 的可信度会下降。第四,回归信号到交易组合之间还有约束:换手、容量、风格暴露、风险模型和交易延迟都可能改变最终收益。所以我会重算 robust t-stat,做样本外和分时期检验,扣除成本后看组合级表现,而不是只看回归表。
回答结构 1:定义对象
先说清楚 \(y\)、\(X\)、\(\Sigma\)、收益、损失、样本、窗口分别是什么。对象不清楚,后面的公式没有意义。
回答结构 2:写出最小公式
只写必要公式,例如 \(\hat\beta=(X^TX)^{-1}X^Ty\)、\(w^T\Sigma w\)、\(SR=\bar r/s\)、\(CVaR=E[L\mid L\ge VaR]\)。
回答结构 3:说明假设
公式什么时候成立:独立同分布、同方差、平稳、正定、无自相关、成本模型准确、没有未来数据。
回答结构 4:落到动作
最后说你会怎么验证:robust standard error、shrinkage、滚动 PCA、样本外、walk-forward、成本后回测、压力测试。
最后检查清单
- 我是否区分了点估计、标准误和样本外表现?
- 我是否说明了公式中的每个符号对应什么交易数据?
- 我是否检查了异方差、自相关、非平稳和聚类相关?
- 我是否把协方差估计和最终组合权重、风险预算联系起来?
- 我是否检查了 PCA 的中心化、标准化、eigengap 和滚动稳定性?
- 我是否把 Sharpe 的大小和显著性分开讨论?
- 我是否看了 VaR 之外的 CVaR、最大回撤和压力测试?
- 我是否从毛收益扣到了成本后收益,并估计换手、滑点和容量?
- 我是否考虑了样本外、walk-forward 和多重检验修正?
- 我是否能把结论翻译成策略行为:降杠杆、限容量、降换手、加风控、拒绝上线或继续观察?