• QQ空间
  • 回复
  • 收藏

金融工程高度概览

gyshssl 数据策略 2019-9-18 23:31 121852人围观

0引言
金融工程核心内容可由下图高度概括:

111512oltltg1fnpgiv6ng.jpg


整个流程图分为 6 大模块,除了开始的“数据参数”模块,后 5 个模块都有相对应的函数。

    模块一:数据参数
    模块二:变量计算 (获取函数 I)
    模块三:曲线构建 (拔靴函数 B)
    模块四:模型校正 (校正函数 C)
    模块五:产品估值 (估值函数 M)
    模块六:风险计量 (风险函数 L)

这张流程图是我对金融工程理解的浓缩,十年磨一图,相信会对从事金工的读者有所帮助,下面请允许我娓娓道来。

1数据参数
111513s8ffzzmfm9qfqiyz.jpg

It is a capital mistake to theorize before one has data.  -- Sherlock Holmes

数据永远是重要的,对金融工程也不例外。这个数据可以细分成三类:
Θmkt(t): 每天直接观察到的市场数据
存款利率、利率期货价格、掉期利率
利率上限和掉期期权的波动率
外汇即期、外汇掉期点、外汇期权波动率
商品期货价格、商品期权波动率
股票即期价格、权益期权波动率
信用违约掉期基差

Θprm(t): 从历史数据推断或交易员制定的额外参数
Libor 定盘价 (历史数据点)
CMS 和 FX 的相关性系数 (历史数据序列)
短利率的均值回归率 (κ = 0.01)

Θnum(t): 数值方案的数值参数
蒙特卡洛的模拟路径 (N = 5,000)
有限差分的网格点数 (N = 1,000)
最优化误差容忍度 (ε = 10-5)

一些要点如下:
市场数据 Θmkt(t) 是流动性最强的,每天观察都在变
额外参数 Θprm(t),比如 κ,在没有极端市场条件时每半个月校正一次,或者直接由交易员给出
数值参数 Θnum(t) 主要考量一个精度和耗时的平衡,不如蒙卡路径越多计算产品的价值当然越精准,但是也耗费时间和计算机资源

有了数据参数之后,就可以进行后面 4 个串行模块的操作了,如下图:

111513aa77ejck3a71v0f4.jpg


在讨论它们之前,我们先来了解“变量计算”这个模块,因为它在所有其他模块中都用到。

2变量计算 - 获取函数
111513svb064mvrem5my4y.jpg

Let's look at the first principles and get back to basics. -- Elon Musk

变量指的是金融市场的基础变量 (fundamental variable),常见的变量包括

折现因子(discount factor)
零息债价格(zero-coupon bond price)
零息利率(zero rate)
远期利率(forward rate)
掉期利率(swap rate)
波动率(volatility)

利率型变量都是时间 t 的函数,而波动率有的是时间 t 的函数,有的是时间 t 和行权价格 K 的函数。获取函数 (Extraction) 可以看成是一个可以求出

任意 t 点对应的利率的函数
任意 t 和 K 点的波动率的函数

因此获取函数等同于内插函数 (interpolation) 和外插函数 (extrapolation)。核心理念就是从市场已有的标准点对应的变量内插或外插出非标准点对应的变量。

下面我们来看两个例子是如何生成零息债价格和波动率的。

零息债价格
从期限维度上进行线性内插 (linear interpolation) 来获取零息债价格
111513dznklaak4kfulfkz.jpg

111514h3e2g5l4f3ccca3c.jpg

111515rx2w4pnycpxprytw.jpg

零息债价格是最基础的变量,有了它,我们可以轻易的求出任何时点的远期利率和掉期利率,如下:

111515hsg2s217zm8hfqkk.jpg


波动率
从期权期限和执行价格两个维度上进行线性内插 (linear interpolation) 及平外插 (flat extrapolation) 来获取波动率
111517ynlt164ks2lnu14y.jpg111518qbor8qoanvaonvpo.jpg111519g7tiefucv9gesbsf.jpg

总结
在“变量计算”模块中,获取函数 I 将市场数据 Θmkt(t) 转换成各种基础变量。

    I(Θmkt(t)) = {P, F, S, σ}

在金融工程系列,之后我会专门写一贴《市场基础变量计算》,也会详细介绍各种内插外插的方法以及讨论它们的优劣性。

3曲线构建 - 拔靴函数
111519a1ku5d8d10z9d9du.jpg

Curve boostrapping is full of dilemmas and puzzles as market evolves. -- Dan Li

曲线环境的发展经历了两个阶段:

单曲线环境 (2007 年之前)
多曲线环境 (2007 年之后)

