← 全部报告

DrX-闭式解验证技术报告:配对交易 Smooth-Fit 方程组的数值求解

对象: Tie, Zhang & Zhang (2017, JOTA) 配对交易论文 §6 的闭式解 目标: 独立复现论文报告的 $k_1=1.039$、$k_2=1.282$(Target/Walmart 校准) 日期: 2026-10-13 代码: ~/workspace/dgm-pairs/pairs_model.py(类 PairsModel)


1. 为什么要做闭式解验证

本项目的主线是用 DGM(深度学习)求解 HJB 变分不等式。DGM 是近似方法,必须有一个精确基准来量化它的误差。原论文给出了闭式解,但只报告了三位小数的结果,没有给出求解细节。本报告完整记录从原始参数到 $k_1$、$k_2$ 的每一步推导与数值求解,并做多项一致性验证,确保基准本身可靠。


2. 模型参数

2.1 原始参数(论文 §6,Target/Walmart 日收益率校准)

参数 含义 值
$\mu_1$ $S^1$ 漂移 0.2059
$\mu_2$ $S^2$ 漂移 0.2459
$\sigma_{11}$ $S^1$ 自波动 0.3112
$\sigma_{12}=\sigma_{21}$ 交叉波动 0.0729
$\sigma_{22}$ $S^2$ 自波动 0.2943
$\rho$ 贴现率 0.5
$K$ 比例交易成本 0.001

记 $\beta_b = 1+K = 1.001$(买入成本系数),$\beta_s = 1-K = 0.999$(卖出所得系数)。

2.2 导出量:相对波动率 $\lambda$

降维后($y=x_2/x_1$)的微分算子为 $Lw = \lambda y^2w'' + (\mu_2-\mu_1)yw' + \mu_1w$,其中

$$\lambda = \frac{a_{11} - 2a_{12} + a_{22}}{2}, \quad a_{ij} = \sum_k \sigma_{ik}\sigma_{jk}$$

即 $a = \sigma\sigma^T$ 为协方差矩阵,$\lambda$ 是相对价格 $y$ 的瞬时方差的一半。数值计算:

2.3 特征根 $\delta_1$、$\delta_2$

在持有区 $\Gamma_2$ 内,$w_0$、$w_1$ 满足 $\rho w - Lw = 0$。试 $y^\delta$ 型解:

$$L[y^\delta] = \lambda\delta(\delta-1)y^\delta + (\mu_2-\mu_1)\delta y^\delta + \mu_1y^\delta$$

$(\rho - L)y^\delta = 0$ 给出特征方程:

$$\lambda\delta^2 + (\mu_2-\mu_1-\lambda)\delta + (\mu_1-\rho) = 0$$

两边除以 $\lambda$,记 $m = 1 + \frac{\mu_1-\mu_2}{\lambda}$,判别式 $\Delta = m^2 + \frac{4(\rho-\mu_1)}{\lambda}$,得:

$$\delta_{1,2} = \frac{m \pm \sqrt{\Delta}}{2}$$

数值:$m = 0.243893$,$\Delta = 22.296$,故

满足 $\delta_1 > 1 > 0 > \delta_2$(论文要求的根的分布,保证边界行为正确:$y\to 0$ 时 $y^{\delta_1}\to 0$,$y\to\infty$ 时 $y^{\delta_2}\to 0$)。


3. 三区域结构与分段解的形式

论文证明存在 $0 < k_1 < k_2$,使得:

区域 $y$ 范围 经济含义 $w_0$ $w_1$
$\Gamma_1$ $(0,k_1]$ 平仓区 $C_0y^{\delta_1}$ $C_0y^{\delta_1}+\beta_s-\beta_by$
$\Gamma_2$ $(k_1,k_2)$ 持有区 $C_0y^{\delta_1}$ $C_1y^{\delta_2}$
$\Gamma_3$ $[k_2,\infty)$ 开仓区 $C_1y^{\delta_2}-\beta_b+\beta_sy$ $C_1y^{\delta_2}$

理解:

四个未知数:$k_1$、$k_2$、$C_0$、$C_1$。需要四个方程——来自两处自由边界的值匹配 + 导数匹配(smooth-fit)。


4. Smooth-Fit 方程组

4.1 在 $k_1$ 处($w_1$ 的光滑连接,论文 eq 9)

值匹配: $$C_0k_1^{\delta_1} + \beta_s - \beta_bk_1 = C_1k_1^{\delta_2}$$

导数匹配(对 $y$ 求导): $$C_0\delta_1k_1^{\delta_1-1} - \beta_b = C_1\delta_2k_1^{\delta_2-1}$$

写成关于 $[C_0, C_1]^T$ 的 $2\times 2$ 线性系统:

$$ \begin{bmatrix} k_1^{\delta_1} & -k_1^{\delta_2} \\ \delta_1k_1^{\delta_1-1} & -\delta_2k_1^{\delta_2-1} \end{bmatrix} \begin{bmatrix} C_0 \\ C_1 \end{bmatrix} = \begin{bmatrix} \beta_bk_1 - \beta_s \\ \beta_b \end{bmatrix} \tag{9} $$

4.2 在 $k_2$ 处($w_0$ 的光滑连接,论文 eq 10)

值匹配: $$C_0k_2^{\delta_1} = C_1k_2^{\delta_2} - \beta_b + \beta_sk_2$$

