금융위기와 중심극한정리의 실패¶
개요¶
대출 100건을 한데 묶어 채권을 만든다고 하자. 개별 대출의 부도확률은 오랜 자료로 잘 추정되어 있다. 이제 100건 가운데 90건 넘게 부도가 날 확률을 묻는다. 정규근사에 기댄 위험 모형은 1억 분의 1쯤이라고 답한다. 사실상 일어나지 않는 일이라는 뜻이다.
그런데 평균 부도확률은 한 치도 건드리지 않은 채 가정 하나만 바꾸면 같은 확률이 19%가 된다. 다섯 번에 한 번이다.
바뀐 가정은 부도들이 서로 독립이라는 것이다. 중심극한정리는 관측값들 사이의 독립성을, 적어도 약한 의존성을 요구한다. 이 조건이 깨지면 정규근사는 조금 어긋나는 정도가 아니라 자릿수 단위로 틀리고, 정규에 기반한 위험 모형은 극단 사건의 확률을 걷잡을 수 없이 과소평가한다. 이 절은 서로 상관된 차입자 부도를 모형으로 세워 그 과정을 따라가면서, 의존성이 어떻게 정규근사로는 포착할 수 없는 두꺼운 꼬리를 만들어 내는지 본다. 2008년 금융위기의 한복판에 있던 계산이 바로 이것이다.
평균은 같게, 구조만 다르게¶
차입자 \(n = 100\)명을 놓고 각자 부도가 나거나 나지 않는다고 하자. 부도 여부를 \(X_i \in \{0, 1\}\)로 적고 전체 부도 건수를 \(D = \sum_{i=1}^n X_i\)라 한다. 이제 모형을 둘 세우는데, 평균은 똑같이 맞추고 의존 구조만 다르게 한다. 그래야 나중에 벌어지는 차이가 어디서 왔는지 의심의 여지가 없어진다.
첫째 모형에서는 각 차입자가 고정된 확률 \(\theta = 2/3\)으로 서로 독립하게 부도를 낸다.
교과서적인 상황이고 중심극한정리가 그대로 적용된다.
둘째 모형에서는 부도확률 자체를 확률변수로 둔다. 경기가 좋은 해도 있고 나쁜 해도 있으니, 그해의 부도확률 \(\theta\)를 먼저 뽑고 그 \(\theta\)로 100건을 던지는 것이다.
\(\theta\)를 알고만 있다면 부도들은 여전히 서로 독립이다. 그러나 우리는 \(\theta\)를 모르고, 100건이 같은 \(\theta\)를 공유한다. 그래서 어느 한 건이 부도났다는 소식은 그해의 \(\theta\)가 컸다는 신호가 되고, 나머지 99건의 부도 확률도 함께 올려 잡게 만든다. 조건화하지 않고 주변적으로 보면 부도들이 양의 상관을 갖는 것이다.
핵심
조건부 독립 구조 \(X_i \perp X_j \mid \theta\)는 주변 독립성을 함의하지 않는다. 공유된 잠재 요인 \(\theta\)가 양의 의존성을 만들어 낸다: \(i \ne j\)에 대해 \(\text{Cov}(X_i, X_j) > 0\).
사전분포로 굳이 \(\text{Beta}(2, 1)\)을 고른 것은 두 모형의 평균을 맞추기 위해서다. 이 분포는 \([0, 1]\)에서 밀도가 \(f(\theta) = 2\theta\)인 우상향 직선이라 높은 부도확률에 더 큰 가중을 주며
이다. 평균 부도확률이 첫째 모형의 \(2/3\)과 정확히 같다. 두 모형 사이에서 달라지는 것은 오직 \(\theta\)가 해마다 흔들린다는 점뿐이다.
종 모양이 아니라 비스듬한 직선이 된다¶
\(\theta\)를 적분해 없애면 둘째 모형에서 \(D\)의 분포를 손으로 적을 수 있다.
이론적 PMF
\(\theta \sim \text{Beta}(2, 1)\)이고 \(D \mid \theta \sim \text{Binomial}(n, \theta)\)일 때 \(D\)의 주변 PMF는:
이며 \(d = 0, 1, \ldots, n\)이다.
이 결과는 한 번 새겨 볼 만하다. 확률이 \(d\)에 대해 거의 선형으로 증가한다. 부도 66건과 부도 99건 사이에 확률의 차이가 별로 없고 오히려 뒤쪽이 조금 더 크다. 같은 평균을 갖는 이항분포가 66.7 언저리에 좁게 뭉쳐 있는 것과 견주면 아예 다른 그림이다.
차이가 가장 아프게 드러나는 곳은 물론 꼬리다. 100건 중 90건을 넘는 파국적 사건의 확률을 세 방식으로 계산하면 이렇다.
| 모형 | \(P(D > 90)\) |
|---|---|
| 독립 (Binomial) | \(\approx 10^{-8}\) (무시할 만함) |
| 정규 근사 (중심극한정리) | \(\approx 3.7 \times 10^{-7}\) (무시할 만함) |
| 의존 (베타 혼합) | \(\approx 0.19\) (상당함) |
위험한 지점
의존 모형이 주는 꼬리 확률은 정규 모형이 예측하는 값의 약 50만 배이고(\(0.187\) 대 \(3.7 \times 10^{-7}\)), 독립 이항 모형과 견주면 약 1,700만 배다(\(1.1 \times 10^{-8}\) 대비). 중심극한정리에 기반한 모형에서는 사실상 불가능해 보이는 사건이 의존 모형에서는 약 \(19\%\)의 빈도로 일어난다. 이는 작은 보정이 아니라 정규 틀의 질적인 실패이다.
모의실험으로 확인한다¶
표의 세 숫자를 모의실험으로 직접 만들어 보자. 두 모형에서 각각 50만 번의 시나리오를 돌리고, 거기에 위기 이전의 위험 모형이 쓰던 정규근사를 나란히 놓는다.
보기 1. 부도의 독립 여부에 따른 손실 분포. 대출 \(n = 100\)건에서 부도 건수 \(D\)가 90건을 넘을 확률을 세 모형으로 견준다.
(1) 위에 적은 주변 PMF \(P(D = d) = 2(d+1)/[(n+1)(n+2)]\)를 써서 의존 모형의 \(P(D > 90)\)을 정확히 구하시오.
(2) 두 모형에서 각각 50만 번의 시나리오를 돌려 (1)을 확인하시오. 독립 모형과 정규근사가 모두 \(0.000000\)을 찍었다면 그 두 개의 \(0\)을 같은 뜻으로 읽어도 되는가.
풀이
(1) 해석적으로. 주변 PMF가 \(d\)의 일차식이라 꼬리 합이 등차수열의 합으로 끝난다. \(n = 100\)이므로 \((n+1)(n+2) = 101 \times 102 = 10302\)이고
이다. 약분하면 \(965/5151 = 0.187342\)다. PMF 자체의 유도는 아래 연습문제 2에 있으므로 여기서는 쓰기만 했다.
견줄 두 값도 손으로 적을 수 있다. 독립 모형은 이항 꼬리라
이고, 정규근사는 \(E[D] = 200/3\), \(\operatorname{sd}(D) = \sqrt{200/9} = 4.7140\)이므로
이다. 세 값이 \(10^{-8}\), \(10^{-7}\), \(10^{-1}\)로 일곱 자릿수에 걸쳐 흩어진다.
(2) 수치적으로.
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
np.random.seed(42)
n = 100 # 대출 100건
p = 2 / 3 # 각 건의 부도확률
n_sims = 500_000
# 경우 1: 부도가 서로 독립. 이항분포 그대로다.
d_indep = np.random.binomial(n, p, size=n_sims)
# 경우 2: 공통 위험요인이 있다.
# 매 시나리오마다 부도확률 theta 를 먼저 뽑고, 그 theta로 100건을 던진다.
# Beta(2,1)의 평균이 2/3 이므로 **평균 부도확률은 경우 1과 완전히 같다.**
# 달라지는 것은 오직 "모든 대출이 같은 theta를 공유한다"는 점뿐이다.
thetas = np.random.beta(2, 1, size=n_sims)
d_dep = np.array([np.random.binomial(n, th) for th in thetas])
# 꼬리 확률을 세 방법으로 비교한다.
# 평균은 셋 다 같은데 꼬리는 전혀 다르다는 것이 이 보기의 요점이다.
threshold = 90
p_indep = np.mean(d_indep > threshold)
p_dep = np.mean(d_dep > threshold)
# 중심극한정리에 기댄 정규근사. 위기 이전 모형이 쓰던 방식이다.
p_gauss = 1 - stats.norm.cdf(threshold, n * p, np.sqrt(n * p * (1 - p)))
print(f"P(D > {threshold}):")
print(f" Independent: {p_indep:.6f}")
print(f" Gaussian approx: {p_gauss:.6f}")
print(f" Dependent: {p_dep:.6f}")
# (1) 에서 구한 정확한 값과 맞춰 본다.
# 의존 모형은 주변 PMF 가 d 의 일차식이라 꼬리 합이 닫힌 꼴로 나온다.
dd = np.arange(threshold + 1, n + 1)
p_dep_exact = np.sum(2 * (dd + 1) / ((n + 1) * (n + 2)))
p_indep_exact = 1 - stats.binom.cdf(threshold, n, p)
print(f"\nP(D > {threshold}) 정확한 값:")
print(f" Independent: {p_indep_exact:.3e}")
print(f" Gaussian approx: {p_gauss:.3e}")
print(f" Dependent: {p_dep_exact:.6f}")
# 50만 번으로 볼 수 있는 가장 작은 확률은 1/500000 = 2e-6 이다.
print(f"\n50만 번에서 기대되는 발생 횟수: 독립 {p_indep_exact * n_sims:.4f}회, 정규 {p_gauss * n_sims:.4f}회")
print(f"독립 모형 50만 번의 최대 부도 건수 = {d_indep.max()}")
출력:
P(D > 90):
Independent: 0.000000
Gaussian approx: 0.000000
Dependent: 0.187854
P(D > 90) 정확한 값:
Independent: 1.129e-08
Gaussian approx: 3.715e-07
Dependent: 0.187342
50만 번에서 기대되는 발생 횟수: 독립 0.0056회, 정규 0.1858회
독립 모형 50만 번의 최대 부도 건수 = 88
의존 모형이 (1)과 맞는다. 모의값 \(0.187854\)와 정확값 \(0.187342\)의 차이가 \(0.000512\)인데, 50만 번 모의실험의 몬테카를로 표준오차가 \(\sqrt{0.1873 \times 0.8127/500000} = 0.000552\)이므로 \(0.93\) 표준오차 차이다. 들어맞는다.
그런데 두 개의 \(0.000000\)은 서로 다른 뜻이다. 하나씩 보아야 한다.
독립 모형의 \(0\)은 진짜 0, 곧 50만 번 가운데 90건 초과가 한 번도 나오지 않았다는 셈이다. 실제로 50만 번의 최대 부도 건수가 \(88\)이었으니 문턱에 닿지도 못했다. 그러나 참값이 0이라는 뜻은 아니다. 참값 \(1.129 \times 10^{-8}\)에 50만을 곱하면 기대 발생 횟수가 \(0.0056\)회이므로, 한 번도 나오지 않는 것이 당연한 결과다. 모의실험 50만 번이 분간할 수 있는 가장 작은 확률은 \(1/500000 = 2\times 10^{-6}\)이고 참값은 그보다 두 자릿수 아래에 있다.
정규근사의 \(0\)은 성격이 전혀 다르다. p_gauss는 모의실험이 아니라 정규 꼬리를 정확히 계산한 \(3.715\times 10^{-7}\)이며, 소수점 여섯 자리로 반올림하는 .6f 서식이 그것을 \(0.000000\)으로 찍었을 뿐이다. 출력 형식이 만들어 낸 0이다.
보고된 숫자의 자릿수가 그 숫자가 담은 정보를 가린다는 것이 여기서 얻을 교훈이다. \(0.000000\) 세 글자만 보고는 "일어나지 않았다", "확률이 0이다", "작아서 안 보인다"를 구별할 수 없다. 꼬리를 다룰 때 지수 표기를 쓰고 기대 발생 횟수를 함께 적어야 하는 이유다.
같은 평균을 쓴 의존 모형은 \(0.187854\), 곧 다섯 번에 한 번꼴로 그 일이 일어났다. 평균 부도확률은 한 치도 건드리지 않았는데 꼬리확률이 독립 모형의 1,700만 배다.
분포를 통째로 그려 본다¶
숫자만으로는 무슨 일이 벌어졌는지 손에 잡히지 않으니 분포를 직접 그려 본다. 왼쪽에 세 분포 전체를, 가운데에 꼬리만 확대해서, 오른쪽에 의존성의 정체인 공통 위험요인 \(\theta\)의 분포를 놓는다.
보기 2. 세 분포를 나란히 보기. 보기 1의 모의실험 결과를 세 칸으로 그린다. 왼쪽에 세 분포 전체, 가운데에 \(d \ge 80\)인 꼬리만 확대한 것, 오른쪽에 공통 위험요인 \(\theta\)의 사전분포를 놓는다.
(1) 왼쪽 칸에서 포개져 보이는 두 곡선은 어느 것인가. 나머지 하나는 왜 거기에 끼지 못하는가.
(2) 왼쪽 칸이 가리고 있는 것은 무엇이며, 가운데 칸으로 옮겨 가야 비로소 보이는 것은 무엇인가. 오른쪽 칸은 그 모두를 어떻게 설명하는가.
풀이
유도할 답이 있는 문제가 아니다. 그림에서 무엇이 읽히고 무엇이 읽히지 않는가가 이 보기의 전부이므로, 눈으로 본 것을 수치로 바꿔 가며 읽는다. 아래 코드는 보기 1의 d_indep, d_dep, n, p를 그대로 이어받는다.
# 그림에서 읽을 수치를 미리 찍어 둔다.
print(f"d=67 독립 {stats.binom.pmf(67, n, p):.5f} 정규 {stats.norm.pdf(67, n * p, np.sqrt(n * p * (1 - p))):.5f} 의존 {2 * 68 / 10302:.5f}")
print(f"의존 PMF d=0 {2 * 1 / 10302:.6f} -> d=100 {2 * 101 / 10302:.6f}")
print(f"P(D >= 80) 의존 {np.mean(d_dep >= 80):.5f} 독립 {1 - stats.binom.cdf(79, n, p):.5f}")
print(f"P(theta > 0.9) = {1 - stats.beta.cdf(0.9, 2, 1):.3f}")
fig, axes = plt.subplots(1, 3, figsize=(18, 5))
# 왼쪽: 세 분포 전체.
# 독립과 정규근사는 평균 근처에서 서로 포개지고, 의존 모형만 전 구간에 깔린다.
ax = axes[0]
bins = np.arange(-0.5, n + 1.5, 1)
ax.hist(d_dep, bins=bins, density=True, alpha=0.5, color="tomato",
label="Dependent (MC)")
d_vals = np.arange(0, n + 1)
ax.plot(d_vals, stats.binom.pmf(d_vals, n, p), "o", color="black",
ms=3, label="Independent")
x_norm = np.linspace(0, n, 300)
ax.plot(x_norm, stats.norm.pdf(x_norm, n * p, np.sqrt(n * p * (1 - p))),
"--", color="gray", lw=3, label="Gaussian approx")
ax.set_xlabel("Number of defaults")
ax.set_ylabel("Probability")
ax.set_title("Default Distributions")
ax.legend()
# 가운데: 꼬리만 확대(80건 이상).
# 왼쪽 칸의 선형 세로축에서는 이 구간이 통째로 바닥에 눌려 보이지 않는다.
# 독립 가정은 사실상 0을 주고, 종속 모형만 무시할 수 없는 확률을 준다.
# **위험은 언제나 꼬리에 있다.**
ax = axes[1]
tail = range(80, n + 1)
mc_tail = [np.mean(d_dep == d) for d in tail]
ax.bar(list(tail), mc_tail, color="tomato", alpha=0.7, label="Dependent")
ax.plot(list(tail), stats.binom.pmf(list(tail), n, p), "ko-",
ms=4, label="Independent")
ax.set_xlabel("Number of defaults")
ax.set_title("Tail Risk (d >= 80)")
ax.legend()
# 오른쪽: 공통 위험요인 theta의 분포.
# 이 분포가 넓다는 것이 종속성의 정체다.
# theta가 우연히 0.95쯤 나오는 시나리오에서는 100건이 거의 다 부도난다.
# 독립 모형에는 그런 시나리오 자체가 존재하지 않는다.
ax = axes[2]
theta_grid = np.linspace(0, 1, 300)
ax.plot(theta_grid, stats.beta.pdf(theta_grid, 2, 1), lw=2.5,
label="Beta(2, 1)")
ax.axvline(p, color="red", linestyle="--", label=f"E[theta] = {p:.3f}")
ax.set_xlabel("theta")
ax.set_ylabel("Density")
ax.set_title("Prior on Shared Risk Factor")
ax.legend()
plt.tight_layout()
plt.show()
출력:
d=67 독립 0.08438 정규 0.08442 의존 0.01320
의존 PMF d=0 0.000194 -> d=100 0.019608
P(D >= 80) 의존 0.37163 독립 0.00237
P(theta > 0.9) = 0.190

