QAway-to commited on
Commit
31ac03b
·
1 Parent(s): aab93e8

model change

Browse files
Files changed (2) hide show
  1. analyzer.py +10 -10
  2. 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
- 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):
 
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
+ )