본문 바로가기
C.W.K.
Stream
Lesson 03 of 06 · published

2008 금융위기: 위험 숫자가 가린 시스템

~13 min · 2008-crisis, var, normality-misuse, case-study, subprime

Level 0통계 초심자
0 XP0/55 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete
"2008년 금융위기를 '정규분포 하나가 틀려서 생긴 사고'라고 쓰면 또 하나의 위험모형을 만드는 셈이야. 실제 위기는 모델, 인센티브, 레버리지, 주택시장, 유동성과 규제가 얽힌 시스템 실패였어."

VaR가 말하는 것과 말하지 않는 것

Value at Risk, 줄여서 VaR는 주어진 기간과 신뢰수준에서 손실분포의 한 분위수를 요약해. 예를 들어 하루 99% VaR가 천만 달러라면 사용한 자료와 모형 아래에서 하루 손실이 천만 달러를 넘는 경우를 약 1%로 본다는 뜻이야. 넘어선 뒤 얼마나 더 잃을지는 알려주지 않아.

VaR를 계산하는 방법도 하나가 아니야. 정규분포와 공분산을 쓰는 모수적 방법도 있고, 과거 수익률을 다시 적용하는 역사적 시뮬레이션, 몬테카를로 시뮬레이션도 있어. 따라서 "VaR는 곧 정규가정"이라고 쓰면 틀려. 다만 어떤 방법이든 과거자료가 미래의 상태변화와 꼬리위험을 충분히 담지 못하면 위험을 작게 볼 수 있어.

위기에서 함께 드러난 취약성

  • 주택과 신용위험의 잘못된 보정: 전국적인 주택가격 하락과 동시다발 부도 가능성을 과소평가한 모형과 등급평가가 있었어.
  • 상관관계의 상태변화: 지역과 상품을 나누면 안전하다는 믿음은 공통된 주택충격과 자금시장 경색 앞에서 약해졌어.
  • 레버리지와 만기불일치: 단기자금에 의존해 장기·불투명 자산을 보유한 기관은 자금이 마르자 급히 자산을 팔아야 했어.
  • 복잡성과 연결성: 증권화와 파생상품은 위험을 분산하기도 했지만 누가 최종 위험을 들고 있는지 파악하기 어렵게 만들었어.
  • 인센티브와 감독: 대출취급, 등급평가, 보상구조, 자본규제의 빈틈이 위험을 계속 쌓이게 했어.

VaR와 정규근사의 한계는 이 목록의 중요한 일부지만 전체 원인은 아니야. 모형이 위험을 작게 보여도 레버리지와 자금조달 구조가 보수적이었다면 충격은 달랐을 수 있고, 반대로 좋은 꼬리모형도 잘못된 인센티브와 불투명한 연결망을 혼자 고치지는 못해.

왜 한 숫자가 위험한가

위기 전의 조용한 자료로 만든 하나의 숫자는 경영진과 규제자에게 통제감을 줄 수 있어. 하지만 신뢰수준 밖의 손실크기, 모형 자체의 불확실성, 여러 기관의 동시행동, 시장유동성의 붕괴는 그 숫자 바깥에 남을 수 있지. 그래서 VaR만 보지 말고 예상손실, 스트레스테스트, 시나리오 분석, 레버리지와 유동성 지표를 함께 봐야 해.

일반화

2008년의 교훈은 "정규분포를 쓰지 마"가 아니야. 한 위험지표가 측정하지 않는 것을 지표가 없애주지는 않는다는 거야. 분포와 상관관계가 상태에 따라 바뀌는지, 꼬리 너머의 손실이 얼마나 큰지, 참여자들의 대응이 서로를 증폭하는지, 모델이 틀려도 시스템이 버틸 여유가 있는지 함께 물어야 해.

Code

정규 vs 두꺼운 꼬리 수익률 하 VaR vs CVaR·python
import numpy as np
rng = np.random.default_rng(200)

# 두 가정 하 VaR 추정의 양식화된 비교.
# 일년에 일일 '포트폴리오 수익률'. 같은 sigma; 다른 분포.
N = 252      # 일년 거래일
portfolio_normal = rng.normal(loc=0.0005, scale=0.01, size=N)            # std 1%
portfolio_fat = rng.standard_t(df=3, size=N) * 0.01                       # 비슷한 std 이지만 두꺼운 꼬리

for label, returns in [("정규-분포 P&L", portfolio_normal),
                       ("두꺼운 꼬리 P&L", portfolio_fat)]:
    var_95 = np.quantile(returns, 0.05)    # 5번째 백분위 손실
    var_99 = np.quantile(returns, 0.01)    # 1번째 백분위 손실
    cvar_99 = returns[returns <= var_99].mean()    # 최악 1% 평균 손실
    print(f"\n{label}")
    print(f"  95% VaR (1일 손실):        {var_95 * 100:>+6.2f}%")
    print(f"  99% VaR (1일 손실):        {var_99 * 100:>+6.2f}%")
    print(f"  99% CVaR (최악 1% 평균):    {cvar_99 * 100:>+6.2f}%")

# 두꺼운 꼬리 시리즈에서, 최악 1% 가 VaR 단독이 보고하는 것보다 훨씬 더 나쁨.
# VaR 는 '임계' 지표; 손실이 1% 날짜에 임계 아래로 떨어지는 임계를 알려줘.
# 그 손실이 얼마나 더 나쁠 수 있는지는 안 알려줘.
# CVaR (조건부 VaR, 일명 Expected Shortfall) 가 VaR 가 놓치는 꼬리 질량을 포착.
# 2008 위기가 몇 일에 여러 CVaR 치의 손실.

External links

Exercise

평소 쓰는 위험지표 하나를 골라 그 숫자가 답하는 질문과 답하지 않는 질문을 나눠 적어봐. 평균 응답시간이라면 최악의 지연, 동시 장애, 복구시간, 사용자별 분포 중 무엇이 빠져 있는지 확인해.
Hint
좋은 지표를 버리는 게 목표가 아니야. 분위수, 꼬리평균, 스트레스 시나리오, 복구여유처럼 빠진 축을 옆에 붙이는 게 목표야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.