信用债风险模型初探之:Z-Score Model
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
模型原理
- 不需要发行人上市交易数据
- 离散分析方法
模型公式
ZScore = 0.517 - 0.460*x1 + 9.320*2/x2 + 0.388*x3 + 1.158*x4
x1: 负债合计/资产总计
x2: 净利润/0.5*(资产总计 + 资产总计[上期])
x3: 营运资本/资产总计
x4: 未分配利润/资产总计
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
模型原理
- 需要发行人上市交易数据
- 离散分析方法
模型公式
ZScore = 0.2086*x1 + 4.3465*x2 + 4.9601*x3
x1: 总市值/负债合计
x2: 营业总收入/资产总计
x3: (资产总计-资产总计[上期])/资产总计[上期]
coef = [0.2086, 4.3465, 4.9601]
划分区间
Z-score < 1.5408
: 已经违约Z-score > 1.5408
: 财务健康,短期内不会出现违约情况
3. 未来
Z-Score 是一个比较基础,通用的模型,本文只是对其原理和实现的一个简单探索,要想真正 build 一个足够 robust 的模型还需要做很多工作。不过 uqer 提供了完善的财务数据,行情数据以及 100 多个相关因子,相信会给大家建立模型上节省不少时间。
```py
built-in package
import time import json import random import datetime as dt
third-party package
import numpy as np import pandas as pd pd.options.display.max_columns = 100 pd.options.display.max_rows = 100 from matplotlib.pyplot import * import seaborn