求敏感度(Greeks或Sensitivities)的常用演算法

一個衍生品的敏感度,對於Equity產品經常被叫作Greeks,是反映這個衍生品風險與對沖策略的重要指標。在數學上,其實就是一個偏導數的值。今天我主要講一下常用的三種求敏感度的方法。本文偏重於演算法的大概介紹,而不是深入研究細節。

第一種方法:有限差分(Finite difference)

有限差分是最簡單的敏感度計算方式。在業內有一個更直觀的名字:bump and reval或bumping。而有限差分的原理就是數值微分。下式是導數的定義

frac{partial V}{partial theta}(theta_0) = lim_{hrightarrow 0}frac{V(theta_0 + h) - V(theta_0)}{h}

我們進而可以通過下述方法來估算這個導數,分別是向前差分,

frac{partial V}{partial theta}(theta_0) approx frac{V(theta_0 + h) - V(theta_0)}{h}

向後差分,

frac{partial V}{partial theta}(theta_0) approx frac{V(theta_0) - V(theta_0 - h)}{h}

和中心差分

frac{partial V}{partial theta}(theta_0) approx frac{V(theta_0 + h) - V(theta_0 - h)}{2h}

使用有限差分方法對敏感度進行求解是思維上最簡單的方法,然而缺點也很明顯,那就是計算量巨大。

舉一個例子,你有一個portfolio,它的價格函數是用蒙特卡洛模擬出來的,裡邊有20個不同資產。你想獲得這個portfolio關於各個資產分別的敏感度,你首先需要跑一次蒙特卡洛,獲得原始的價格,然後你要控制變數,每次bump一個資產,然後分別跑20次,然後你才可以得到20個資產分別的敏感度。也就是說,你想獲得原始價格與價格的敏感度,你需要跑21次蒙特卡洛。

或許很多人會說,我們一般不會去定這麼複雜的價格,這樣的大basket衍生品現在沒什麼需求了。的確,像CDO這種「大型」產品現在的確爛了,現在交易量大的是基本的,不是很exotic的產品。但現在有個東西叫XVA,且不說portfolio level的XVA計算時間冗長,即使是單個產品的XVA,因為涉及nested MC問題(蒙特卡洛中的蒙特卡洛),計算量的程度已經很讓人頭疼了。當然,有一些估算方法可以避免nested MC,但這裡我先不深入探討。

可以說,有限差分方法是最基本的敏感度計算方法,但有的時候其實並不是最好的。

第二種方法:路徑法(Pathwise approach)

相較於多元問題有限差分方法的高計算量,路徑法可以一次性地獲得所有參數的敏感度,避免了因為差分控制變數而存在的不斷bumping。對於做XVA和counterparty risk的人很熟悉的AAD方法就屬於路徑法的一種。

路徑法的原理更是簡單,其實就是導數的鏈式法則

frac{partial V}{partial theta} = sum_{i=1}^{K}frac{V}{U_i}frac{U_i}{theta}

其中,U_i其實就是中間過程的參數。因為路徑法相當於把定價函數拆分成一步步來定價,因此你獲得的導數實際是analytical的。誤差會非常小。

但相應的,這也就是說路徑法需要滿足一個條件,那就是中間的計算過程函數都需要滿足Lipschitz continue的條件。而這個條件實際上是很強的。因此,有一些衍生品就不再適用這種方法,比如二元期權(digital option或binary option),你在MC定價的時候,payoff是不能關於S直接求導的,因為你的payoff實際上是個indicator function。而且Barrier也並不適用這種方法,因為它的payoff實際上也包含有邊界上的indicator function。

因此,路徑法雖然是個很好的方法,而且誤差很小,不存在bump size的error,但由於要求條件過強,如果不使用一些恰當的smoothing method,就不適用於很多的衍生品,因此適用範圍很狹窄。

第三種方法:似然比率法(Likelihood ratio method)

有限差分對basket類型產品的效率太低,路徑法對payoff不李氏連續的產品很難適用。那麼有沒有介乎於兩者之中的方法?答案就是似然比率法。

似然比率法的原理也很簡單,那就是我們定價的公式實際上是這個期望

V(theta) = mathbb{E}left[ Y big| theta right] = mathbb{E}left[ f(X_1, ..., X_m) big| theta right] = int_{mathbb{R}^m} f(x) gleft(xbig|thetaright) rm{d}x

而我們有興趣的導數就是

frac{partial V}{partial theta} = frac{partial}{partial theta}mathbb{E}left[ Y big| theta right] = frac{partial}{partial theta} int_{mathbb{R}^m} f(x) gleft(xbig|thetaright) rm{d}x

所為我們可以有

frac{partial V}{partial theta} = int_{mathbb{R}^m} f(x) frac{partial g}{partial theta}left(xbig|thetaright) rm{d}x = mathbb{E}left[ f(X_1, ..., X_m) frac{frac{partial g}{partial theta}left(X_1, ..., X_mbig|thetaright)}{gleft(X_1, ..., X_mbig|thetaright)} right]

因此,我們只需要做在原有蒙特卡洛的基礎上,對下面這個變數求蒙特卡洛期望就可以了

f(X_1, ..., X_m) frac{frac{partial g}{partial theta}left(X_1, ..., X_mbig|thetaright)}{gleft(X_1, ..., X_mbig|thetaright)}

這就是所謂的似然比率估計量。是一個對敏感度的估計值。

因為我們的這個求解只需要在原有蒙特卡洛基礎上進行調整一些變數,我們不必像有限差分那樣繁瑣的反覆跑MC;而且因為我們並沒有用到連續條件,只是一個微分和積分的互換,我們也沒有像路徑法一樣要求任何光滑的條件。這讓似然比率法看似很強大。

但凡事都有利有弊,似然法的缺點有兩處:1,我們必須知道隨機變數的概率密度函數,否則無法使用;2,似然法的誤差是明顯大於前兩者的。第一個缺點顯而易見,就在公式里;第二個缺點需要一些誤差分析,而且也不是針對任何情況都如此,只是經常會發生這樣的問題,有興趣的可以拿個去跑一下試試。

三種方法都已講完。

可以說,目前在業內的所有求敏感度的方法,都不外乎這三種,抑或是三種的組合。這三種方法其實也是可以結合使用的。比如路徑法和似然法的結合可以出現一種叫作vibrato Monte Carlo的特殊方法,也可以出現一種高效二階敏感度計算方法。這中間的技巧,有如藥劑師調製藥劑,看你的選擇和平衡。最適合的,才是最有用的。

本文屬於作者原創,抄襲侵權必究。

歡迎掃描下列二維碼關注本人微信公眾號,QuantJiang

weixin.qq.com/r/YUTO1qP (二維碼自動識別)


推薦閱讀:

場外金融衍生品交易的成立與生效
伽瑪交易員羅烜:趁年輕,賭一把
為什麼知乎上金融圈的用戶(尤其是交易員群體)往往不太活躍?

TAG:宽客Quant | 金融衍生品 | 金融工程学 |