39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
'''
|
|
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)
|