import re import requests #Извлечение UUID из строки def extract_portfolio_id(text: str) -> str | None: match = re.search( r"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", text ) return match.group(0) if match else None def fetch_metrics(portfolio_id: str) -> dict | None: try: url = f"https://api.tradelink.pro/portfolio/get?portfolioId={portfolio_id}&extended=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