Spaces:
Sleeping
Sleeping
File size: 1,315 Bytes
fe31096 375614c e63adc7 934f13b e63adc7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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
|