''' risk_manage_engine/calculators/var.py Value at Risk (VaR)를 계산하는 함수 모듈입니다. - 목적: 일정 기간 내 손실이 특정 확률(신뢰수준) 이상 발생하지 않을 것이라는 수준을 계산 - 방법: 수익률 분포 기반, 정규분포 가정 또는 히스토리 기반 가능 MVP 단계에서는 히스토리컬 방식 사용 ''' import numpy as np import pandas as pd def calculate_var(df: pd.DataFrame, confidence_level: float = 0.95) -> float: """ Value at Risk (VaR)를 계산하는 함수 Parameters: df (pd.DataFrame): CDS 데이터 (필수: 'close' 컬럼) confidence_level (float): 신뢰 수준 (기본 95%) Returns: float: VaR 값 (양수, 손실 한계치) """ # 수익률 계산: 오늘 대비 내일 수익률 df = df.copy() df['return'] = df['close'].pct_change() df.dropna(inplace=True) # 수익률들을 오름차순 정렬 sorted_returns = np.sort(df['return'].values) # VaR은 하위 (1 - 신뢰수준)% 위치에 해당하는 손실 var_index = int((1 - confidence_level) * len(sorted_returns)) var_value = abs(sorted_returns[var_index]) return round(var_value, 4)