Spaces:
Sleeping
Sleeping
| from dataclasses import dataclass | |
| from datetime import datetime | |
| from typing import List, Dict, Optional | |
| import pandas as pd | |
| class EnhancedBacktestResult: | |
| # Performance metrics | |
| total_return: float | |
| sharpe_ratio: float | |
| max_drawdown: float | |
| win_rate: float | |
| # Time series data | |
| equity_curve: pd.Series | |
| positions: pd.DataFrame | |
| trades: pd.DataFrame | |
| # Additional metrics | |
| annual_return: Optional[float] = None | |
| volatility: Optional[float] = None | |
| sortino_ratio: Optional[float] = None | |
| calmar_ratio: Optional[float] = None | |
| # Risk metrics | |
| var_95: Optional[float] = None | |
| expected_shortfall: Optional[float] = None | |
| # Trading metrics | |
| total_trades: Optional[int] = None | |
| profitable_trades: Optional[int] = None | |
| avg_trade_duration: Optional[float] = None | |
| # Additional data | |
| metadata: Optional[Dict] = None | |
| def __post_init__(self): | |
| # Convert pandas objects if they're passed as dictionaries | |
| if isinstance(self.equity_curve, dict): | |
| self.equity_curve = pd.Series(self.equity_curve) | |
| if isinstance(self.positions, dict): | |
| self.positions = pd.DataFrame(self.positions) | |
| if isinstance(self.trades, dict): | |
| self.trades = pd.DataFrame(self.trades) |