Snowball logo
logo

ИИшенка №1. Качественные источники данных

Некий Юджин
Некий Юджин
4 дня назад
11
ИИшенка №1. Качественные источники данных

Дисклеймер

Материал данной статьи - околотехнический, сильно-LLMный, и предназначен для тех, кто учится/пытается/пользуется большими языковыми моделями в рамках своих исследований мира инвестиций. Также, данный материал - далеко не последний, просто источников прикладывания рычага для переворота мира много, а я - один.


Ни для кого не секрет, что фундаментальные исследования финансовых инструментов - дело объёмное, сложное, и очень часто неблагодарное. Формирование модели ожидаемого результата, формирование исходного датасета, адаптация к машиночитаемым данным, кодирование математических инструментов - весь пайплайн одного исследования в реализации может занимать в лучшем случае неделю, в худшем - несколько месяцев, с постоянными доработками/дописываниями/актуализацией данных (ведь рыночек-то на месте не стоит). Очевидным становится желание срезать пару-тройку углов, и помимо первой мысли - “ведь я не первый - кто-то уже такое делал, надо просто найти и использовать готовое”, - спустя некоторое время поисков и разочарования, на ум приходит вторая - “ваапщета я могу использовать LLM, которая в режиме thinking вообще всё за меня сделает. Ведь так? Так?…“

К сожалению, нет

Несколько месяцев плотной работы с LLM, оптимизации пайплайна, промптинга на уровне “Prompt God” (у меня буквально появился агент с персоной “Архитектор агентов”) не дали сколь-нибудь вменяемых результатов. Почему так? Ну, начнем с того, что модели крайне неохотно впитывают новую информацию. Точнее, они ее вообще не впитывают - без дообучения, модель будет апеллировать к своим “релевантным” знаниям 2023 года, и будет делать это с гордостью.

Какие еще есть варианты? Ну, есть RAG, но для этого у вас уже должен быть сформирован датасет в каком-то формате - желательно в JSON или хотя бы CSV. Угол не срезан, работа не пропала - она просто трансформировалась. Не вариант.

Есть относительно свежий вариант рантайм-обогащения модели данными - Model Context Protocol. Вот это уже “ближе к телу”, так как позволяет в “прямом эфире” получать релевантные данные, заплатив за релевантность и доступность местом в контекстном окне. И как раз тут кроется “мякотка” - современные LLM уже достаточно развиты для поддержания контекстных окон на уровне 200 т.т. - 2 млн.т. (тысяч токенов, миллионов токенов). Именно поэтому, с некоторыми оговорками и разбиением пайплайна исследования на 5-6 раздельных контекстных сессий, мы можем рассчитывать на качественный результат.

Это далеко не все проблемы,

но в этой статье мы разберемся исключительно с проблемой датасета и релевантности - остальное я оставлю на попозже, оценив пользу и заинтересованность контента для целевой аудитории SI.

Штош, вернёмся к нашим баранам. Теперь скучная описательная часть, что же я такого наделал за последние пару ночей, как это работает, и какие у этого всего юз-кейсы.


Что такое MCP, если коротко

  • MCP — это «протокол инструментов» для моделей. Сервер объявляет набор инструментов (методов) со схемами входа/выхода; клиент (IDE/ассистент) вызывает их по запросу пользователя.

  • Преимущество: единая интеграция и прозрачное подключение к разным источникам (биржи, базы данных, ML‑сервисы), минимизируя «клей» и риск галлюцинаций.

  • Практика: вы подключаете MCP‑серверы, выбираете любую модель (OpenAI, Anthropic и т. п.) — и получаете одинаково доступные инструменты в рабочем контексте.

Два сервера: MOEX и FinanceMarker (не реклама, с них я просто начал)

  • MOEX MCP: рыночные данные Московской биржи — справочники, котировки, стакан, история, свечи, индексный состав и пр.

  • FinanceMarker MCP: метрики, отчётность, дивиденды, календари, идеи, инсайдерские сделки и т. п. по широкому перечню компаний.

Оба сервера публикуются как npm‑пакеты: их удобно запускать через npx и подключать в совместимые клиенты.

Подключение в Cursor (рекомендуется)

Добавьте конфигурацию в .cursor/mcp.json и перезапустите Cursor:

{
  "mcpServers": {
    "moex-mcp": {
      "command": "npx",
      "args": ["-y", "--package=@ru-financial-tools/moex-mcp", "moex-mcp"],
      "env": {
        "LOG_LEVEL": "info",
        "MOEX_ISS_BASE_URL": "https://iss.moex.com/iss"
      }
    },
    "financemarker-mcp": {
      "command": "npx",
      "args": ["-y", "--package=@ru-financial-tools/financemarker-mcp", "financemarker-mcp"],
      "env": {
        "FINANCEMARKER_API_TOKEN": "<ваш_токен>",
        "FINANCEMARKER_BASE_URL": "https://financemarker.ru/api",
        "FINANCEMARKER_LOG_LEVEL": "info",
        "FINANCEMARKER_CACHE_TTL_MS": "86400000"
      }
    }
  }
}
  • В Cursor выбирайте любую модель (в т. ч. OpenAI) — инструменты MCP будут доступны в панели инструментов/экшенов.

  • Обратите внимание на ключ FinanceMarker и базовые переменные окружения.

Использование с ChatGPT (вне Cursor)

