一、评级迁移矩阵基础
评级迁移矩阵,说白了就是一张「信用等级变化地图」。
我刚开始做信用风险建模那会儿,总觉得这玩意儿就是个简单的概率表格。后来在银行做内部评级体系时才发现——它其实是整个信用风险量化的基石。你想想看,如果没有迁移矩阵,你怎么知道一个BBB级客户一年后有多大可能变成违约?
1.1 迁移矩阵的定义
迁移矩阵,也叫转移矩阵,记录的是债务人在特定时间窗口内,从一个信用等级迁移到另一个信用等级的概率。
举个例子。假设我们有AAA、AA、A、BBB、BB、B、CCC、D(违约)这8个等级。一年期的迁移矩阵长这样:
| 当前\未来 | AAA | AA | A | BBB | BB | B | CCC | D |
|---|---|---|---|---|---|---|---|---|
| AAA | 90.81% | 8.33% | 0.68% | 0.06% | 0.08% | 0.02% | 0.01% | 0.01% |
| AA | 0.70% | 90.65% | 7.79% | 0.64% | 0.06% | 0.10% | 0.04% | 0.02% |
| A | 0.09% | 2.27% | 91.05% | 5.52% | 0.74% | 0.26% | 0.01% | 0.06% |
| BBB | 0.02% | 0.33% | 5.95% | 86.93% | 5.30% | 1.17% | 0.12% | 0.18% |
| BB | 0.03% | 0.14% | 0.67% | 7.73% | 80.53% | 8.84% | 1.00% | 1.06% |
| B | 0.00% | 0.11% | 0.24% | 0.43% | 6.48% | 83.46% | 4.07% | 5.21% |
| CCC | 0.22% | 0.00% | 0.22% | 1.30% | 2.38% | 11.24% | 64.86% | 19.78% |
| D | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 100.00% |
注意看对角线上的数字——那都是该等级「维持不变」的概率。AAA级有90.81%的概率一年后还是AAA,而CCC级只有64.86%。
核心要点:迁移矩阵的每一行之和必须等于100%(或接近100%,考虑四舍五入)。违约状态D是吸收态——一旦进去,就出不来了。
1.2 一年期与多年期矩阵
一年期矩阵是最常用的。但实际业务中,我们经常需要看3年、5年甚至更长时间的风险。
怎么算多年期矩阵?
我个人的习惯是:直接用矩阵乘法。假设一年期迁移矩阵是M,那么n年期迁移矩阵就是M的n次幂。
import numpy as np
# 假设M是一年期迁移矩阵(8x8)
M = np.array([
[0.9081, 0.0833, 0.0068, 0.0006, 0.0008, 0.0002, 0.0001, 0.0001],
[0.0070, 0.9065, 0.0779, 0.0064, 0.0006, 0.0010, 0.0004, 0.0002],
[0.0009, 0.0227, 0.9105, 0.0552, 0.0074, 0.0026, 0.0001, 0.0006],
[0.0002, 0.0033, 0.0595, 0.8693, 0.0530, 0.0117, 0.0012, 0.0018],
[0.0003, 0.0014, 0.0067, 0.0773, 0.8053, 0.0884, 0.0100, 0.0106],
[0.0000, 0.0011, 0.0024, 0.0043, 0.0648, 0.8346, 0.0407, 0.0521],
[0.0022, 0.0000, 0.0022, 0.0130, 0.0238, 0.1124, 0.6486, 0.1978],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000]
])
# 计算3年期迁移矩阵
M_3year = np.linalg.matrix_power(M, 3)
print("3年期迁移矩阵(部分):")
print(M_3year[:3, :3])
嗯,这里要注意。直接用矩阵乘法有个前提——假设迁移概率是「时间齐次」的,也就是每年都一样。现实中这个假设往往不成立。
避坑指南:我曾经在做一个5年期债券的信用风险评估时,直接用一年期矩阵的5次幂来计算。结果发现高等级债券的违约概率被严重低估了。为什么?因为经济周期的影响——好年景和坏年景的迁移行为完全不同。后来我改用「多期平均法」才解决了这个问题。
1.3 边际与累积迁移概率
这两个概念容易搞混。我简单解释一下:
- 边际迁移概率:某个特定时间段内的迁移概率。比如「第3年从BBB迁移到BB的概率」。
- 累积迁移概率:从起始点到某个时间点的总迁移概率。比如「3年内从BBB迁移到BB的概率」。
举个例子。假设一个BBB级客户:
- 第1年迁移到BB的概率是5.30%(边际)
- 第2年迁移到BB的概率是4.12%(边际)
- 第3年迁移到BB的概率是3.87%(边际)
- 3年内累积迁移到BB的概率 = 1 - (1-0.0530)×(1-0.0412)×(1-0.0387) ≈ 12.67%
你想想看,为什么累积概率不是简单相加?因为客户可能在第一年就迁移了,后面就没机会再迁移了。所以要用「生存分析法」来计算。
实战技巧:我建议在做累积概率计算时,直接用矩阵乘法得到多年期矩阵,然后读取对应单元格的值。这样既准确又高效,还避免了手动计算容易出错的问题。
知识体系总览
下面这张图,是我梳理的本章核心逻辑。你看一眼就能明白迁移矩阵的来龙去脉:
这张图把三个核心概念串起来了。从定义出发,分出一年期和多年期两条路,再深入到边际与累积概率的计算逻辑。底部的应用场景,就是你在实际工作中会用到的地方。
好了,这一章的内容就到这里。迁移矩阵这东西,看着简单,但用好了能解决很多实际问题。我当年在银行做内部评级模型时,光迁移矩阵的校准就折腾了两个月——数据清洗、等级映射、时间窗口选择,每一步都有坑。
不过别担心,后面我们会一步步把这些坑都填上。