(1) 포개지는 둘은 독립 모형과 정규근사다. 독립 모형은 예상대로 평균 \(n\theta = 200/3 \approx 66.7\) 주위에 좁게 모여 있고, 정규근사 곡선이 그 위에 거의 그대로 얹힌다. 봉우리에서 재면 이항 \(0.08438\) 대 정규 \(0.08442\)로 상대차가 \(0.04\%\)다. 독립 가정 안에서는 중심극한정리가 훌륭하게 일을 해낸다.
끼지 못하는 것은 의존 모형이다. 봉우리랄 것이 없이 \(D\)의 전 구간에 얇게 깔려 있고, 주변 PMF가 \(2(d+1)/10302\)라 \(d\)가 커질수록 오히려 높아진다. \(d = 0\)에서 \(0.000194\), \(d = 100\)에서 \(0.019608\)로 101배다. 같은 \(d = 67\)에서 높이가 \(0.01320\)이니 독립 모형의 \(0.08438\)에 견주어 \(6.4\)분의 1에 지나지 않는다. 그러므로 "세 분포가 중앙에서 겹친다"고 읽으면 안 된다. 겹치는 것은 분포가 아니라 평균이다. 셋 다 \(E[D] = 200/3 \approx 66.7\)이고, 그래서 평균만 보고하면 세 모형을 구별할 수 없다.
(2) 왼쪽 칸이 가리는 것은 꼬리다. 세로축이 선형이라 \(0\)부터 \(0.08\)까지를 한 화면에 담는데, 독립 모형의 \(P(D > 90) = 1.1\times 10^{-8}\)은 봉우리 높이의 1억 분의 1이라 한 화소도 차지하지 못한다. 왼쪽 칸만 보면 독립 모형의 꼬리가 정확히 0인지 아주 작은지 분간할 길이 없다. 선형 축은 꼬리를 보여 주는 도구가 아니며, 보려면 로그 축을 쓰거나 가운데 칸처럼 구간을 좁혀야 한다.
가운데 칸이 그 일을 한다. \(d \ge 80\)으로 좁히면 의존 모형의 막대가 \(0.0156\)에서 \(0.0197\)까지 꾸준히 올라가는 동안 독립 모형은 \(d = 80\)의 \(0.00126\)에서 \(d = 90\)의 \(4.2\times 10^{-8}\)로 내려앉는다. 구간 전체를 더하면 \(P(D \ge 80)\)이 의존 \(0.372\) 대 독립 \(0.00237\)로 150배 넘게 차이가 난다. 다만 이 칸도 모든 것을 보여 주지는 않는다. 정규근사 곡선이 여기에는 아예 그려져 있지 않으므로, 세 모형이 꼬리에서 어떻게 갈라지는지를 이 칸 하나에서 읽을 수는 없다. 그 비교는 보기 1의 수치로 돌아가야 한다.
오른쪽 칸이 그 모두의 출처다. 공통 위험요인 \(\theta\)의 분포가 \(2/3\) 한 점(빨간 점선)에 박혀 있지 않고 \([0,1]\) 전체에 퍼져 있다. \(\text{Beta}(2,1)\)은 \(\theta > 0.9\)에 \(1 - 0.9^2 = 0.190\)이라는 무시할 수 없는 확률을 주므로, 그해의 부도확률이 \(0.95\)쯤으로 뽑히는 시나리오가 실제로 존재하고 그런 해에는 100건이 거의 다 부도난다. 왼쪽 칸에서 의존 모형이 오른쪽 끝까지 깔려 있는 이유가 이것이다. 독립 모형은 이 칸이 빨간 점선 한 점으로 쪼그라든 경우이고, 그런 해가 아예 존재하지 않는다.
주요 관찰
평균만으로는 세 모형을 구별할 수 없다. 셋 다 \(E[D] = 200/3 \approx 66.7\)이다. 그러나 분포는 전혀 다르며, 특히 꼬리에서 자릿수로 갈라진다. 정규근사는 독립 모형의 중심을 \(0.04\%\) 안에서 맞히지만(꼬리에서는 \(33\)배쯤 크게 준다) 의존 모형의 두꺼운 꼬리는 자릿수째로 놓친다. 모형을 평균이나 중앙 적합도로만 검증하면 정확히 이 실패를 놓친다.
이것이 금융에서 왜 중요한가¶
2008년 금융위기 이전에 많은 위험 모형이 주택담보대출 부도를 근사적으로 독립인 사건으로 다루었다. 그 결과 정규 코퓰러 모형은 꼬리 위험을 극적으로 과소평가했다. 여러 지역에서 주택 시장이 동시에 하락하자(공통 위험 요인) 부도들이 상관을 갖게 되었고, "평생 한 번" 있을 법한 손실이 모형의 예측보다 훨씬 자주 발생했다. 앞 그림의 오른쪽 칸에서 \(\theta\)가 1 쪽으로 뽑히는 시나리오가 현실에서 그대로 일어난 것이다.
연습문제¶
연습문제 1. 독립 모형과 의존 모형 각각에 대해 \(E[D]\)와 \(\text{Var}(D)\)를 계산하라.
풀이
독립 모형: \(D \sim \text{Binomial}(100, 2/3)\).
의존 모형: 전체 기댓값의 법칙과 전체 분산의 법칙을 사용한다.
평균은 동일하다. 분산은:
\(\text{Beta}(2,1)\)에서 \(E[\theta] = 2/3\), \(E[\theta^2] = E[\theta]^2 + \text{Var}(\theta) = 4/9 + 1/18 = 1/2\), \(\text{Var}(\theta) = 1/18\)이다.
평균은 같은데도 의존 모형의 분산이 독립 모형보다 25배 크다(\(572\) 대 \(22\)). \(\square\)
연습문제 2. \(\theta \sim \text{Beta}(2, 1)\)에 대해 주변 PMF \(P(D = d) = 2(d+1) / [(n+1)(n+2)]\)를 유도하라.
풀이
이 적분은 베타함수 \(B(d+2, n-d+1) = \frac{\Gamma(d+2)\Gamma(n-d+1)}{\Gamma(n+3)} = \frac{(d+1)!(n-d)!}{(n+2)!}\)이다.
확인해 보면 \(\sum_{d=0}^n \frac{2(d+1)}{(n+1)(n+2)} = \frac{2}{(n+1)(n+2)} \cdot \sum_{d=0}^n (d+1) = \frac{2}{(n+1)(n+2)} \cdot \frac{(n+1)(n+2)}{2} = 1\)이다. \(\square\)
연습문제 3. 임의의 두 차입자의 부도 사이의 주변 공분산이 \(i \ne j\)에 대해 \(\text{Cov}(X_i, X_j) = \text{Var}(\theta)\)임을 보여라. \(\theta \sim \text{Beta}(2, 1)\)에 대해 이를 계산하라.
풀이
\(i \ne j\)에 대해:
(조건부 독립성을 사용했다: \(E[X_i X_j \mid \theta] = E[X_i \mid \theta] \cdot E[X_j \mid \theta] = \theta^2\).)
따라서:
\(\theta \sim \text{Beta}(2, 1)\)에 대해:
이 양의 공분산이 두꺼운 꼬리의 원천이다. \(\square\)
연습문제 4. 대신 \(\theta \sim \text{Beta}(20, 10)\)이라면(여전히 \(E[\theta] = 2/3\)이지만 변동성이 훨씬 작다) \(\text{Var}(\theta)\)와 \(\text{Var}(D)\)를 다시 계산하라. 공통 위험 요인의 변동성을 줄이면 꼬리 위험은 어떻게 되는가?
풀이
\(\theta \sim \text{Beta}(20, 10)\)에서 \(\alpha = 20\), \(\beta = 10\)이다.
전체 분산 공식을 사용하면:
\(E[\theta^2] = \text{Var}(\theta) + (E[\theta])^2 = 0.00717 + 4/9 \approx 0.4516\)이다.
비교하면 독립 모형은 \(\text{Var}(D) = 22.2\), \(\text{Beta}(2,1)\)은 572, \(\text{Beta}(20,10)\)은 93이다.
\(\theta\)의 변동성이 작아지면 (여전히 독립인 경우보다는 크지만) 꼬리 위험이 크게 줄어든다. \(\text{Beta}(20, 10)\) 분포는 \(\theta\)를 \(2/3\) 근처에 모으므로 극단적인 시나리오(\(\theta > 0.9\))가 매우 드물어진다. 이 모형은 독립인 경우(\(\text{Var}(\theta) = 0\))와 의존성이 강한 \(\text{Beta}(2, 1)\) 사이를 잇는다. \(\square\)
연습문제 5. 2008년 이전 신용평가사들이 사용한 정규 코퓰러 모형이 왜 실패했는지 쉬운 말로 설명하라. 어떤 가정이 가장 결정적으로 위배되었는가?
풀이
정규 코퓰러 모형은 차입자의 부도가 개별 요인에 의해 결정되고 상관은 약할 뿐이라고 가정하며, 이를 다변량 정규 의존 구조로 모형화했다. 이 틀에서는 다변량 정규분포의 꼬리가 (지수적으로 감소하여) 가볍기 때문에 많은 부도가 동시에 일어날 확률(꼬리 사건)이 무시할 만했다.
가장 결정적으로 위배된 가정은 상관 구조가 적절하다는 가정이다. 구체적으로:
-
공통 시스템 위험: 이 모형은 차입자의 부도가 공통의 경제 요인(주택 가격, 금리, 고용)과 얼마나 강하게 연결되어 있는지를 과소평가했다. 전국적으로 주택 가격이 하락하자 부도들이 높은 상관을 갖게 되었다.
-
정규분포의 가벼운 꼬리: 정규 코퓰러는 "꼬리 의존성", 즉 극단 사건(다수의 부도)이 함께 일어나는 경향을 포착하지 못한다. 실제 부도 의존성은 정규분포가 함의하는 것보다 훨씬 두꺼운 꼬리를 갖는다.
-
고정된 상관계수: 상관 모수가 경제가 온건하던 시기의 자료로 추정되어, 위기 동안 상관이 급격히 커지는 현상(상관 붕괴 또는 "상관 스마일")을 반영하지 못했다.
그 결과 예측 확률이 \(10^{-8}\)(사실상 불가능)이던 사건이 실제로는 \(10^{-2}\)에 가까운 확률로 일어났고, 이는 위험을 백만 배 과소평가한 것이다. 정규 모형에 근거해 "안전"하다고 평가받은 주택저당증권을 보유한 기관들은 이로 인해 파국적인 손실을 입었다. \(\square\)
연습문제 6. 부도율 \(\bar D = D/n\)의 분산을 두 모형에서 각각 구하고 \(n \to \infty\)일 때의 극한을 비교하라. "대출을 많이 모으면 위험이 분산된다"는 주장을 어떻게 평가하겠는가?
풀이
독립 모형. \(\operatorname{Var}(\bar D) = \theta(1-\theta)/n = (2/9)/n \to 0\)이다. 대출 수를 늘리면 부도율의 불확실성이 사라진다.
의존 모형. 전체분산 정리로
이므로
이다. 0으로 가지 않는다. \(\text{Beta}(2,1)\)이면 \(\operatorname{Var}(\theta) = 1/18 \approx 0.0556\)이고 표준편차가 0.236이다.
수치로 보면 \(n=100\)에서 \(\operatorname{Var}(D)\)가 독립 모형 22.2(표준편차 4.71) 대 의존 모형 572.2(표준편차 23.9)로 25배 넘게 차이 난다.
주장의 평가. "많이 모으면 분산된다"는 개별 위험(idiosyncratic risk)에 대해서만 참이다. 위 식의 첫 항 \(E[\theta(1-\theta)]/n\)이 그 몫이고 \(n\)과 함께 사라진다.
그러나 둘째 항 \(\operatorname{Var}(\theta)\)는 체계적 위험(systematic risk) 이고 아무리 모아도 남는다. 모든 대출이 같은 거시경제 환경을 공유하는 한, 개수를 늘리는 것으로는 그 위험을 없앨 수 없다.
2000년대의 증권화 논리가 정확히 여기서 틀렸다. 여러 지역의 주택담보대출을 수천 건 묶으면 위험이 상쇄되어 최상위 등급 채권을 만들 수 있다는 것이었는데, 전국적인 주택가격 하락이라는 공통 요인 앞에서 그 분산 효과는 존재하지 않았다. 묶는 것으로 지울 수 있는 위험과 지울 수 없는 위험을 구분하지 못한 것이 문제의 핵심이다.
연습문제 7. \(P(D \ge 90)\)을 세 모형(독립, 의존, 정규근사)에서 각각 구하고 비교하라.
풀이
주변 CDF는 연습문제 2에서 \(P(D \le k) = (k+1)(k+2)/\{(n+1)(n+2)\}\)이므로 의존 모형의 계산이 손으로 가능하다.
| 모형 | \(P(D \ge 90)\) |
|---|---|
| 정규근사 | \(6.4\times10^{-7}\) |
| 독립(이항) | \(5.3\times10^{-8}\) |
| 의존 | \(0.205\) |
자릿수가 여섯 개 넘게 벌어진다. 정규근사는 "천만 번에 한 번", 의존 모형은 "다섯 번에 한 번"이라고 말한다.
세 모형의 평균은 모두 \(200/3 \approx 66.7\)로 똑같다. 평균만 보고서는 어느 모형을 쓰든 차이를 알 수 없다. 다만 보기 2의 왼쪽 그림에서 겹쳐 보이는 것은 독립 모형과 정규근사 둘뿐이고(\(d = 67\)에서 \(0.08438\) 대 \(0.08442\)), 의존 모형은 같은 자리에서 \(0.01320\)으로 \(6.4\)분의 1이다. 겹치는 것은 분포가 아니라 평균이며, 독립과 정규 사이의 차이는 꼬리에서 드러난다.
한 가지 더 눈여겨볼 점은 정규근사가 독립 이항보다도 꼬리를 크게 준다는 것이다. 이항분포는 지지집합이 \([0,100]\)으로 유계인데 정규분포는 그렇지 않아서다. 그러나 이 차이는 의존성이 만든 차이에 견주면 무의미하다. 근사의 정확도를 다듬는 것보다 모형의 구조를 바로잡는 것이 비교할 수 없이 중요하다.
연습문제 8. 신뢰수준 99%의 VaR(부도 건수의 0.99 분위수)을 세 모형에서 구하라. 의존 모형의 결과를 어떻게 해석해야 하는가?
풀이
| 모형 | 99% VaR |
|---|---|
| 정규근사 | 77.6 |
| 독립(이항) | 77 |
| 의존 | 100 |
의존 모형에서는 \(P(D \le 99) = 100\times101/10302 = 0.980 < 0.99\)이므로 0.99 분위수가 100, 즉 전부 부도다.
해석. 이 모형에서는 "100건 중 100건이 모두 부도나는" 시나리오가 확률 \(P(D=100) = 2\times101/10302 \approx 0.0196\)으로 약 2%나 된다. \(\theta\)가 1에 가깝게 뽑히는 시나리오가 그 정도 확률로 존재하기 때문이고, 그 시나리오에서는 개별 대출의 분산 효과가 완전히 무력해진다.
독립 모형에는 그런 시나리오가 아예 존재하지 않는다. \(P(D=100) = (2/3)^{100} \approx 2\times10^{-18}\)이다.
99% VaR가 자기자본 규제의 기준으로 쓰였다는 점을 생각하면 함의가 무겁다. 독립 모형을 믿으면 77건의 손실만 감당할 자본을 쌓으면 되지만, 실제 위험은 100건 전부였다.
VaR 자체의 한계도 짚을 만하다. VaR는 "99% 확률로 이 이상 잃지 않는다"고 말할 뿐 그 1%에서 얼마나 잃는지는 말하지 않는다. 여기서 기대손실(ES, 꼬리 조건부 평균)을 계산하면 의존 모형에서 100이 나오는데, 최악의 1%에서는 예외 없이 전부 부도난다는 뜻이다. 2016년 바젤 규제가 VaR에서 ES로 기준을 옮긴 이유가 이것이며, VaR는 부분가법성을 만족하지 않아 "나누면 위험이 줄어드는 것처럼 보이는" 문제도 있다.
연습문제 9. 꼬리의존계수를 \(\lambda_U = \lim_{u\to1^-}P\{V > G^{-1}(u)\mid U > F^{-1}(u)\}\)로 정의한다. 상관 \(\rho < 1\)인 이변량 정규분포에서 \(\lambda_U = 0\)임을 설명하고, \(t\) 코퓰라와 대비하라.
풀이
\(\lambda_U\)는 "한쪽이 극단적으로 클 때 다른 쪽도 극단적으로 클 조건부확률"의 극한이다. 0이면 극단 사건이 점근적으로 독립이라는 뜻이다.
정규의 경우. \((Z_1,Z_2)\)가 상관 \(\rho\)인 표준이변량정규일 때, 조건부분포는
이다. \(z \to \infty\)이면 조건부 평균이 \(\rho z\)로 커지지만 문턱값 \(z\)보다 느리게 커진다(\(\rho < 1\)이므로). 문턱과 조건부 평균의 거리가
로 발산하므로 \(P(Z_2 > z \mid Z_1 = z) \to 0\)이다. 따라서 \(\rho < 1\)인 한 언제나
이다. \(\rho = 0.99\)여도 그렇다. 상관을 아무리 높여도 극단의 동시 발생은 사라진다.
\(t\) 코퓰라. 자유도 \(\nu\)인 \(t\) 코퓰라는
으로 양수다. 예컨대 \(\nu=4\), \(\rho=0.5\)면 \(\lambda_U \approx 0.25\)이다. 한쪽이 극단적이면 다른 쪽도 극단적일 확률이 25%쯤 남는다. \(\nu \to \infty\)이면 \(t\) 코퓰라가 정규 코퓰라로 가고 \(\lambda_U \to 0\)이 된다.
왜 이 차이가 치명적인가. 두 코퓰라는 같은 \(\rho\)로 맞출 수 있고, 중앙 부근의 자료로는 구별하기 어렵다. 평상시 자료를 적합하면 둘 다 잘 맞는다. 그런데 위기 시나리오에서는 답이 자릿수로 갈린다.
신용파생상품 평가에 쓰인 리(Li)의 가우스 코퓰라 모형이 정확히 이 함정에 빠졌다. 의존성을 상관계수 하나로 요약하면서 "함께 극단으로 가는 성향"을 구조적으로 0으로 못박아 버린 것이다. 상관계수를 아무리 정교하게 추정해도 이 문제는 해결되지 않는다. 모형족 자체를 바꿔야 한다.
연습문제 10. 이 사례에서 얻을 수 있는 통계적 교훈을 정리하라. 실무에서 같은 실패를 피하려면 무엇을 해야 하는가?
풀이
교훈 1 — 중심극한정리에는 조건이 있다. 독립(또는 약한 의존)과 유한한 분산이 필요하다. 이 조건은 자료에서 자동으로 확인되지 않으며, 특히 독립성은 검증하기 가장 어려운 가정이다. 평상시 자료에서 상관이 낮게 나왔다고 해서 위기 시에도 그렇다는 보장이 없다.
교훈 2 — 평균이 같아도 꼬리는 전혀 다를 수 있다. 연습문제 7에서 세 모형의 평균이 모두 66.7로 같은데 \(P(D\ge90)\)은 \(10^{-8}\)에서 \(0.2\)까지 벌어졌다. 모형 검증을 중앙 적합도로만 하면 안 된다.
교훈 3 — 조건부 독립과 주변 독립을 혼동하면 안 된다. 이 모형에서 부도들은 \(\theta\)가 주어지면 독립이지만 주변적으로는 강하게 종속이다. "요인을 통제하면 독립"이라는 말은 그 요인을 알 때만 쓸모가 있다.
교훈 4 — 분산투자가 지우는 위험과 지우지 못하는 위험이 다르다. 연습문제 6에서 본 대로 체계적 위험은 개수로 지워지지 않는다.
실무에서 할 일.
- 가정을 뒤집어 보는 민감도 분석. 상관을 0.3이 아니라 0.9로 두면 결과가 어떻게 되는가. 답이 자릿수로 달라진다면 그 가정이 결론을 지배하고 있다는 뜻이다.
- 스트레스 테스트. 과거 자료에 없는 시나리오를 일부러 넣어 본다. 통계 모형은 관측된 범위 밖에서 신뢰할 수 없다.
- 꼬리를 겨냥한 모형 선택. \(t\) 코퓰라처럼 꼬리의존성을 허용하는 모형을 기본값으로 두고, 정규를 쓰려면 근거를 대게 한다.
- 모형 위험을 명시적으로 기록한다. 추정값과 신뢰구간만이 아니라 "이 결론이 어느 가정에 얼마나 기대고 있는가"를 함께 보고한다.
- 정밀도와 정확도를 구분한다. 소수점 넷째 자리까지 계산된 확률이 틀린 모형에서 나왔다면 그 정밀도는 착시다.
한 문장으로 줄이면, 틀릴 수 있는 곳은 추정이 아니라 대개 모형이다.
정리하며¶
중심극한정리는 독립성을, 적어도 약한 의존성을 요구한다. 이 조건이 깨지면 정규근사는 조금 부정확해지는 것이 아니라 극적으로 실패한다. 이 절의 두 모형이 그것을 가장 깔끔한 형태로 보여 주었다. 부도확률 \(\theta\)를 하나의 수로 고정하면 \(D \sim \text{Binomial}(100, 2/3)\)이고 정규근사가 잘 듣는다. \(\theta\) 자체를 베타분포로 두어 공통 요인을 들여오면 평균은 한 치도 변하지 않는데 분포가 전 구간으로 퍼지고 꼬리가 두꺼워진다.
의존성이 어디서 왔는지를 정확히 보아야 한다. 차입자들이 서로의 눈치를 보며 부도를 낸 것이 아니다. 그저 모두가 같은 경기에 노출되어 있다는 사실 하나로 상관이 생겼다. \(\theta\)를 알면 조건부로는 독립이지만 \(\theta\)를 모르는 우리에게는 주변적으로 독립이 아니며, 3장에서 본 조건부 독립의 함정이 여기서 되풀이된 것이다. 분산이 커지는 방식도 3장 왈드 항등식의 분산 공식과 같은 구조다. \(\theta\)의 변동에서 오는 항이 하나 더해지는데, 그 항이 이항 변동을 압도해 버린다.
실무에서 이 차이가 닿는 곳은 자기자본 규제다. 정규 가정 아래 계산한 \(99.9\%\) 분위수, 곧 VaR가 실제 위험을 여러 배 과소평가한다. "전부 동시에 나빠질 확률"을 0으로 못 박아 놓은 모형이 위기에서 무너지는 이유가 이것이다. 2008년이 이 계산을 현실에서 보여 주었다. 개별 대출의 부도확률은 잘 추정되어 있었지만, 그것들이 함께 움직인다는 사실이 모형에서 통째로 빠져 있었다.
다음 절에서는 추론이 기준으로 삼는 네 분포(\(Z\), \(t\), \(\chi^2\), \(F\))를 먼저 정리하고, 그다음 5.4절부터 여섯 통계량의 표본분포를 하나씩 확인한다.