隱含違約機率(CDS 價差)
經過一番Google搜尋,我取得了一些進展,但還不足以得出結論,所以我們開始吧:
鑑於交易對手的 CDS 利差為 100bp(跨時間持平)且無風險利率為 0%(也持平),假設交易對手違約,我們支付了一半的違約年隱含機率是多少我們的年度價差?契約期限為5年,預期回收率為40%。
我的嘗試:
我們(保護買方)的 CDS 契約現值為:
$ P(d)*Protection\ leg + (1-P(d))*Premium\ leg=0 $ ,
在哪裡
$ Protection\ leg= (1-R)Notional-0.5Spread*Notional $ 和
$ Premium\ leg= Spread*Notional $ .
從這裡我解決了
$ P(d)=\frac{Spread}{(1-R)+0.5*Spread} $ .
在這種情況下,我假設這是危險率 $ \lambda $ ,這是恆定的,因為 CDS 期限結構是平坦的。現在,按照赫爾,我們可以使用公式
$ P(0,t)=1-e^{(-\lambda*t)} $
獲得在該時間段內發生違約的(近似)隱含機率 $ (0,t) $ .
現在,如果我想獲得違約發生的機率,例如, $ (1,2) $ 或者 $ (2,3) $ ? 如何正確調節機率?
謝謝!
這裡有一些東西,所以如果有任何問題,我會逐步添加細節。分析與Hull, J. (2012)的**附錄 K中的內容差不多。**風險管理和金融機構,+ 網站(第 733 卷)。約翰威利父子公司。
Python 導入:
import numpy as np import pandas as pd from scipy.optimize import brentq
TABLE
構造一個包含我們需要的所有資訊的表的函式:def TABLE(PD, s=0.01, r=0): table = pd.DataFrame({'Time': np.arange(1,6)}).set_index('Time') table['SurvivingProb'] = np.exp(-PD*table.index) table['DefaultProb'] = -np.diff(table['SurvivingProb'], prepend=1) table['DF1'] = np.exp(-r*table.index) table['PV/ExpPMT'] = table['SurvivingProb']*table['DF1'] # * s table['DF2'] = np.exp(-r*(table.index-0.5)) table['PV/ExpPayoff'] = 0.6*table['DefaultProb']*table['DF2'] # * s table['PV/AccrualPMT'] = 0.5*table['DefaultProb']*table['DF2'] # * s return table
例如,如果我們假設違約機率(危險率)為 0.02,我們將得到下表:
為了計算 CDS 價差隱含的精確違約機率,我們將使用以下函式:
def defaultProb(PD, s=0.01, r=0): table = TABLE(PD, s, r) return s*(np.sum(table['PV/ExpPMT'] + table['PV/AccrualPMT'])) \ - np.sum(table['PV/ExpPayoff'])
接下來,使用 Brent 方法求解違約機率:
PD = brentq(defaultProb, 0, 1)
結果是
0.016667
。如果我們現在想查看更新的
TABLE
:TABLE(PD)
從這裡我們可以直接讀取無條件違約機率(
DefaultProb
列),即在零時間看到的特定年份的違約機率。要計算違約的條件機率,只需除以第一列中的前一個條目。例如,如果您希望第三年的違約機率以沒有更早的違約為條件:
$$ 0.015987/0.967215=0.01652893 $$