Как перестать писать парсеры для каждого рынка предсказаний и начать торговать

11 Jul, 2026
1,974
🔱 236
👥 13

Если вы когда-нибудь пытались собрать данные с Polymarket или Kalshi, то знаете, что это то еще удовольствие. У каждой площадки свои эндпоинты, разные структуры ответов и совершенно непохожие способы авторизации. Пока настраиваешь получение цены для одного события, на другом рынке уже всё изменилось.

Недавно я наткнулся на проект pmxt (Prediction Market eXchange Tool), который пытается решить эту проблему так же, как в своё время это сделал знаменитый CCXT для криптобирж. Идея простая: дать разработчикам единый интерфейс для работы с десятком разных площадок.

Что под капотом

Проект написан на TypeScript, но поставляется сразу в двух вариантах: как npm-пакет pmxtjs и как Python-библиотека pmxt. Это огромный плюс, потому что аналитики любят Python за его библиотеки для обработки данных, а бэкенд-разработчики часто выбирают Node.js для написания торговых ботов.

plot

Основная фишка здесь в унификации. Библиотека поддерживает Polymarket, Kalshi, Limitless и еще несколько площадок поменьше. Вместо того чтобы изучать документацию каждой биржи, вы используете общие методы вроде fetch_events или create_order.

Абстракции, которые упрощают жизнь

Авторы pmxt ввели логичную иерархию, которая помогает не запутаться в структуре рынков:

  • Event: Общая тема. Например, выборы или назначение главы центробанка.
  • Market: Конкретный вопрос внутри темы, на который можно поставить деньги.
  • Outcome: Исход события — те самые «Да» или «Нет», которые мы покупаем.

Вот как это выглядит в коде на Python:

import pmxt

api = pmxt.Exchange()

# Ищем событие по ключевым словам
events = api.fetch_events(query='Who will Trump nominate as Fed Chair?')
fed_event = events[0]

# Находим нужный маркет внутри события
warsh = fed_event.markets.match('Kevin Warsh')

print(f"Текущая цена: {warsh.yes.price}")

В TypeScript всё практически идентично, что удобно, если вы работаете в мультизадачной команде.

Переход от чтения к торговле

Самое интересное начинается, когда дело доходит до исполнения ордеров. Библиотека берет на себя всю грязную работу по подписанию транзакций и работе с ключами.

Для каждой биржи настройки свои, но логика API остается неизменной. Например, для Polymarket нужно пробросить приватный ключ и адрес прокси-контракта, а для Kalshi — API-ключ и RSA-ключ.

Пример создания ордера:

exchange = pmxt.Polymarket(
    private_key=os.getenv('POLYMARKET_PRIVATE_KEY'),
    proxy_address=os.getenv('POLYMARKET_PROXY_ADDRESS')
)

# Проверяем баланс перед сделкой
balance = exchange.fetch_balance()
print(f"Доступно: {balance[0].available}")

# Покупаем исход по лимитной цене
order = exchange.create_order(
    outcome=markets[0].yes,
    side='buy',
    type='limit',
    price=0.33,
    amount=100
)

Стоит ли переходить с Dome API

Если вы уже используете Dome API для Polymarket, разработчики pmxt подготовили скрипт для миграции. Команда npx dome-to-pmxt ./src должна автоматически переписать ваш код под новый интерфейс. Это смелый шаг — ребята явно метят в стандарт индустрии.

Кстати, в репозитории есть папки с примерами для обоих языков. Там можно подсмотреть, как работать с вебсокетами (если нужно получать котировки в реальном времени) или как строить более сложные стратегии арбитража между площадками.

Кому это пригодится

Я вижу два основных сценария использования. Первый — это арбитраж. Разница в ценах на одно и то же событие между Polymarket и Kalshi возникает постоянно, и иметь под рукой инструмент, который понимает оба API «из коробки», — большое преимущество.

Второй сценарий — создание агрегаторов данных или дашбордов. Вместо того чтобы поддерживать пять разных коннекторов, вы просто подключаете pmxt и фокусируетесь на UI или аналитике.

В проекте сейчас около тысячи звезд, что для такой узкой ниши вполне прилично. Документация на сайте pmxt.dev выглядит опрятно, хотя некоторые разделы еще в процессе наполнения. Если вы планируете заходить в тему рынков предсказаний со своим кодом, этот инструмент точно сэкономит вам пару недель жизни.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.