One-factor Gaussian Copula
这个是nyu课上的表达式
感觉和哥大网课的内容不太一样
xi 是产品的回报return
m 和 ϵ 都是 独立的随机正态变量
xi 和 xj 通过 common market factor m 相关
cov(xi, xj) = ρ cov(m,m) = ρ
p_i(t) 是发行人在时间t的存活率,没有违约
p_i(τ̃i) = φ(x_i)
- i指的是第i个产品,τ̃指的是违约的时间
- φ 是CDF,累计概率分布
- 所以,违约时间 τ̃ = p_i(t) inverse (φ(x_i))
所以推出,时间t时的相关的违约因子 default indicator
l (τ_i<t) = l (Φ(xi)>pi(t) )
在时间i 大于 T_i 之后, 概率φ大于存活率
- 我们一个个参数来理解
cdo = CDO(w, defProbs, recovery, attachements, detachements)
- w, 一般计算简单的CDO Gaussian copula model 都用125个 credit产品,具体原因我也没记住。w就是比重。w/np.sum(w) 也是比重%,没有大差别。
n = 125
w = 1./n*np.ones(n)
# w/np.sum(w)
- 关于defProbs,我不是很清楚依据什么算出来的随机数?之后根据125的defProbs的size又算出一个随机数e
defProbs = 1 - exp(-(np.random.uniform(size=n)*.03)*t)
defProbs.shape
>>> (125,)
e = np.random.normal(size=np.shape(defProbs))
e.shape
>>> (125,)
- 给出detachment 和 attachment,这个是配对的
# a list of attachements and detachements, they pair up by elements
attachements = np.array([0, .03, .07, .1, .15, .3])
detachements = np.array([.03, .07, .1, .15, .3, .6])
这里的z是随机1000条path 的其中一条。 先生成一个随机的size125 的array e,再根据e和随机变量z 生成 size125 的 return 值 x。
返回的 np.less(norm.cdf(x), defProbs)
就是x的累计分布和 defProbs相比,看看true false,是否违约。
我真的看到这里才全部理解了 -_-||...
def drawDefaultIndicator(self, z, rho) :
'''return a list of default indicators given common factor z
using one factor Gaussian Copula
'''
e = np.random.normal(size=np.shape(self.p))
x = z*np.sqrt(self.rho) + np.sqrt(1-self.rho)*e
return np.less(norm.cdf(x), self.p)
网友评论