信用評級

信用評級轉移矩陣的計算

  • November 21, 2020

比方說,我有Cumulative default rates以下各種信用評級 -

在此處輸入圖像描述

鑑於此,我該如何計算典型值Transition matrix

感謝任何幫助。

為了得到一個(部分)答案,讓我們假設年度信用評級轉換形成一個具有吸收違約狀態的馬爾可夫鏈 $ D $ .

此外,讓我們假設我們有 $ K $ 非預設狀態(在您的範例中, $ K=7 $ )。因此,我將製定一個轉移矩陣 $ T $ 它持有從狀態的轉移機率 $ k $ 陳述 $ k’ $ . 列表示週期開始時的狀態,行表示週期結束時的狀態:

$$ \begin{align} T=\begin{pmatrix} p_{1\to1} & p_{2\to1} & \ldots & p_{K\to 1} & 0\ p_{1\to2} & p_{2\to2} & \ldots & p_{K\to 2} & 0\ \ldots &\ldots &\ldots &\ldots &\ldots \ p_{1\to K} & p_{2\to K} & \ldots & p_{K\to K} & 0\ p_{1\to D} & p_{2\to D} & \ldots & p_{K\to D} & 1\ \end{pmatrix}\equiv\begin{pmatrix}\mathbf{M} & \mathbf{0}\ \mathbf{p} &1\end{pmatrix} \end{align} $$

轉移矩陣由純非預設轉移子矩陣組成 $ \mathbf{M} $ 和預設轉移機率(向量) $ \mathbf{p} $ .

接下來,我們推導出隱含的累積違約機率 $ N $ 年。我們知道, $ N $ 轉移矩陣的 th 次方包含其左下元素中的累積預設機率(見上文)。因此,我們感興趣的是:

$$ \begin{align} \mathbf{p}{(N=1)}&=\mathbf{T}{{2,1}}=\mathbf{p}\ \mathbf{p}{(N=2)}&=\mathbf{T}^2{{2,1}}=\mathbf{p}+\mathbf{pM}=\mathbf{p}\left(\mathbf{I}+\mathbf{M}\right)\ \mathbf{p}{(N=3)}&=\mathbf{T}^3{{2,1}}=\mathbf{p}+\mathbf{pM}+\mathbf{pM}^2=\mathbf{p}\left(\mathbf{I}+\mathbf{M}+\mathbf{M}^2\right)\ &\ldots\ \mathbf{p}{(N=n)}&=\mathbf{T}^n{{2,1}}=\ldots=\mathbf{p}\sum_{i=0}^{n-1}\mathbf{M}^i \end{align} $$

可以重新表述為 $$ \begin{align} \mathbf{p}{(N=n)}&=\mathbf{p}{(N=1)}+\mathbf{p}_{(N=n-1)}\mathbf{M} \end{align} $$

或者,作為矩陣方程系統:

$$ \mathbf{D}=\mathbf{C M} $$

矩陣在哪裡 $ \mathbf{D} $ 包含在每一行 $ k $ , 這 $ k+1 $ th 累積違約機率減去第一個違約機率向量和矩陣 $ C $ 包含在每一行 $ k $ 這 $ k $ th 累積違約機率向量。

最後,矩陣 $ M $ 通過找到

$$ \mathbf{M}=\mathbf{C}^{-1}\mathbf{D} $$


工作範例。

假設我們知道我們的轉移矩陣 $ T $ 是 $$ T=\begin{pmatrix} 80% & 8% & 5% & 0\ 10% & 75% & 10% & 0\ 8% & 10% & 70% & 0\ 2% & 7% & 15% & 100%\ \end{pmatrix} $$

那一年- $ k $ -累積違約機率由對應的左下子矩陣找到 $ k $ 矩陣冪。在我們的例子中,逐行累積預設機率為:

$$ cumulative PD = \begin{pmatrix} 2% & 7% & 15% \ 5.5% & 13.91% & 26.30% \ 9.90% & 20.50% & 35.08% \ 14.77% & 26.68% & 42.10% \ \end{pmatrix} $$

我們發現相應的矩陣為

$$ \mathbf{D}=\begin{pmatrix} 3.50% & 6.91% & 11.30% \ 7.90% & 13.50% & 20.08% \ 12.77% & 19.68% & 27.10% \end{pmatrix} $$

和 $ \mathbf{C} $ 只是我們累積 PD 矩陣的前三行的矩陣。

計算 $ \mathbf{C}^{-1}\mathbf{D} $ 將恢復轉移矩陣 $ M $ .

請注意,在實踐中,這種方法**很容易出現準確性問題。**如果您從字面上使用上面所述的累積 PD(最高 4 位精度),您將無法恢復初始轉換矩陣。因此,您應該形成一個更大的方程組(如您的範例!)並使用更多資訊,即找到 $ M $ 作為

$$ \hat{M}=\left(\mathbf{C}^T\mathbf{C}\right)^{-1}\mathbf{C}^T\mathbf{D} $$

…或者您必須求助於優化程序來製定適當的約束(例如機率總和為 $ 1-PD_1 $ …)

總結一下這種方法的不足之處:

  1. 如果底層轉換過程不是馬爾可夫,可能會失敗(我認為……)
  2. 如果累積 PD 矩陣的準確性不夠高,可能會產生無意義的結果。這可以通過使用一個大的累積預設矩陣來抵消, $ T>>K $ .

R根據您在評論中的要求,下面的範常式式碼。

# this is our initial transition matrix
# we use it only ot produce the cumulative PDs (as in your table)

transition_matrix <- t(matrix(c(
               0.80,0.08,0.05,0.00
              ,0.10,0.75,0.10,0.00
              ,0.08,0.10,0.70,0.00
              ,0.02,0.07,0.15,1.00),4,4)) 

# simple helper function for a matrix power (don't use in production)
matrix_power <- function(x, n) Reduce(`%*%`, replicate(n, x, simplify = FALSE))

# for K = 3 states, we need at least K + 1 = 4 cumulative default time horizons (4 years)
N <- 4 

# cumulative PD table (as in your example, but transposed)
CPD <- t(sapply(1:N, function(i){matrix_power(transition_matrix,i)[4,1:3]})) 

# the D matrix in my answer
D <- t(apply(CPD[-1,],1,function(x){x-CPD[1,]}))
# the C matrix in my answer
C <- CPD[1:N-1,]

# the OLS style solution. If N==K+1, this boils down to solve(C) %*% D
solve(t(C) %*% C) %*% t(C) %*% D

# output here for convenience:
    [,1] [,2] [,3]
[1,] 0.80 0.08 0.05
[2,] 0.10 0.75 0.10
[3,] 0.08 0.10 0.70

您需要做的就是CPD根據您的需要更新並執行程式碼的最後一部分。

引用自:https://quant.stackexchange.com/questions/59488