第 02 章 导数与泰勒展开
久期、Delta、beta 都是「敏感度」,敏感度就是导数。本章把这个直觉变成可计算、可推导的工具,落到一个结论上:久期和凸性就是债券价格的一阶和二阶泰勒近似。Delta–Gamma 近似、伊藤引理、牛顿法都是同一个想法的应用。
学习目标
- 理解导数的定义和几何意义,会用数值差分验证导数;熟练使用求导法则。
- 会用一阶、二阶条件找极值、判断凸凹,会用洛必达法则。
- 会写常用泰勒展开并估计误差,能由此推导久期、凸性、\(\ln(1+x)\approx x\) 和波动率拖累。
1. 导数:变化率的极限
1.1 从久期说起
5 年期、年息 5% 的债券,收益率 6% 时价格 95.7876;收益率升到 6.01% 时价格 95.7467。价格变化与收益率变化之比约为 \(-0.0410/0.0001=-410\),它描述的是此刻的变化速度。把收益率变化缩得越来越小,比值稳定下来的那个数(\(-409.8\))就是导数。
1.2 定义
定义(导数):
若极限存在,称 \(f\) 在 \(x_0\) 处可导。分式叫差商,是平均变化率;导数是区间缩成一点时的瞬时变化率。也写作 \(\dfrac{dy}{dx}\),提醒你它是「\(y\) 的微小变化除以 \(x\) 的微小变化」。
例:\(f(x)=x^2\) 在 \(x_0=3\) 处。
差商 \(\dfrac{(3+h)^2-9}{h}=\dfrac{6h+h^2}{h}=6+h\)(\(h\neq0\) 时约去 \(h\)),\(h\to0\) 时趋于 6,所以 \(f'(3)=6\)。\(h=0.01\) 时差商为 6.01。
1.3 几何意义
差商是割线斜率,\(h\to0\) 时割线变成切线,所以 \(f'(x_0)\) 是切线斜率。切线方程:
这条直线是 \(f\) 在 \(x_0\) 附近的最佳线性近似。例:\(f(x)=x^2\) 在 3 处的切线是 \(y=9+6(x-3)\)。\(x=3.1\) 时切线给出 9.6,真值 9.61,误差 0.01 \(=(0.1)^2\)。误差是 \(h^2\) 量级,比 \(h\) 小得多,这就是「最佳」的含义。
1.4 可导与连续
可导一定连续:\(f(x_0+h)-f(x_0)=\dfrac{f(x_0+h)-f(x_0)}{h}\cdot h\to f'(x_0)\cdot0=0\)。
反过来不成立:\(|x|\) 在 0 处连续,但左右差商分别为 \(-1\) 和 \(1\),有个尖角。看涨期权到期收益 \(\max(S-K,0)\) 在 \(S=K\) 处也是如此,临近到期时平值 Gamma 急剧变大,就是在逼近这个尖角。
1.5 数值求导
没有解析导数时(例如蒙特卡洛定价),用差分近似:
- 前向差分:\(\dfrac{f(x+h)-f(x)}{h}\),误差约为 \(\dfrac{h}{2}f''(x)\)。
- 中心差分:\(\dfrac{f(x+h)-f(x-h)}{2h}\),误差约为 \(\dfrac{h^2}{6}f'''(x)\)。
误差公式来自第 7 节的泰勒展开。\(h\) 也不能太小,否则浮点数相减会损失有效数字。
import numpy as np
# 数值求导:前向差分与中心差分的误差,f(x) = e^x 在 x = 0 处,真值 f'(0) = 1
f = np.exp
for h in [1e-1, 1e-2, 1e-4, 1e-6, 1e-8, 1e-10]:
fwd = (f(h) - f(0)) / h
ctr = (f(h) - f(-h)) / (2 * h)
print(f"h={h:.0e} forward err={abs(fwd-1):.2e} central err={abs(ctr-1):.2e}")
输出:
h=1e-01 forward err=5.17e-02 central err=1.67e-03
h=1e-02 forward err=5.02e-03 central err=1.67e-05
h=1e-04 forward err=5.00e-05 central err=1.67e-09
h=1e-06 forward err=5.00e-07 central err=2.68e-11
h=1e-08 forward err=6.08e-09 central err=6.08e-09
h=1e-10 forward err=8.27e-08 central err=8.27e-08
误差分别约为 \(h/2\) 和 \(h^2/6\),与理论一致。\(h<10^{-6}\) 后舍入误差占上风。经验:中心差分取 \(h\approx10^{-4}\) 到 \(10^{-5}\)(按变量量级缩放)。
2. 求导法则
2.1 四条基本法则
设 \(f,g\) 可导,\(c\) 为常数:
| 法则 | 公式 |
|---|---|
| 线性 | \((cf+g)'=cf'+g'\) |
| 乘积 | \((fg)'=f'g+fg'\) |
| 商 | \(\left(\dfrac fg\right)'=\dfrac{f'g-fg'}{g^2}\),\(g\neq0\) |
| 链式 | \([f(g(x))]'=f'(g(x))\cdot g'(x)\) |
2.2 线性法则
组合的敏感度等于各部分敏感度之和,所以债券组合的美元久期可以直接相加。
例:\(f(x)=3x^2+5x\),\(f'(x)=6x+5\),\(f'(2)=17\)。
2.3 乘积法则
推导:
- 第 1 步,差商拆开:\(\dfrac{f(x+h)g(x+h)-f(x)g(x)}{h}\)。
- 第 2 步,分子加一项减一项 \(f(x)g(x+h)\):\(=\dfrac{f(x+h)-f(x)}{h}g(x+h)+f(x)\dfrac{g(x+h)-g(x)}{h}\)。
- 第 3 步,取极限:第一项 \(\to f'(x)g(x)\)(用到 \(g\) 可导所以连续),第二项 \(\to f(x)g'(x)\)。
金融例子:外币资产的本币价值 \(V=S\cdot X\),\(\dfrac{dV}{dt}=\dfrac{dS}{dt}X+S\dfrac{dX}{dt}\),两边除以 \(V\) 得:本币收益率 \(\approx\) 资产收益率 \(+\) 汇率收益率。
数值例:\(f(x)=x^2e^x\),\(f'(x)=2xe^x+x^2e^x=(2x+x^2)e^x\),\(f'(1)=3e=8.155\)。
2.4 商法则
例:\(f(x)=\dfrac{x}{1+x}\)。\(f'(x)=\dfrac{1\cdot(1+x)-x\cdot1}{(1+x)^2}=\dfrac{1}{(1+x)^2}\),\(f'(1)=0.25\)。
记不住商法则时,把 \(f/g\) 写成 \(f\cdot g^{-1}\) 用乘积和链式法则推。
2.5 链式法则
结论:\(\dfrac{dy}{dx}=\dfrac{dy}{du}\cdot\dfrac{du}{dx}\),其中 \(u=g(x)\),\(y=f(u)\)。
直观:\(x\) 变一点,\(u\) 跟着变 \(g'(x)\) 倍;\(u\) 变一点,\(y\) 跟着变 \(f'(u)\) 倍。连起来,\(y\) 变 \(f'(u)g'(x)\) 倍。敏感度沿链条相乘。
金融例子:期权价值 \(V\) 依赖股价 \(S\),股价依赖指数 \(M\),期权对指数的敏感度 \(=\dfrac{dV}{dS}\cdot\dfrac{dS}{dM}\),即 Delta 乘以股价对指数的敏感度(由 beta 决定)。
例 1:零息债券 \(P(y)=100e^{-yT}\),连续复利。令 \(u=-yT\),\(P=100e^u\)。
- \(\dfrac{dP}{du}=100e^u\),\(\dfrac{du}{dy}=-T\)。
- \(\dfrac{dP}{dy}=100e^{-yT}\cdot(-T)=-TP\)。
所以 \(-\dfrac{1}{P}\dfrac{dP}{dy}=T\):连续复利下零息债券的久期正好是期限。\(T=5\),\(y=4\%\):\(P=81.873\),\(dP/dy=-409.37\)。
例 2:\(f(x)=\ln(1+x^2)\)。外层 \(\ln u\) 导数 \(1/u\),内层 \(1+x^2\) 导数 \(2x\)。\(f'(x)=\dfrac{2x}{1+x^2}\),\(f'(1)=1\)。
神经网络是一长串复合函数,反向传播(第 10 册第 11 章)就是沿链条把局部导数乘起来。
3. 常用导数表
| \(f(x)\) | \(f'(x)\) | 备注 |
|---|---|---|
| \(x^n\) | \(nx^{n-1}\) | \(n\) 为任意实数 |
| \(e^x\) | \(e^x\) | 唯一导数等于自身的指数函数 |
| \(a^x\) | \(a^x\ln a\) | 由 \(a^x=e^{x\ln a}\) 和链式法则 |
| \(\ln x\) | \(1/x\) | \(x>0\) |
| \(\Phi(x)\) | \(\varphi(x)=\dfrac{1}{\sqrt{2\pi}}e^{-x^2/2}\) | 正态分布函数的导数是密度 |
| \(\ln f(x)\) | \(f'(x)/f(x)\) | 「对数导数」,即相对变化率 |
两个推导:
\((e^x)'=e^x\)。\(\dfrac{e^{x+h}-e^x}{h}=e^x\cdot\dfrac{e^h-1}{h}\to e^x\cdot1\)。用到第 01 章的重要极限。
\((\ln x)'=1/x\)。设 \(y=\ln x\),则 \(x=e^y\)。两边对 \(x\) 求导:\(1=e^y\cdot y'\)(链式法则),所以 \(y'=1/e^y=1/x\)。
对数导数 \(\dfrac{d}{dt}\ln P(t)=\dfrac{P'(t)}{P(t)}\) 是瞬时收益率;久期 \(-\dfrac{1}{P}\dfrac{dP}{dy}=-\dfrac{d\ln P}{dy}\) 也是相对变化率。
4. 高阶导数
对导数再求导得二阶导数 \(f''(x)=\dfrac{d^2f}{dx^2}\),依此类推有 \(f^{(n)}\)。一阶导数是变化速度,二阶导数是速度的变化速度,描述弯曲程度。期权的 Gamma \(=\dfrac{\partial^2V}{\partial S^2}\) 就是二阶导数:Gamma 大,Delta 变化快,对冲要频繁调整。
例:\(f(x)=x^3\),\(f'=3x^2\),\(f''=6x\),\(f'''=6\),\(f^{(4)}=0\)。\(e^x\) 的各阶导数都是 \(e^x\)。\(\ln(1+x)\):\(f'=(1+x)^{-1}\),\(f''=-(1+x)^{-2}\),\(f'''=2(1+x)^{-3}\),在 0 处分别为 \(1,-1,2\)。
5. 极值与凸性
5.1 一阶条件
定理(费马):若 \(f\) 在内点 \(x^*\) 取得局部极值且可导,则 \(f'(x^*)=0\)。
直观:在山顶,切线是水平的。如果切线斜率为正,往右走还能更高,就不是山顶。
注意:\(f'(x^*)=0\) 只是必要条件(\(x^3\) 在 0 处导数为 0 却不是极值);定理只管内点,权重约束 \(w\in[0,1]\) 的边界上最优解的导数可以不为零;不可导点(如 \(|x|\) 在 0 处)也可能是极值点。
5.2 二阶条件
若 \(f'(x^*)=0\),并且
- \(f''(x^*)>0\):局部极小(底部向上弯);
- \(f''(x^*)<0\):局部极大;
- \(f''(x^*)=0\):无法判断,需要更多信息。
5.3 例:均值–方差最优仓位
投资者把比例 \(w\) 投入风险资产(超额收益期望 \(\mu\)、波动率 \(\sigma\)),其余放无风险资产。均值–方差效用:
\(\gamma\) 为风险厌恶系数。
- 第 1 步,一阶条件:\(U'(w)=\mu-\gamma w\sigma^2=0\),解得 \(w^*=\dfrac{\mu}{\gamma\sigma^2}\)。
- 第 2 步,二阶条件:\(U''(w)=-\gamma\sigma^2<0\),所以是极大。
数值:\(\mu=6\%\),\(\sigma=20\%\),\(\gamma=3\)。\(w^*=0.06/(3\times0.04)=0.5\),最大效用 \(U=0.03-0.015=0.015\)。
最优仓位与预期超额收益成正比、与方差成反比,是多资产 \(w^*=\frac1\gamma\Sigma^{-1}\mu\)(第 05、06 章)的一维版本。
5.4 凸函数
定义(凸函数):若对区间内任意 \(x_1,x_2\) 和 \(\lambda\in[0,1]\),
称 \(f\) 为凸函数。白话:连接图像上任意两点的弦,都在图像上方。不等号反向是凹函数。
判别法:二阶可导时,\(f''(x)\ge0\) 处处成立 \(\iff\) \(f\) 是凸函数。
例:\(e^x\)(\(f''=e^x>0\))凸;\(\ln x\)(\(f''=-1/x^2<0\))凹;\(x^2\) 凸。债券价格 \(P(y)\) 对 \(y\) 凸(第 8 节的 \(P''>0\))。
数值:\(\ln2=0.693>\frac12(\ln1+\ln3)=0.549\),函数值在弦上方,符合凹函数。
凸性的重要意义:凸函数的局部极小就是全局极小。所以凸优化问题(如均值–方差优化)只要找到一阶条件的解就是最优解,不必担心陷入局部最优。第 04 册整册都在利用这一点。
凸性还带来 Jensen 不等式 \(\mathbb E[f(X)]\ge f(\mathbb E[X])\)(第 07 章)。
6. 洛必达法则
定理(洛必达):若 \(x\to a\) 时 \(f(x)\to0\)、\(g(x)\to0\)(或都趋于 \(\pm\infty\)),且 \(\lim\dfrac{f'(x)}{g'(x)}\) 存在,则
直观:两个都趋于 0 的量,比值由它们「趋于 0 的速度」决定,而速度就是导数。
例 1:\(\lim_{x\to0}\dfrac{e^x-1-x}{x^2}\)(第 01 章遗留的问题)。
\(0/0\) 型,求导得 \(\dfrac{e^x-1}{2x}\),仍是 \(0/0\) 型,再求导得 \(\dfrac{e^x}{2}\to\dfrac12\)。
例 2:\(\lim_{x\to\infty}\dfrac{x^2}{e^x}\)。\(\infty/\infty\) 型,求导两次得 \(\dfrac{2}{e^x}\to0\)。这就是第 01 章「指数快于幂」的证明。
例 3:\(\lim_{r\to0}\dfrac{1-e^{-rT}}{r}\),\(0/0\) 型,求导得 \(Te^{-rT}\to T\):零利率下连续年金的现值因子就是期限 \(T\)。
常见错误:不是 \(0/0\) 或 \(\infty/\infty\) 时不能用。\(\lim_{x\to0}\dfrac{x+1}{x+2}=\dfrac12\),若硬用洛必达会得 \(1\),错误。用之前一定先检查类型。
7. 泰勒展开
7.1 思路
切线是一次多项式近似。想把弯曲也近似进去,就加二次项、三次项。目标是:找一个多项式,在 \(a\) 点的函数值、一阶导、二阶导……都和 \(f\) 相同。
设 \(p(x)=c_0+c_1(x-a)+c_2(x-a)^2+\cdots+c_n(x-a)^n\)。逐次求导再代入 \(x=a\):\(p(a)=c_0\),\(p'(a)=c_1\),\(p''(a)=2c_2\),\(p'''(a)=3!\,c_3\),……,\(p^{(k)}(a)=k!\,c_k\)。要求 \(p^{(k)}(a)=f^{(k)}(a)\),得 \(c_k=\dfrac{f^{(k)}(a)}{k!}\)。
7.2 公式
泰勒公式:
余项 \(R_n\) 有两种常用写法:
- 拉格朗日余项:\(R_n(x)=\dfrac{f^{(n+1)}(\xi)}{(n+1)!}(x-a)^{n+1}\),\(\xi\) 是 \(a\) 与 \(x\) 之间的某个点。可以用来给误差定上界。
- 佩亚诺余项:\(R_n(x)=o\big((x-a)^n\big)\),表示余项比 \((x-a)^n\) 更快趋于 0。只说明误差的阶,不给具体大小。
\(a=0\) 时也叫麦克劳林展开。最常用的形式是把 \(x-a\) 写成 \(h\):
这一行是本章最重要的公式。读法:函数的变化量 \(\approx\) 一阶导 \(\times\) 变化 \(+\ \frac12\times\) 二阶导 \(\times\) 变化的平方。
7.3 常用展开(在 0 处)
| 函数 | 展开 | 收敛范围 |
|---|---|---|
| \(e^x\) | \(1+x+\dfrac{x^2}{2}+\dfrac{x^3}{6}+\cdots\) | 所有 \(x\) |
| \(\ln(1+x)\) | \(x-\dfrac{x^2}{2}+\dfrac{x^3}{3}-\cdots\) | \(-1<x\le1\) |
| \((1+x)^\alpha\) | \(1+\alpha x+\dfrac{\alpha(\alpha-1)}{2}x^2+\cdots\) | \(\lvert x\rvert<1\) |
推导 \(\ln(1+x)\):第 4 节已算出在 0 处 \(f=0\),\(f'=1\),\(f''=-1\),\(f'''=2\)。代入公式:\(0+x-\dfrac{1}{2}x^2+\dfrac{2}{6}x^3=x-\dfrac{x^2}{2}+\dfrac{x^3}{3}\)。
数值例:\(\sqrt{1.1}=(1+0.1)^{1/2}\approx1+0.05-\dfrac{1}{8}(0.01)=1.04875\)。真值 \(1.048809\),误差 \(6\times10^{-5}\)。收敛范围的来历见第 04 章。
7.4 误差有多大
import numpy as np
from math import factorial
# e^x 在 0 处的泰勒多项式,x = 0.5 与 x = 2,看阶数增加后误差怎样缩小
for x in [0.5, 2.0]:
for n in [1, 2, 4, 8]:
Tn = sum(x**k / factorial(k) for k in range(n + 1))
bound = np.exp(max(x, 0)) * abs(x) ** (n + 1) / factorial(n + 1) # 拉格朗日余项上界
print(f"x={x} n={n} T_n={Tn:.8f} err={np.exp(x)-Tn:.2e} bound={bound:.2e}")
输出:
x=0.5 n=1 T_n=1.50000000 err=1.49e-01 bound=2.06e-01
x=0.5 n=2 T_n=1.62500000 err=2.37e-02 bound=3.43e-02
x=0.5 n=4 T_n=1.64843750 err=2.84e-04 bound=4.29e-04
x=0.5 n=8 T_n=1.64872127 err=5.66e-09 bound=8.87e-09
x=2.0 n=1 T_n=3.00000000 err=4.39e+00 bound=1.48e+01
x=2.0 n=2 T_n=5.00000000 err=2.39e+00 bound=9.85e+00
x=2.0 n=4 T_n=7.00000000 err=3.89e-01 bound=1.97e+00
x=2.0 n=8 T_n=7.38730159 err=1.75e-03 bound=1.04e-02
上界的算法:\(e^x\) 的 \(n+1\) 阶导数是 \(e^\xi\),\(\xi\in(0,x)\),所以 \(e^\xi\le e^x\),误差 \(\le e^x\dfrac{x^{n+1}}{(n+1)!}\)。实际误差始终在上界之内。
结论:离展开点越近越准(二阶误差在 \(x=0.5\) 时 0.024,\(x=2\) 时 2.39);阶数越高越准,因为 \((n+1)!\) 最终压过 \(x^{n+1}\)。金融里的小量(日收益、\(\Delta y\))在 0.01 量级,二阶泰勒非常准;大冲击时应全额重估(full revaluation)。
8. 久期与凸性就是一阶、二阶泰勒近似
8.1 推导
债券价格是收益率的函数 \(P(y)\)。收益率从 \(y_0\) 变到 \(y_0+\Delta y\),按 7.2 节的公式展开:
两边减去 \(P(y_0)\),再除以 \(P(y_0)\):
所以:
这就是 CFA 里的久期–凸性公式:修正久期 \(D_{\text{mod}}=-\dfrac{1}{P}\dfrac{dP}{dy}\) 是一阶导数除以价格(取负号使其为正),凸性 \(C=\dfrac{1}{P}\dfrac{d^2P}{dy^2}\) 是二阶导数除以价格,\(\frac12\) 就是泰勒展开的 \(\frac{1}{2!}\)。被忽略的项量级是 \((\Delta y)^3\)。
8.2 显式计算
年付息债券 \(P(y)=\sum_{t=1}^{T}\dfrac{CF_t}{(1+y)^t}\)。逐项求导(线性法则 + 幂函数求导,\(\frac{d}{dy}(1+y)^{-t}=-t(1+y)^{-t-1}\)):
除以 \(-P\):
\(D_{\text{mac}}\) 是麦考利久期:以现值占比为权重的现金流平均时间。这就推出了 CFA 的关系 \(D_{\text{mod}}=D_{\text{mac}}/(1+y)\)。
再求一次导:
每一项都是正的,所以普通债券 \(P''>0\),价格是收益率的凸函数,这就是「正凸性」。
8.3 数值验证
import numpy as np
# 5 年期、票面 100、年息 5%、每年付息一次的债券,到期收益率 y = 6%
c, F, T = 5.0, 100.0, 5
t = np.arange(1, T + 1)
cf = np.full(T, c); cf[-1] += F
def price(y):
return np.sum(cf / (1 + y) ** t)
y0 = 0.06
P0 = price(y0)
# 解析导数
dP = np.sum(-t * cf / (1 + y0) ** (t + 1))
d2P = np.sum(t * (t + 1) * cf / (1 + y0) ** (t + 2))
# 中心差分
h = 1e-4
dP_num = (price(y0 + h) - price(y0 - h)) / (2 * h)
d2P_num = (price(y0 + h) - 2 * P0 + price(y0 - h)) / h**2
D_mod = -dP / P0
C = d2P / P0
D_mac = np.sum(t * cf / (1 + y0) ** t) / P0
print(f"P0={P0:.4f}")
print(f"dP/dy analytic={dP:.4f} numeric={dP_num:.4f}")
print(f"d2P/dy2 analytic={d2P:.4f} numeric={d2P_num:.4f}")
print(f"Macaulay D={D_mac:.4f} modified D={D_mod:.4f} D_mac/(1+y)={D_mac/(1+y0):.4f} convexity={C:.4f}")
for dy in [0.001, 0.01, 0.02, -0.02]:
exact = price(y0 + dy) - P0
lin = -D_mod * P0 * dy
quad = lin + 0.5 * C * P0 * dy**2
print(f"dy={dy:+.3f} exact={exact:+.4f} 1st-order={lin:+.4f} (err {exact-lin:+.4f})"
f" 2nd-order={quad:+.4f} (err {exact-quad:+.4f})")
输出:
P0=95.7876
dP/dy analytic=-409.7770 numeric=-409.7771
d2P/dy2 analytic=2242.4205 numeric=2242.4205
Macaulay D=4.5347 modified D=4.2780 D_mac/(1+y)=4.2780 convexity=23.4103
dy=+0.001 exact=-0.4087 1st-order=-0.4098 (err +0.0011) 2nd-order=-0.4087 (err -0.0000)
dy=+0.010 exact=-3.9880 1st-order=-4.0978 (err +0.1097) 2nd-order=-3.9856 (err -0.0024)
dy=+0.020 exact=-7.7658 1st-order=-8.1955 (err +0.4298) 2nd-order=-7.7471 (err -0.0187)
dy=-0.020 exact=+8.6642 1st-order=+8.1955 (err +0.4686) 2nd-order=+8.6440 (err +0.0202)
读结果:
- 解析导数与中心差分一致,8.2 节公式正确。中心差分除以 \(P\) 就是有效久期、有效凸性。
- 升 100bp:久期估计跌 4.098,实际跌 3.988;加上凸性项 \(+\frac12\times23.41\times0.0001\times95.79=+0.112\) 后误差只剩 0.002。
- 真实价格曲线是凸的,在切线上方,所以一阶近似的误差总是正的:上升时高估跌幅,下降时低估涨幅。这就是「凸性对多头有利」。
- 二阶误差与 \((\Delta y)^3\) 同阶:\(\Delta y\) 从 1% 到 2%,误差约放大 \(2^3=8\) 倍。
口径提醒:有的终端把凸性除以 100 报价(本例显示 0.234),用别人的数字前先确认口径。
8.4 同一个想法的其他化身
把「价格对某个变量做二阶泰勒展开」套到别处:
| 场景 | 变量 | 一阶项 | 二阶项 |
|---|---|---|---|
| 债券 | 收益率 \(y\) | 久期 | 凸性 |
| 期权 | 标的价格 \(S\) | Delta | Gamma |
| 优化 | 参数 \(x\) | 梯度下降 | 牛顿法 |
期权的 Delta–Gamma 近似 \(\Delta V\approx\Delta\cdot\Delta S+\frac12\Gamma(\Delta S)^2\) 与久期–凸性公式在结构上完全一样(第 08 册第 19b 章)。伊藤引理(第 08 册第 14 章)也是二阶泰勒展开,区别在于随机项的平方 \((dW)^2\) 的量级与 \(dt\) 相同,二阶项不能扔,于是多出 \(\frac12f''\sigma^2dt\)。
9. 对数收益与 \(\ln(1+x)\approx x\)
9.1 为什么约等于
由 \(\ln(1+x)=x-\dfrac{x^2}{2}+\dfrac{x^3}{3}-\cdots\):
- 一阶近似:\(\ln(1+x)\approx x\),误差约 \(x^2/2\)。
- 二阶近似:\(\ln(1+x)\approx x-\dfrac{x^2}{2}\),误差约 \(x^3/3\)。
令 \(x=R\) 为简单收益,\(r=\ln(1+R)\) 为对数收益,则 \(r\approx R-\dfrac{R^2}{2}\),对数收益总是略小于简单收益(\(R\neq0\) 时)。
import numpy as np
# ln(1+x) ≈ x 的误差,以及加上二阶项 x - x^2/2 后的误差
for x in [0.01, 0.10, 0.20, -0.20]:
exact = np.log1p(x)
print(f"x={x:+.3f} ln(1+x)={exact:+.6f} x-ln(1+x)={x-exact:.2e}"
f" x^2/2={x*x/2:.2e} (x-x^2/2)-ln(1+x)={x - x*x/2 - exact:+.2e}")
# 简单收益与对数收益:多期累加
r = np.array([0.10, -0.10, 0.05, -0.05])
print("simple returns sum:", round(r.sum(), 6), " compound:", round(np.prod(1 + r) - 1, 6))
lr = np.log1p(r)
print("log returns sum:", round(lr.sum(), 6), " exp(sum)-1:", round(np.expm1(lr.sum()), 6))
输出:
x=+0.010 ln(1+x)=+0.009950 x-ln(1+x)=4.97e-05 x^2/2=5.00e-05 (x-x^2/2)-ln(1+x)=-3.31e-07
x=+0.100 ln(1+x)=+0.095310 x-ln(1+x)=4.69e-03 x^2/2=5.00e-03 (x-x^2/2)-ln(1+x)=-3.10e-04
x=+0.200 ln(1+x)=+0.182322 x-ln(1+x)=1.77e-02 x^2/2=2.00e-02 (x-x^2/2)-ln(1+x)=-2.32e-03
x=-0.200 ln(1+x)=-0.223144 x-ln(1+x)=2.31e-02 x^2/2=2.00e-02 (x-x^2/2)-ln(1+x)=+3.14e-03
simple returns sum: 0.0 compound: -0.012475
log returns sum: -0.012553 exp(sum)-1: -0.012475
日收益 1% 时两种收益只差 0.5bp,可以互换;10% 时差 0.47%,不能忽略;\(\pm20\%\) 时还不对称(\(-22.3\%\) 对 \(+18.2\%\))。二阶近似把误差降低一个数量级,约为 \(x^3/3\)。
后两行:简单收益 \(+10\%,-10\%,+5\%,-5\%\) 加起来是 0,但实际复合收益是 \(-1.25\%\)。对数收益加起来是 \(-0.01255\),取 \(e^{(\cdot)}-1\) 正好还原 \(-1.25\%\)。多期复合用对数收益相加,横截面组合用简单收益加权,这是收益计算的基本规则。
9.2 波动率拖累:\(\mathbb E[\ln(1+R)]\approx\mu-\sigma^2/2\)
设简单收益 \(R\) 很小,均值 \(\mu\)、方差 \(\sigma^2\)。二阶展开再取期望:
- 第 1 步,展开:\(\ln(1+R)\approx R-\dfrac{R^2}{2}\)。
- 第 2 步,取期望(期望的线性性):\(\mathbb E[\ln(1+R)]\approx\mu-\dfrac12\mathbb E[R^2]\)。
- 第 3 步,用 \(\mathbb E[R^2]=\sigma^2+\mu^2\):\(\approx\mu-\dfrac{\sigma^2}{2}-\dfrac{\mu^2}{2}\)。
- 第 4 步,\(\mu^2\) 比 \(\sigma^2\) 小得多(如 0.0064 对 0.04),略去:\(\approx\mu-\dfrac{\sigma^2}{2}\)。
数值:年化 \(\mu=8\%\),\(\sigma=20\%\),几何平均增长率约为 \(8\%-2\%=6\%\)。波动越大,长期复合增长越被「拖累」。这解释了 CFA 中「几何平均 \(\le\) 算术平均」,也解释了 BSM 模型里 \(\ln S_T\) 的漂移是 \(r-\sigma^2/2\) 而不是 \(r\)(第 08 册第 15a 章)。
本章小结
| 概念 | 公式 | 说明 |
|---|---|---|
| 导数 | \(f'(x)=\lim_{h\to0}\dfrac{f(x+h)-f(x)}{h}\) | 瞬时变化率,切线斜率 |
| 中心差分 | \(\dfrac{f(x+h)-f(x-h)}{2h}\) | 误差 \(O(h^2)\),有效久期的算法 |
| 求导法则 | \((fg)'=f'g+fg'\);\(\dfrac{dy}{dx}=\dfrac{dy}{du}\dfrac{du}{dx}\) | 链式:敏感度沿链条相乘 |
| 极值 | 一阶 \(f'=0\);二阶 \(f''>0\) 极小,\(f''<0\) 极大 | |
| 凸函数 | \(f''\ge0\);局部极小即全局极小 | |
| 洛必达 | \(0/0\)、\(\infty/\infty\) 型:\(\lim f/g=\lim f'/g'\) | 先检查类型 |
| 泰勒公式 | \(f(a+h)=f(a)+f'(a)h+\frac12f''(a)h^2+o(h^2)\) | 本章核心 |
| 拉格朗日余项 | \(R_n=\dfrac{f^{(n+1)}(\xi)}{(n+1)!}h^{n+1}\) | 误差上界 |
| 久期凸性 | \(\dfrac{\Delta P}{P}\approx-D_{\text{mod}}\Delta y+\frac12C(\Delta y)^2\) | 二阶泰勒 |
| 久期与凸性 | \(D_{\text{mod}}=-P'/P=D_{\text{mac}}/(1+y)\),\(C=P''/P\) | |
| 对数收益 | \(\ln(1+R)\approx R-R^2/2\) | |
| 波动率拖累 | \(\mathbb E[\ln(1+R)]\approx\mu-\sigma^2/2\) |
练习
1. 用导数定义求 \(f(x)=1/x\) 在 \(x=2\) 处的导数,并用 \(h=0.01\) 的差商核对。
答:\(\dfrac{1/(2+h)-1/2}{h}=\dfrac{-h}{2(2+h)h}=\dfrac{-1}{2(2+h)}\to-\dfrac14\)。\(h=0.01\):\(\dfrac{-1}{4.02}=-0.24876\)。
2. 求 \(f(x)=x^3e^{-2x}\) 的导数,并计算 \(f'(1)\)。
答:乘积 + 链式:\(f'=3x^2e^{-2x}-2x^3e^{-2x}=x^2(3-2x)e^{-2x}\)。\(f'(1)=e^{-2}=0.1353\)。
3. 永续年金每年支付 \(c\),价格 \(P(y)=c/y\)。求修正久期和凸性;\(y=5\%\) 时它们分别是多少?
答:\(P'=-c/y^2\),\(D_{\text{mod}}=1/y=20\)。\(P''=2c/y^3\),\(C=2/y^2=800\)。
4. 用第 3 题结果,估计 \(y\) 从 5% 升到 6% 时永续年金价格的变化百分比,并与精确值比较。
答:\(-20\times0.01+\frac12\times800\times0.0001=-0.20+0.04=-16\%\)。精确:\((1/0.06)/(1/0.05)-1=-16.67\%\)。仅用久期估计为 \(-20\%\)。二阶近似好得多,但 \(\Delta y\) 相对 \(y\) 不小,仍有误差。
5. 求 \(U(w)=0.08w-2w^2\times0.0625\) 的最大值点,并说明是极大。
答:这是 \(\mu=0.08\),\(\gamma=4\),\(\sigma=0.25\) 的情形。\(U'=0.08-0.25w=0\),\(w^*=0.32\)。\(U''=-0.25<0\),是极大。
6. 判断 \(f(x)=x\ln x\)(\(x>0\))的凸凹性,并求最小值。
答:\(f'=\ln x+1\),\(f''=1/x>0\),凸。\(f'=0\) 得 \(x=e^{-1}=0.3679\),最小值 \(-e^{-1}=-0.3679\)。凸函数的局部极小就是全局极小。
7. 用洛必达求 \(\lim_{x\to0}\dfrac{1-\cos x}{x^2}\),再用泰勒展开验证。
答:两次洛必达:\(\dfrac{\sin x}{2x}\to\dfrac{\cos x}{2}\to\dfrac12\)。泰勒:\(1-\cos x=\frac{x^2}{2}-\cdots\),除以 \(x^2\) 得 \(\frac12\)。
8. 写出 \((1+x)^{-1/2}\) 在 0 处的二阶泰勒展开,并估计 \(1/\sqrt{1.04}\)。
答:\(\alpha=-\frac12\):\(1-\frac12x+\frac{(-1/2)(-3/2)}{2}x^2=1-\frac x2+\frac38x^2\)。\(x=0.04\):\(1-0.02+0.0006=0.9806\)。真值 \(0.980581\)。
9. 年化简单收益均值 10%、波动率 30%,用二阶近似估计对数收益的期望;若波动率降到 15%,期望变为多少?
答:\(0.10-0.09/2=5.5\%\);\(0.10-0.0225/2=8.875\%\)。均值相同,低波动的长期复合增长更高。
10. 零息债券(年复利)\(P=100/(1+y)^{10}\),\(y=4\%\)。求修正久期,并用 \(h=10^{-4}\) 的中心差分算有效久期核对。
答:\(P'=-1000(1+y)^{-11}\),\(D_{\text{mod}}=10/1.04=9.6154\)。数值:\(P(0.0401)=67.4915\),\(P(0.0399)=67.6214\),\(P(0.04)=67.5564\),有效久期 \(=(67.6214-67.4915)/(2\times0.0001\times67.5564)=9.6154\)。
在全书中用到的地方
- 第 08 册第 04 章「利率」、第 06 章「利率期货」:久期、凸性与套期保值。
- 第 08 册第 14 章「维纳过程与伊藤引理」:保留 \((dW)^2\) 项的二阶泰勒展开。
- 第 08 册第 15a 章「BSM 模型的基础与偏微分方程」:漂移 \(r-\sigma^2/2\)。
- 第 08 册第 19b 章「Gamma、Vega 与希腊字母风险管理」:Delta–Gamma 近似。
- 第 06 册第 01 章「金融收益率及其统计特征」:简单收益与对数收益。
- 第 04 册第 02 章「无约束优化基础」、第 07 章「导数计算」:最优性条件、有限差分。
- 第 10 册第 11 章「反向传播」:链式法则。
- 第 03 册第 09 章「参数推断」:Delta 方法。