Deepvest/ProfilingAI
0
1# src/core/risk_manager.py2 3import pandas as pd4from typing import Dict, List, Optional5import numpy as np6 7class RiskManager:8 def __init__(self, risk_tolerance: float, max_drawdown: float):9 self.risk_tolerance = risk_tolerance10 self.max_drawdown = max_drawdown11 self.position_limits = {}12 self.var_limits = {}13 14 def calculate_position_size(self, asset: str, volatility: float) -> float:15 max_position = self.risk_tolerance / volatility16 return min(max_position, self.position_limits.get(asset, 0.2))17 18 def check_risk_limits(self, portfolio: pd.DataFrame) -> bool:19 current_drawdown = self.calculate_drawdown(portfolio)20 return current_drawdown <= self.max_drawdown21 22 def calculate_drawdown(self, portfolio: pd.DataFrame) -> float:23 """Calcule le drawdown actuel du portefeuille"""24 cumulative_returns = (1 + portfolio.pct_change()).cumprod()25 rolling_max = cumulative_returns.expanding().max()26 drawdowns = (cumulative_returns - rolling_max) / rolling_max27 return drawdowns.min()