导数匹配: $$C_0\delta_1k_2^{\delta_1-1} = C_1\delta_2k_2^{\delta_2-1} + \beta_s$$

矩阵形式:

$$ \begin{bmatrix} k_2^{\delta_1} & -k_2^{\delta_2} \\ \delta_1k_2^{\delta_1-1} & -\delta_2k_2^{\delta_2-1} \end{bmatrix} \begin{bmatrix} C_0 \\ C_1 \end{bmatrix} = \begin{bmatrix} \beta_sk_2 - \beta_b \\ \beta_s \end{bmatrix} \tag{10} $$

4.3 化为关于 $(k_1,k_2)$ 的非线性方程

对给定的 $k_1$,方程 (9) 是关于 $(C_0,C_1)$ 的线性系统,记其解为 $C^{(a)}(k_1)$;对给定的 $k_2$,方程 (10) 的解记为 $C^{(b)}(k_2)$。两者必须一致:

$$F(k_1,k_2) := C^{(a)}(k_1) - C^{(b)}(k_2) = 0 \quad \in \mathbb{R}^2$$

这是关于 $(k_1,k_2)$ 的 2 维非线性方程组。


5. 数值求解策略

5.1 对数变换

$k_1,k_2 > 0$,直接求解可能出现负值。用 $u_i = \log k_i$ 变换,无约束优化 $u \in \mathbb{R}^2$,再 $k_i = e^{u_i}$。这保证了正性,且把乘法尺度变为加法尺度,改善条件数。

5.2 求解器

scipy.optimize.fsolve(MINPACK hybrd),初值 $u^{(0)} = \log([1.0, 1.3])$(即 $k_1^{(0)}=1.0$、$k_2^{(0)}=1.3$,满足 $k_1 < k_2$ 的先验)。

收敛标志 ier = 1(正常收敛)。

5.3 求出 $C_0$、$C_1$

$k_1$、$k_2$ 确定后,代入方程 (9) 的 $2\times 2$ 系统(numpy.linalg.solve)解出 $C_0$、$C_1$。


6. 求解结果

量 数值(8 位小数) 论文报告
$k_1$ 1.03801389 1.039
$k_2$ 1.28313277 1.282
$C_0$ 0.21789077 —
$C_1$ 0.21632438 —

与论文一致:$|1.03801389 - 1.039| = 0.00099$,$|1.28313277 - 1.282| = 0.00113$,相对误差约 0.1%。论文只给了三位小数,且其内部校准参数可能有舍入,0.001 量级的差异在预期内。


7. 验证

7.1 Smooth-fit 残差(机器精度)

检查项 残差
$k_1$ 处 $w_1$ 值匹配 8.3e-17
$k_1$ 处 $w_1$ 导数匹配 5.6e-17
$k_2$ 处 $w_0$ 值匹配 2.2e-16
$k_2$ 处 $w_0$ 导数匹配 1.1e-16

四项全部达到双精度机器精度,说明非线性方程组确实被精确求解。

7.2 PDE 残差

在 $\Gamma_2$ 内任取 $y=1.15$,$\rho w - Lw$ 的残差为 1e-17 量级($w_0$、$w_1$ 均为 -2.8e-17 / -1.4e-17),验证 $C_0y^{\delta_1}$、$C_1y^{\delta_2}$ 确为 PDE 的解。

7.3 变分不等式检验

在 $y \in [0.2, 3.5]$ 的 2000 点网格上数值检验:

满足互补条件:PDE 残差与障碍间隙至少其一为零。

7.4 解的合理性


8. 完整闭式解表达式(数值代入后)

$$w_0(y) = \begin{cases} 0.21789077\, y^{2.48291186}, & y \leq 1.03801389 \\ 0.21789077\, y^{2.48291186}, & 1.03801389 < y < 1.28313277 \\ 0.21632438\, y^{-2.23902087} - 1.001 + 0.999y, & y \geq 1.28313277 \end{cases}$$

$$w_1(y) = \begin{cases} 0.21789077\, y^{2.48291186} + 0.999 - 1.001y, & y \leq 1.03801389 \\ 0.21632438\, y^{-2.23902087}, & 1.03801389 < y < 1.28313277 \\ 0.21632438\, y^{-2.23902087}, & y \geq 1.28313277 \end{cases}$$

二维提升:$V_i(x_1,x_2) = x_1\, w_i(x_2/x_1)$。


9. 代码与复现

cd ~/workspace/dgm-pairs
~/workspace/.venv-stocks/bin/python pairs_model.py
# 输出:
# lam=0.052902 d1=2.4829 d2=-2.2390
# k1=1.0380 (paper 1.039)  k2=1.2831 (paper 1.282)
# C0=0.217891 C1=0.216324

核心代码(pairs_model.py::solve_closed_form):对数变换 + fsolve 求解 2 维非线性方程 + linalg.solve 解 $2\times 2$ 线性系统,共约 25 行。


10. 结论

独立复现了论文的闭式解:$k_1 = 1.0380$、$k_2 = 1.2831$,与论文报告的 1.039、1.282 一致(0.1% 相对误差,属三位小数舍入范围)。Smooth-fit 残差达机器精度,PDE 与变分不等式检验全部通过。该闭式解作为 DGM 数值实验的精确基准可靠。

发布日期:2026-10-13 · 类型:数据掘金