Как выкачать и приручить данные Polymarket
Если вы следили за последними выборами в США или просто интересуетесь криптой, то наверняка слышали про Polymarket. Это крупнейшая площадка для ставок на реальные события, где «коллективный разум» оценивает вероятности всего на свете — от курса биткоина до даты выхода новой GTA.
Но вот в чем загвоздка: интерфейс сайта хорош для ставок, но совершенно не подходит для серьезного анализа. Если вы захотите узнать, как менялась цена конкретного исхода поминутно или кто из крупных игроков (китов) сейчас заходит в позицию, вы упретесь в стену. API у них есть, но собирать из него цельную картину — то еще удовольствие.
Репозиторий poly_data решает именно эту проблему. Это готовый конвейер на Python, который забирает сырые данные из блокчейна и API, а на выходе отдает аккуратные CSV-таблицы с историей торгов.
Зачем это нужно аналитику
Обычно работа с данными предсказательных рынков превращается в кошмар из-за фрагментации. Часть данных лежит в обычном REST API, часть — в графах (subgraphs) на Polygon, а сопоставить ID токена с человеческим названием вопроса — отдельный квест.
Автор проекта собрал воедино три важных этапа:
- Сбор метаданных рынков (вопросы, варианты ответов, объемы).
- Скрапинг событий
OrderFilledчерез Goldsky (это быстрее и надежнее прямой работы с нодой). - Процессинг, который превращает «адрес А передал актив Б адресу В» в понятную запись: «Трейдер купил исход 'Да' по цене 0.65$».
Что внутри пайплайна
Проект написан с акцентом на скорость и простоту. Вместо тяжеловесных баз данных здесь используются CSV и библиотеки для быстрой обработки — Pandas и Polars.
Быстрый старт без ожидания
Первое, что бросается в глаза в README — ссылка на готовый дамп данных. Это огромный плюс. Если начинать сбор с нуля, скрипты будут молотить двое суток, чтобы выкачать историю. Автор предлагает просто скачать orderFilled_complete.csv.xz, закинуть в папку и начать работу.
Управление зависимостями через UV
Приятно видеть, что проект использует uv. Это современный менеджер пакетов на Rust, который работает в разы быстрее привычного pip. Установка выглядит максимально лаконично:
uv sync
uv run python update_all.py
Одной командой вы запускаете обновление всех данных: скрипт докачает новые рынки, соберет свежие сделки и обновит итоговый файл trades.csv.
Как устроена обработка данных
Самая ценная часть кода спрятана в process_live.py. Блокчейн-данные специфичны: там нет понятия «купил» или «продал» в привычном смысле, есть только обмен токенов. Скрипт автоматически определяет:
- Какой из токенов является USDC (стейблкоин), а какой — токеном исхода.
- В каком направлении шла сделка (Buy/Sell).
- Какова была реальная цена в долларах.
Интересная фишка: если в процессе обработки сделок скрипт натыкается на ID рынка, которого нет в базе, он не падает с ошибкой, а идет в API Polymarket, вытягивает инфу об этом рынке и сохраняет её в missing_markets.csv. Такая самозалечивающаяся система экономит кучу нервов.
Практический пример: следим за «умными деньгами»
В репозитории есть примеры того, как фильтровать сделки конкретных пользователей. Это полезно, если вы нашли успешного трейдера и хотите понимать его логику.
import polars as pl
# Загружаем обработанные сделки
df = pl.scan_csv("processed/trades.csv").collect(streaming=True)
# Фильтруем по адресу известного трейдера
trader_address = '0x9d84ce0306f8551e02efef1680475fc0f1dc1344'
trader_df = df.filter(pl.col("maker") == trader_address)
Кстати, автор делает важное замечание: в Polymarket на уровне смарт-контрактов события генерируются так, что адрес пользователя почти всегда оказывается в колонке maker, даже если он технически был «тейкером» (забирал ликвидность из стакана). Без этого знания можно долго гадать, почему ваши фильтры не работают.
Кому стоит заглянуть в этот репозиторий
Проект точно пригодится двум категориям людей:
- Дата-сайентистам и аналитикам, которые хотят построить модель предсказания цен или изучить поведение толпы на хайповых темах.
- Разработчикам торговых ботов. Даже если вы не собираетесь использовать Python для исполнения ордеров, этот инструмент идеален для бэктестинга стратегий на реальных исторических данных.
В коде нет лишнего пафоса и сложных абстракций. Это рабочий инструмент «от разработчика для разработчиков». Лицензия максимально свободная — автор разрешает делать с кодом что угодно.
Если вы давно хотели пощупать данные реального крипто-рынка, но не знали, с какого бока подступиться к блокчейну — poly_data станет отличной точкой входа. Просто скачайте дамп, запустите uv sync и начинайте копать. Кто знает, какие аномалии вы там найдете?
