私募工场,私募FOF基地 关于私募工场(ID:simugongchang) 来源: 编辑:私募工场,转载请联系客服,了解转载方式 第 7 章 - 随机微分方程
官方定义: A stochastic differential equation (SDE) is essentially an ordinary differential equation (ODE) in which at least one of the terms is a stochastic process. 定义的不错。
随机微分方程 (SDE) 就是常微分方程 (ODE) 加个随机过程。
7.1 伊藤公式和随机微分方程
回到小节 6.1,下表给出 ODE 和 SDE 的方程形式和解。两者唯一区别就是红色标记的随机项。 对于随机微分方程,dt 前面的项叫做漂移项 (drift term),dB(t) 前面的项叫做扩散项 (diffusion term)。严格来说,布朗运动 B(t) 处处不可导因此 dB(t) 实际上不存在,我们定义 dB(t) 是组成随机过程的最基本元素。在应用中我们可以忽略这些技术性细节,只记住伊藤公式可以帮我们解好多随机微分方程。例子如下: dX(t) = X(t)dB(t) 令 f(x) = ln(x),用伊藤公式 7.2 一般线性随机微分方程
一般线性 (generic linear) 随机微分方程的形式和解为:
证明有些冗长因此略去,这个一般线性随机微分方程解的强大之处是,对于大部分金融模型,比如股票类 Black-Scholes 模型,利率类 Vasicek 模型和商品类 Schwartz 模型等等,它都给给出解析解。
这三种模型 (按 Black-Scholes, Vasicek 和 Schwartz 的顺序) 的 SDE 为 前两个 SDE 都符合般线性随机微分方程形式,最后一个 SDE 不符合,因为里面出现了 lnC(t),但是根据伊藤公式求 dlnC(t) 得 类比三个模型 SDE 和一般线性 SDE 的 α(t), β(t), γ(t) 和 δ(t),再代入 U(t) 和 V(t) 的表达式可得下表: 7.3 鞅和随机微分方程
根据鞅表示 (martingale representation) 定理,如果 M(t) 是一个鞅,那么存在一个伊藤过程 H(t) 使得 从 M(t) 的微分表达形式可看出,在某个概率测度下,如果一个随机变量是鞅,那么它的随机微分方程的漂移项为零!
这个结果有很多应用,下面给出一个最常见的应用:为什么一个不付红利 (dividend) 的股票 S(t) 的 SDE 在风险中性测度 Q 下的漂移项系数是 r? 假设在测度 Q 下 S(t) 的 SDE 可写成
dS(t) = aS(t)dt + bS(t)dB(t)
根据上篇 4.2 小节最后的结论,测度 Q 下的等价物是活期存款 β(t),其 SDE 为 dβ(t) = rβ(t)dt => β(t) = β(0)ert = ert 那么S(t)/β(t) 在测度 Q 是鞅,因此其 SDE 的漂移项为零。根据 6.3 小节的乘法原则结果可得 显然漂移项为零可推出 a 等于 r,证毕。 最后给出 S(t) 在风险中性测度 Q 和真实测度 P 下的 SDE: dS(t) = rS(t)dt + bS(t)dBQ(t) dS(t) = μS(t)dt + bS(t)dBP(t) 从上面两个 SDE 可看出
第 8 章 - 有限差分方法
官方定义:Finite difference methods (FDM) are numerical methods for solving differential equations by approximating them with difference equations, in which finite differences approximate the derivatives.
定义的不错。
有限差分法是一种微分方程 (常微分或者偏微分) 数值方法,是通过有限差分來近似导数,从而寻求微分方程的近似解。在量化金融中,由于一个金融产品的价值是至少和其原生资产 (变量1) 和时间 (变量2) 有关,因此该金融产品对应的微分方程 (先别管它具体形式) 一定含有偏导数 (因为至少有 2 个变量) 从而是偏微分方程 (partial differential equation, PDE)。基于以上原因,本章的有限差分方法是适用在偏微分方程上。关于私募工场(ID:simugongchang)首先如何得到它?用费曼卡兹定理!由于篇幅问题,本章只讨论一维 PDE 的有限差分方法。 8.1 费曼卡兹定理
费曼卡兹定理 (Feynman-Kac theorem) 是随机微分方程 (SDE) 和偏微分方程(PDE) 的纽带。通常对于一个金融衍生品 V,已知
我们用费曼卡兹定理可以推出 V 的偏微分方程。
我知道很多大学学过量化金融的同学每次推导 V 的偏微分方程的做法,步骤总结如下:
对于上面牛逼烘烘的步骤,我只想说每次这样推累不累啊,有个一步到位的方法 (费曼卡兹定理) 想不想知道啊? 因为该定理太美秒,我认为还是有必要写写其证明过程的。证明所需的三个引理和一个假设:
根据引理 a 可得 构建变量 Y(t) = e-rt ∙V(t) 是个鞅,证明如下,当 s < t=""> 上式用到的重复预期法则也就是塔性质 (tower property),直观的理解就是当你求 50 个数的均值,你可以 i)先分成 10 堆求每堆 5 个数的均值,再求这 10 个平均数的均值,或 ii)直接求这 50 个数的均值。 再根据引理 b,对 Y(t) 使用伊藤公式 最后根据引理 c,dY(t) 的漂移项为零,将 dt 项前面系数设为零可得
衍生品 V(t, x) 是关于时间变量 t 和空间变量 x 的函数,之后几节的内容为:
8.2 方程解域和网格
给定偏微分方程,第一件事就是定下它的解域,因为你不可能求出它在无限域的解。金融产品一般都会有个有限的到期日 T,而原生资产 x 值也应该有个范围。一般解域定义成 0 ≤ t ≤ T 和xmin ≤ x ≤ xmax。对 x 的上下界通常用两种方法来确定。
确定解域之后,下步就该建立网格,分为等距网格 (equidistant grids) 和不等距网格 (non-equidistant grids)。 为了使得符号表达更简洁,我们在后面一直用等距网格。但有的时候不等距网格能提高运算效率,比如在 Heston 模型中,我们知道波动率维度的变量集中在 0 附近,因此在 0 点附近点会打的密集些。 8.3 终值与边界条件
在 tn= T 处施加终值条件 V(T, x) = g(x),这很简单因为一个金融产品到期日的支付函数都会清楚的写在交易合约里面。 在 x0 和 xm+1 处施加边界条件,类型有两大类:
具体三种形式见下表: 设定完解域,建立完网格,施加完终值与边界条件后,你脑海应该出现这样的图案! 红点是终值和边界条件上的点,蓝点是内点也是需要解的点,黑点是最终要解的点 (对应时间 t = 0,而金融产品定价不就是求出 0 点时的价值吗?)。下一小节我们来讲讲如何将产品函数 V(t, x) 在这美丽的网格离散吧。
8.4 空间与时间离散为了简化说明,用粗体形式定义 Vj(t) = V(t, xj) 和 V 表示向量。我们有不同的方法来近似具有空间和时间维度的偏导数。 注意到上表所有的离散公式都用的是一个约等于号,是因为这些表达式都是用泰勒公式推出来的,而泰勒公式都包含误差项。下面我们先介绍在空间维度 (xj 点) 上离散,再介绍再时间维度上 (tθi,i+1) 离散,最后介绍边界点的离散情况。
将小节 8.1 推出的 PDE 整理一下 (并将 r 变成 r(t, x) 更加通用些),左边是时间,右边是空间。a) 在空间维度 (xj 点) 对一阶偏导和二阶偏导用中央差分。b) 在 tθi,i+1= θti + (1 - θ)ti+1 点上用离散 上式中的 O(∙) 是误差项,可由泰勒公式推出。此外上面时间离散格式被称为 θ 格式:
我们发现当 θ = 0.5时 (CN 格式),那个指标函数1{·} 等于 0,因此误差是 Δt 的 2 次方;当 θ = 0 (隐性格式) 或 1(显性格式) 时,误差是 Δt 的 1 次方,比 2 次方要大 (因为 Δt 小于 1)。因此 CN 格式误差最小收敛最快。
显性、隐性和 CN 三种格式的图如下: 根据收敛结果,你们可能会想知道为什么会有人用除了 CN 格式之外的。 CN 格式确实常常是选择的方法,但是有少数情况 CN 格式的数值解不稳定。然而隐性格式可以总是缓解这些问题。最后考虑到稳定性问题,显式格式应该永远不要被应用。 需要注意的是,上述空间离散都是发生在内点 (interior points) 上的。最后根据小节 8.3 中边界条件来完成边界点的离散形式。 运用一些数学变换,我们发现这三类边界条件的离散形式可以写成以下通式。 其中 8.5 有限差分格式
将上一节左边和右边表达式联系起来并舍去误差项得到,在 (tθi,i+1, xj) 点上离散的方程为
8.6 欧式期权例子在 Black-Scholes 模型下,股票 S(t) 的 SDE 为 将小节 8.1 的 SDE 一般形式和 Black-Scholes 模型的 SDE 类比,发现 以欧式看跌期权 (put option) 为例,它在到期日 T 的支付函数是
V(T,S(T)) = [K – S(T)]+
下表给出看跌期权的终值和边界条件:
下面只需从 T 点向 0 点一步一步解小节 8.5 的差分方程即可: 最后根据 PDE 计算看跌期权就是一个矩阵计算问题,这里要强调的是通常我们的网格打的很密,因此矩阵 M 很大,直接解逆矩阵会画很多时间 O(m3)。由于 M 是三对角矩阵 (只有 3 个对角线上有非零值),对于折中稀疏矩阵 (sparse matrix),我们可用“LU-分解 (matlab 里面有函数 lu() 直接可以用)”的方法来解,只需 O(m) 的时间,做法如下:
M = L · U V(ti) = U-1 · (L-1 · zi+1) 定价欧式期权的算法总结如下: 原创一个用有限差分计算看跌期权价值的动态图 第 9 章 - 蒙特卡洛模拟
官方定义:Monte Carlo (MC) simulations are used in finance and mathematical finance to value and analyse (complex) instruments, portfolios and investments by simulating various sources of uncertainty affecting their value, and then determining the distribution of their value over the range of resultant outcomes.
定义的还可以。在金融产品定价上,蒙特卡洛主要根据大数定理以及中央极限定理,将期望表达式转换成算数平均表达式,然后模拟在每条路径上产品支付函数,将其累加再求平均值。
蒙特卡洛模拟非常简单,因为:
蒙特卡洛模拟非常麻烦,因为:
除了上面所讲,蒙特卡洛里面的小伎俩实在是太多了,限于篇幅,作者不可能一一讲全,本章主要用蒙特卡洛定价欧式期权的例子来说明一些概念。 9.1 期望转成算数平均
通常对于一个金融衍生品 V,已知
从无套利原则加上大数定理可得 9.2 股票价格模拟
在 Black-Scholes 模型下,股票 S(t) 的 SDE 为 根据伊藤公式求出 dlnS 最后公式里面有几个需要解释的要点:
此外根据布朗运动增量均值为零和等距性质 (Isometry property),计算出带有布朗运动的积分项 (设为 Y) 的均值和方差 9.3 欧式期权例子
以欧式看跌期权为例
计算期权价格的关键就是模拟出 zk,而在 matlab 中就是几行代码的问题,如下:
我知道这代码有很多可以改进的地方,比如可以用对偶变量 (antithetic variates) 减低 S(T) 的方差,可以用伪随机数比如 sobel sequence 来生成随机变量 zk。
我也知道还有太多蒙特卡洛的内容没有介绍,比如如何模拟相关多变量 (cholesky decomposition),比如如何模拟 Heston 模型里面的波动率项并保证其值为正 (quadratic exponential Monte Carlo),比如如何用蒙特卡洛定价美式期权(least square Monte Carlo)。耐心点,等到专门有一贴来专研这些问题。 第 10 章 - 模型校正
官方定义:Model calibration is to calibrate a model to market data by determining its endogenous parameters in such a way it describes observable market data as good as possible.
定义的不错。但是我想把范围缩小到金融产品定价模型的校正。
在这种情况下,模型校正是选择模型中的参数使得市场流动性强的交易价格 (市场价格) 和模型输出 (模型价格) 完全匹配或尽可能接近。 任何量化金融模型都会有参数,这些参数可由历史数据 (historical data) 或隐含数据 (implied data) 计算出来。关于私募工场(ID:simugongchang)最经典的例子就是 Black-Scholes 里面的波动率参数,到底是用历史波动率 (historical volatility) 还是隐含波动率 (implied volatility) 校正呢?
一般统计模型或方法校正参数用的是历史数据,比如 GARCH 模型和 Karman filter 方法;而一般金融定价模型或方法校正参数用的隐含数据,比如 Black-Scholes 和 Heston 模型。
举一个具体例子,市场上股指期权在不同的行权价格和到期日交易,因此有一个 2 维价格平面。假设我们要用 Heston 模型对一个障碍期权估值,但没有解析解,只能用数值解如有限差分或者蒙特卡洛模拟。但是第一步需要知道 Heston 里面模型参数怎么给,总不能闭着眼拍桌子给一个吧 (虽然大学里做项目都是这样的)。这时候就需要校正参数了。
即便是复杂模型,绝大部分情况对市场交易产品都有解析解或者近似解析解,我们称之为模型价格。而这些产品的市场价格 (由市场供求决定的) 可以直接从市场上拿到 (如果报价是价格) 或者带入 Black-Scholes 公式里面算出(如果报价是波动率)。根据作者经验,市场报价是波动率,因为价格在不同的行权价格或时间上数值差很远,一个 10 美元另一个 0.5 美元,但是波动率都是在 1% 到 100% 之间(除了压力情景下的) 变动的,数值规模比较一致。
在撸起袖子努力干前,你要问自己两个问题:
假设市场由 m 个行权价格 K 和 n 个到期日 T 对应的期权 V (总共 mn 个),定义模型参数集为 θ,模型校正可转换成以下数学问题 每个都有自己的长短处,比如用:
此外,大多时候我们都想价中 (at-the-money, ATM) 期权 (因为其高流动性) 的误差最小化,所以我们会放较大的权重,对于 ITM 或 OTM 期权,会放较低权重。关于私募工场(ID:simugongchang)但是这个不是绝对的,要看实际问题中你最想拟合好哪类期权。 下面是作者用真实的市场数据
来校正在外汇市场的 Heston 模型。 从上图上看结果还不错,基本上模型价格 (波动率) 和市场价格 (波动率) 相差不远。有了这组模型参数,我们可以用 Heston 模型来定价更为复杂的产品比如窗口式障碍/触碰期权 (partial window barrier/touch option) 了。
总结:
量化金融十大话题就揭秘完毕。 【完】 |
|