okama-mcp: как подключить ИИ-ассистента к портфельному анализу

Сцена: аналитик открывает чат‑бота ChatGPT и спрашивает: «Какой ожидаемый доход у портфеля 60/40 за последний год?»
Факт: ИИ‑ассистент выдаёт цифры, но они не совпадают с реальными расчётами – в ответе «галлюцинированы» CAGR и IRR.
Последствие: решение, основанное на таких данных, может стоить компании миллионы рублей упущенной прибыли или неверных инвестиций.
Что проверить: можно ли заставить ИИ‑ассистента использовать проверенный расчётный движок вместо генерации текста?

Источник: Habr


Что реально даёт репозиторий okama‑mcp команде

okama‑mcp — это готовый сервер, написанный на Python ≥ 3.11, который «оборачивает» библиотеку okama (инструменты для бэктеста, Монте‑Карло‑симуляций и построения эффективной границы).
Сервер принимает запросы от любого LLM‑ассистента, проверяет их по JSON‑схемам и запускает нужный расчёт в okama. Результат (число, график PNG) возвращается обратно в чат, где ассистент может вставить его в ответ.

  • Бесплатный и открытый (MIT‑лицензия).
  • Stateless — каждый запрос содержит полную спецификацию портфеля, поэтому сервер не хранит состояние и легко масштабируется.
  • Кеширование — дорогие объекты (Portfolio, EfficientFrontier) хранятся по SHA‑256 хэшу, повторные запросы отдаются мгновенно.

Где это вписывается в рабочий процесс с ИИ

  1. Сбор требований – аналитик формулирует запрос на естественном языке (например, «построй гистограмму доходности по Монте‑Карло для портфеля 60/40»).
  2. MCP‑клиент – приложение (Claude Desktop, Claude Code, Cursor, Codex) запускает локальный процесс okama‑mcp и передаёт запрос через stdin/stdout (транспорт stdio) или через HTTP‑интерфейс (streamable‑http).
  3. Выполнение – сервер проверяет JSON‑схему, собирает объект Portfolio, запускает нужный инструмент (бэктест, MC‑симуляцию, построение границы) и формирует ответ с цифрами и PNG‑графиком.
  4. Ответ в чат – ассистент получает готовый результат и вставляет его в диалог, избавляя пользователя от «угаданных» цифр.

Таким образом, ИИ‑ассистент перестаёт быть генератором текста и становится оркестратором проверенных финансовых расчётов.

Как протестировать без превращения в игрушку

  1. Установить зависимости
    bash git clone https://github.com/okama-io/okama-mcp.git cd okama-mcp pip install -r requirements.txt
  2. Запустить сервер в режиме stdio
    bash python -m okama_mcp.server
  3. Сформировать простой запрос (пример JSON‑спеки для Монте‑Карло): json { "tool": "mc_simulation", "args": { "portfolio_spec": { "assets": [ {"ticker": "SPY", "weight": 0.6}, {"ticker": "AGG", "weight": 0.4} ], "start_date": "2022-01-01", "end_date": "2023-01-01" }, "iterations": 5000 } }
  4. Отправить запрос через клиент (например, Claude Desktop) и убедиться, что в ответе пришёл PNG‑файл с гистограммой и числовые метрики (IRR, средняя доходность).
  5. Проверить кеш – повторный запрос с теми же параметрами должен отработать почти мгновенно (лог в консоли покажет «cache hit»).

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

Какие риски стоит проверить перед внедрением

Риск Что проверить Как проверить
Отсутствие сессии (stateless) Каждый запрос действительно содержит полную спецификацию портфеля. Сгенерировать запрос без указания даты/активов и убедиться, что сервер отклонит его с понятным сообщением.
Совместимость клиентского LLM MCP‑клиент работает только с локальными приложениями, а не с веб‑версией ChatGPT/Gemini. Попробовать вызвать сервер из браузерного чат‑бота – должно не работать; использовать только Claude Desktop/Code или аналогичный клиент.
Требования к окружению Python ≥ 3.11, наличие зависимостей (pydantic, fastapi, etc.). Запустить python --version и pip check.
Стоимость вычислений Монте‑Карло‑симуляции могут быть ресурсоёмкими. Оценить время выполнения при 5000‑10000 итераций; при необходимости ограничить итерации или использовать более мощный сервер.
Лицензия и поддержка MIT‑лицензия открыта, но проект поддерживается небольшим сообществом. Проверить активность репозитория (issues, pull‑requests) и наличие контактов для вопросов.

Какое решение можно принять уже на этой неделе

  1. Определить цель – нужен ли вам точный расчёт доходности в реальном времени или достаточно периодических отчётов.
  2. Запустить пробный сервер на тестовой машине (можно ноутбук) и выполнить один‑два запроса из списка выше.
  3. Сравнить результаты с тем, что выдаёт ваш текущий ИИ‑ассистент без MCP. Если разница существенна, планируйте интеграцию в продакшн.
  4. Согласовать с ИТ – убедитесь, что у вас есть Python ≥ 3.11 и возможность запускать фоновые процессы.
  5. Подготовить чек‑лист (см. ниже) и пройти его совместно с командой разработки и аналитики.

Практический чек‑лист для недели

  • [ ] Установлен Python ≥ 3.11 и все зависимости из requirements.txt.
  • [ ] Запущен okama‑mcp в режиме stdio и успешно принимает запросы от локального клиента.
  • [ ] Сформирован и отправлен запрос с полной спецификацией портфеля; получен PNG‑график и числовые метрики.
  • [ ] Повторный запрос с теми же параметрами отрабатывает быстрее (кеш‑хит).
  • [ ] Проверена несовместимость с веб‑версией ChatGPT/Gemini – сервер отклоняет такие запросы.
  • [ ] Оценена нагрузка (время выполнения 5000 итераций) и согласована с бюджетом вычислительных ресурсов.

Если все пункты отмечены, можно планировать масштабирование сервера (например, развернуть streamable‑http на собственном хосте) и подключать к нему остальные LLM‑ассистенты в компании.

Источники

Темы журнала

Что почитать дальше