Quantitative Risk Models: Credit and Market Risk
Module: Fintech AI | Difficulty: Advanced
Credit VaR
Copula Models
Gaussian Copula
Default Correlation
import numpy as np
from scipy.stats import norm
class CreditVaR:
def __init__(self, pd, lgd, correlation_matrix):
self.pd = pd; self.lgd = lgd; self.corr = correlation_matrix
def gaussian_copula_var(self, n_simulations=10000, confidence=0.99):
n_assets = len(self.pd)
# Generate correlated defaults
mvn_samples = np.random.multivariate_normal(
np.zeros(n_assets), self.corr, n_simulations)
uniform_samples = norm.cdf(mvn_samples)
# Determine defaults
defaults = uniform_samples < self.pd
# Calculate portfolio loss
losses = np.sum(defaults * self.lgd, axis=1)
return np.percentile(losses, confidence * 100)
Research Insight: The Gaussian copula was infamously used to price CDOs before the 2008 crisis. It underestimates tail dependence β the tendency for many defaults to occur simultaneously. Student-t copulas and vine copulas better capture tail risk.