一、信用风险:从定义到实战

信用风险,说白了就是借钱的人不还钱的风险。我在做衍生品定价时,每天都要跟这个家伙打交道。你想想看,无论是买债券、做贷款,还是交易CDS,本质上都是在赌对方不会违约。

但信用风险不只是「不还钱」这么简单。它有三个核心要素:违约概率违约损失风险暴露。这三个东西,构成了所有信用衍生品定价的基石。

1.1 信用风险到底从哪来?

我个人习惯把信用风险的来源分成三类:

  • 交易对手风险:你跟他做交易,他破产了。比如2008年雷曼兄弟倒闭,无数对手方一夜之间血本无归。
  • 发行人风险:你买了某公司发的债券,公司经营不善还不上钱。这是最经典的信用风险。
  • 国家风险:主权国家违约,比如阿根廷、希腊。这种风险往往带有政治因素,很难用模型完全量化。

核心观点:信用风险的本质是「信息不对称」。你永远无法100%确定对方会不会违约,只能通过概率来管理。

1.2 违约:不是非黑即白

很多人以为违约就是「不还钱」。其实在金融实务中,违约的定义要复杂得多。我记得在2015年处理一个结构化产品时,就因为「技术性违约」和「实质性违约」的界定,跟律师吵了整整三天。

常见的违约类型包括:

  1. 支付违约:到期没付利息或本金。这是最直接的违约。
  2. 技术性违约:违反了合同中的某些条款,比如资产负债率超标,但还没到不还钱的地步。
  3. 交叉违约:你在A债券上违约了,B债券的债权人也可以要求你提前还款。
  4. 破产/清算:公司进入法律破产程序,所有债务都视为违约。

避坑指南:我曾经在定价CDS时,默认所有违约都是「支付违约」,结果模型跑出来的价格跟市场差了一大截。后来才发现,市场定价里隐含了「技术性违约」的概率。嗯,这个坑踩得值。

1.3 回收率:能拿回多少?

违约了不代表一分钱都拿不回来。回收率(Recovery Rate)就是违约后你能收回的比例。比如你借了100万,违约后法院清算拿回40万,回收率就是40%。

回收率受很多因素影响:

  • 抵押品:有抵押的债券回收率通常更高,一般在40%-60%。
  • 优先级:高级无担保债券的回收率约30%-50%,次级债可能只有10%-20%。
  • 行业周期:经济好的时候,资产变卖容易,回收率自然高。
债券类型 典型回收率 波动范围
高级有担保 60% 40%-80%
高级无担保 40% 20%-60%
次级债 20% 5%-40%
股权 0% 0%-10%

实战技巧:我个人习惯在建模时,不直接用固定的回收率,而是用Beta分布来模拟回收率的不确定性。因为回收率本身也是随机变量,用点估计会低估风险。

1.4 损失率:真正亏了多少

损失率(Loss Rate)跟回收率是硬币的两面。公式很简单:

损失率 = 1 - 回收率

但要注意,这里的损失率是「给定违约下的损失率」(LGD, Loss Given Default)。它跟违约概率(PD)和风险暴露(EAD)一起,构成了信用风险管理的铁三角:

预期损失 = PD × EAD × LGD

举个例子:

  • 你持有一张100万的债券
  • 违约概率是5%
  • 回收率是40%,所以LGD=60%
  • 预期损失 = 5% × 100万 × 60% = 3万

这个3万,就是你为这笔债券应该计提的风险准备金。我在做风控系统时,每天都要跑这个公式,监控整个组合的预期损失变化。

1.5 知识体系总览

下面这张图,是我自己梳理的信用风险基础框架。每次带新人时,我都会先让他们看这张图,把概念串起来。

信用风险基础 违约概率 (PD) 违约损失率 (LGD) 风险暴露 (EAD) 支付违约 技术性违约 交叉违约 破产清算 抵押品质量 优先级结构 行业周期 法律环境 预期损失 = PD × EAD × LGD 信用风险量化的核心公式 PD: 违约概率 | EAD: 风险暴露 | LGD: 违约损失率 (1-回收率)

1.6 一个简单的Python示例

光说不练假把式。下面这个代码,是我在项目里用来快速计算预期损失的模板:

def expected_loss(principal, pd, recovery_rate):
    """
    计算单笔债券的预期损失
    
    参数:
        principal: 本金/风险暴露 (EAD)
        pd: 违约概率 (0-1)
        recovery_rate: 回收率 (0-1)
    
    返回:
        预期损失金额
    """
    lgd = 1 - recovery_rate  # 违约损失率
    el = principal * pd * lgd
    return el

# 举个例子
bond_principal = 1_000_000  # 100万
default_prob = 0.05         # 5%违约概率
recovery = 0.40             # 40%回收率

loss = expected_loss(bond_principal, default_prob, recovery)
print(f"预期损失: {loss:,.0f} 元")
# 输出: 预期损失: 30,000 元

个人建议:实际项目中,PD和回收率都不是固定值。我一般会用蒙特卡洛模拟,生成10000组PD和回收率的随机数,然后看预期损失的分布。这样能更好地把握尾部风险。

1.7 小结

信用风险的基础,说白了就是三件事:违约概率、回收率、风险暴露。这三者相乘,就是预期损失。听起来简单,但真正做起来,每个参数的估计都藏着无数细节。

我记得刚入行时,觉得信用风险就是「算个概率嘛」。后来做了几个结构化产品,才发现回收率的波动、违约的相关性、还有法律条款的复杂性,才是真正的难点。嗯,这些我们后面章节会慢慢展开。


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