量化交易中文教材

第 20 章 非参数曲线估计

本章对应 Wasserman 原书第 20 章《Nonparametric Curve Estimation》。第 07 章说过,分布函数 \(F\) 不需要任何假设就能用经验分布函数相合地估计。但密度 \(f\) 和回归函数 \(r(x)=\mathbb E(Y\mid X=x)\) 不同:不加光滑性假设,它们根本无法相合估计,必须对数据做某种"平滑"。本章的主线只有一条——偏差–方差权衡:平滑过度则偏差大,平滑不足则方差大,曲线估计的全部技术都是在两者之间找最优点。量化研究中,收益分布的形状、尾部分位数、因子与未来收益之间的非线性关系,都是曲线估计问题;带宽选择背后的逻辑,又和策略参数(回看窗口、平滑系数)的选择一脉相承。这是本册的核心章节之一。

学习目标

  1. 理解风险分解 \(\text{MISE}=\int b^2+\int v\),能说清平滑参数如何同时控制偏差和方差。
  2. 会推导直方图与核密度估计的偏差、方差、最优平滑参数和收敛速率(\(n^{-2/3}\) 与 \(n^{-4/5}\)),并理解这些速率意味着什么。
  3. 会用留一交叉验证(及其捷径公式)选箱宽和带宽,知道 Stone 定理保证了什么、不保证什么。
  4. 会用 Nadaraya–Watson 核回归估计非线性关系,会用差分法估计噪声方差、构造置信带,并理解置信带为什么不以真函数为中心。
  5. 理解维数灾难的定量含义,以及可加模型和 backfitting 如何缓解它。
  6. 能把核密度估计用于收益分布与 VaR,把核回归用于因子–收益的非线性分析,并知道其局限。

读前导读

这一章在解决什么问题

结论:本章讲"不预设公式时,怎样从数据里画出一条可信的曲线",以及这条曲线该画得多光滑。

你在 CFA 里估计收益分布时,通常假设它是正态的,只估 \(\mu\) 和 \(\sigma\) 两个参数;做回归时假设关系是直线,只估截距和斜率。这叫参数方法。但收益是厚尾的,因子和收益的关系可能是弯的。不想预设形状,就要用非参数方法:直方图、核密度估计、核回归。

代价是必须决定"平滑多少"。这和你选移动平均窗口完全一样:20 日均线跟得紧但抖,250 日均线平滑但滞后。窗口短,噪声大(方差大);窗口长,把真实变化也抹掉了(偏差大)。本章把这个经验判断变成公式:风险 = 偏差² + 方差,写成带宽 \(h\) 的函数,求导找最小值。再用交叉验证从数据里实际选出 \(h\)。

本章的几个结论对量化工作直接有用:非参数估计需要的数据比直觉多得多;多维时数据需求爆炸(维数灾难);用 KDE 算 VaR 时带宽会改变风险数字;置信带默认不以真函数为中心。

需要先想起来的数学

1. 定积分与换元。 \(\int(\cdot)\,dx\) 可以理解为"把曲线下面积加总";本章的 \(\int b^2(x)dx\) 就是把每个点的偏差平方沿 \(x\) 方向加总。换元 \(u=(x-t)/h\) 时 \(dt=-h\,du\),这是 KDE 推导里 \(1/h\) 消失的原因。参见 第 00 册第 03 章 积分。

2. 泰勒展开。 \(f(x+\delta)\approx f(x)+\delta f'(x)+\frac{\delta^2}{2}f''(x)\)。你熟悉的久期–凸性近似 \(\Delta P/P\approx-D\,\Delta y+\frac12C(\Delta y)^2\) 就是它。本章用它估计平滑造成的偏差:偏差大小由密度的斜率 \(f'\) 或曲率 \(f''\) 决定。例:\(f(x)=x^2\) 在 \(x=1\) 附近,\(f(1.1)\approx1+0.1\times2+\frac{0.01}{2}\times2=1.21\),恰好精确。参见 第 00 册第 02 章 导数与泰勒展开。

3. 求导找最小值。 风险形如 \(Ah^2+\frac{B}{h}\) 时,令导数 \(2Ah-\frac{B}{h^2}=0\) 得 \(h^3=\frac{B}{2A}\)。例:\(A=1\)、\(B=2\) 时 \(h=1\),风险 \(=3\);\(h=0.5\) 时风险 \(=4.25\),\(h=2\) 时 \(=5\)。

4. 记号 \(\asymp\)、\(\rightsquigarrow\)、\(\xrightarrow P\)。 \(a_n\asymp n^{-1/5}\) 读作"\(a_n\) 与 \(n^{-1/5}\) 同阶"(比值有界且不趋于零),只关心增长或衰减的速度,不关心常数。\(\xrightarrow P\) 是依概率收敛。参见 第 00 册第 07 章 概率中的分析工具。

5. MSE 分解。 \(\mathbb E(\hat\theta-\theta)^2=(\mathbb E\hat\theta-\theta)^2+\mathbb V\hat\theta\),即均方误差 = 偏差² + 方差。本章只是把它在每个 \(x\) 上用一次,再沿 \(x\) 积分。

怎么读这一章

核心必读:20.1(风险分解)、20.3.1–20.3.3(核密度估计、最优带宽、交叉验证)、20.3.5 的维数灾难表、20.4.1–20.4.2(核回归)、20.5(置信带为何偏离真函数)、20.6 实战。直方图的推导(20.2.1)是核估计推导的"简化版",值得读一遍体会套路;20.2.3 与 20.3.4 的置信带构造、20.4.4 的 backfitting 第一次可以只看结论。建议顺序:20.1 → 20.3.1 → 20.6.1 → 20.3.2–20.3.3 → 20.2 → 20.4 → 20.6.2 → 20.5,其余选读。


20.1 偏差–方差权衡

设 \(g\) 是未知函数(密度或回归函数),\(\hat g_n\) 是它的估计。\(\hat g_n(x)\) 在每个固定点 \(x\) 处都是一个随机变量——随机性来自数据,\(x\) 本身不是随机的。衡量整条曲线的估计好坏,常用积分平方误差(integrated squared error, ISE)

\[L(g,\hat g_n)=\int\big(g(u)-\hat g_n(u)\big)^2du,\tag{20.1}\]
它的期望称为风险或平均积分平方误差(mean integrated squared error, MISE):\(R(g,\hat g_n)=\mathbb E\,L(g,\hat g_n)\)。

引理 20.1。

\[R(g,\hat g_n)=\int b^2(x)\,dx+\int v(x)\,dx,\tag{20.3}\]
其中 \(b(x)=\mathbb E\hat g_n(x)-g(x)\) 是 \(x\) 处的偏差,\(v(x)=\mathbb V\hat g_n(x)\) 是 \(x\) 处的方差。

证明。 交换期望与积分(Fubini),\(R=\int\mathbb E(g(x)-\hat g_n(x))^2dx\);被积函数是 \(x\) 处的均方误差,按第 06 章的 MSE 分解等于 \(b^2(x)+v(x)\)。\(\square\)

白话解释:先在每个点 \(x\) 上看误差:估计值围绕自己的均值抖动(方差),而这个均值本身又偏离真值(偏差)。把所有 \(x\) 上的"偏差² + 方差"加总,就是整条曲线的风险。"交换期望与积分"(Fubini 定理)的意思是:先对每个 \(x\) 求平均误差再沿 \(x\) 加总,与先沿 \(x\) 加总再求平均,结果相同——就像组合的期望收益等于各成分期望收益的加权和,求和与求期望可以交换顺序。

一句话:

