Spaces:
Running
Running
| def fetch_metrics(portfolio_id: str) -> dict | None: | |
| try: | |
| url = f"https://api.tradelink.pro/portfolio/get?portfolioId={portfolio_id}&extended=1&declaration=1&step=day&lang=en&incViews=1" | |
| response = requests.get(url) | |
| response.raise_for_status() | |
| extended = response.json().get("data", {}).get("extended", {}) | |
| keys = [ | |
| # 🔹 Доходность и риск | |
| "alphaRatio", "betaRatio", "cagr", "sharpe", "sortino", "volatility", | |
| "kSortino", "kCalmar", "kSharpe", | |
| # 🔹 Просадки | |
| "maxDD", "mddDuration", "maxBalance", | |
| # 🔹 Поведение стратегии | |
| "losingDays", "winningDays", "selfProfitRate", | |
| # 🔹 Актуальные показатели доходности | |
| "lastWeekNetProfit", "lastMonthNetProfit", "lastQuarterGrowth", "lastYearNetGrowth" | |
| ] | |
| return {k: extended[k] for k in keys if isinstance(extended.get(k), (int, float))} | |
| except: | |
| return None | |