故事是这样的,在 2007 年金融危机之前 (pre-crisis):

Libor 被公认的无风险利率,在衍生物交易时双方不用放抵押品。因此 Libor 曲线既可以用来折现现金流 (discount curve),又可以用来计算远期利率指标 (index curve)

单货币基差(basis spread) 非常小
如果忽略它,那么指标曲线只有一条
如果不忽略它,那么指标曲线定义为基准曲线 (benchmark curve),此外还有若干条指标曲线 (根据单货币基差推出)

跨货币基差 (cross-currency basis spread) 非常小
如果忽略它,不需要做任何事情
如果不忽略它,需要推出非美元那端的折现曲线,而该曲线用在外汇产品定价上

在 2007 年金融危机之后 (post-crisis):

Libor 不再是无风险利率,在衍生物交易时双方要放抵押品。因此隔夜利率互换 (overnight index swap, OIS) 曲线用来折现现金流 (discount curve),而 Libor 只能用来计算远期利率指标 (index curve)

对单货币基差和跨货币基差的处理方式和金融危机之前一样

由此可见,“单曲线”指的就是折现曲线和基准指标曲线是相同条线;而“多曲线”指的就是折现曲线和基准指标曲线是不同曲线。而从这个两个曲线环境中,生成一系列曲线的过程叫做拔靴 (Bootstrapping)。具体过程就是

选取若干个市场流动性最强的产品,比如短期是存款,中期是利率期货,长期是利率掉期。
按照到期日长短排序,从短到长一个个推出市场产品对应的零息债价格。

文字读起来非常枯燥难懂,核心思想就是有三种构建曲线框架,由易到难:

单曲线环境 (忽略基差)
单曲线环境 (考虑基差)
多曲线环境 (考虑基差)

1. 单曲线环境 (忽略基差)

111520ptdpcceym00qcc00.jpg


该曲线构建框架最简单,只需两个步骤就可以生成所有曲线:

根据每个货币利率市场产品构建出该货币的折现曲线 (指标曲线)
根据美元和非美元的掉期点 (swap point) 构建出在外汇产品中非美元的折现曲线

利率市场曲线
根据流动性来选取用来构建曲线的市场产品,它们覆盖窗口一般来说有:

存款:从今天到 1 年
远期利率合约:1 月到 2 年
利率期货:3 月到 2 年                           
利率掉期:2 年到 60 年

这些覆盖窗口会重叠:
如果完全重叠用流动性来筛选市场产品,比如在1年到2年之间利率期货比远期利率合约流行性要高,那么会优选利率期货
如果部分重叠即可用一种插值的方式将其连起,这也是一种拔靴过程

在单曲线而忽略基差时:
折现曲线就是指标曲线
没有 3M, 6M, 12M 指标曲线之分,一条指标曲线可以计算所有期限的远期利率

外汇市场曲线
在外汇市场,通常都是美元做基准

美元端的现金流用美元利率市场拔靴出来的曲线来折现
非美元端的现金流用利率平价公式推出的曲线来折现

利率平价公式如下:
111520tcl4w1bu488bl48u.jpg


需要强调的是,外汇远期在 1 年之外的流动性不好,因此在外汇产品估值时要慎用 1 年之外的非美元的曲线来折现现金流。

2. 单曲线环境 (考虑基差)

111521gmqueu92utzqllju.jpg


该曲线构建框架复杂一些,需要三个步骤生成所有曲线:

根据每个货币利率市场产品构建出该货币的折现曲线 (基准曲线)
根据每个货币利率基差市场产品构建出该货币的指标曲线
根据 a) 美元和非美元的掉期点和 b) 跨货币基差市场产品构建出在外汇产品中非美元的折现曲线

由于上图比较复杂,我们将其分解成利率市场和外汇市场两个部分来分析。

利率市场曲线

111522arbch329j31j2mor.jpg


当利率基差不能被忽略时,不同期限的远期利率不能用同一条指标曲线来计算。比如 1M 和 3M 的远期利率是由 1M 指标曲线和 3M 指标曲线得出来的。首先明晰两个概念:

基准曲线:每个货币的利率掉期的浮动端 (floating leg) 都对应一个特定期限的Libor, 比如 USD 是Libor 3M, EUR 是 Euribor 6M, JPY 是 Libor 6M。它们是各货币对应的最活跃浮动利率,因此叫做基准利率,而对应的曲线叫做基准曲线。
指标曲线:对应着基准曲线,还有一些非基准曲线,称为指标曲线,比如 USD 的 Libor 1M, Libor 6M, Libor 12M, EUR 的 Euribor 3M, Euribor 12M, JPY 的 Libor 1M, Libor 3M,它们的流动性和基准利率比相对差一些。