\[\text{风险}=\text{偏差}^2+\text{方差}.\]
每种曲线估计都有一个平滑参数(smoothing parameter):直方图的箱宽、核估计的带宽、正交级数的项数(第 21 章)。平滑多了,估计曲线被"抹平",偏差大、方差小;平滑少了,估计曲线追着每个数据点跳,偏差小、方差大。最优平滑量使两者之和最小。下面所有推导都是在具体估计量上把 \(b^2\) 和 \(v\) 写成平滑参数的函数,然后求最小值。

20.2 直方图

20.2.1 定义与偏差、方差

设 \(X_1,\dots,X_n\) IID,密度 \(f\) 支撑在 \([0,1]\)(一般区间可以平移缩放)。取整数 \(m\),把 \([0,1]\) 分成 \(m\) 个箱(bins)

\[B_1=\Big[0,\tfrac1m\Big),\ B_2=\Big[\tfrac1m,\tfrac2m\Big),\ \dots,\ B_m=\Big[\tfrac{m-1}m,1\Big],\]
箱宽 \(h=1/m\)。记 \(\nu_j\) 为落入 \(B_j\) 的观测数,\(\hat p_j=\nu_j/n\),\(p_j=\int_{B_j}f(u)du\)。直方图估计量为
\[\hat f_n(x)=\sum_{j=1}^m\frac{\hat p_j}{h}\,I(x\in B_j).\tag{20.8}\]
动机:\(x\in B_j\) 且 \(h\) 小时,\(\mathbb E\hat f_n(x)=p_j/h=\frac1h\int_{B_j}f\approx\frac{f(x)h}{h}=f(x)\)。

定理 20.3。 固定 \(x\) 和 \(m\),设 \(x\in B_j\),则

\[\mathbb E\hat f_n(x)=\frac{p_j}{h},\qquad\mathbb V\hat f_n(x)=\frac{p_j(1-p_j)}{nh^2}.\tag{20.9}\]
证明。 \(\nu_j\sim\text{Binomial}(n,p_j)\),\(\hat f_n(x)=\nu_j/(nh)\),直接套二项分布的均值和方差。\(\square\)

偏差。 对 \(u\in B_j\) 做一阶展开 \(f(u)\approx f(x)+(u-x)f'(x)\),积分得 \(p_j\approx f(x)h+hf'(x)\big(h(j-\tfrac12)-x\big)\),于是

