VaR·ES·Black-Scholes·Markowitz를 잇는 금융 리스크 운용
VaR·ES 리스크 측정, Black-Scholes 옵션 가격, Markowitz 포트폴리오 최적화를 데이터·검증 체계와 함께 운용하는 방법을 정리합니다.
2026-08-14 · 최초 발행 2025-10-14
리스크 측정과 가격·배분을 하나의 흐름으로 다루기
금융 통계는 손실 위험을 측정하고, 옵션 가격을 산출하며, 자본을 배분하는 계산을 하나의 운용 흐름으로 연결한다. 일중 데이터 수집부터 일일 리스크 보고, 헤지, 투자 비중 산출까지 같은 파이프라인에서 관리해야 결과를 비교하고 의사결정에 사용할 수 있다.
VaR(Value at Risk)는 특정 신뢰수준 α에서 손실분포의 α-분위수를 구하는 지표다. 예를 들어 99% 1일 VaR는 해당 신뢰수준에서의 최악 손실 분위값을 뜻한다. 산출 방식으로는 역사적 비모수 방식, 정규·t-분포 등을 쓰는 모수 방식, 몬테카를로 시뮬레이션 방식이 있다.
ES(Expected Shortfall)는 VaR를 초과한 손실의 조건부 기댓값, 즉 꼬리 평균 손실을 계산한다. 서브애디티비티 등을 포함한 위험측도 공리를 만족하며, 바젤 표준에서 97.5% ES를 적용한 사례가 있다.
Black-Scholes는 무위험이자율 r, 변동성 σ, 만기 T, 기초자산 S를 바탕으로 옵션 가격의 폐형 해를 제공한다. 콜옵션 가격은 C = S·N(d1) − K·e^(−rT)·N(d2)로 표현된다. 로그정규 수익률, 연속 헤지, 상수 변동성을 가정한다.
Markowitz 평균-분산 포트폴리오 최적화는 기대수익 벡터 μ와 공분산 행렬 Σ를 사용해 위험과 수익의 절충점을 찾는다. 가중치 합계가 1이어야 한다는 조건이나 공매도 제한 같은 제약을 포함할 수 있으며, 분산 최소화 또는 효율적 프런티어 구성이 대표적인 목적함수다.
데이터부터 검증까지 연결되는 운용 계층
입력에는 가격, 금리, 변동성, 포지션, 거래비용이 포함된다. 결측치와 이상치를 처리하고, 시점을 정렬하며, 통화와 캘린더를 정규화해야 한다. 무결성 검사, 레이트 리밸런싱, corporate action 조정, 스냅샷 버저닝도 데이터 품질 통제에 포함된다.
모형 계층에서는 정규·t·혼합분포와 GARCH, 수익률 군집을 고려하고, 시가중(λ-가중) 공분산을 추정한다. 변동성·상관·드리프트, 옵션 IV 스마일, 리스크 요인 맵핑이 이 단계의 주요 파라미터다.
계산 계층은 역사적 백필, 모수형 폐형 계산, 몬테카를로·부트스트랩으로 VaR와 ES를 산출한다. 옵션은 Black-Scholes 폐형 해와 수치미분·AD, 시나리오·경로 시뮬레이션을 활용해 가격과 그릭스를 계산한다. 대량 계산에서는 병렬화와 배치 처리가 필요하다.
검증 단계에서는 Kupiec·Christoffersen 백테스트로 exceedance 비율과 군집성을 점검하고, PnL과 예측 결과의 일관성을 확인한다. 시나리오 분석, 리스크 예산과 한도 관리, 모형 위험 관리 문서화는 스트레스·민감도 관리에 속한다.
계산 결과를 리포트까지 전달하는 경로
시세·포지션·曲面(IV)·레퍼런스 데이터를 불러온 뒤 정합과 정규화를 수행한다. 이어서 μ, Σ, σ_IV를 추정하고 시뮬레이션 또는 폐형 계산으로 VaR·ES·그릭스·최적 가중치를 산출해 리포트로 전달한다.
결측치나 이상치는 대체 규칙을 적용하며, 임계치를 넘으면 경보 또는 중단으로 처리한다. 공분산 행렬의 병조건에는 리지나 축소(Shrinkage)를 적용할 수 있다. 최적화가 실패하면 초기해 변경, 제약 완화, 솔버 교체를 검토한다.
각 모형이 감수하는 계산과 추정의 차이
| 항목 | 성능(계산량) | 확장성(차원) | 일관성(이론) | 안정성(표본 민감도) | 운영 편의 |
|---|---|---|---|---|---|
| VaR | 역사적 분위수 O(N log N) 수준의 경량 | 중간(자산 수↑ 시 정렬·저장 비용 증가) | 비공리적 가능(서브애디티비티 위반) | 꼬리 표본 부족 시 변동성 큼 | 구현 용이, 이해도 높음 |
| ES | VaR+꼬리평균, 추가 비용 경미 | 중간 | 공리적(일관된 위험측도) | VaR 대비 안정적이나 꼬리 추정 노이즈 존재 | 규제 적합성 높음, 약간 복잡 |
| Black-Scholes | 폐형 해, 매우 고속 | 선형 확장(옵션 개수 비례) | 가정 의존 큼(상수 σ 등) | IV·드리프트 오차에 민감 | 운영 매우 용이 |
| Markowitz | Σ 역행렬 O(n^3) | 대규모 시 축소·저랭크 필요 | 추정오차에 취약 | Σ 병조건·추정 리스크에 민감 | 제약·거버넌스 설계 필요 |
일일 리스크 보고와 헤지, 자산배분에 적용하기
일일 리스크 보고와 자본 관리에서는 전일 종가와 포지션을 바탕으로 99% VaR와 97.5% ES를 산출하고 exceedance를 모니터링한다. 리스크 한도 트리거는 포지션 감축이나 헤지 실행으로 연결하며, 규제 자본 산출에도 연계할 수 있다.
옵션 마켓메이킹에서는 Black-Scholes 가격과 그릭스를 사용해 델타·감마 중립화를 수행하고, 금리와 IV 시나리오에 대한 감응도를 관리한다. ES 기반 꼬리 리스크 한도를 두고 스트레스 시나리오별 헤지 비용을 평가하는 방식도 사용한다.
자산배분과 펀드 운용에서는 Shrinkage Σ를 이용한 Markowitz 최적화에 섹터·국가·유동성 제약을 반영한다. 리스크 예산(Risk Parity/Target Vol)과 ES 기반 드로다운 제약을 병행할 수 있다.
VaR 백테스트의 초과빈도는 예를 들어 99% 기준 연간 ≤3회 수준을 목표로 둘 수 있다. ES 도입은 포트폴리오·규제 전제에 따라 자본 효율을 515% 개선할 수 있다. 최적화와 리밸런싱 자동화는 거래비용 대비 위험 단위당 수익(Information Ratio)을 1030bp 개선할 수 있다.
모델·데이터 거버넌스를 표준화하면 의사결정의 일관성과 리스크-프런트-백오피스 간 공용 언어를 확보할 수 있다. 스트레스·시나리오 기반의 회복탄력성과 모형 위험의 투명성도 함께 높아진다.
모형 선택에서 남는 운영상 제약
ES는 공리적이고 거시건전성에 친화적이지만, 꼬리 추정 난이도가 높아진다. VaR는 직관적이지만 분산 효과를 과소평가할 수 있다.
Black-Scholes는 폐형 해와 속도가 장점이다. 다만 변동성 표면과 금리 곡선의 적합이 필요하며, 구조적 왜도와 점프에는 로컬/스톡캐스틱 볼 같은 확장모형을 고려한다.
Markowitz를 운영에 적용할 때는 공분산 축소(Λ-shrinkage)와 섹터 상한·추적오차 같은 제약 설계가 필요하다. 거래비용과 안정화 목적의 턴오버 패널티를 포함해 과최적화를 방지한다.
Python으로 계산 흐름 확인하기
전제: Python 3.10+, numpy, scipy 설치.
import numpy as np
from scipy.stats import norm
np.random.seed(42)
# 1) 합성 수익률 생성
n_assets, T = 5, 250
A = np.random.randn(n_assets, n_assets)
Sigma = (A @ A.T) / n_assets + 0.01 * np.eye(n_assets) # 양정정부호 보정
mu = np.random.randn(n_assets) * 0.0005 # 일간 기대수익
rets = np.random.multivariate_normal(mu, Sigma, size=T)
# 2) 포트폴리오 가중치(동일가중)
w = np.ones(n_assets) / n_assets
pnl = rets @ w
loss = -pnl
# 3) 99% VaR/ES(역사적)
alpha = 0.99
var = np.quantile(loss, alpha)
es = loss[loss >= var].mean()
print(f"Historical 1d VaR(99%): {var:.4f}")
print(f"Historical 1d ES(99%): {es:.4f}")
# 4) Black-Scholes 콜 가격
def black_scholes_call(S, K, r, sigma, T):
if sigma <= 0 or T <= 0:
return max(S - K, 0.0) * np.exp(-r*T)
d1 = (np.log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
return S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)
S, K, r, sigma, TT = 100.0, 100.0, 0.03, 0.2, 0.5
call_px = black_scholes_call(S, K, r, sigma, TT)
print(f"Black-Scholes Call: {call_px:.4f}")
# 5) Markowitz 최소분산 포트폴리오(가중합=1)
ones = np.ones((n_assets, 1))
Sigma_inv = np.linalg.inv(Sigma)
w_minvar = (Sigma_inv @ ones) / (ones.T @ Sigma_inv @ ones)
w_minvar = w_minvar.flatten()
vol_minvar = np.sqrt(w_minvar @ Sigma @ w_minvar)
print(f"Min-Var weights: {np.round(w_minvar, 4)}")
print(f"Min-Var vol: {vol_minvar:.4f}")
공분산 추정에는 Ledoit-Wolf 등의 축소를 적용하고, 다기간 윈도와 시가중을 함께 사용할 수 있다. 백테스트에서는 롤링 창과 샘플 외 검증을 수행하며 초과빈도와 크기(ES shortfall)를 함께 점검한다. 최적화에는 거래비용, 턴오버 패널티, 최소 체결단위 같은 운영 제약을 포함한다.
VaR·ES는 꼬리 리스크를 관리하고, Black-Scholes는 가격과 그릭스를 계산하며, Markowitz는 자본 배분을 최적화한다. ES 중심 리스크 체계, IV 기반 옵션 엔진, 축소 공분산 기반 최적화는 단기 안정성과 규제 정합성을 함께 고려하는 선택지다. 파일럿 포트폴리오에서 시작해 범위를 확대하고, 백테스트·스트레스·모형위험 체계를 병행한다.