Разбираем, как собрать и запустить торгового ИИ-бота для Polymarket — рынка предсказаний, где цена контракта отражает вероятность события. За основу берём открытый проект polytutor-ai/polymarket-ai-trading-bot: решения в нём принимает связка ML-ансамбля (несколько моделей, чьи предсказания объединяют в одно) и LLM от OpenAI, а отдельный модуль копирует сделки из лидерборда. Это серверная сборка из Rust-сервисов, журнала учёта (ledger) в Postgres и Python-компонента, поэтому гайд рассчитан на ПК или сервер, а не на телефон.


1. Клонируйте репозиторий к себе.
Пример:
git clone https://github.com/polytutor-ai/polymarket-ai-trading-bot.git
cd polymarket-ai-trading-bot
ls
Ожидаемый результат: команда `ls` печатает список файлов и папок проекта — README и каталоги компонентов. Почему это работает: `git clone` скачивает всё содержимое репозитория в локальную папку.
2. Прочитайте README и выпишите три вещи: команды запуска Rust-сервисов, параметры подключения к Postgres и способ запуска Python-компонента. Ожидаемый результат: у вас на листе появляется короткая шпаргалка по запуску. Отдельно учтите: описание репозитория в анонсе обрывается на «a Python mo…», поэтому единственный надёжный источник деталей — сам README, а не пересказы.
3. Составьте карту модулей, чтобы понимать, что именно вы запускаете.
| Модуль | Что делает | Технология |
|---|---|---|
| Принятие решений | выбирает, куда входить в сделку | ML-ансамбль + LLM OpenAI |
| Копи-трейдинг | повторяет сделки из лидерборда | отдельный модуль проекта |
| Ledger | хранит журнал учёта сделок | Postgres |
| Основные сервисы | рабочая логика бота | Rust |
| Python-компонент | часть проекта, описан в репозитории | Python |
Ожидаемый результат: вы видите, что бот — это не один файл, а набор компонентов, и дальше запускаете их осознанно.
4. Поднимите Postgres под ledger. Создайте отдельную базу, чтобы журнал сделок не смешивался с другими данными.
Пример:
createdb polymarket_ledger
psql -d polymarket_ledger -c "\dt"
Ожидаемый результат: база создана, список таблиц пустой — таблицы появятся после первого запуска бота. Почему так: ledger — это журнал, и ему нужно место для хранения; в проекте эта роль отведена Postgres.
5. Задайте ключ OpenAI в переменных окружения того терминала, где будете запускать сервисы. Имена переменных сверьте с README — ниже шаблон, а не догма.
Пример:
export OPENAI_API_KEY="sk-..."
export DATABASE_URL="postgres://bot:secret@localhost:5432/polymarket_ledger"
echo $OPENAI_API_KEY
Ожидаемый результат: `echo` печатает ключ без ошибок. Почему это важно: LLM от OpenAI принимает решения, и без ключа эта часть схемы просто не ответит.
6. Соберите Rust-сервисы. Если в README указан `cargo`, команда выглядит так:
cargo build --release
Ожидаемый результат: в конце вывода появляется строка `Finished`. Почему это работает: Rust компилирует код заранее, поэтому готовый бинарник потом стартует быстрее.
7. Запустите сервисы: Rust-часть в одном окне терминала, Python-компонент — во втором. Ожидаемый результат: в логах видны строки подключения к Postgres и обращения к OpenAI. Если логов нет — сверьтесь с README: возможно, нужен другой порядок запуска.
8. Включите модуль копи-трейдинга. Он повторяет сделки трейдеров из лидерборда — списка лучших участников платформы. Ожидаемый результат: в ledger начинают появляться записи, повторяющие чужие сделки. Почему так: копи-трейдинг не строит прогноз сам, он копирует действия выбранных трейдеров, поэтому без их активности копировать нечего.
9. Проверьте, что ledger наполняется. Имя таблицы уточните в README, затем посчитайте записи.
Пример:
psql -d polymarket_ledger -c "select count(*) from trades;"
Ожидаемый результат: число записей растёт по мере работы бота. Это ваш главный индикатор, что связка «сервисы → Postgres» собрана верно.
Чек-лист перед первым рабочим запуском:

1. **Симптом:** при сборке выводится «cargo: command not found». Это значит, что тулчейн Rust не установлен. Решение: поставьте Rust, перезапустите терминал и повторите шаг 6. Проверка: команда `cargo --version` печатает номер версии, а не ошибку.
2. **Симптом:** сервисы падают с ошибкой подключения к БД вида «connection refused» на порту 5432. Решение: проверьте по порядку — запущен ли Postgres, создана ли база из шага 4, совпадает ли `DATABASE_URL` с реальными логином, паролем, хостом и портом. После правок перезапустите сервисы, потому что переменные читаются только при старте.
3. **Симптом:** копи-трейдинг включён, но сделки в ledger не появляются. Решение: проверьте, что источник — лидерборд Polymarket и что выбранные трейдеры действительно совершают сделки. Если у источника нет новых сделок, копировать нечего, и пустой журнал — не поломка.
Что такое ML-ансамбль и зачем он в боте?
Это несколько моделей, чьи предсказания объединяют в одно решение: так бот меньше зависит от ошибки одной модели. В polytutor-ai/polymarket-ai-trading-bot ансамбль работает в связке с LLM от OpenAI.
Нужен ли ключ OpenAI?
Да, LLM от OpenAI — часть схемы принятия решений. Если внешняя зависимость не подходит, посмотрите гайд про локальную модель — там разбирается другой сценарий, но логика «модель локально» объяснена поня