\[b(x)=\frac{p_j}{h}-f(x)\approx f'(x)\Big(\underbrace{h\big(j-\tfrac12\big)}_{\text{箱中心 }\tilde x_j}-x\Big).\]
直方图在箱中心最准,越靠近箱边偏差越大,偏差大小取决于密度的斜率。在一个箱内积分,\(\int_{B_j}b^2\approx(f'(\tilde x_j))^2\int_{B_j}(\tilde x_j-x)^2dx=(f'(\tilde x_j))^2\frac{h^3}{12}\),再对所有箱求和(Riemann 和):
\[\int_0^1b^2(x)dx\approx\frac{h^2}{12}\sum_jh\,(f'(\tilde x_j))^2\approx\frac{h^2}{12}\int_0^1(f'(x))^2dx.\]
方差。 \(h\) 小时 \(1-p_j\approx1\),\(v(x)\approx\frac{p_j}{nh^2}\approx\frac{f(x)}{nh}\),积分得 \(\int v\approx\frac1{nh}\)。

推导拆解:偏差这几步逐一说明。

第一步,\(p_j=\int_{B_j}f(u)du\) 是箱子里的概率。在箱内把 \(f(u)\) 在 \(x\) 处做一阶泰勒展开:\(f(u)\approx f(x)+(u-x)f'(x)\)(斜率乘距离)。

第二步,积分:常数项 \(f(x)\) 在长度 \(h\) 的箱上积分得 \(f(x)h\);一次项 \(\int_{B_j}(u-x)du=h\cdot(\text{箱中心}-x)\),因为线性函数在区间上的积分等于"区间长度 × 中点处的值"。

第三步,除以 \(h\) 再减去 \(f(x)\),常数项抵消,剩下 \(b(x)\approx f'(x)(\tilde x_j-x)\)。

第四步,\(\int_{B_j}(\tilde x_j-x)^2dx\):令 \(t=x-\tilde x_j\),\(t\) 在 \([-h/2,h/2]\) 上,\(\int_{-h/2}^{h/2}t^2dt=\frac{t^3}{3}\Big|_{-h/2}^{h/2}=\frac{h^3}{12}\)。

第五步,"Riemann 和":\(\sum_jh\,g(\tilde x_j)\) 就是用一排宽 \(h\) 的矩形去近似 \(\int g\),箱越窄越准。

方差部分的积分 \(\int\frac{f(x)}{nh}dx=\frac{1}{nh}\int f=\frac1{nh}\),因为密度积分等于 1。

定理 20.4。 若 \(\int(f')^2<\infty\),则

\[R(\hat f_n,f)\approx\frac{h^2}{12}\int(f'(u))^2du+\frac1{nh}.\tag{20.10}\]
对 \(h\) 求导令其为零,得最优箱宽和最优风险
\[h^*=\frac1{n^{1/3}}\left(\frac6{\int(f')^2}\right)^{1/3},\qquad R(\hat f_n,f)\approx\frac{C}{n^{2/3}},\quad C=\Big(\frac34\Big)^{2/3}\Big(\int(f')^2\Big)^{1/3}.\tag{20.11–20.12}\]

推导拆解:记 \(A=\int(f')^2\)。\(R(h)=\frac{A}{12}h^2+\frac{1}{nh}\),对 \(h\) 求导:\(\frac{A}{6}h-\frac{1}{nh^2}\)(\(1/h\) 的导数是 \(-1/h^2\))。令其为零,\(h^3=\frac{6}{nA}\),开立方即 \(h^*\)。\(n\) 增大 8 倍,\(h^*\) 只缩小一半,这就是"缩小得很慢"。把 \(h^*\) 代回,两项都正比于 \(n^{-2/3}\),于是最优风险 \(\propto n^{-2/3}\)。

金融直觉:\(n^{-2/3}\) 比 \(n^{-1}\) 慢意味着什么?要把误差减半,参数方法需要 2 倍数据,直方图需要 \(2^{3/2}\approx2.8\) 倍。对只有十几年日数据的研究者,这个差别很实在。

两点解读。第一,最优箱宽随 \(n^{-1/3}\) 缩小:数据越多,箱子应越窄,但缩小得很慢。第二,MISE 以 \(n^{-2/3}\) 的速度趋于零,比参数估计通常的 \(n^{-1}\) 慢——这是不假设参数形式所付出的代价。\(h^*\) 依赖未知的 \(\int(f')^2\),所以它只有理论意义,实用上要从数据估计风险。

20.2.2 用交叉验证选箱宽

把损失写成 \(h\) 的函数并展开:

\[L(h)=\int(\hat f_n-f)^2=\int\hat f_n^2-2\int\hat f_nf+\int f^2.\]
最后一项与 \(h\) 无关,所以最小化风险等价于最小化 \(J(h)=\int\hat f_n^2-2\int\hat f_nf\) 的期望。第一项可以直接算;第二项含未知的 \(f\),要想办法估计。关键观察:若 \(\hat f_{(-i)}\) 是删去第 \(i\) 个观测后算出的直方图,由于 \(X_i\) 与其余数据独立,
\[\mathbb E\big[\hat f_{(-i)}(X_i)\big]=\mathbb E\int\hat f_{(-i)}(x)f(x)dx\approx\mathbb E\int\hat f_n(x)f(x)dx.\]

白话解释:难点在 \(\int\hat f_nf\)——它需要真密度 \(f\),而 \(f\) 正是我们不知道的。注意 \(\int\hat f_n(x)f(x)dx=\mathbb E_X[\hat f_n(X)]\),即"在一个新的、独立抽出的点上,估计密度的平均高度"。我们没有新数据,就轮流把每个点拿出来当"新数据",用其余 \(n-1\) 个点建估计,再看它在被拿出的点处有多高。这和用样本外数据评估策略是同一个想法:不能用建模时用过的点来打分,否则会偏爱过拟合的估计(带宽趋于零时 \(\hat f_n(X_i)\) 在自己身上会无限大)。

定义 20.5(交叉验证风险估计)。

\[\hat J(h)=\int\big(\hat f_n(x)\big)^2dx-\frac2n\sum_{i=1}^n\hat f_{(-i)}(X_i).\tag{20.13}\]
定理 20.6:\(\mathbb E\hat J(h)\approx\mathbb EJ(h)\),即交叉验证得分近似无偏地估计了风险(差一个与 \(h\) 无关的常数)。

定理 20.7(捷径公式)。

\[\hat J(h)=\frac{2}{(n-1)h}-\frac{n+1}{(n-1)h}\sum_{j=1}^m\hat p_j^2.\tag{20.14}\]
推导。 \(\int\hat f_n^2=\sum_j(\hat p_j/h)^2h=\sum_j\hat p_j^2/h\)。若 \(X_i\in B_j\),删去它后箱内剩 \(\nu_j-1\) 个点,\(\hat f_{(-i)}(X_i)=\frac{\nu_j-1}{(n-1)h}\);对 \(i\) 求和得 \(\sum_j\frac{\nu_j(\nu_j-1)}{(n-1)h}=\frac{n^2\sum_j\hat p_j^2-n}{(n-1)h}\)。代入 (20.13) 整理即得。\(\square\)

有了捷径公式,对每个候选 \(m\) 只需算一次直方图,而不必重算 \(n\) 次。

例 20.2 / 20.8(天文数据)。 \(n=1266\) 个星系的距离("铅笔束"巡天,越远代表越早的宇宙)。箱太少时直方图过度平滑,星系团被抹掉;箱太多时满是噪声尖刺。交叉验证得分在最小值附近非常平坦,\(m\) 从 73 到 310 都近似最优,原书取 \(m=73\)。直方图清楚显示出星系的成团结构。

20.2.3 置信带

我们无法对真密度的所有细节给出置信陈述,只能在直方图的分辨率上陈述。定义"直方图化"的密度

\[\bar f_n(x)=\mathbb E\hat f_n(x)=\frac{p_j}{h},\quad x\in B_j.\tag{20.15}\]
一对函数 \((\ell_n,u_n)\) 若满足 \(\mathbb P\big(\ell_n(x)\le\bar f_n(x)\le u_n(x)\ \text{对所有 }x\big)\ge1-\alpha\),称为 \(1-\alpha\) 置信带(confidence band)。

定理 20.10。 设 \(m=m(n)\to\infty\) 且 \(m\log n/n\to0\)。令

\[\ell_n(x)=\Big(\max\big\{\sqrt{\hat f_n(x)}-c,0\big\}\Big)^2,\quad u_n(x)=\Big(\sqrt{\hat f_n(x)}+c\Big)^2,\quad c=\frac{z_{\alpha/(2m)}}2\sqrt{\frac mn},\]
则 \((\ell_n,u_n)\) 是近似 \(1-\alpha\) 置信带。

证明梗概。 由 CLT,\(\hat p_j\approx N(p_j,p_j(1-p_j)/n)\)。平方根是二项比例的方差稳定变换:由 Delta 方法 \(\sqrt{\hat p_j}\approx N(\sqrt{p_j},1/(4n))\),方差不再依赖 \(p_j\)。于是 \(2\sqrt n(\sqrt{\hat p_j}-\sqrt{p_j})\approx Z_j\sim N(0,1)\),且不同箱近似独立。由于 \(\sqrt{\hat f_n(x)}-\sqrt{\bar f_n(x)}=(\sqrt{\hat p_j}-\sqrt{p_j})/\sqrt h\),且 \(1/\sqrt h=\sqrt m\),

\[\mathbb P\Big(\max_x\big|\sqrt{\hat f_n(x)}-\sqrt{\bar f_n(x)}\big|>c\Big)\approx\mathbb P\Big(\max_j|Z_j|>z_{\alpha/(2m)}\Big)\le\sum_{j=1}^m\frac\alpha m=\alpha,\]
最后一步是 Bonferroni(第 10b 章)。\(\square\)

推导拆解:Delta 方法这一步展开如下。设 \(g(p)=\sqrt p\),导数 \(g'(p)=\frac{1}{2\sqrt p}\)。Delta 方法说 \(\mathbb V\,g(\hat p)\approx g'(p)^2\,\mathbb V\hat p=\frac{1}{4p}\cdot\frac{p(1-p)}{n}=\frac{1-p}{4n}\approx\frac{1}{4n}\)(\(p\) 小时)。结果与 \(p\) 无关,所以每个箱可以用同一个宽度 \(c\)。这和久期近似 \(\Delta P\approx P'(y)\Delta y\) 是同一个一阶近似,只是这里传递的是方差:方差乘以导数的平方。

例 20.11。 天文数据 \(m=73\) 的 95% 置信带相当宽:即使有 1000 多个数据点,密度形状的不确定性仍然很大。这个结论值得记住——非参数估计需要的数据量远多于直觉。

20.3 核密度估计

直方图有两个缺点:不连续,而且收敛慢。核密度估计同时改进了两者。

20.3.1 定义

本章的核(kernel)指满足

\[K(x)\ge0,\quad\int K=1,\quad\int xK(x)dx=0,\quad\sigma_K^2\equiv\int x^2K(x)dx>0\]
的光滑函数。常用的有高斯核 \(K(x)=(2\pi)^{-1/2}e^{-x^2/2}\) 和 Epanechnikov 核。原书采用方差为 1 的 Epanechnikov 版本:
\[K(x)=\frac{3}{4\sqrt5}\Big(1-\frac{x^2}5\Big),\quad|x|<\sqrt5\text{(其他处为 0)}.\tag{20.20}\]

定义 20.12。 给定核 \(K\) 和正数 \(h\)(带宽 bandwidth),核密度估计量为

\[\hat f_n(x)=\frac1n\sum_{i=1}^n\frac1hK\Big(\frac{x-X_i}h\Big).\tag{20.21}\]

直观理解:在每个数据点上放一块质量为 \(1/n\)、宽度由 \(h\) 控制的平滑"小丘",\(\hat f_n\) 是所有小丘的叠加。\(h\to0\) 时,小丘退化成每个数据点处的尖刺;\(h\to\infty\) 时,小丘铺得极宽,估计趋于平坦。核的形状不重要(Epanechnikov 核在渐近 MSE 意义下最优,但与高斯核的效率差别只有几个百分点),带宽才是关键。

20.3.2 偏差、方差与最优带宽

定理 20.14。 在 \(f\) 与 \(K\) 的弱假设下,

\[R(f,\hat f_n)\approx\frac14\sigma_K^4h^4\int(f''(x))^2dx+\frac{\int K^2(x)dx}{nh}.\tag{20.22}\]
最优带宽与最优风险为
\[h^*=\frac{c_1^{-2/5}c_2^{1/5}c_3^{-1/5}}{n^{1/5}},\qquad R(f,\hat f_n)\approx\frac{c_4}{n^{4/5}},\tag{20.23}\]
其中 \(c_1=\int x^2K\),\(c_2=\int K^2\),\(c_3=\int(f'')^2\)。

证明。 记 \(K_h(x,X)=h^{-1}K((x-X)/h)\),则 \(\hat f_n(x)=\frac1n\sum_iK_h(x,X_i)\) 是 IID 项的平均,\(\mathbb E\hat f_n(x)=\mathbb EK_h(x,X)\),\(\mathbb V\hat f_n(x)=\frac1n\mathbb VK_h(x,X)\)。换元 \(t=x-hu\):

\[\mathbb EK_h(x,X)=\int\frac1hK\Big(\frac{x-t}h\Big)f(t)dt=\int K(u)f(x-hu)du=\int K(u)\Big[f(x)-huf'(x)+\frac{h^2u^2}2f''(x)+\cdots\Big]du.\]
利用 \(\int K=1\)、\(\int uK=0\),一阶项消失:
\[b(x)\approx\frac12\sigma_K^2h^2f''(x).\]
方差:\(\mathbb E K_h^2=\frac1h\int K^2(u)f(x-hu)du\approx\frac{f(x)\int K^2}{h}\),而 \((\mathbb EK_h)^2\approx f(x)^2\) 是低阶量,所以 \(v(x)\approx\frac{f(x)\int K^2}{nh}\)。分别积分(\(\int f=1\))即得 (20.22)。对 \(h\) 求导:\(c_1^2c_3h^3-\frac{c_2}{nh^2}=0\),解得 \(h^{*5}=\frac{c_2}{c_1^2c_3n}\);代回可得 \(c_4=\frac54c_1^{2/5}c_2^{4/5}c_3^{1/5}\)。\(\square\)

推导拆解:上面证明的关键步骤逐一说明。

  1. 换元:令 \(u=(x-t)/h\),则 \(t=x-hu\),\(dt=-h\,du\),积分上下限对调又吃掉负号,\(\frac1h\) 与 \(h\) 相消,得 \(\int K(u)f(x-hu)du\)。含义:估计值的期望是"真密度在 \(x\) 附近的加权平均",权重就是核。
  2. 泰勒展开 \(f(x-hu)\) 到二阶:\(f(x)-huf'(x)+\frac{h^2u^2}{2}f''(x)\)。
  3. 逐项乘 \(K(u)\) 积分:常数项 \(\times\int K=1\) 给出 \(f(x)\);一次项 \(\times\int uK=0\)(核关于 0 对称)消失;二次项给出 \(\frac{h^2}{2}f''(x)\int u^2K=\frac{h^2}{2}\sigma_K^2f''(x)\)。减去 \(f(x)\) 即偏差。
  4. 偏差平方积分:\(b^2=\frac14\sigma_K^4h^4(f'')^2\),积分得 (20.22) 第一项。

直观上:偏差由曲率 \(f''\) 决定。在峰顶 \(f''<0\),平均会把峰削低;在谷底 \(f''>0\),平均会把谷填高。这就是"过度平滑把尖峰抹平"的数学来源,也是收益分布的尖峰在 KDE 中被压低的原因。

把直方图与核估计并排比较,能看清"为什么核估计更好":

直方图 核密度估计
偏差 \(\propto h\,f'(x)\)(一阶) \(\propto h^2f''(x)\)(二阶,对称核使一阶项抵消)
方差 \(\approx f(x)/(nh)\) \(\approx f(x)\int K^2/(nh)\)
最优平滑参数 \(h^*\asymp n^{-1/3}\) \(h^*\asymp n^{-1/5}\)
最优 MISE \(\asymp n^{-2/3}\) \(\asymp n^{-4/5}\)

核估计的偏差是 \(h^2\) 量级而非 \(h\) 量级,所以可以用更宽的带宽换取更小的方差。可以证明,对只假设二阶光滑的密度,没有任何非参数估计能比 \(n^{-4/5}\) 更快,核估计已经达到最优速率。

补充:正态参考带宽。 若真密度恰为 \(N(\mu,\sigma^2)\) 且用高斯核,\(c_1=1\),\(c_2=\frac1{2\sqrt\pi}\),\(c_3=\frac{3}{8\sqrt\pi\sigma^5}\),代入 (20.23) 得 \(h^*=(4/3)^{1/5}\sigma n^{-1/5}\approx1.06\,\sigma n^{-1/5}\)。Silverman 的经验法则 \(h=0.9\min(\hat\sigma,\widehat{\text{IQR}}/1.34)n^{-1/5}\) 是它的稳健修正。这些公式计算简单,常作为交叉验证的起点;但对厚尾、多峰的密度它们往往过度平滑。(本段为本教材补充,原书只给了一般公式。)

20.3.3 用交叉验证选带宽

与直方图完全相同,交叉验证得分为

\[\hat J(h)=\int\hat f_n^2(x)dx-\frac2n\sum_{i=1}^n\hat f_{-i}(X_i),\tag{20.24}\]
\(\hat f_{-i}\) 是删去第 \(i\) 个观测的核估计。

定理 20.15。 对任何 \(h>0\),\(\mathbb E\hat J(h)=\mathbb EJ(h)\)(精确无偏)。而且

\[\hat J(h)\approx\frac1{hn^2}\sum_i\sum_jK^*\Big(\frac{X_i-X_j}h\Big)+\frac2{nh}K(0),\tag{20.25}\]
其中 \(K^*(x)=K^{(2)}(x)-2K(x)\),\(K^{(2)}(z)=\int K(z-y)K(y)dy\) 是核的自卷积。高斯核时 \(K^{(2)}\) 就是 \(N(0,2)\) 的密度。

推导要点。 \(\int\hat f_n^2=\frac1{n^2h^2}\sum_{i,j}\int K\big(\frac{x-X_i}h\big)K\big(\frac{x-X_j}h\big)dx=\frac1{n^2h}\sum_{i,j}K^{(2)}\big(\frac{X_i-X_j}h\big)\);留一项 \(\frac2n\sum_i\frac1{(n-1)h}\sum_{j\ne i}K\big(\frac{X_i-X_j}h\big)\approx\frac2{n^2h}\Big[\sum_{i,j}K\big(\frac{X_i-X_j}h\big)-nK(0)\Big]\)。两式相减即得。\(\square\) 大数据集可用 FFT 快速计算这些双重求和。

定理 20.16(Stone 定理)。 设 \(f\) 有界,\(\hat h_n\) 是交叉验证选出的带宽,则

\[\frac{\int\big(f(x)-\hat f_{\hat h_n}(x)\big)^2dx}{\inf_h\int\big(f(x)-\hat f_h(x)\big)^2dx}\xrightarrow{P}1.\tag{20.26}\]
也就是说,交叉验证选的带宽渐近地和"知道真密度的神谕"选的带宽一样好。

实务提醒。

  • 例 20.17:天文数据是四舍五入过的,存在大量重复值,交叉验证的最小值跑到 \(h=0\)(在重复点上放尖刺能让留一密度很大)。办法是给数据加一点点正态噪声(jitter),之后 \(\hat J(h)\) 变得平滑并有清晰的最小值。金融数据中价格按最小变动价位离散、收益率有大量零值,会遇到完全相同的问题。
  • 注 20.18:不要因为交叉验证给出的估计"看起来有点抖"就认定它失败了——肉眼不是风险的好裁判,人眼天生偏爱过度平滑的曲线。

20.3.4 置信带

同样只能对平滑后的密度 \(\bar f_n(x)=\mathbb E\hat f_n(x)=\int\frac1hK(\frac{x-u}h)f(u)du\) 作置信陈述(原因见 20.5 节)。设密度支撑在 \((a,b)\),令 \(Y_i(x)=\frac1hK\big(\frac{x-X_i}h\big)\),则 \(\hat f_n(x)=\bar Y_n(x)\) 是均值,

\[\widehat{\text{se}}(x)=\frac{s(x)}{\sqrt n},\quad s^2(x)=\frac1{n-1}\sum_i(Y_i(x)-\bar Y_n(x))^2,\]
\[\ell_n(x)=\hat f_n(x)-q\,\widehat{\text{se}}(x),\quad u_n(x)=\hat f_n(x)+q\,\widehat{\text{se}}(x),\quad q=\Phi^{-1}\Big(\frac{1+(1-\alpha)^{1/m}}2\Big),\quad m=\frac{b-a}w,\tag{20.27}\]
\(w\) 是核的宽度(正态核取 \(w=3h\))。直观上 \(m\) 是"互相近似独立的块"的个数,\(q\) 是让 \(m\) 个独立正态同时落在 \(\pm q\) 内的概率为 \(1-\alpha\) 的临界值(Šidák 校正)。

20.3.5 多维与维数灾难

\(d\) 维数据 \(X_i=(X_{i1},\dots,X_{id})\) 用乘积核:

\[\hat f_n(x)=\frac1n\sum_{i=1}^n\frac{1}{h_1\cdots h_d}\prod_{j=1}^dK\Big(\frac{x_j-X_{ij}}{h_j}\Big).\tag{20.28–20.29}\]
简化做法是取 \(h_j=s_jh\)(\(s_j\) 为第 \(j\) 个变量的标准差),只选一个 \(h\)。风险为
\[R\approx\frac14\sigma_K^4\Big[\sum_jh_j^4\int f_{jj}^2+\sum_{j\ne k}h_j^2h_k^2\int f_{jj}f_{kk}\Big]+\frac{(\int K^2)^d}{nh_1\cdots h_d},\]
最优带宽 \(h_j\asymp n^{-1/(4+d)}\),最优风险 \(\asymp n^{-4/(4+d)}\)。维数每增加一维,速率就变慢:\(d=1\) 时 \(n^{-0.8}\),\(d=4\) 时 \(n^{-0.5}\),\(d=10\) 时 \(n^{-0.29}\)。这就是维数灾难(curse of dimensionality)。

Silverman (1986) 的一张表把它说得最直白:对多元正态密度、用最优带宽,要使原点处的相对均方误差小于 0.1,所需样本量为

维数 \(d\) 1 2 3 4 5 6 7 8 9 10
样本量 4 19 67 223 768 2790 10,700 43,700 187,000 842,000

十维问题中的 842,000 个观测,只相当于一维问题中的 4 个。对量化研究者,这张表是"为什么不能对十几个因子直接做非参数联合建模"的最好回答。

金融直觉:维数灾难可以用"分组排序"来体会。单因子五分组,每组有 1/5 的样本;双因子独立五分组得 25 格,每格 1/25;五个因子各五分组就是 3125 格,A 股 5000 只股票平均每格不到 2 只。核估计用的是"\(x\) 附近"的点,而高维空间中"附近"几乎是空的——要在每一维都取 ±10% 的邻域,十维时邻域只覆盖 \(0.2^{10}\approx10^{-7}\) 的体积(按均匀分布粗算)。

20.4 非参数回归

20.4.1 Nadaraya–Watson 核估计

数据 \((x_1,Y_1),\dots,(x_n,Y_n)\) 满足

\[Y_i=r(x_i)+\epsilon_i,\quad\mathbb E\epsilon_i=0.\tag{20.30}\]
回归只关心给定 \(X\) 时 \(Y\) 的均值,所以把 \(x_i\) 当作固定值。大多数非参数回归估计都是 \(Y_i\) 的加权平均,离 \(x\) 越近的点权重越大。

定义 20.20(Nadaraya–Watson 核估计量)。

\[\hat r(x)=\sum_{i=1}^nw_i(x)Y_i,\qquad w_i(x)=\frac{K\big(\frac{x-x_i}h\big)}{\sum_{j=1}^nK\big(\frac{x-x_j}h\big)}.\tag{20.31–20.32}\]
权重非负、和为 1。它的来历:用二维核估计联合密度 \(f(x,y)\),代入 \(r(x)=\int yf(x,y)dy\big/\int f(x,y)dy\),化简即得。

定理 20.21。 设 \(\mathbb V(\epsilon_i)=\sigma^2\),\(x_i\) 的设计密度为 \(f\),则

\[R(\hat r_n,r)\approx\frac{h^4}4\Big(\int x^2K\Big)^2\int\Big(r''(x)+2r'(x)\frac{f'(x)}{f(x)}\Big)^2dx+\int\frac{\sigma^2\int K^2}{nhf(x)}dx.\tag{20.33}\]
最优带宽 \(\asymp n^{-1/5}\),风险 \(\asymp n^{-4/5}\),与密度估计相同。

两个细节值得注意。方差项分母有 \(f(x)\):数据稀疏的地方方差大,金融数据中这就是因子极端值区域。偏差项中的 \(2r'f'/f\) 称为设计偏差(design bias):只要 \(r\) 有斜率、设计点又不均匀(比如正态分布的因子值越往两端越稀),NW 估计就会被拉向数据密集的一侧。在边界处这个问题更严重,偏差从 \(h^2\) 量级退化为 \(h\) 量级。局部线性回归(在每个 \(x\) 附近做加权最小二乘直线拟合,而不是加权平均)可以消除设计偏差和边界偏差,是实务中更常用的版本(原书未展开,可参考 Loader 1999)。

20.4.2 带宽选择

交叉验证得分 \(\hat J(h)=\sum_i(Y_i-\hat r_{-i}(x_i))^2\)(20.34)。

定理 20.22(捷径公式)。

\[\hat J(h)=\sum_{i=1}^n\big(Y_i-\hat r(x_i)\big)^2\frac{1}{\Big(1-\frac{K(0)}{\sum_jK\big(\frac{x_i-x_j}h\big)}\Big)^2}.\tag{20.35}\]
证明。 记 \(L_{ii}=w_i(x_i)=K(0)/\sum_jK(\frac{x_i-x_j}h)\)。删去第 \(i\) 点后,其余点的权重按比例放大,\(\hat r_{-i}(x_i)=\frac{\hat r(x_i)-L_{ii}Y_i}{1-L_{ii}}\)。于是 \(Y_i-\hat r_{-i}(x_i)=\frac{Y_i-\hat r(x_i)}{1-L_{ii}}\)。\(\square\) 这与第 13b 章线性回归 LOOCV 的捷径 \(e_i/(1-H_{ii})\) 完全同构:\(L_{ii}\) 就是第 \(i\) 点的"杠杆值"。

20.4.3 估计噪声方差与置信带

若 \(x_i\) 已排序且 \(r\) 光滑,相邻两点的回归函数值几乎相等,\(Y_{i+1}-Y_i\approx\epsilon_{i+1}-\epsilon_i\),方差约 \(2\sigma^2\)。于是

\[\hat\sigma^2=\frac1{2(n-1)}\sum_{i=1}^{n-1}(Y_{i+1}-Y_i)^2.\tag{20.36}\]
这个差分估计不需要先估计 \(r\),非常实用。

对平滑后的 \(\bar r_n(x)=\mathbb E\hat r_n(x)\),近似 \(1-\alpha\) 置信带为 \(\hat r_n(x)\pm q\,\widehat{\text{se}}(x)\),

\[\widehat{\text{se}}(x)=\hat\sigma\sqrt{\sum_iw_i^2(x)},\quad q=\Phi^{-1}\Big(\frac{1+(1-\alpha)^{1/m}}2\Big),\quad m=\frac{b-a}w.\tag{20.37}\]
\(\sum_iw_i^2(x)\) 的倒数可以理解为 \(x\) 附近的"有效样本量"。

例 20.23 / 20.24(宇宙微波背景)。 \(x_i\) 是多极矩,\(Y_i\) 是温度涨落功率谱的估计。欠平滑的拟合满是噪声,过平滑的拟合把峰抹平,交叉验证的拟合显示三个清晰的峰,与大爆炸理论预测一致。95% 置信带表明:对第一个峰的存在和位置可以高度确信,第二、三个峰则不确定得多。

20.4.4 多个协变量:可加模型

\(X=(X_1,\dots,X_p)\) 时可以用多元核,但会撞上维数灾难。一种缓解办法是对回归函数加结构约束,可加回归(additive regression):

\[Y=\sum_{j=1}^pr_j(X_j)+\epsilon,\tag{20.38}\]
只需拟合 \(p\) 个一维函数;需要时可以加入少量二元交互项。拟合用回拟合算法(backfitting):

  1. 初始化 \(\hat r_1,\dots,\hat r_p\)(例如全为 0,截距取 \(\bar Y\));
  2. 对 \(j=1,\dots,p\):计算偏残差 \(\tilde\epsilon_i=Y_i-\sum_{s\ne j}\hat r_s(x_{is})\),把 \(\tilde\epsilon_i\) 对第 \(j\) 个协变量做一维非参数回归,得到新的 \(\hat r_j\);
  3. 收敛则停,否则回到第 2 步。

可加模型避开了维数灾难且拟合快;代价是它不再完全非参数——若真回归函数含有强交互,可加模型会系统性地拟合不足。

20.5 置信带为什么不以真函数为中心

前面所有置信带都针对平滑后的函数 \(\bar f_n\) 或 \(\bar r_n\),而不是真函数。原因如下。设 \(\hat f_n(x)\) 的均值为 \(\bar f_n(x)\)、标准差为 \(s_n(x)\),

\[\frac{\hat f_n(x)-f(x)}{s_n(x)}=\underbrace{\frac{\hat f_n(x)-\bar f_n(x)}{s_n(x)}}_{\rightsquigarrow N(0,1)}+\underbrace{\frac{\bar f_n(x)-f(x)}{s_n(x)}}_{\text{偏差}/\text{标准差}}.\]
参数推断中偏差通常远小于标准差,第二项趋于 0。但非参数推断中,最优平滑恰恰让偏差与标准差同量级(这正是"平衡"的含义),所以第二项即使在大样本下也不消失,置信区间不以真函数为中心。常见对策是欠平滑(undersmoothing)——故意用比最优更小的带宽让偏差变得可以忽略,代价是区间变宽——或者显式估计并校正偏差。这一点在后面的量化实战中会直接看到。

推导拆解:为什么最优时偏差与标准差同量级?以核密度为例,偏差 \(\propto h^2\),标准差 \(\propto1/\sqrt{nh}\)。代入 \(h^*\asymp n^{-1/5}\):偏差 \(\asymp n^{-2/5}\),标准差 \(\asymp(n\cdot n^{-1/5})^{-1/2}=n^{-2/5}\)。两者阶数完全相同,比值趋于一个非零常数,所以第二项不消失。若改用更小的 \(h\)(例如 \(h\asymp n^{-1/4}\)),偏差 \(\asymp n^{-1/2}\),标准差 \(\asymp n^{-3/8}\),偏差相对标准差趋于零,区间才重新以真函数为中心。

金融直觉:这像用 60 日均线估计"当前真实趋势"。均线本身有滞后偏差,你给均线画的 95% 区间只覆盖"均线的真值"(即平滑后的趋势),而不是此刻的真实趋势。拐点附近两者差得最多。


20.6 量化实战

20.6.1 收益分布的核密度估计与尾部分位数

场景。 用 2000 个日收益(约 8 年)估计收益分布形状和 1% VaR。真实收益来自 \(t_4\) 分布(日波动率 1%),厚尾。我们比较直方图交叉验证、核密度交叉验证、正态参考带宽与 Silverman 带宽,并看带宽对尾部分位数的影响。

import numpy as np
from scipy import stats, optimize

rng = np.random.default_rng(20)
n, nu = 2000, 4
scale = 0.01 / np.sqrt(nu / (nu - 2))          # 日波动率 1% 的 t4 收益
x = scale * rng.standard_t(nu, n)

# ---- 直方图:交叉验证捷径公式 (20.14) 选箱数 ----
a, b = x.min(), x.max()
def J_hist(m):
    h = (b - a) / m
    p = np.histogram(x, bins=m, range=(a, b))[0] / n
    return 2 / ((n - 1) * h) - (n + 1) / ((n - 1) * h) * np.sum(p ** 2)
ms = np.arange(5, 301)
m_best = ms[np.argmin([J_hist(m) for m in ms])]
print("直方图 CV 选出的箱数 m =", m_best, " 箱宽 =", round((b - a) / m_best, 5))

# ---- 核密度:高斯核的精确留一交叉验证 (20.24) ----
D = x[:, None] - x[None, :]
def J_kde(h):
    int_f2 = stats.norm.pdf(D / h, scale=np.sqrt(2)).sum() / (n ** 2 * h)   # ∫f̂² 用 K^(2)=N(0,2)
    K = stats.norm.pdf(D / h); np.fill_diagonal(K, 0.0)
    loo = K.sum(axis=1) / ((n - 1) * h)                                     # f̂_{-i}(X_i)
    return int_f2 - 2 * loo.mean()
hs = np.linspace(0.0005, 0.006, 56)
J = np.array([J_kde(h) for h in hs])
h_cv = hs[J.argmin()]
sd, iqr = x.std(ddof=1), np.subtract(*np.percentile(x, [75, 25]))
h_silver = 0.9 * min(sd, iqr / 1.34) * n ** (-1 / 5)
h_normal_ref = 1.06 * sd * n ** (-1 / 5)
print("h_CV = %.5f   Silverman 经验带宽 = %.5f   正态参考带宽 = %.5f" % (h_cv, h_silver, h_normal_ref))

# ---- 用 KDE 的 CDF 求 1% VaR,与经验分位数、真值比较 ----
def kde_cdf(q, h): return stats.norm.cdf((q - x) / h).mean()
true_q = scale * stats.t.ppf(0.01, nu)
print("1%% 分位数 真值 = %.5f   经验分位数 = %.5f" % (true_q, np.quantile(x, 0.01)))
for name, h in [("h_CV", h_cv), ("Silverman", h_silver), ("正态参考", h_normal_ref), ("5×h_CV", 5 * h_cv)]:
    q = optimize.brentq(lambda t: kde_cdf(t, h) - 0.01, -0.2, 0.0)
    print("  KDE(%-9s) 1%% 分位数 = %.5f" % (name, q))

# ---- 积分平方误差:真密度已知,可直接比较 ----
grid = np.linspace(-0.08, 0.08, 1601); dg = grid[1] - grid[0]
f_true = stats.t.pdf(grid / scale, nu) / scale
for name, h in [("0.3×h_CV", 0.3 * h_cv), ("h_CV", h_cv), ("3×h_CV", 3 * h_cv)]:
    fh = stats.norm.pdf((grid[:, None] - x[None, :]) / h).mean(axis=1) / h
    print("  ISE(%-8s) = %.3f" % (name, np.sum((fh - f_true) ** 2) * dg))

关键输出:

直方图 CV 选出的箱数 m = 119  箱宽 = 0.00189
h_CV = 0.00180   Silverman 经验带宽 = 0.00151   正态参考带宽 = 0.00238
1% 分位数 真值 = -0.02649   经验分位数 = -0.02945
  KDE(h_CV     ) 1% 分位数 = -0.02969
  KDE(Silverman) 1% 分位数 = -0.02962
  KDE(正态参考     ) 1% 分位数 = -0.02986
  KDE(5×h_CV   ) 1% 分位数 = -0.03481
  ISE(0.3×h_CV) = 0.249
  ISE(h_CV    ) = 0.063
  ISE(3×h_CV  ) = 0.956

解读。

  1. 偏差–方差权衡清晰可见。 带宽取交叉验证值的 0.3 倍(欠平滑)或 3 倍(过平滑)时,积分平方误差分别是最优附近的 4 倍和 15 倍。
  2. 正态参考带宽偏大。 对厚尾数据,样本标准差被尾部抬高,\(1.06\hat\sigma n^{-1/5}\) 比交叉验证值大约 30%,会把尖峰抹平。Silverman 法则用 IQR 做了稳健修正,更接近交叉验证结果。
  3. KDE 不会凭空改善尾部估计。 在最优带宽附近,KDE 的 1% 分位数与经验分位数几乎相同——两者都受同一批尾部样本支配,本例的样本恰好比真值偏厚。核平滑只让分位数估计略微稳定,不会弥补尾部样本少的问题。
  4. 过度平滑会系统地夸大尾部。 高斯核 KDE 的方差等于样本方差加 \(h^2\)(核本身的方差),带宽越大分布越"胖"。\(5h_{CV}\) 时 1% 分位数从 −2.97% 变成 −3.48%。用 KDE 做 VaR/ES 时,带宽是一个会实际改变风险数字的参数。对极端尾部(0.1% 以下),更应该用第 06 册介绍的极值理论(EVT)而不是 KDE。

20.6.2 因子与未来收益的非线性关系

场景。 因子暴露 \(x\)(标准化)与下期收益 \(Y\) 之间的真实关系是非单调的:中间区域正相关,两端衰减(类似动量在极端赢家、输家组上的反转)。信噪比极低:信号最大幅度约 28bp,噪声标准差 200bp。我们用 Nadaraya–Watson 回归,交叉验证选带宽,差分法估计噪声,构造置信带。

import numpy as np
from scipy import stats

rng = np.random.default_rng(2020)
n = 3000
x = np.sort(rng.standard_normal(n))                    # 因子暴露(标准化),已排序
r = lambda u: 0.004 * u * np.exp(-u ** 2 / 3)          # 真实关系:中间正相关、两端衰减(非单调)
sigma = 0.02
y = r(x) + sigma * rng.standard_normal(n)              # 次期收益:信噪比很低

def nw_weights(x0, h):
    W = stats.norm.pdf((x0[:, None] - x[None, :]) / h)
    return W / W.sum(axis=1, keepdims=True)

def J_cv(h):                                           # 捷径公式 (20.35)
    W = stats.norm.pdf((x[:, None] - x[None, :]) / h)
    lev = stats.norm.pdf(0) / W.sum(axis=1)            # w_i(x_i)
    fit = (W @ y) / W.sum(axis=1)
    return np.sum(((y - fit) / (1 - lev)) ** 2)

hs = np.linspace(0.08, 2.0, 49)
Js = np.array([J_cv(h) for h in hs])
h_cv = hs[Js.argmin()]
print("CV 选出的带宽 h = %.2f" % h_cv)
print("相对风险 J(h)/J(h_cv)-1 (×1e4):h=0.1: %.1f  h=0.5: %.1f  h=2.0: %.1f" %
      tuple((Js[np.argmin(abs(hs - v))] / Js.min() - 1) * 1e4 for v in (0.1, 0.5, 2.0)))

# 差分法估计噪声方差 (20.36)
s2 = np.sum(np.diff(y) ** 2) / (2 * (n - 1))
print("差分法 sigma_hat = %.5f (真值 %.3f)" % (np.sqrt(s2), sigma))

# 置信带 (20.37):针对平滑后的 r̄(x);正态核取有效宽度 w=3h
grid = np.array([-2.5, -1.5, -0.5, 0.0, 0.5, 1.5, 2.5])
W = nw_weights(grid, h_cv)
fit = W @ y
se = np.sqrt(s2) * np.sqrt((W ** 2).sum(axis=1))
m = (x.max() - x.min()) / (3 * h_cv)
q = stats.norm.ppf((1 + 0.95 ** (1 / m)) / 2)
print("同时置信带临界值 q = %.2f(逐点为 1.96),m = %.1f" % (q, m))
print("   x     真r(x)    NW估计     下界      上界   (单位: bp)")
for g, t, f, s in zip(grid, r(grid), fit, se):
    print("%5.1f %8.1f %9.1f %9.1f %9.1f" % (g, t * 1e4, f * 1e4, (f - q * s) * 1e4, (f + q * s) * 1e4))

# 对比:线性回归斜率
b = np.polyfit(x, y, 1)
print("线性回归斜率 = %.2f bp/单位因子 (t=%.1f)" % (b[0] * 1e4, b[0] / (sigma / np.sqrt(n * x.var()))))

关键输出:

CV 选出的带宽 h = 0.72
相对风险 J(h)/J(h_cv)-1 (×1e4):h=0.1: 7.2  h=0.5: 4.0  h=2.0: 23.4
差分法 sigma_hat = 0.01974 (真值 0.020)
同时置信带临界值 q = 2.41(逐点为 1.96),m = 3.2
   x     真r(x)    NW估计     下界      上界   (单位: bp)
 -2.5    -12.5      -9.5     -32.5      13.5
 -1.5    -28.3     -12.0     -25.2       1.3
 -0.5    -18.4      -5.4     -15.7       4.9
  0.0      0.0       1.1      -8.9      11.1
  0.5     18.4       8.0      -2.3      18.4
  1.5     28.3      19.6       6.1      33.2
  2.5     12.5      29.4       6.7      52.1
线性回归斜率 = 14.86 bp/单位因子 (t=4.1)

解读。 这段输出几乎把本章的每个理论点都演示了一遍。

  1. 低信噪比下交叉验证选择大带宽。 CV 曲线极其平坦(不同带宽的风险只差万分之几),选出的 \(h=0.72\) 相当于用了 ±1 个标准差范围内的数据做平均。噪声太大时,方差主导,最优解就是多平滑。
  2. 差分法估计 \(\sigma\) 很准(0.01974 对 0.020),不需要先知道 \(r\)。
  3. 置信带针对的是 \(\bar r\),不是 \(r\)。 在 \(x=2.5\) 处真值 12.5bp 落在置信带 [6.7, 52.1] 之外:大带宽把中间区域的强正相关"平均"进了尾部,加上 NW 在边界的设计偏差,估计被系统地拉高。这正是 20.5 节所说的偏差不消失。

原文勘误提示:对照上面的输出表,\(x=2.5\) 处真值 12.5bp 其实落在置信带 \([6.7,52.1]\) 之内,原文"落在置信带之外"的说法与输出不符。真正落在带外的是 \(x=-1.5\)(真值 \(-28.3\),带 \([-25.2,1.3]\))和 \(x=-0.5\)(真值 \(-18.4\),带 \([-15.7,4.9]\));\(x=0.5\) 处真值 18.4 恰在上界。结论不变:大带宽把两侧拉向中间,置信带在曲线弯曲处覆盖不到真函数;\(x=2.5\) 处估计 29.4 远高于真值 12.5,仍说明边界处被系统拉高。

  1. 真实的非单调性在这个样本量下检测不出来。 NW 曲线基本是单调的,与线性回归(斜率 14.9bp,t = 4.1)给出的信息相近。若据此在极端赢家组上加大仓位,会正好押在真实关系衰减的区域。教训是:用非参数回归"发现"因子的非线性,需要远多于线性检验所需的数据;横截面研究中应把成千上万个股票-月样本汇总,或改用分组排序(regressogram,即习题 8 的回归直方图)这类更稳健的方法。

20.6.3 其他用途与注意事项

  • 期权隐含的风险中性密度。 Breeden–Litzenberger 公式 \(q(K)=e^{rT}\partial^2C/\partial K^2\) 要对期权价格曲线求二阶导,原始报价必须先平滑。这里的偏差–方差权衡与本章完全相同:平滑不足时二阶导满是噪声甚至为负,平滑过度时尾部被抹平。
  • 市场冲击曲线。 冲击成本对订单规模的关系通常是凹的(近似平方根律),用核回归或可加模型估计比预设幂函数更稳健(第 07 册)。
  • 平滑参数就是策略参数。 移动平均窗口、指数平滑系数、波动率估计的回看期,本质上都是"带宽"。选择它们也要面对偏差–方差权衡,也应该用样本外误差而不是样本内拟合来选。
  • 时间序列的交叉验证必须保持时间顺序。 本章的留一交叉验证假设 IID。收益序列有波动率聚集和自相关时,留一 CV 会选出偏小的带宽(相邻点高度相关,删一个点几乎不损失信息)。时间序列中应改用"留一块"或前推(walk-forward)验证,见第 22b 章。
  • 双边平滑的前视偏差。 核回归在时间维度上做平滑时,\(t\) 时刻的估计用到了 \(t\) 之后的数据。用于生成交易信号时只能用单边(因果)核。

本章小结

曲线估计必须平滑,风险等于积分偏差平方加积分方差,平滑参数控制两者的权衡。直方图的偏差是一阶的,最优 MISE 为 \(n^{-2/3}\);对称核的一阶偏差相互抵消,核密度估计达到 \(n^{-4/5}\),这是二阶光滑密度的最优速率。核的形状不重要,带宽很重要;带宽用交叉验证选,有捷径公式,Stone 定理保证它渐近最优。Nadaraya–Watson 回归是局部加权平均,带宽同样用(有捷径公式的)交叉验证选,噪声方差可用相邻差分估计;它有设计偏差和边界偏差,局部线性回归可以修正。所有置信带都针对平滑后的函数,最优平滑下偏差与标准差同量级,所以置信带不以真函数为中心。维数增加时最优速率退化为 \(n^{-4/(4+d)}\),可加模型加 backfitting 是常用的缓解办法。

概念 公式 / 要点
风险分解 \(R=\int b^2(x)dx+\int v(x)dx\)
直方图 \(\hat f_n=\sum_j\frac{\hat p_j}hI(x\in B_j)\);\(R\approx\frac{h^2}{12}\int f'^2+\frac1{nh}\)
直方图最优 \(h^*\asymp n^{-1/3}\),\(R\asymp n^{-2/3}\)
直方图 CV 捷径 \(\hat J(h)=\frac2{(n-1)h}-\frac{n+1}{(n-1)h}\sum_j\hat p_j^2\)
核密度估计 \(\hat f_n(x)=\frac1{nh}\sum_iK\big(\frac{x-X_i}h\big)\)
核估计偏差 / 方差 \(b\approx\frac12\sigma_K^2h^2f''(x)\),\(v\approx\frac{f(x)\int K^2}{nh}\)
核估计最优 \(h^*\asymp n^{-1/5}\),\(R\asymp n^{-4/5}\);正态参考 \(h\approx1.06\hat\sigma n^{-1/5}\)
KDE 交叉验证 \(\hat J(h)=\int\hat f^2-\frac2n\sum_i\hat f_{-i}(X_i)\),精确无偏;Stone 定理
维数灾难 \(R\asymp n^{-4/(4+d)}\)
NW 回归 \(\hat r(x)=\sum_iw_i(x)Y_i\),\(w_i\propto K\big(\frac{x-x_i}h\big)\)
NW CV 捷径 \(\hat J=\sum_i\big(\frac{Y_i-\hat r(x_i)}{1-L_{ii}}\big)^2\),\(L_{ii}=K(0)/\sum_jK\big(\frac{x_i-x_j}h\big)\)
差分方差估计 \(\hat\sigma^2=\frac1{2(n-1)}\sum_i(Y_{i+1}-Y_i)^2\)
置信带 \(\hat r\pm q\,\hat\sigma\sqrt{\sum_iw_i^2}\),\(q=\Phi^{-1}\big(\frac{1+(1-\alpha)^{1/m}}2\big)\),针对 \(\bar r\)
可加模型 \(Y=\sum_jr_j(X_j)+\epsilon\),backfitting

练习

基础

  1. 证明引理 20.1 与定理 20.3(原书习题 4、5)。
  2. 原书习题 1:箱型核 \(K(x)=I(-\frac12<x<\frac12)\)。(a) 证明 \(\mathbb E\hat f(x)=\frac1h\int_{x-h/2}^{x+h/2}f(y)dy\),\(\mathbb V\hat f(x)=\frac1{nh^2}\Big[\int_{x-h/2}^{x+h/2}f-\Big(\int_{x-h/2}^{x+h/2}f\Big)^2\Big]\);(b) 证明若 \(h\to0\) 且 \(nh\to\infty\),则 \(\hat f_n(x)\xrightarrow Pf(x)\)。(提示:(b) 中偏差 \(\to0\) 用 \(f\) 连续,方差 \(\approx f(x)/(nh)\to0\)。)
  3. 从 (20.10) 出发推导 (20.11)、(20.12),验证 \(C=(3/4)^{2/3}(\int f'^2)^{1/3}\) 与 \(\frac{6^{2/3}}4(\int f'^2)^{1/3}\) 相等。
  4. 对高斯核和 \(f=N(0,\sigma^2)\),计算 \(c_1,c_2,c_3\),验证正态参考带宽 \(h^*\approx1.06\sigma n^{-1/5}\)。
  5. 推导直方图交叉验证捷径公式 (20.14)(原书习题 6)。
  6. 解释为什么用 KDE 估计的分布方差等于 \(\hat\sigma^2+h^2\sigma_K^2\)(\(\hat\sigma^2\) 为除以 \(n\) 的样本方差),并据此说明过度平滑对 VaR 的影响方向。

进阶

  1. 证明 NW 的 CV 捷径公式(定理 20.22,原书习题 10),并说明它为什么与线性回归的 LOOCV 捷径同构。
  2. 原书习题 8(回归直方图 regressogram):\(0\le x_i\le1\) 等距,按 (20.7) 分箱,\(x\in B_j\) 时 \(\hat r_n(x)=\bar Y_j\)。求近似风险、最优箱宽和收敛速率。(提示:偏差 \(\approx r'(x)(\tilde x_j-x)\),方差 \(\approx\sigma^2/(nh)\);与直方图形式相同,\(h^*\asymp n^{-1/3}\),\(R\asymp n^{-2/3}\)。)
  3. 原书习题 9:证明在 \(r\) 光滑的条件下差分估计 (20.36) 相合。若噪声有一阶自相关 \(\rho\),该估计量的极限是什么?(提示:\(\sigma^2(1-\rho)\);这说明差分法在微观结构噪声分析中要小心使用。)
  4. 编程:在 20.6.2 节代码中把 \(n\) 依次改为 3000、10000(注意内存,可分块计算),或把噪声 \(\sigma\) 降为 0.005,观察 CV 带宽和对非单调性的检测能力如何变化。用"信噪比 × 样本量"的语言总结。

原书推荐习题:第 20 章习题 1、6、7、8;有条件可做习题 2、3(把玻璃数据换成收益率数据)。

原书对照

本章内容 原书章节 PDF 页码
平滑的必要性、偏差–方差权衡、引理 20.1 第 20 章引言、20.1 p.307–309
直方图,定理 20.3–20.7,置信带定理 20.10,例 20.2、20.8、20.11 20.2 p.309–316
核密度估计,定理 20.14–20.16,例 20.13、20.17、20.19,多维与维数灾难 20.3 p.316–323
Nadaraya–Watson 回归,定理 20.21–20.22,CMB 例 20.23–20.24,可加模型与 backfitting 20.4 p.323–328
附录:置信集与偏差 20.5 p.328–329
文献注(Scott 1992;Silverman 1986;Härdle 1990;Loader 1999) 20.6 p.329
习题 20.7 p.329–330
正态参考带宽、局部线性回归简介(本教材补充) — —