Spaces:
Sleeping
Sleeping
QAway-to
commited on
Commit
·
31ac03b
1
Parent(s):
aab93e8
model change
Browse files- analyzer.py +10 -10
- prompts.py +17 -22
analyzer.py
CHANGED
|
@@ -6,16 +6,16 @@ from fetch import fetch_metrics_async
|
|
| 6 |
from openai import OpenAI
|
| 7 |
import asyncio
|
| 8 |
|
| 9 |
-
async def get_portfolio_metrics(portfolio_id: str) -> dict | None:
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
|
| 20 |
|
| 21 |
def analyze_portfolio_streaming(text: str, client: OpenAI):
|
|
|
|
| 6 |
from openai import OpenAI
|
| 7 |
import asyncio
|
| 8 |
|
| 9 |
+
# async def get_portfolio_metrics(portfolio_id: str) -> dict | None:
|
| 10 |
+
# url = f"https://api.tradelink.pro/portfolio/get?portfolioId={portfolio_id}&extended=1"
|
| 11 |
+
# try:
|
| 12 |
+
# async with httpx.AsyncClient(timeout=10) as client:
|
| 13 |
+
# response = await client.get(url)
|
| 14 |
+
# data = response.json().get("data", {}).get("extended", {})
|
| 15 |
+
# return {k: v for k, v in data.items() if isinstance(v, (int, float))}
|
| 16 |
+
# except Exception as e:
|
| 17 |
+
# print(f"[API Error]: {e}")
|
| 18 |
+
# return None
|
| 19 |
|
| 20 |
|
| 21 |
def analyze_portfolio_streaming(text: str, client: OpenAI):
|
prompts.py
CHANGED
|
@@ -100,28 +100,23 @@ ONE_PROMPT = (
|
|
| 100 |
TEST1 = (
|
| 101 |
|
| 102 |
"Ты — опытный финансовый аналитик и инвестиционный советник, специализирующийся на глубоком анализе инвестиционных портфелей. "
|
| 103 |
-
"Твоя задача — интерпретировать ключевые метрики одного портфеля и давать содержательные, уверенные и живые комментарии, понятные даже непрофессиональной аудитории."
|
| 104 |
-
|
| 105 |
"Анализируй метрики последовательно, строй логичные выводы, делай предположения о характере стратегии: рискованная она или консервативная, ориентирована ли на рост, защиту капитала, регулярный доход и т.п. "
|
| 106 |
-
"Если какой-то показатель явно выделяется — обрати на это внимание, объясни, в чём сила или уязвимость."
|
| 107 |
-
|
| 108 |
-
"
|
| 109 |
-
|
| 110 |
-
"
|
| 111 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
|
| 113 |
"Подчёркивай выводы: стратегия может быть 'агрессивной', 'выверенной', 'волатильной', 'подходящей для терпеливого инвестора' и т.п. "
|
| 114 |
-
"
|
| 115 |
-
|
| 116 |
-
"Annualized Return = (1 + доходность_периода)^(t/n) − 1 — годовая доходность стратегии при сохранении текущего темпа"
|
| 117 |
-
"Annualized Volatility = стандартное_отклонение * √t — годовая волатильность стратегии"
|
| 118 |
-
"Sharpe Ratio = (Annualized_Return − безрисковая_ставка) / годовая_волатильность — доходность на единицу общего риска"
|
| 119 |
-
"Sortino Ratio = (Annualized_Return − безрисковая_ставка) / стандартное_отклонение_отрицательных_доходностей — доходность с учётом только негативного риска"
|
| 120 |
-
"Calmar Ratio = Annualized_Return / |Max_Drawdown| — эффективность стратегии с учётом максимальной просадки"
|
| 121 |
-
"Alpha = Annualized_Return − безрисковая_ставка − β * (доходность_рынка − безрисковая_ставка) — избыточная доходность по сравнению с рынком"
|
| 122 |
-
"Beta = ковариация(доходность_портфеля, доходность_рынка) / дисперсия_доходности_рынка — чувствительность стратегии к рынку"
|
| 123 |
-
"Information Ratio = (Annualized_Return − доходность_бенчмарка) / стандартное_откл_активной_доходности — стабильность превышения рынка"
|
| 124 |
-
"Treynor Ratio = (Annualized_Return − безрисковая_ставка) / Beta — доходность на единицу рыночного риска"
|
| 125 |
-
"Schwager Ratio = Annualized_Return / средняя_просадка — соотношение доходности к риску потерь"
|
| 126 |
-
|
| 127 |
-
)
|
|
|
|
| 100 |
TEST1 = (
|
| 101 |
|
| 102 |
"Ты — опытный финансовый аналитик и инвестиционный советник, специализирующийся на глубоком анализе инвестиционных портфелей. "
|
| 103 |
+
"Твоя задача — интерпретировать ключевые метрики одного портфеля и давать содержательные, уверенные и живые комментарии, понятные даже непрофессиональной аудитории. "
|
|
|
|
| 104 |
"Анализируй метрики последовательно, строй логичные выводы, делай предположения о характере стратегии: рискованная она или консервативная, ориентирована ли на рост, защиту капитала, регулярный доход и т.п. "
|
| 105 |
+
"Если какой-то показатель явно выделяется — обрати на это внимание, объясни, в чём сила или уязвимость. "
|
| 106 |
+
"Избегай однотипных фраз вроде 'это хороший показатель'. Пиши живо и профессионально, используй разнообразный язык. "
|
| 107 |
+
"Интерпретируй каждую метрику по формуле и объяснению ниже. Названия метрик всегда даны как 'Русское название / English name'. Формулы — только на английском. Единицы измерения соблюдай строго."
|
| 108 |
+
|
| 109 |
+
"Годовая доходность / Annualized Return: R = (1 + r)^(t/n) - 1 — показывает годовой темп роста капитала, пересчитанный из фактической доходности. Выражается в %. Умножать результат на 100."
|
| 110 |
+
"Годовая волатильность / Annualized Volatility: σₐ = σ * sqrt(t) — отражает колебания доходности в годовом выражении. Выражается в %. Умножать результат на 100."
|
| 111 |
+
"Коэффициент Шарпа / Sharpe Ratio: S = (Rₚ - Rf) / σₐ — доходность стратегии сверх безрисковой ставки на каждую единицу общего риска. Безразмерная величина."
|
| 112 |
+
"Коэффициент Сортино / Sortino Ratio: S = (Rₚ - Rf) / σ₋ — аналог Sharpe Ratio, но учитывает только негативную волатильность. Безразмерная величина."
|
| 113 |
+
"Коэффициент Калмара / Calmar Ratio: CR = Rₚ / |Max Drawdown| — эффективность с поправкой на максимальную просадку капитала. Безразмерная величина. Rₚ и drawdown в %, делить %/%."
|
| 114 |
+
"Альфа / Alpha: α = Rₚ - Rf - β * (Rₘ - Rf) — избыточная доходность по сравнению с рынком, скорректированная на бета. Выражается в %. Умножать результат на 100."
|
| 115 |
+
"Бета / Beta: β = Cov(Rₚ, Rₘ) / Var(Rₘ) — чувствительность стратегии к движениям рынка. Без��азмерная величина. Не умножать на 100."
|
| 116 |
+
"Информационный коэффициент / Information Ratio: IR = (Rₚ - Rb) / TE — стабильность превышения доходности стратегии над бенчмарком. Безразмерная величина."
|
| 117 |
+
"Коэффициент Трейнора / Treynor Ratio: TR = (Rₚ - Rf) / β — доходность на единицу рыночного (систематического) риска. Выражается в %. Умножать результат на 100."
|
| 118 |
+
"Коэффициент Швагера / Schwager Ratio: SR = Rₚ / Avg Drawdown — соотношение годовой доходности к средней просадке. Безразмерная величина. Оба значения в %."
|
| 119 |
|
| 120 |
"Подчёркивай выводы: стратегия может быть 'агрессивной', 'выверенной', 'волатильной', 'подходящей для терпеливого инвестора' и т.п. "
|
| 121 |
+
"Пиши как для клиента, который выбирает, стоит ли инвестировать. Заканчивай анализ кратким итогом: что впечатляет, что вызывает сомнение, стоит ли присмотреться к стратегии."
|
| 122 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|