3. 信用风险建模基础:PD、LGD、EAD

做信用衍生品做市,说白了就是跟「违约」这件事打交道。你想想看,对手方会不会倒?倒了能拿回多少?我手里到底有多少风险敞口?这三个问题,对应着三个核心参数:违约概率(PD)违约损失率(LGD)风险暴露(EAD)

我个人习惯把这三者称为「信用风险三件套」。少了任何一个,你的定价模型都是瘸腿的。今天咱们就把这三个家伙彻底聊透。

3.1 违约概率(PD)—— 到底有多大概率会爆雷?

PD,Probability of Default,就是交易对手在给定时间内违约的可能性。比如一年期PD是2%,意味着有98%的概率没事,2%的概率出事。

PD的估算方法,我总结为三类:

  • 历史违约率法:看评级机构的历史数据。比如穆迪、标普每年都会公布各评级对应的违约率。AAA级一年期PD大概0.01%,B级可能就5%了。
  • Merton模型法:把公司股权看作看涨期权,债务是执行价。公司资产价值低于债务面值,就算违约。这个模型理论很美,但实操中需要公司股价数据,非上市公司用不了。
  • 强度模型法:假设违约事件服从泊松过程,用市场CDS价格反推违约强度。我在做做市系统时,主要用这个方法——因为CDS价格是实时更新的,能反映市场情绪。

核心公式(简化版):

PD = 1 - exp(-λ * t)

其中 λ 是违约强度,t 是时间期限。λ 越大,PD 越高。

避坑指南: 我曾经在回测中发现,直接用历史违约率做PD,在金融危机期间会严重低估风险。因为历史数据里没有包含「极端尾部事件」。后来我改用市场隐含PD(从CDS价格反推),效果好了很多。

3.2 违约损失率(LGD)—— 爆雷后能拿回多少?

LGD,Loss Given Default,指违约发生时,你实际损失的金额比例。如果LGD是40%,意味着你每100块敞口,最终损失40块,拿回60块。

LGD的构成其实很简单:

LGD = 1 - 回收率(Recovery Rate)

回收率取决于抵押品、优先级、法律环境等因素。我整理了一个经验表格:

资产类型 典型回收率 典型LGD
高级担保债券 70% - 80% 20% - 30%
高级无担保债券 40% - 60% 40% - 60%
次级债券 20% - 30% 70% - 80%
股权 0% - 10% 90% - 100%

嗯,这里要注意:LGD不是固定的。经济好的时候回收率高,危机时大家都抢着卖资产,回收率就低。我建议在做市模型中,至少准备两套LGD参数:一套正常市场,一套压力市场。

重要提醒: 千万别把LGD当成静态常数。我在2018年做过一个回测,用固定LGD=40%去定价CDS,结果在信用紧缩期模型偏差高达15%。后来我改用随宏观经济指标动态调整的LGD,误差才降下来。

3.3 风险暴露(EAD)—— 你到底押了多少钱?

EAD,Exposure at Default,指违约发生时,你面临的风险敞口总额。对于简单的债券,EAD就是面值。但对于衍生品,情况复杂得多。

衍生品的EAD计算,我习惯分三步走:

  1. 当前暴露(Current Exposure):就是合约当前的重置价值。如果合约对你有利(正市值),这就是你的风险;如果对你不利(负市值),风险为0。
  2. 潜在暴露(Potential Future Exposure, PFE):未来可能增加的风险。因为市场会波动,正市值可能变大。通常用蒙特卡洛模拟来算。
  3. 有效预期暴露(Effective Expected Positive Exposure, EEPE):把未来各时点的预期正暴露取平均,再考虑净额结算和抵押品的影响。

做市场景下的EAD简化公式:

EAD = max(0, 当前市值) + 附加因子 × 名义本金

附加因子根据资产波动率设定,比如利率互换可能用0.5%,信用违约互换可能用5%。

你想想看,为什么做市商特别关注EAD?因为做市商手里有几十上百笔交易,净额结算后实际风险可能远小于名义本金。我见过一个案例,某投行名义本金100亿,但净额结算后EAD只有3亿。如果不算EAD,风险资本金会多计提几十倍。

3.4 三者的关系:预期损失 = PD × LGD × EAD

这三个参数最终汇成一个公式:

预期损失(EL) = PD × LGD × EAD

这个公式是信用风险定价的基石。比如你给一个CDS报价,预期损失就是你的成本底线。加上资金成本、运营成本、风险溢价,就是你的报价。

我个人习惯在代码里这样实现:

def expected_loss(pd, lgd, ead):
    """
    计算预期损失
    pd: 违约概率(小数形式,如0.02表示2%)
    lgd: 违约损失率(小数形式,如0.4表示40%)
    ead: 风险暴露(金额单位)
    """
    return pd * lgd * ead

# 举个例子
pd = 0.02      # 2%的违约概率
lgd = 0.40     # 40%的损失率
ead = 10_000_000  # 1000万敞口

el = expected_loss(pd, lgd, ead)
print(f"预期损失: {el:,.0f} 元")
# 输出: 预期损失: 80,000 元

我的经验: 刚开始做做市模型时,我总想把PD、LGD、EAD算得特别精确。后来发现,与其追求单个参数的精度,不如把三者的联合分布搞清楚。因为PD和LGD在危机时是正相关的——违约多了,回收率也低。忽略这个相关性,你的风险模型会严重低估尾部损失。

3.5 知识体系总览

下面这张图,是我梳理的信用风险建模核心逻辑。你可以把它当作本章的「地图」:

信用风险建模核心逻辑 PD 违约概率 历史违约率 / Merton 强度模型 / 市场隐含 LGD 违约损失率 1 - 回收率 抵押品 / 优先级 / 宏观 EAD 风险暴露 当前暴露 + 潜在暴露 净额结算 / 抵押品 预期损失 EL = PD × LGD × EAD 信用风险定价的基石 应用场景 CDS定价 / 信用利差计算 / 风险资本计量 / 做市报价 压力测试 / 信用限额管理 / 组合风险聚合

说白了,PD、LGD、EAD就是信用风险建模的「三原色」。你把这三种颜色调好了,就能画出任何信用产品的风险画像。我在做市系统里,每天开盘第一件事就是检查这三个参数的输入源是否正常——PD的曲线有没有更新,LGD的参数有没有调过,EAD的净额结算文件有没有到。任何一个出问题,当天的报价我都不敢信。


公众号:蓝海资料掘金营,微信deep3321