信用债风险模型初探之:Z-Score Model

来源:https://uqer.io/community/share/568b73d6228e5b67159bee69

0. 引言

2015年3月4日晚间,ST超日(上海超日太阳能科技股份有限公司)董事会发布公告称,“11超日债”本期利息将无法于原定付息日2014年3月7日按期全额支付。至此,“11超日债”正式成为国内首例违约债券。

1. 什么是 Zscore Model

简单的说,zscore model 是一种用于估计债券发行人违约风险的信用风险模型。

2. 本文提供的 Zscore Model

下面我们首先从原理,模型公式,划分区间三个方面来简单介绍一下本模块中的两个 Z-score 模型;然后我们从如何获取数据,清洗数据;如何计算债券发行人 Z-score 值;如何作图来操练这个模型;

2.1 All Corporate Bonds

模型原理

  • 不需要发行人上市交易数据
  • 离散分析方法 模型公式
  1. ZScore = 0.517 - 0.460*x1 + 9.320*2/x2 + 0.388*x3 + 1.158*x4
  2. x1: 负债合计/资产总计
  3. x2: 净利润/0.5*(资产总计 + 资产总计[上期])
  4. x3: 营运资本/资产总计
  5. x4: 未分配利润/资产总计
  6. coef=[0.517, -0.460, 18.640, 0.388, 1.158]

划分区间

  • Z-score < 0.5: 已经违约
  • 0.5 < Z-score < 0.9: 有违约的可能性
  • Z-score > 0.9: 财务健康,短期内不会出现违约情况

2.2 Corporate Bonds with Equity Listings

模型原理

  • 需要发行人上市交易数据
  • 离散分析方法 模型公式
  1. ZScore = 0.2086*x1 + 4.3465*x2 + 4.9601*x3
  2. x1: 总市值/负债合计
  3. x2: 营业总收入/资产总计
  4. x3: (资产总计-资产总计[上期])/资产总计[上期]
  5. coef = [0.2086, 4.3465, 4.9601]

划分区间

  • Z-score < 1.5408: 已经违约
  • Z-score > 1.5408: 财务健康,短期内不会出现违约情况

3. 未来

Z-Score 是一个比较基础,通用的模型,本文只是对其原理和实现的一个简单探索,要想真正 build 一个足够 robust 的模型还需要做很多工作。不过 uqer 提供了完善的财务数据,行情数据以及 100 多个相关因子,相信会给大家建立模型上节省不少时间。

built-in package

import timeimport jsonimport randomimport datetime as dt

third-party package

import numpy as npimport pandas as pdpd.options.display.max_columns = 100pd.options.display.max_rows = 100from matplotlib.pyplot import *import seaborn