而利率利差指的是基准利率 (USD Libor 3M) 和非基准利率 (USD Libor 6M) 之间的差价,原来几乎可以忽略不计,因此可以用一条曲线来计算这两个远期利率,而现在需要用

USD Libor 3M 基准曲线
USD Libor 3M6M 的基差

构建 USD Libor 6M 的曲线。

外汇市场曲线

111523fdl33pdv3zdh8x3n.jpg


在没有跨货币基差时,外汇产品折现曲线完全是由掉期点和利率平价公式推出来的,但是掉期点只在 1 年之内流动性强,这就造成 1 年之外的曲线都不可用。而跨货币基差掉期就是来构建 1 年之外的曲线的。

市场跨货币基差掉期都是一端是 USD Libor 3M,另一端是 CUR Libor 3M (其中 CUR 代表非美元)。有一点复杂的是,并不是所有的 Libor 3M 都是基准曲线,比如 EUR Euribor 6M 和 JPY Libor 6M。那么在构建首先外汇产品折现曲线前,首先需要该货币的利率基差掉期来构建对应的指标曲线,比如 EUR Euribor 3M 和 JPY Libor 3M。

生成的外汇产品折现曲线 (1年之外) 和由利率平价生成的 (1年之内) 合并,命名为 CUR Implied 曲线,比如

EUR Implied
JPY Implied
HKD Implied
AUD Implied

3. 多曲线环境 (考虑基差)

111524gnbkjkvz5ke5ekkk.jpg


该曲线构建框架是 2007 年金融危机后的标准,需要四个步骤生成所有曲线:

根据每个货币隔夜利率市场产品构建出该货币的折现曲线
根据每个货币利率市场产品构建出该货币的折现曲线 (基准曲线)
根据每个货币利率基差市场产品构建出该货币的指标曲线
根据 a) 美元和非美元的掉期点和 b) 跨货币基差市场产品构建出在外汇产品中非美元的折现曲线

此框架看似很复杂,和前一个框架真正的核心变化就是将折现曲线和基准曲线区分开,因此构建过程多出用隔夜 (overnight, ON) 利率市场产品构建折现曲线这一步,后面的步骤和前一个框架一样。

总结
在“曲线构建”模块中,拔靴函数 B 将市场数据 Θmkt(t) 转换成各种货币曲线各种期限的折现因子:

    B(Θmkt(t)) = PCUR,Y(0,t)

其中
    CUR = 货币标签 USD, EUR, JPY, GBP 等
    Y = 曲线类型 ON, 1M, 3M, 6M, 12M 等

目前曲线构建的大框架已经讲得很清楚,之后我会事无巨细写两贴关于曲线构建细节的技术性文章,包括《单曲线构建》和《多曲线构建》。

4模型校正 - 校正函数
111525nmpzwpqr3mdupy0p.jpg


Calibration is an inverse procedure in which we now the answer and want to find the problem. -- Paul Wilmott

在折现曲线生成完之后,就可以用各种模型来对产品进行估值了。模型都是带有参数的,这些参数值可不是主观定下来的,而是通过校正出来的。

模型校正是选择模型中的参数使得市场流动性强的交易价格 (市场价格) 和模型输出 (模型价格) 完全匹配或尽可能接近。校正函数 (Calibration) 可以看成是一个可以根据市场交易价反推出模型参数的函数。

假设市场 m 个行权价格 K 和 n 个到期日 T 对应的欧式期权 V (总共 m·n 个),定义模型参数集为 Θmdl(t) ,根据不同情况,模型校正可转换成以下最优化问题

111527c60o9ctcc9rt3t0z.jpg


每种目标函数都有自己的长短处,比如用:

价格 – 目标函数简单在最优化时高效,但是对于深价内 (deep in-the-money, ITM) 期权和深价外 (deep out-of-the-money, OTM) 期权,它们价格数值规模可能相差很远,比如 10 美元和 0.1 美元。即使深价外期权模型和市场价格差的很远也不过 0.1 美元左右,因此整个优化过程重心都放在拟合深价内期权 (因为它们数值较大)。

相对价格 – 目标函数简单在最优化时高效,而且对于深价内或深价外期权都写成一个回报率的形式,数值规模一致。

波动率 – 波动率数值规模一致,但是在解模型波动率时涉及到一个反解 Black-Scholes 的动作,而且此动作发生在最优化过程中,会降低整个优化效率。

带权重 – 用户可能觉得某列期权 (比如价中, ATM) 比较重要而想把它们校正准,因此赋予较大的权重值。

下图展示股权类 (SABR)、商品类 (Schwartz)、利率类 (Hull-White) 和外汇率 (Heston) 的模型校正实例。

