Рынки Polymarket Up/Down: slug, разрешение и обрыв стакана
Крипторынки Polymarket Up/Down — самые высокочастотные инструменты на платформе и одни из самых непонятых. Как расшифровать slug, что определяет исход и что именно Polymarket хранит после закрытия рынка.
Крипторынки Polymarket Up/Down рассчитываются каждые пять минут, работают круглосуточно и дают серьёзный оборот — один пятиминутный рынок BTC, взятый ниже в качестве примера, наторговал $638,615. Это самое близкое к высокочастотному инструменту, что есть на рынках предсказаний.
Они же — самые сложные для изучения рынки на платформе, и причина не в их устройстве, а в том, что с ними происходит после закрытия. В этой статье — все три части: как читать slug, как устроено разрешение и что после него остаётся.
Расшифровка slug
У каждого рынка Up/Down есть slug фиксированного, полностью предсказуемого формата:
{coin}-updown-{timeframe}-{unix_start}
btc-updown-5m-1775181000
│ │ │ └── Unix timestamp: window START, in UTC
│ │ └────── Timeframe: 5m | 15m | 1h | 4h | 24h
│ └───────────── Always "updown"
└───────────────── Coin: btc | eth | sol | xrp | doge | bnbПолезная часть — число в конце. Это Unix-метка времени момента, когда окно торгов открывается, в UTC. Расшифруйте её — и вы точно знаете, какие пять минут охватывает рынок:
from datetime import datetime, timezone
slug = "btc-updown-5m-1775181000"
coin, _, timeframe, ts = slug.split("-")
start = datetime.fromtimestamp(int(ts), tz=timezone.utc)
print(coin.upper(), timeframe, start)
# BTC 5m 2026-04-03 01:50:00+00:00
# The market's own title renders this in US Eastern:
# "Bitcoin Up or Down - April 2, 9:50PM-9:55PM ET"Поскольку формат детерминирован, slug можно составить, а не искать. Каждый 5-минутный рынок BTC начинается на границе пяти минут, так что slug для любого окна — это btc-updown-5m- плюс Unix-метка этой границы. Если у вас есть slug и нужен его исход, вставьте его в поиск рынка.
Не доверяйте полю startDate
На этом спотыкаются почти все, кто разбирает эти рынки. startDate в API для btc-updown-5m-1775181000 равен 2026-04-02T01:58:12Z — целых 24 часа до окна торгов. Это поле фиксирует момент создания объекта рынка, а не открытие окна. Метка времени в slug — настоящее начало; endDate (2026-04-03T01:55:00Z) — настоящее закрытие. Заметьте, что endDate — это ровно метка времени из slug плюс 300 секунд.
Как работает разрешение
Механика намеренно проста. Рынок спрашивает, выше ли цена монеты на закрытии окна, чем на открытии. Два исхода, Up и Down, и один из них рассчитывается по $1.
| Поле | Значение для btc-updown-5m-1775181000 |
|---|---|
question | Bitcoin Up or Down - April 2, 9:50PM-9:55PM ET |
outcomes | ["Up", "Down"] |
outcomePrices | ["0", "1"] — выиграл Down |
endDate | 2026-04-03T01:55:00Z |
volumeNum | 638,615 |
spread | 0.01 |
umaResolutionStatus | resolved |
outcomePrices после расчёта определяется победитель.Несколько следствий такого устройства, важных для всех, кто моделирует эти рынки:
- Ничья разрешается в Down. Вопрос в том, выше ли закрытие открытия. Не выше — в том числе ровно равно — значит Down. На 5-минутном окне это редкость, но не пренебрежимая, и она вносит небольшую структурную асимметрию, которую упускает наивная модель подбрасывания монеты.
- Разрешение идёт по TWAP Chainlink, а не по снимку. С 7 августа 2026 года крипторынки Up/Down рассчитываются по средневзвешенной по времени цене, а не по одной цене в момент закрытия, а с 14 августа все 5-минутные рынки используют 60-секундное окно (неделю между этими датами оно было 30-секундным). И цена, которую нужно превзойти, и цена расчёта берутся из этого TWAP. Это существенно меняет развязку: всплеск в последние десять секунд почти не сдвигает 60-секундное среднее, так что поздние развороты гораздо слабее, чем кажется на графике спота.
- Вероятность резко сжимается к экспирации. За шестьдесят секунд до конца при неподвижной монете обе стороны сходятся к 50¢, и всё решает спред. За десять секунд после решительного движения одна сторона прижата к 97–99¢, и торговать почти нечем.
- Спред — это вся игра. Котируемый спред 0.01 на рынке, который платит $1, — это 1% издержек туда-обратно на бинарном исходе. Большинство стратегий, которые выглядят прибыльными на средней цене, перестают быть прибыльными после его пересечения — см. ниже.
Если вы строили что-то до августа, перепроверьте
За пять недель вышли три изменения в расчётах: разрешение по TWAP 7 августа (30-секундное окно для 5-минутных рынков), переход на 60-секундное окно 14 августа и изменение задержки для тейкеров на крипторынках с 250ms до 50ms 17 августа, а затем с 50ms до 150ms 4 сентября. Любая модель, откалиброванная на поведении до августа, откалибрована на другом инструменте.
Почему 5-минутные рынки устроены иначе
На 24-часовом рынке BTC важны фундаментальные факторы и потоки. На 5-минутном вы торгуете микроструктурой: потоком ордеров, тиком референсного источника и формой стакана в последние секунды. Стратегии не переносятся между таймфреймами, и тесты на 24-часовых данных ничего не говорят о поведении на 5 минутах. Считайте их разными инструментами, у которых просто общая схема именования.
Что Polymarket хранит после разрешения рынка
От этого зависит, можно ли вообще исследовать эти рынки. После разрешения Polymarket хранит запись о рынке и редкий ценовой ряд. Стакан он не хранит. 29 сентября 2026 года мы проверили шесть разрешившихся 5-минутных рынков BTC возрастом от 4 дней до примерно шести месяцев.
Исправление от 29 сентября 2026 года
В более ранней версии этой статьи говорилось, что prices-history после разрешения возвращает пустой массив. Это было верно для единственного запроса, который мы выполнили (interval=max для рынка шестимесячной давности), и неверно как общее утверждение. С явно заданными началом и концом он возвращает точки, которые хранит Polymarket. Утверждение о стакане не изменилось и подтвердилось для каждого рынка, который мы проверяли.
TOK=<token_id_of_a_resolved_market>
START=1790466900 # the number at the end of btc-updown-5m-1790466900
END=$((START + 300))
# 1. The order book: gone, at every age we tried.
curl -s "https://clob.polymarket.com/book?token_id=$TOK"
# {"error":"No orderbook exists for the requested token id"} HTTP 404
# 2. The price series: thin, but there if you give it a window.
curl -s "https://clob.polymarket.com/prices-history?market=$TOK&startTs=$START&endTs=$END&fidelity=1"
# {"history":[{"t":...,"p":0.365}, ...]} 6 points for this 5-minute market
# 3. The same call with interval=max: empty for the six-month-old market we tried.
curl -s "https://clob.polymarket.com/prices-history?market=$TOK&interval=max&fidelity=1"
# {"history":[]} HTTP 200Так что ценовой ряд не исчез, но он редкий. Для btc-updown-5m-1790466900 Polymarket вернул шесть точек, с 11 по 316 секунду после открытия окна, и на последнюю минуту пришлась одна из них. В PolyTest есть 2,552 снимка того же рынка, примерно по одному каждые 0.12 секунды, и в каждом — стакан с обеих сторон. Одной цены в минуту достаточно, чтобы увидеть, кто выиграл и примерно когда сдвинулась цена. Но она не скажет, по какой цене исполнился бы ордер на 500 акций, и едва покрывает последнюю минуту, в которой эти рынки и решаются.
В новом Data API у Polymarket есть второй маршрут, GET /v2/prices-history, который возвращает 60-секундные интервалы. В нашем тесте в нём были данные для рынков возрастом до 8 дней и ничего для рынков старше 15 дней, так что архива он не заменяет.
| Что вам нужно | Доступно после разрешения? |
|---|---|
| Метаданные рынка (вопрос, исход, объём) | Да, через ?closed=true |
| Какая сторона выиграла | Да, outcomePrices |
| Ценовой ряд по окну | Да, примерно одна точка в минуту, с явно заданными началом и концом |
| Глубина стакана в любой момент | Нет, 404 для рынков любого возраста, которые мы проверяли |
| По какой цене исполнился бы ваш ордер | Нет |
Цена раз в минуту — это не стакан
Вы можете узнать, что выиграл Down, и примерно как цена двигалась от минуты к минуте. Вы не можете узнать, что стояло в стакане с каждой стороны в любой момент, а от этого зависит любой вопрос исполнения. Ценового ряда хватит для базовых частот и приблизительного графика. Для бэктеста стратегии, которая платит спред, его недостаточно.
Почему базовых частот недостаточно
Частая мысль на этом этапе: если исходы можно получить, почему бы не изучать частоты разрешений? Посчитать, как часто 5-минутный BTC разрешался в Up за последнюю тысячу рынков, найти смещение и торговать им.
Проблема в том, что любое такое смещение заложено в цену задолго до того, как вы его увидите. Если в прошлом месяце 5-минутные рынки SOL разрешались в Up в 52% случаев, маркетмейкеры это знают, и Up открывается по 52¢. Базовая частота — не преимущество; она уже в цене. Чтобы найти преимущество, нужно то, чего Polymarket не хранит: как выглядел стакан, когда цена была неправильной.
Это честная причина, по которой стратегии для Up/Down трудно проверить. Дело не в том, что рынки эффективны, — а в том, что доказательств, нужных для проверки этого утверждения в любую сторону, в API нет.
Записываем то, чего Polymarket не хранит
Единственный способ обойти отсутствие стакана — записать его, пока рынок работал. Именно это делает PolyTest: непрерывные снимки крипторынков Polymarket Up/Down на конкретный момент времени, записанные во время работы и сохранённые после разрешения: 240M+ снимков с 8 уровнями глубины стакана на сторону и метками времени с точностью до долей секунды.
| Монета | Таймфреймы |
|---|---|
| BTC | 5m · 15m · 1h · 4h · 24h |
| ETH | 5m · 15m · 1h |
| SOL | 5m · 15m · 1h |
| XRP · DOGE · BNB | Сбор данных идёт — скоро |
import os, requests
BASE = "https://api.polytest.io/api/v1"
H = {"X-API-Key": os.environ["POLYTEST_KEY"]}
# Resolved markets are still here — that is the whole point.
markets = requests.get(f"{BASE}/markets",
params={"coin": "sol", "market_type": "5m", "limit": 50},
headers=H).json()["markets"]
for m in markets:
snaps = requests.get(f"{BASE}/markets/{m['id']}/snapshots",
params={"include_orderbook": "true"},
headers=H).json()["snapshots"]
# The final minute is where 5m markets are actually decided.
endgame = snaps[-12:]
for s in endgame:
print(m["slug"], s["timestamp"], s["midPrice"], s["spread"])Три вещи, которые стоит проверить
- Выдерживает ли ваше преимущество спред? Перезапустите любой многообещающий результат, используя реальный аск, который вы забрали бы, а не среднюю цену. При спреде 1¢ на рынке с выплатой $1 это часто превращает выигрышную стратегию в проигрышную. Сделайте это первым — так большинство идей отсеиваются дёшево.
- Как ведёт себя глубина в последние 60 секунд? Рынки Up/Down резко истончаются перед экспирацией. Объём, который исполняется за 3 минуты до конца, может не исполниться за 30 секунд, и в любом ряду средних цен этого не видно.
- Переносится ли что-нибудь между монетами? У 5-минутных рынков BTC, ETH и SOL общее устройство, но разный профиль ликвидности. Стратегия, настроенная на стакан BTC, часто разваливается на более тонком стакане SOL — и это лучше узнать до того, как вложить деньги, а не после.
Моделирование исполнения подробнее разобрано в руководстве по бэктестингу, а если хотите проверить данные, прежде чем на что-то решиться, есть 3-дневный бесплатный пробный период.
Часто задаваемые вопросы
- Что означает формат slug btc-updown-5m?
- Slug рынков Polymarket Up/Down строится по шаблону {coin}-updown-{timeframe}-{unix_start}. В btc-updown-5m-1775181000 btc — монета, 5m — длина окна, а 1775181000 — Unix-метка времени открытия окна торгов в UTC, в данном случае 2026-04-03 01:50:00 UTC, что в названии рынка отображается как April 2, 9:50PM-9:55PM ET. Формат детерминирован, так что slug можно составить, а не искать.
- Как разрешаются рынки Polymarket Up/Down?
- Рынок разрешается в Up, если референсная цена монеты на закрытии окна выше, чем на открытии, и в Down в противном случае. Поскольку условие — строго выше, закрытие ровно на уровне открытия разрешается в Down. С 7 августа 2026 года цены открытия и закрытия берутся из средневзвешенной по времени цены Chainlink, а не из одной цены, а с 14 августа 5-минутные рынки используют 60-секундное окно. Расхождение между вашим источником данных и этим средним важно вблизи границы.
- Почему startDate у рынка Polymarket Up/Down неверный?
- Он не неверный, но означает не то, что обычно думают. Поле startDate фиксирует момент создания объекта рынка, а это может быть на день или больше раньше начала торгов. Для btc-updown-5m-1775181000 startDate равен 2026-04-02T01:58:12Z, а окно на самом деле открывается в 2026-04-03T01:50:00Z. Используйте Unix-метку из slug как начало окна и endDate как закрытие.
- Можно ли получить исторические данные разрешившихся рынков Polymarket Up/Down?
- Не из API Polymarket. Лишь частично. Polymarket возвращает 404 для стакана разрешившегося рынка. Он хранит запись о рынке (исход и объём, с closed=true) и ценовой ряд примерно с одной точкой в минуту, который можно получить, указав явно начало и конец; interval=max для более старых рынков возвращает пустой список. Глубины стакана нет, поэтому моделировать исполнение нельзя. Для бэктеста исполнения нужны снимки, записанные, пока рынок работал.
- По каким монетам есть рынки Polymarket Up/Down?
- Самое полное покрытие у BTC — окна 5m, 15m, 1h, 4h и 24h. ETH и SOL торгуются на 5m, 15m и 1h. XRP, DOGE и BNB добавлены позже, и их покрытие уже. Ликвидность сильно различается между монетами, поэтому стратегия, откалиброванная на стакане BTC, часто не переносится на более тонкий стакан SOL.
Получите исторические данные, которые Polymarket не хранит
PolyTest записывает крипторынки Polymarket Up/Down в процессе их работы — 240M+ снимков с 8 уровнями глубины стакана, метками времени с точностью до долей секунды и сохранёнными разрешившимися рынками. Начните с 3-дневного бесплатного пробного периода.
Читать дальше
Преимущество на отставании от спота в Polymarket реально. И глубиной около $100.
Покупайте сторону, которую спот уже подтвердил, до того как Polymarket пересчитает цену. В отличие от большинства заявляемых стратегий, эта выдерживает проверку данными — с z-оценкой 15. Причина, по которой она не сделала всех богатыми, лежит в стакане.
97.7% прибыльных сделок и убыток: бэктест покупки фаворитов
Покупаете сторону, которая явно выигрывает, забираете почти гарантированную выплату, повторяете. Доля прибыльных сделок на скриншоте выглядит невероятно. На 17,002 сделках по реальным данным стакана эта стратегия теряет деньги, и причина — арифметика, а не невезение.
Как создать торгового бота для Polymarket
Большинство руководств по ботам для Polymarket построены на SDK, которых больше не существует. Здесь — актуальный путь от начала до конца: что устанавливать в 2026 году, как на самом деле работает аутентификация, где пробелы в данных и какие сбои убивают ботов в первую неделю.