1. 首页
  2. Python

信用风险建模 in Python 系列 1 – 信用风险 101

信用风险建模 in Python 系列 1 - 信用风险 101

本文含 2919 字,7 图表截屏
建议阅读 16 分钟
0
引言
本文是「信用风险建模 in Python」系列的第一篇,其实在之前的 Cufflinks 那篇已经埋下了信用风险的伏笔,

  1. 信用组合可视化
  2. 信用风险 101

信用风险(credit risk)最终源于交易对手或债务人违约(default)他们的义务。违约分两种:

  1. 完全违约(outright default),
  2. 支付能力恶化(deterioration)而增大最终违约的可能性。

前者称为违约风险(default risk),后者称为迁移风险(migration risk)。

信用风险导致财务损失,而其关键要素是违约或迁移事件。损失的范围涵盖投资的一小部分到全部投资。 只要未来有付款的资产都用信用风险,通常我们会想到贷款、存款、债券或掉期, 但其实还包括信用卡、学生贷款、抵押、汽车贷款或复杂的金融衍生产品。

信用风险无处不在,而且在银行中信用风险通常要比市场风险(market risk)大很多,因此如何计量和管理信用风险对银行来说尤为重要。

信用风险和市场风险有很多不同之处,而且要求的技能也不同。我在实际咨询工作中主要负责市场风险那块,因此对 Q-Quant 那一套随机微分非常熟悉。但是要具备全面的风险管理技能,信用风险这块儿也要抓,两手都要硬!

1
简介

和市场风险中的实时波动的风险因子不同,信用风险中的违约是个罕见事件(rare event)。信用风险建模有两大重要应用:

  1. 定价(pricing)
  2. 风控(risk-managing)
定价主要是估计一个人们愿意购买资产(面对其交易对手支付能力的不确定性)的价格。该价格通常和头寸的平均信用风险成本相关,而体现在无风险利率上的一个价差(credit risk spread)。因此,

定价注重平均概念,即预期损失。

风控
风险并不是衡量平均情况,而是可能遇到的最坏情况。 用在金融方面,我们担心一个组合可能会损失多少钱。但是仅仅这样说是不够的,我们虽然可能会损失全部投资,但是引起这些损失的概率呢?因此我们首先需要计算出或者模拟一系列的潜在损失以及对应的相关概率,然后在极端情况下评估风险。因此

风控注重尾部概念,即极端损失。

从上面定价和风控两大应用可看出,信用风险建模的重点是构建信用组合的违约损失分布(default loss distribution),该分布描述了组合中潜在违约产生的所有可能损失。违约损失分布是信用风险建模者关注的焦点,定价方和风控方都该损失分布用兴趣,只不过前者更关心其中部(central aspect),而后者更关注其尾部(tail)。

有了损失分布,我们还可以估算组合的

  1. 预期损失(Expected Loss, EL)
  2. 意外损失(Unexcpeted Loss, UL)
  3. 风险价值(Value-at-Risk, VaR)
  4. 期望损失(Expected Shortfall, ES)
  5. 经济资本(Economic Capital, EC)
名词解释
预期损失(EL)计量的是因为违约的平均损失,银行会为 EL 拿出一部分钱作为储备。

风险价值 VaR 和期望损失 ES 都属于极端损失,VaR 是在一段时间内在 q 概率下组合损失的最大值,在信用风险中 q 通常设定为 99%, 99.5%, 99.9% 等。而 ES 是大于 VaR 的损失的均值。通俗来讲,VaR 量化坏情况,而 ES 量化的是如果坏情况发生那么到底有多坏。

有些资料把 VaR 和 ES 归属到意外损失(UL),有些资料把损失变量的波动率定义成 UL,这个也无对错之分,我更偏好于后者。而且我觉得把 VaR 和 ES 称为极端损失也更贴切些。

按照上面的叫法,经济资本可定义为极端损失和预期损失的差,可看成是银行为了极端事件而准备的额外资本(rainy-day fund)。

下篇会对以上名词一一给出具体的数学表达式,本贴先给出一波“代码”表达式,首先需要明晰损失 L 是一个随机变量,既然有随机性,那么我们可以计算 L 的统计指标:

EL = mean[L]

UL = stdev[L]

VaR = quantile(L, q)

ES = mean(L|L>=VaR)

EC = VaR – EL

所以找到 L 的分布最重要。

将上面所有信息可视化成下图:

信用风险建模 in Python 系列 1 - 信用风险 101

2
模型

所有信用风险模型都应该对以下两个因素建模,它们是

  • 违约指标(default indicator):描述每个违约损失的边际分布(marginal distribution)。
  • 违约相关(default dependence):描述一个债务人的违约风险取决于另一债务人的违约风险的程度,代表了多个债务人一起违约的风险。

有了违约指标违约相关,我们便可以计算或模拟出来整个组合的损失联合分布(joint distribution)。

对债务人违约建模既可用外生(exogeous)变量,也可用内生(edogenous)变量。其实模型并无高低,任何模型只是试图对现实问题降维并探究其实质,没有任何模型能够捕捉到现实世界的全部复杂性。

对于模型分类,学术界和工业界有两个流派:

  1. 混合模型(mixure model):又叫简约化模型(reduced-form model),建模思路是假定不同债务人的违约概率和某些随机变量有关,即随机化违约概率。瑞银的 CreditRisk+ 就属于这一类。
  2. 阈值模型(theshold model):又叫结构化模型(structured model),建模思路是当某些潜在变量(如资产价值)低于某个阈值(如负债价值)时,违约发生。巴塞尔的 IRB、穆迪的 KMV 和明晟的 CreditMetrics 都属于这一类。集大成者的 Merton 模型也属于这一类。

诚然,上面都是老手玩的,新手现在听起来肯定很懵。对于新手,正确的打开方式是从玩具模型(toy-like model)开始,虽然该模型的“零违约相关性”的假设不现实,但仍不妨碍我们可以从中学到不少信用模型建模的方法和技巧。

3
总结
信用风险模型应考虑违约依赖风险因子组合同异性等,选择任何一种模型要牢记以上几个特征来作为建模标准。
最后献上一张图,对比三类 – 玩具(Independent)、混合(Mixture)、阈值(Threshold) – 模型的损失分布。为了简写,我们就用 IM 和 T 来代表它们。

信用风险建模 in Python 系列 1 - 信用风险 101

左边是一个三维立体图,右边上图是其二维表达形式,而右边下图将其放大。首先我们能很容易看出:

三种模型生成的损失分布都向右偏斜的很厉害(即在横轴很远处还有很小的值),这完全符合信用风险的特点,即信用组合里面包含大头寸低违约的事件。

我们还可看出(虽然不容易):

I 模型没能抓住损失的尾部,大概是 M 模型和 T 模型的尾部的一半。这种现象不正说明了模拟违约相关的重要性吗?

下帖我们研究玩具模型,不仅把其基本数学公式弄懂,而且还会用 Python 来量化信用组合的各种指标,比如

预期损失(expected loss, EL),意外损失(unexcepted loss, UL),风险价值(value-at-risk, VaR)和期望损失(expected shortfall, ES)。

本文来自投稿,不代表程序员编程网立场,如若转载,请注明出处:http://www.cxybcw.com/196387.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code