111528v98ft58w26ivd5w8.jpg


总结
在“模型校正”模块中,校正函数 C 将

市场数据 Θmkt(t)
额外参数 Θprm(t)
曲线 PCUR,Y(0,t)

转换成模型参数 Θmdl(t)。

    C(Θmkt(t), Θprm(t), PCUR,Y(0,t)) = Θmdl(t)

关于模型校正详情,请参阅我写过的《模型校正》一贴。

5产品估值 - 估值函数

111528u95l5cgghsxys4gz.jpg

The goal of quantitative pricing is to compute the expectation according to different methodologies, each of which gives rise to a different specialization of quantitative financial pricing. -- Domingo A. Tavella

所有金融产品估值问题都是一个计算其未来支付函数期望的问题。该期望是“在一个合适的等价物资产 N 生成出来的概率测度”下的期望,运用到一连串“状态价格 - 无风险套利 - 等价物 - 测度转换”推导出估值公式,如下图所示:

111529xs7ktm0mmhqc7o07.jpg


金融产品估值的目标就是计算这个期望,主流方法有三:

解析和数值积分法 (closed-form, numerical integration)
偏微分方程有限差分法 (PDE finite difference)
蒙特卡洛模拟法 (Monte Carlo simulation)

有人会分类成五种,额外还有树方法 (tree) 和傅里叶方法 (Fourier),我不包括它们的原因如下:

树 (三叉树) 就是有限差分的显式格式 (fully explicit scheme) 的一个特例,而且由于一些稳定性原因,能用“有限差分”永远不要用“树”。
傅里叶方法实际是利用转换和逆转换来推导出公式,最终可能一个数值积分形式,因此属于第一种方法的子集。

假设原生资产价格的随机微分方程 (SDE) 为

111529jiluyqjuj1zyuj2j.jpg


和衍生品在到期日 T 时候的支付函数 V(T)。

111529eq5onc5eumvflwon.jpg


解析和数值积分

该方法是效率较高效的,但该方法对数学推导和技巧的要求也是较高的。如果欧式期权在某个复杂模型有解析解或数值积分解,那么会大大提高模型校正的效率,因此我们会不遗余力的推导出解析解或数值积分解。

在 Black-Scholes 模型下,资产价格服从对数正态分布,欧式期权都有解析解;在 Heston 模型下,用傅里叶转换可推出欧式期权最终成一个数值积分形式 (下图红色圆圈)。

111530xzsls6nh2keeeere.jpg


推导解析解或数值积分解通常需要以下方法或技巧 (都不是很容易):

伊藤公式 (Itô's Formula)
吉尔萨诺夫定理 (Girsanov’s Theorem)
矩匹配 (moment matching)
漂移项插值 (drift interpolation)
参数平均 (parameter averaging)

但是解析或数值积分并不是万金油
比如计算百慕大 (Bermudan) 期权或者亚式一篮子 (Asian Basket) 期权就不够用了,这个时候偏微分方程有限差分或蒙特卡洛模拟就是必须的。

比如推导窗口式障碍 (Window Barrier) 和触碰 (Touch) 期权的解析解时,就需要相当大的功夫,这个时候用偏微分方程有限差分或蒙特卡洛模拟就友好多了。

小结,解析或数值积分法
好处是快、高效、便于校正
坏处是推导门槛高、不适用复杂产品

偏微分方程有限差分
费曼卡兹定理 (Feynman-Kac Theorem) 是随机微分方程和偏微分方程的纽带。不像解析解那样对原生资产价格分布情况做文章,有限差分直接将微分方程离散成差分方程来解。

下图总结了有限差分里的五大核心步骤:
确定方程解域 (solution domain)
建立网格 (grid construction)
终值和边界条件 (terminal and boundary condition)
离散空间和时间变量 (spatial and time discretization)
有限差分格式 (finite difference scheme)

111531toaotw9lv2a29doc.jpg


偏微分方程有限差分适用范围很广。对于同一模型,它的偏微分方程的形式是一样的,对于不同产品,只需要改变终止和边界条件。举例:

在解析解法下,欧式期权和障碍期权的解法难度是不能比的
在有限差分法下,欧式期权和障碍期权的解法难度是一样的

小结,偏微分方程有限差分
好处是比较快、对不同产品的方法通用
坏处是不适用非马可尔夫过程、高度路径相关支付函数,和高维度问题

蒙特卡洛模拟
回顾金融产品估值公式
111531ta8wjjwllwxd84wq.jpg


根据大数定理 (Law of Large Number),如果

路过

雷人

握手

鲜花

鸡蛋
原作者: 金融老法师
关注微信