一、评级迁移矩阵基础

评级迁移矩阵,说白了就是一张「信用等级变化地图」。

我刚开始做信用风险建模那会儿,总觉得这玩意儿就是个简单的概率表格。后来在银行做内部评级体系时才发现——它其实是整个信用风险量化的基石。你想想看,如果没有迁移矩阵,你怎么知道一个BBB级客户一年后有多大可能变成违约?

1.1 迁移矩阵的定义

迁移矩阵,也叫转移矩阵,记录的是债务人在特定时间窗口内,从一个信用等级迁移到另一个信用等级的概率。

举个例子。假设我们有AAA、AA、A、BBB、BB、B、CCC、D(违约)这8个等级。一年期的迁移矩阵长这样:

当前\未来AAAAAABBBBBBCCCD
AAA90.81%8.33%0.68%0.06%0.08%0.02%0.01%0.01%
AA0.70%90.65%7.79%0.64%0.06%0.10%0.04%0.02%
A0.09%2.27%91.05%5.52%0.74%0.26%0.01%0.06%
BBB0.02%0.33%5.95%86.93%5.30%1.17%0.12%0.18%
BB0.03%0.14%0.67%7.73%80.53%8.84%1.00%1.06%
B0.00%0.11%0.24%0.43%6.48%83.46%4.07%5.21%
CCC0.22%0.00%0.22%1.30%2.38%11.24%64.86%19.78%
D0.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%

你想想看,为什么累积概率不是简单相加?因为客户可能在第一年就迁移了,后面就没机会再迁移了。所以要用「生存分析法」来计算。

实战技巧:我建议在做累积概率计算时,直接用矩阵乘法得到多年期矩阵,然后读取对应单元格的值。这样既准确又高效,还避免了手动计算容易出错的问题。

知识体系总览

下面这张图,是我梳理的本章核心逻辑。你看一眼就能明白迁移矩阵的来龙去脉:

评级迁移矩阵知识体系 迁移矩阵定义 一年期迁移矩阵 基础时间窗口(1年) 多年期迁移矩阵 矩阵乘法 / 多期平均法 边际与累积概率 生存分析法 对角线:维持概率 行和 = 100% 时间齐次假设 经济周期影响 边际:单期概率 累积:多期总概率 核心应用:信用风险量化、债券定价、资本计量

这张图把三个核心概念串起来了。从定义出发,分出一年期和多年期两条路,再深入到边际与累积概率的计算逻辑。底部的应用场景,就是你在实际工作中会用到的地方。


好了,这一章的内容就到这里。迁移矩阵这东西,看着简单,但用好了能解决很多实际问题。我当年在银行做内部评级模型时,光迁移矩阵的校准就折腾了两个月——数据清洗、等级映射、时间窗口选择,每一步都有坑。

不过别担心,后面我们会一步步把这些坑都填上。

专注资料整理