Как выбрать API данных Polymarket
Каждый поставщик рекламирует большое число. Почти никто не рекламирует то число, которое действительно важно. Вот что нужно проверить, прежде чем на что-то решиться, включая случаи, когда платный поставщик вам вообще не нужен.
Если вы ищете исторические данные Polymarket, то уже упёрлись в стену, которая приводит сюда всех: собственный API Polymarket отдаёт только текущее состояние. Запросите стакан разрешившегося рынка — и получите 404; история цен, которую он хранит, — это примерно одна точка в минуту, без какой-либо информации о глубине. Ни то ни другое не спрятано за платным тарифом. Стакана просто нет.
Значит, вам нужен поставщик, который записывал стакан, пока рынки работали. Проблема в том, что все поставщики в этой нише рекламируют одну и ту же главную цифру, и она едва ли не наименее информативна из всех. Вот что стоит проверять вместо неё.
Мы делаем один из таких сервисов
PolyTest — это API данных Polymarket, так что мы не нейтральная сторона. Ниже — чек-лист, которым мы пользовались бы, если бы покупали, а не продавали, включая раздел о том, когда не стоит платить никому, в том числе нам. Проводите проверки, а не верьте чьему-либо маркетингу — и нашему в том числе.
1. Снимки на рынок в минуту, а не общее число снимков
Общее число снимков — главная цифра везде, и она почти ничего не значит. Итог — это просто частота записи × число отслеживаемых рынков × время сбора. У поставщика с большим числом может быть лучшее разрешение — а может, он просто дольше собирает данные или считает избыточные строки на рынках, которыми никто не торгует.
На самом деле вам нужно знать вот что: сколько снимков в минуту я получаю на конкретном рынке, который меня интересует? 5-минутный рынок, который снимается дважды в минуту, даёт десять точек данных на моделирование всего жизненного цикла рынка. Этого недостаточно, чтобы что-то протестировать.
# Pull the same market from each provider, then compare density.
snaps = fetch_snapshots(market_id) # provider-specific call
span_s = (snaps[-1]["timestamp"] - snaps[0]["timestamp"]) / 1000
per_min = len(snaps) / (span_s / 60)
print(f"{len(snaps)} snapshots over {span_s:.0f}s = {per_min:.1f}/min")
# Gaps matter more than the average. One 90-second hole in a 5-minute
# market means you cannot model the part where it was decided.
gaps = [
(b["timestamp"] - a["timestamp"]) / 1000
for a, b in zip(snaps, snaps[1:])
]
print(f"max gap: {max(gaps):.1f}s median: {sorted(gaps)[len(gaps)//2]:.1f}s")Проверяйте максимальный пропуск, а не средний
Средние значения скрывают сценарий отказа. Поток, в котором в среднем 4 снимка в минуту, но есть 90-секундная дыра в последней минуте 5-минутного рынка, бесполезен именно в тот период, который вам важен. Спросите любого поставщика о максимальном пропуске на примере рынка — если он не может ответить, это уже о чём-то говорит.
2. Реальная глубина стакана или только лучшие цены?
Это самый важный фактор, определяющий, значит ли ваш бэктест хоть что-то, и именно здесь маркетинговые формулировки становятся самыми скользкими. «Данные стакана» могут означать что угодно — от полной лестницы до одной пары бид/аск.
| Что вы получаете | Что вы можете протестировать |
|---|---|
| Только средняя цена | Почти ничего. Средняя цена — не та цена, по которой можно торговать. |
| Лучший бид / лучший аск | Съедает ли спред ваше преимущество — необходимо, но недостаточно. |
| Полная лестница глубины | Реальные цены исполнения для заданного объёма, включая проскальзывание. |
Если вы собираетесь торговать хоть сколько-нибудь заметным объёмом, вам нужна лестница. Ордер на 500 акций на тонком рынке Up/Down не исполняется на верхнем уровне — он проходит по стакану, и разница между верхним уровнем и вашей истинной средней ценой исполнения часто больше, чем преимущество, которое вы тестируете.
def simulate_fill(levels, qty):
"""Walk the ladder. This is what actually happens to your order."""
filled = cost = 0.0
for lvl in levels:
take = min(lvl["size"], qty - filled)
cost += take * lvl["price"]
filled += take
if filled >= qty:
break
if filled < qty:
return None # Not enough liquidity to fill at all.
return cost / filled
book = snapshot["orderbook"]["asks"]
print("top of book:", book[0]["price"])
print("true fill :", simulate_fill(book, 500))
# A gap of 2-3c here on a $1 binary is routine, and it is
# larger than most claimed edges.3. Действительно ли сохраняются разрешившиеся рынки?
Вся причина платить за эти данные в том, что Polymarket их удаляет. Поэтому убедитесь, что поставщик действительно их хранит, а не проксирует живые эндпоинты с кешем.
Проверка занимает минуту: найдите рынок, который разрешился несколько недель назад, запросите его снимки и убедитесь, что получаете полную траекторию цены с глубиной, а не просто запись метаданных о том, какая сторона выиграла. Знание исхода — это не данные; любая стратегия, которую стоит тестировать, касается пути, а не ответа.
Метаданные — это не история
Некоторые источники охотно вернут вопрос, объём и выигравший исход разрешившегося рынка, потому что это сохраняется в публичных потоках. Это данные о базовых частотах. Они не скажут, по какой цене исполнился бы ваш ордер, а любое смещение в базовых частотах маркетмейкеры закладывают в цену ещё до того, как вы его увидите.
4. Окно истории против глубины истории
Поставщики продают историю в двух разных формах, и это различие важнее, чем просто количество дней:
- Скользящее окно — последние N дней, более старые данные выпадают. Подходит для настройки под текущие рыночные условия.
- Постоянный архив — всё с начала сбора. Необходим, если вы хотите тестировать в разных режимах волатильности.
Что вам нужно, честно зависит от вашей стратегии. Если вы торгуете 5-минутными рынками и перенастраиваетесь еженедельно, 30 дней вполне достаточно, и платить за большее — пустая трата. Если хотите знать, пережило ли ваше преимущество условия прошлого года, скользящее окно не ответит на это ни за какие деньги.
Остерегайтесь тестирования в одном режиме
Самый частый способ, которым бэктест обманывает, — когда он целиком проходит в одном рыночном режиме. Стратегия, настроенная на 30 спокойных днях, выглядит надёжной, пока не придёт волатильность. Если окно у вас короткое, как минимум разделите его пополам и проверьте, что результат держится в обеих половинах.
5. Пропускная способность, которой можно реально пользоваться
Лимиты запросов кажутся мелочью, пока вы не запустите первый настоящий бэктест. Загрузить каждый снимок за месяц 5-минутных рынков по трём монетам — это много запросов, и лимит в 10 запросов в секунду превращает послеобеденное исследование в работу на всю ночь.
Важны два числа, а поставщики часто публикуют только одно: устойчивая пропускная способность (запросов в минуту) и ёмкость всплеска (запросов в секунду). Высокий поминутный лимит при низком лимите всплеска всё равно тормозит параллельную загрузку.
| Тариф | Запросов / мин | Всплеск / с | История |
|---|---|---|---|
| PolyTest Free | 30 | 2 | Свежие рынки |
| PolyTest Builder | 250 | 12 | 14 дней |
| PolyTest Pro | 750 | 40 | Весь архив |
| PolyTest Enterprise | Индивидуально | Индивидуально | Весь архив + массовая выгрузка |
Если вы регулярно загружаете большие объёмы истории, спросите также, есть ли возможность массовой выгрузки. Пролистать миллион снимков через REST-эндпоинт можно, но это не тот инструмент.
6. Можно ли оценить данные до оплаты?
По маркетинговой странице качество данных не оценить. Любой поставщик, уверенный в своих данных, даст вам посмотреть на них до оплаты — через бесплатный тариф или пробный период, а в идеале и через справочник API, который можно читать без регистрации.
Но трезво оценивайте, для чего нужен бесплатный тариф или пробный период. Наш — это 3-дневный пробный период полного тарифа Builder, включая глубину стакана, так что вы можете проверить покрытие, плотность снимков и формат ответа до того, как решитесь, — но три дня и 14-дневное окно делают его инструментом оценки, а не исследовательским тарифом. Какой бы ни был поставщик, прежде чем делать выводы, выясните, что именно можно проверить бесплатно.
7. Могут ли ваши инструменты прочитать документацию?
Более новый критерий, и его стоит проверить, потому что он незаметен, пока не ударит. Если вы работаете с Cursor, Claude Code или Codex, способность вашего ассистента написать корректную интеграцию зависит от того, может ли он прочитать документацию поставщика.
Некоторые поставщики данных блокируют ИИ-краулеры в robots.txt — это законный выбор в отношении обучающих данных, но он означает, что модели не видят их документацию и будут додумывать API сами. Проверить любого поставщика можно секунд за пять:
curl -s https://<provider>/robots.txt | grep -iA1 "GPTBot\|ClaudeBot\|Google-Extended"
# "Disallow: /" under those agents means your AI assistant
# cannot read their docs and will guess at the API instead.Для справки: PolyTest разрешает эти краулеры и публикует llms.txt, llms-full.txt и спецификацию OpenAPI. Но практическая проверка проще, чем чтение файлов политик: попросите ассистента написать интеграцию с каждым поставщиком и посмотрите, у кого получится рабочий код.
Когда не стоит платить никому
Стоит сказать прямо, потому что это касается нас так же, как и всех остальных. Платный поставщик данных вам не нужен, если:
- Вам нужны только живые данные. Публичный API и потоки WebSocket Polymarket бесплатны, не требуют аутентификации для рыночных данных и вполне хороши. Поставщики исторических данных существуют ради истории и ничего больше.
- Вы тестируете инфраструктуру, а не стратегию. Аутентификацию, парсинг, переподключения и обработку лимитов запросов можно отработать на бесплатных живых эндпоинтах.
- Ваша стратегия не зависит от исполнения. Если вы изучаете базовые частоты или частоту исходов, эта информация сохраняется в публичных метаданных.
- Вы готовы записывать данные сами. Запустить сборщик на публичном WebSocket вполне реально. Это стоит небольшого сервера и дисциплины, чтобы он продолжал работать, — подвох в том, что вы начинаете с нулевой историей и не можете восполнить прошлое, так что это поможет, только если начать задолго до того, как данные понадобятся.
Довод в пользу оплаты узкий и конкретный: вам нужна история, которую вы не записывали, и нужна прямо сегодня.
Проверка, которую можно провести сегодня же
- Зарегистрируйтесь на бесплатном тарифе или пробном периоде каждого поставщика из вашего списка.
- Выберите один рынок — та же монета, тот же таймфрейм, тот же день — и загрузите его у каждого.
- Сравните снимки в минуту и максимальный пропуск. Плотность и непрерывность важнее любых громких цифр.
- Проверьте число уровней стакана в снимке. Если это не лестница, исполнение не смоделировать.
- Запросите рынок, который разрешился месяц назад, и убедитесь, что получаете полную траекторию, а не только исход.
- Запустите свой самый тяжёлый реалистичный сценарий запросов и посмотрите, какой поставщик начнёт ограничивать вас первым.
- Попросите ИИ-ассистента написать интеграцию с каждым и посмотрите, чью документацию он реально может прочитать.
Эта последовательность займёт полдня и скажет вам больше, чем любая сравнительная таблица, включая эту. Если хотите начать с нас, есть 3-дневный бесплатный пробный период, а справочник эндпоинтов открыт для чтения вообще без регистрации.
Часто задаваемые вопросы
- На что смотреть при выборе поставщика исторических данных Polymarket?
- Проверяйте число снимков на рынок в минуту, а не общее число снимков, и максимальный пропуск между снимками, а не средний. Убедитесь, что получаете полную лестницу стакана, а не только среднюю цену или лучшие цены, — только лестница позволяет моделировать реалистичное исполнение. Проверьте, что разрешившиеся рынки действительно сохраняются с полной траекторией цены, а не только метаданными. Затем сравните устойчивые лимиты и лимиты всплесков, а также возможность оценить данные до оплаты.
- Почему нельзя использовать для бэктестинга собственный API Polymarket?
- API Polymarket отдаёт только текущее состояние рынка. После разрешения рынка запрос его стакана возвращает 404 с сообщением "No orderbook exists for the requested token id", а история цен хранится с частотой примерно одна точка в минуту. Метаданные, такие как выигравший исход и общий объём, сохраняются, а глубина стакана — нет, и одной цены в минуту слишком мало для моделирования исполнения, так что без стороннего архива тестировать исполнение не на чем.
- Чем больше снимков, тем лучше?
- Не обязательно. Общее число снимков — это просто частота записи, умноженная на число отслеживаемых рынков и на время сбора, поэтому большее число может означать лучшее разрешение, более долгий сбор, более широкое покрытие или просто больше избыточных строк на неликвидных рынках. Пригодность данных определяют плотность снимков на тех рынках, которыми вы торгуете, максимальный пропуск между соседними снимками и наличие реальной глубины стакана в каждом снимке.
- Нужна ли мне глубина стакана или хватит средней цены?
- Глубина нужна, если вы собираетесь торговать заметным объёмом. Средняя цена — не та цена, по которой можно совершить сделку, а спреды на рынках Polymarket Up/Down регулярно составляют 2-5 центов на контракте, который рассчитывается по $1, — часто это больше тестируемого преимущества. Полная лестница позволяет пройти по стакану и рассчитать истинную среднюю цену исполнения с учётом проскальзывания — именно это отличает бэктест от арифметического упражнения.
- Можно ли просто записывать данные Polymarket самому, а не платить?
- Да, и это разумный выбор. Публичные потоки WebSocket Polymarket бесплатны и не требуют аутентификации для рыночных данных, так что сборщик на небольшом сервере может построить ваш собственный архив. Ограничение в том, что вы начинаете с нулевой историей и не можете восполнить прошлое — данные будут только с момента начала сбора. Платить поставщику имеет смысл именно тогда, когда нужна история, которую вы не записывали.
Получите исторические данные, которые Polymarket не хранит
PolyTest записывает крипторынки Polymarket Up/Down в процессе их работы — 240M+ снимков с 8 уровнями глубины стакана, метками времени с точностью до долей секунды и сохранёнными разрешившимися рынками. Начните с 3-дневного бесплатного пробного периода.
Читать дальше
Как создать торгового бота для Polymarket
Большинство руководств по ботам для Polymarket построены на SDK, которых больше не существует. Здесь — актуальный путь от начала до конца: что устанавливать в 2026 году, как на самом деле работает аутентификация, где пробелы в данных и какие сбои убивают ботов в первую неделю.
Рынки Polymarket Up/Down: slug, разрешение и обрыв стакана
Крипторынки Polymarket Up/Down — самые высокочастотные инструменты на платформе и одни из самых непонятых. Как расшифровать slug, что определяет исход и что именно Polymarket хранит после закрытия рынка.
Есть ли у Polymarket тестовая сеть?
Короткий ответ: нет. Polymarket никогда не запускал публичную тестовую сеть, и нет ни песочницы, ни демо-API. Ваш первый настоящий ордер — это настоящий ордер, с реальными деньгами и реальными контрагентами. Вот как это обходят опытные разработчики.