Ниже — практичные варианты, как задействовать MCP‑серверы с ChatGPT без Cursor:

  • ChatGPT Desktop / Agents (официальная поддержка MCP)

    • В десктоп‑приложении доступен интерфейс подключения MCP/коннекторов. Добавьте локальные серверы как команды npx:

      • npx -y --package=@ru-financial-tools/moex-mcp moex-mcp

      • npx -y --package=@ru-financial-tools/financemarker-mcp financemarker-mcp

    • Затем укажите переменные окружения (для FinanceMarker — токен/API URL), сохраните профиль и используйте инструменты прямо в чатах.

    • Подробности и контекст: см. обзор о поддержке MCP в ChatGPT Agents и UI‑подключении коннекторов (статья‑обзор).

  • ChatGPT (Teams/Enterprise): Deep Research connectors (beta)

    • В рабочих пространствах админы могут добавлять кастомные коннекторы на базе MCP для Deep Research: регистрируете удалённый MCP‑сервер и включаете его в политике рабочего места.

    • Источник: объявление и обсуждение коннекторов MCP для Deep Research в сообществе (форум OpenAI).

  • Веб‑ChatGPT (личные аккаунты)

    • Полноценное пользовательское добавление произвольных MCP‑серверов в веб‑UI может отсутствовать. В таком случае используйте Desktop/Agents или рабочие пространства (Teams/Enterprise) с Deep Research connectors.

    • Существуют коммьюнити‑подходы и open‑source мосты/прокси, позволяющие «сшивать» MCP и ChatGPT в конкретных сценариях, но они неофициальные и требуют самостоятельной поддержки (обсуждение сообщества).

Рекомендации:

  • Для аналитики фиксируйте temperature низко (0.0–0.2), просите модель явно вызывать инструменты и указывайте ограничения «без интернета».

  • Для FinanceMarker задавайте токен в окружении; для MOEX при необходимости меняйте базовый URL.


Примеры промптов и результатов

Ниже — выдержки из реального запроса к инструментам без обращения в интернет‑поиск (данные получены напрямую из MOEX и FinanceMarker). Мы собрали подробную сводку по тикеру T (Мосбиржа) и сохранили в test.md.

Пример промпта

Собери максимально полную информацию о тикере T для принятия инвест‑решений, без интернета. Используй MCP инструменты MOEX и FinanceMarker. Temperature 0.1.

Фрагменты результата

  • Идентификация (MOEX iss_reference):

    • Тикер: T, борд: TQBR, тип: обыкновенные акции

    • ISIN: RU000A107UL4, номинал: 3.639384 SUR

    • Уровень листинга: 1, размер выпуска: 268 274 786 шт.

  • Рыночный срез (MOEX marketdata):

    • LAST: 3329, OPEN: 3310, LOW/HIGH: 3302/3368

    • VOL, VAL, количество сделок и др. — для оценки ликвидности и волатильности

  • История/свечи (MOEX history, candles):

    • Интервальные свечи (1h/10m/1m) и ежедневная история — для расчёта доходностей/волатильности

  • Дивиденды и метрики (FinanceMarker stock_details include=ratios,reports,dividends):

    • Дата/размер выплат, ключевые коэффициенты, ссылки на отчётность


Практические кейсы

  • Фундаментальный анализ (FA):

    • Сверка отчётности, дивидендная история, мультипликаторы (P/E, EV/EBITDA), динамика выручки/прибыли.

  • Оценка альфы/беты:

    • Получаем временной ряд доходностей бумаги и индекса (например, IMOEX), считаем ковариации/регрессии — получаем β, а α — как константу.

  • Портфельная теория Марковица:

    • Берём набор бумаг (через MOEX + FinanceMarker), строим ковариационную матрицу доходностей и решаем оптимизацию (min variance / max Sharpe) вне MCP, используя данные из MCP.

  • Риск‑менеджмент и ликвидность:

    • По стакану и оборотам оцениваем проскальзывание, доступную ликвидность и глубину рынка.

  • Сканер/фильтры:

    • Через справочники/поиск бумаг и рыночные срезы — отбираем эмитентов по ликвидности, секторам, дивполитике, мультипликаторам.

  • Event‑driven:

    • Сопоставляем корпоративные события (дивиденды/отчётность) и недавнюю динамику — ищем аномалии реакций рынка.

Лучшие практики

  • Фиксируйте temperature на низком уровне (0.0–0.2) для аналитики данных — это снижает «творчество» и риск галлюцинаций.

  • Требуйте явного обращения к MCP‑инструментам («используй MOEX/FinanceMarker, не ходи в интернет»).

  • Логируйте источники: в ответ включайте ссылку на инструмент/эндпоинт (например, iss_reference security, stock_details ratios).

  • Контролируйте лимиты и кэш: MCP‑серверы поддерживают кэширование, снижая нагрузку на источники и ускоряя отклик.

Заключение

MCP даёт простой способ подключить «надежные» источники данных в ваш рабочий процесс. Для российского рынка связка MOEX + FinanceMarker закрывает подавляющее большинство задач инвест‑аналитики — от голых котировок до отчётности, дивидендов и мультипликаторов. Дальше — дело техники: посчитать, сравнить, визуализировать и принять решение. Ну и для “дальше” я пожарю вам ещё ИИшенки, если эта понравилась.


Читайте также