Обновленная база данных.
- polymarket_btc_5m_public.db
- BTC Up/Down 5-min raw data (Mar 11-24)
- ticks + orderbook + windows
- No strategy data included
- Size: 180 MB unzipped
#updated_data | POLYANA
- polymarket_btc_5m_public.db
- BTC Up/Down 5-min raw data (Mar 11-24)
- ticks + orderbook + windows
- No strategy data included
- Size: 180 MB unzipped
#updated_data | POLYANA
Polymarket вводит новые комиссии - что меняется с 30 марта
Polymarket обновляет структуру комиссий. Сейчас TAKER FEE есть только на рынках Crypto и Sports. С 30 марта - на всех категориях, кроме Geopolitics.
Что сейчас (до 30 марта)
Crypto: peak rate 1.56%
Sports: peak rate 0.44%
Все остальное: 0%
Что будет (с 30 марта)
11 категорий, каждая со своей ставкой:
Как считается комиссия
Что это означает для Up/Down трейдеров
BTC Up/Down - это категория Crypto. Peak rate вырастает с 1.56% до 1.80%.
Но есть нюанс. Комиссия симметричная - чем ближе цена к 0 или 1, тем меньше платишь. На наших типичных entry $0.70-0.85 эффективная ставка = ~1.0-1.3%.
При 80 трейдах в день со стейком $20:
Не критично, но съедает часть EDGE. Для стратегий с маленьким EV на трейд - может быть решающим.
Maker Rebate
20% собранных комиссий возвращаются мейкерам ежедневно. То есть если ставишь лимитные ордера, а не маркетные - часть комиссии получишь обратно.
Для ботов (API)
Docs: docs.polymarket.com/trading/fees
#poly_updates | POLYANA
Polymarket обновляет структуру комиссий. Сейчас TAKER FEE есть только на рынках Crypto и Sports. С 30 марта - на всех категориях, кроме Geopolitics.
Что сейчас (до 30 марта)
Crypto: peak rate 1.56%
Sports: peak rate 0.44%
Все остальное: 0%
Что будет (с 30 марта)
11 категорий, каждая со своей ставкой:
Категорія Peak Rate Maker Rebate
─────────────────────────────────────────
Crypto 1.80% 20%
Sports 0.75% 25%
Finance 1.00% 50%
Politics 1.00% 25%
Economics 1.50% 25%
Culture 1.25% 25%
Weather 1.25% 25%
Tech 1.00% 25%
Mentions 1.56% 25%
Other 1.25% 25%
Geopolitics 0% —
Как считается комиссия
# Формула:
# fee = C * p * feeRate * (p * (1 - p))^exponent
#
# C = кількість shares
# p = ціна share
# Peak rate = при p = 0.50 (максимальна невизначеність)
# При p → 0 або p → 1 комісія → 0
# Приклад: купуєш YES за $0.75 на Crypto ринку
p = 0.75
fee_rate = 0.072
exponent = 1
shares = 100
fee_per_share = p * fee_rate * (p * (1 - p)) ** exponent
# = 0.75 * 0.072 * (0.75 * 0.25)^1
# = 0.75 * 0.072 * 0.1875
# = 0.01013 за share (~1.01%)
total_fee = shares * fee_per_share
# = $1.01 на 100 shares
Что это означает для Up/Down трейдеров
BTC Up/Down - это категория Crypto. Peak rate вырастает с 1.56% до 1.80%.
Но есть нюанс. Комиссия симметричная - чем ближе цена к 0 или 1, тем меньше платишь. На наших типичных entry $0.70-0.85 эффективная ставка = ~1.0-1.3%.
При 80 трейдах в день со стейком $20:
Зараз: ~$0.25/trade × 80 = ~$20/день
Після: ~$0.30/trade × 80 = ~$24/день
Різниця: +$4/день (~$120/міс)
Не критично, но съедает часть EDGE. Для стратегий с маленьким EV на трейд - может быть решающим.
Maker Rebate
20% собранных комиссий возвращаются мейкерам ежедневно. То есть если ставишь лимитные ордера, а не маркетные - часть комиссии получишь обратно.
Для ботов (API)
# Перевірити поточну ставку для токена:
import requests
resp = requests.get(
"https://clob.polymarket.com/fee-rate",
params={"token_id": your_token_id}
)
fee_bps = resp.json() # в basis points
# SDK (python/ts/rust) рахує автоматично
# REST API — потрібно додавати feeRateBps в signed order
Docs: docs.polymarket.com/trading/fees
#poly_updates | POLYANA
Как читать стакан на Polymarket
Ты уже знаешь, что цену YES и NO определяют трейдеры. Но как именно? Через СТАКАН - книгу ордеров.
Стакан состоит из двух сторон:
BID - сколько покупатели готовы заплатить
ASK - за сколько продавцы готовы продать
Ты всегда покупаешь по ASK. Продаешь по BID.
Пример
Открываем стакан YES токена:
Хочешь купить YES прямо сейчас - платишь $0.70. Хочешь продать - получаешь $0.68.
Разница между лучшим ASK и BID - это СПРЕД. Здесь: $0.70 - $0.68 = $0.02.
Почему спред важен?
Спред - это твой скрытый убыток при входе. Купил за $0.70, сразу же продал - получил $0.68. Минус $0.02 еще до того, как рынок вообще сдвинулся.
На активных окнах спред бывает $0.01-0.02. На "мертвых" - $0.05-0.10. Заходить в рынок с большим спредом = сразу быть в минусе.
Как получить стакан через API
Ликвидность
Еще одна вещь из стакана - сколько shares можно купить. Если ты хочешь купить на $500, а в ASK $0.70 стоит всего 50 shares ($35) - остальное придется добирать выше, по $0.72, $0.74...
Реальная цена входа для большого объема всегда хуже, чем видно вверху стакана. Это называется slippage.
——————————————
📖 СЛОВАРЬ
BID - максимальная цена покупателя в стакане
ASK - минимальная цена продавца в стакане
СПРЕД - разница между ASK и BID, скрытая стоимость входа
ЛИКВИДНОСТЬ - сколько объема доступно в стакане
SLIPPAGE - ухудшение цены при покупке большого объема
CLOB API - API для чтения книги ордеров на Polymarket
#Entry | POLYANA
Ты уже знаешь, что цену YES и NO определяют трейдеры. Но как именно? Через СТАКАН - книгу ордеров.
Стакан состоит из двух сторон:
BID - сколько покупатели готовы заплатить
ASK - за сколько продавцы готовы продать
Ты всегда покупаешь по ASK. Продаешь по BID.
Пример
Открываем стакан YES токена:
ASK (продають)
$0.74 — 120 shares
$0.72 — 85 shares
$0.70 — 200 shares ← найкраща ціна
──────────────────────
BID (купують)
$0.68 — 150 shares ← найкраща ціна
$0.65 — 300 shares
$0.62 — 90 shares
Хочешь купить YES прямо сейчас - платишь $0.70. Хочешь продать - получаешь $0.68.
Разница между лучшим ASK и BID - это СПРЕД. Здесь: $0.70 - $0.68 = $0.02.
Почему спред важен?
Спред - это твой скрытый убыток при входе. Купил за $0.70, сразу же продал - получил $0.68. Минус $0.02 еще до того, как рынок вообще сдвинулся.
На активных окнах спред бывает $0.01-0.02. На "мертвых" - $0.05-0.10. Заходить в рынок с большим спредом = сразу быть в минусе.
Как получить стакан через API
import requests
token_id = "28982754460..." # YES токен
resp = requests.get(
"https://clob.polymarket.com/book",
params={"token_id": token_id}
)
book = resp.json()
best_ask = book["asks"][0] # найдешевший продавець
best_bid = book["bids"][0] # найдорожчий покупець
print(f"ASK: {best_ask['price']} x {best_ask['size']}")
print(f"BID: {best_bid['price']} x {best_bid['size']}")
print(f"Спред: {float(best_ask['price']) - float(best_bid['price']):.3f}")
Ликвидность
Еще одна вещь из стакана - сколько shares можно купить. Если ты хочешь купить на $500, а в ASK $0.70 стоит всего 50 shares ($35) - остальное придется добирать выше, по $0.72, $0.74...
Реальная цена входа для большого объема всегда хуже, чем видно вверху стакана. Это называется slippage.
——————————————
📖 СЛОВАРЬ
BID - максимальная цена покупателя в стакане
ASK - минимальная цена продавца в стакане
СПРЕД - разница между ASK и BID, скрытая стоимость входа
ЛИКВИДНОСТЬ - сколько объема доступно в стакане
SLIPPAGE - ухудшение цены при покупке большого объема
CLOB API - API для чтения книги ордеров на Polymarket
#Entry | POLYANA
Инфраструктура торгового бота для Polymarket BTC 5-мин бинарных опционов
Polymarket каждые 5 минут открывает бинарный рынок:
"BTC выше/ниже текущей цены через 5 минут?"
Ордербук с двумя токенами (YES/NO), резолв через Chainlink RTDS oracle. Разберем, как построить real-time pipeline для торговли на этих рынках.
1. Ландшафт API
Для полноценного бота нужны три источника данных одновременно:
Market discovery — рынки появляються за ~30с до открытия окна:
2. Трюк с комплементарными токенами
На Polymarket YES + NO = $1.00. Это дает неочевидную возможность для лучшего входа:
Многие боты смотрят только на YES ask — и переплачивают на 1-3 цента. На 100 сделок в день это $1-3 потерянного edge ежедневно.
#Intermediate | POLYANA
Polymarket каждые 5 минут открывает бинарный рынок:
"BTC выше/ниже текущей цены через 5 минут?"
Ордербук с двумя токенами (YES/NO), резолв через Chainlink RTDS oracle. Разберем, как построить real-time pipeline для торговли на этих рынках.
1. Ландшафт API
Для полноценного бота нужны три источника данных одновременно:
Binance WS ──→ BTC ціна + потік угод (OFI)
Gamma API ──→ пошук ринків за slug + резолюція
CLOB API ──→ ордербук + розміщення ордерів
Market discovery — рынки появляються за ~30с до открытия окна:
import requests, time
def find_market(window_start_ts: int) -> dict | None:
slug = f"btc-updown-5m-{window_start_ts}"
url = f"https://gamma-api.polymarket.com/events?slug={slug}"
resp = requests.get(url, timeout=5)
events = resp.json()
if not events:
return None
event = events[0]
for m in event.get("markets", []):
tokens = m.get("clobTokenIds", [])
return {
"slug": slug,
"yes_token": tokens[0],
"no_token": tokens[1],
"condition_id": m.get("conditionId", ""),
}
return None
# Вікно кожні 5 хв (00:00, 00:05, 00:10...)
now = int(time.time())
window_start = now - (now % 300)
market = find_market(window_start)
2. Трюк с комплементарными токенами
На Polymarket YES + NO = $1.00. Это дает неочевидную возможность для лучшего входа:
def get_best_yes_entry(yes_best_ask, no_best_bid):
"""
Найкраща ціна для купівлі YES:
min(YES ask, 1 - NO bid)
Приклад: YES ask = 0.87, NO bid = 0.14
-> 1 - 0.14 = 0.86 -- дешевше через NO сторону!
"""
candidates = []
if yes_best_ask and 0.01 < yes_best_ask < 0.99:
candidates.append(yes_best_ask)
if no_best_bid and 0.01 < no_best_bid < 0.99:
candidates.append(round(1.0 - no_best_bid, 2))
return min(candidates) if candidates else None
def get_best_no_entry(no_best_ask, yes_best_bid):
"""Аналогічно для NO сторони."""
candidates = []
if no_best_ask and 0.01 < no_best_ask < 0.99:
candidates.append(no_best_ask)
if yes_best_bid and 0.01 < yes_best_bid < 0.99:
candidates.append(round(1.0 - yes_best_bid, 2))
return min(candidates) if candidates else None
Многие боты смотрят только на YES ask — и переплачивают на 1-3 цента. На 100 сделок в день это $1-3 потерянного edge ежедневно.
#Intermediate | POLYANA
POLYANA
Инфраструктура торгового бота для Polymarket BTC 5-мин бинарных опционов Polymarket каждые 5 минут открывает бинарный рынок: "BTC выше/ниже текущей цены через 5 минут?" Ордербук с двумя токенами (YES/NO), резолв через Chainlink RTDS oracle. Разберем, как…
3. Real-time волатильность: 4 метода
Волатильность — ключевой вход для любой модели на 5-мин опционах. 4 варианта, которые стоит рассчитывать параллельно:
Какой тип выбрать?
trail / realized — для моделей с нормальным распределением
range — робастный, не чувствительный к выбросам
max_rolling — консервативная оценка (завышает σ → меньше ложных сигналов)
Нормализация _pmin (per minute) позволяет корректно сравнивать разные таймфреймы.
4. Order Flow Imbalance с Binance
Поток Binance aggTrade даёт ~50 сообщений/сек для BTC. Из этого потока можно извлечь OFI — метрику давления покупателей/продавцов:
Сильный дисбаланс buy/sell объема может быть предиктором направления BTC. Но нюанс — на микроструктуре OFI часто работает контр-интуитивно: когда все покупают, цена уже отразила это давление.
#Intermediate | POLYANA
Волатильность — ключевой вход для любой модели на 5-мин опционах. 4 варианта, которые стоит рассчитывать параллельно:
import numpy as np
def compute_sigmas(prices, window_min=30):
"""prices: [(timestamp, btc_price), ...]"""
ts = np.array([p[0] for p in prices])
px = np.array([p[1] for p in prices])
avg = px.mean()
# 1. Trail -- std ціни / середня
trail = np.std(px) / avg
# 2. Realized -- std логарифмічних ретурнів
log_ret = np.diff(np.log(px))
realized = np.std(log_ret)
# 3. Range -- (high - low) / avg
range_vol = (px.max() - px.min()) / avg
# 4. Max rolling -- max ковзних 1-хв std
max_std = 0.0
for i in range(len(ts)):
mask = (ts >= ts[i] - 60) & (ts <= ts[i])
if mask.sum() >= 5:
local = np.std(px[mask]) / avg
max_std = max(max_std, local)
dur = (ts[-1] - ts[0]) / 60
return {
"trail": trail,
"trail_pmin": trail / max(dur, 0.1),
"realized": realized,
"realized_pmin": realized / max(dur, 0.1),
"range": range_vol,
"max_rolling": max_std,
}
Какой тип выбрать?
trail / realized — для моделей с нормальным распределением
range — робастный, не чувствительный к выбросам
max_rolling — консервативная оценка (завышает σ → меньше ложных сигналов)
Нормализация _pmin (per minute) позволяет корректно сравнивать разные таймфреймы.
4. Order Flow Imbalance с Binance
Поток Binance aggTrade даёт ~50 сообщений/сек для BTC. Из этого потока можно извлечь OFI — метрику давления покупателей/продавцов:
import json, time, threading
from collections import deque
class BinanceOFI:
def __init__(self, buffer_size=30_000):
self._buffer = deque(maxlen=buffer_size)
self._lock = threading.Lock()
def on_message(self, raw):
msg = json.loads(raw)
ts = msg["T"] / 1000
price = float(msg["p"])
qty = float(msg["q"])
is_sell = msg["m"] # True = market sell
notional = price * qty
with self._lock:
self._buffer.append((ts, notional, is_sell))
def compute(self):
now = time.time()
ofi_1 = ofi_5 = 0.0
buy_1 = sell_1 = 0.0
count_1 = 0
with self._lock:
cutoff = now - 300
while self._buffer and self._buffer[0][0] < cutoff:
self._buffer.popleft()
for ts, notional, is_sell in self._buffer:
signed = -notional if is_sell else notional
age = now - ts
if age <= 60:
ofi_1 += signed
count_1 += 1
if is_sell: sell_1 += notional
else: buy_1 += notional
ofi_5 += signed
total = buy_1 + sell_1
return {
"ofi_1min": ofi_1, "ofi_5min": ofi_5,
"buy_vol_1min": buy_1, "sell_vol_1min": sell_1,
"vol_imbalance": (buy_1-sell_1)/total if total else 0,
"trade_count_1min": count_1,
}
wss://stream.binance.com:9443/ws/btcusdt@aggTradeСильный дисбаланс buy/sell объема может быть предиктором направления BTC. Но нюанс — на микроструктуре OFI часто работает контр-интуитивно: когда все покупают, цена уже отразила это давление.
#Intermediate | POLYANA
POLYANA
3. Real-time волатильность: 4 метода Волатильность — ключевой вход для любой модели на 5-мин опционах. 4 варианта, которые стоит рассчитывать параллельно: import numpy as np def compute_sigmas(prices, window_min=30): """prices: [(timestamp, btc_price)…
5. Подводный камень: Chainlink ≠ Binance
Polymarket резолвит через Chainlink RTDS oracle, а не Binance:
На реальных данных ~4.7% рынков резолвятся иначе, чем показывает Binance.
Если ваш бот ориентируется на цену Binance — получаете систематическую ошибку почти в 5% сделок.
Причина: Chainlink агрегирует цену с нескольких бирж с собственной задержкой.
6. Архитектура бота
7. Полезные эндпоинты
TL;DR:
1. Рынки появляются примерно за 30 секунд — ищите через Gamma API по slug
2. Entry = min(YES ask, 1 − NO bid) — всегда проверяйте обе стороны
3. Считайте несколько типов волатильности параллельно
4. OFI с Binance aggTrade — мощная фича, но может работать контр-интуитивно
5. Chainlink ≠ Binance: ~5% расхождений
6. Архитектура: async collector + strategy loop + отдельный трекер позиций
#Intermediate | POLYANA
Polymarket резолвит через Chainlink RTDS oracle, а не Binance:
import json
def check_resolution(event):
for market in event.get("markets", []):
prices = market.get("outcomePrices", "")
if not prices:
return None
prices = json.loads(prices)
return "UP" if prices[0] == "1" else "DOWN"
return None
На реальных данных ~4.7% рынков резолвятся иначе, чем показывает Binance.
Если ваш бот ориентируется на цену Binance — получаете систематическую ошибку почти в 5% сделок.
Причина: Chainlink агрегирует цену с нескольких бирж с собственной задержкой.
6. Архитектура бота
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Binance WS │ │ Gamma API │ │ CLOB API │
│ aggTrade │ │ market disc │ │ book+orders │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────┐
│ Collector (1s loop) │
│ BTC, delta, sigma[], OFI, tau, entry_price │
└────────────────────┬────────────────────────────┘
▼
┌─────────────────┐
│ Strategy Loop │
│ signal -> order│
└────────┬────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌──────────┐ ┌─────────┐ ┌────────┐
│ CLOB │ │ SQLite │ │Telegram│
│ Order │ │ Log │ │ Alert │
└──────────┘ └─────────┘ └────────┘
7. Полезные эндпоинты
# Ордербук
GET https://clob.polymarket.com/book?token_id={TOKEN_ID}
# Пошук ринку
GET https://gamma-api.polymarket.com/events?slug=btc-updown-5m-{UNIX_TS}
# BTC realtime
WSS wss://stream.binance.com:9443/ws/btcusdt@aggTrade
# CLOB WebSocket (ордербук + угоди)
WSS wss://ws-subscriptions-clob.polymarket.com/ws/market
TL;DR:
1. Рынки появляются примерно за 30 секунд — ищите через Gamma API по slug
2. Entry = min(YES ask, 1 − NO bid) — всегда проверяйте обе стороны
3. Считайте несколько типов волатильности параллельно
4. OFI с Binance aggTrade — мощная фича, но может работать контр-интуитивно
5. Chainlink ≠ Binance: ~5% расхождений
6. Архитектура: async collector + strategy loop + отдельный трекер позиций
#Intermediate | POLYANA
На Polymarket вышло новое обновление для ставок на спортивные исходы.
Теперь рыночные ордера исполняются с задержкой в 1 секунду перед сопоставлением (matching), ранее за 3 секунды.
Может есть смысл присмотреться к спорту?
#poly_updates | POLYANA
Теперь рыночные ордера исполняются с задержкой в 1 секунду перед сопоставлением (matching), ранее за 3 секунды.
Может есть смысл присмотреться к спорту?
#poly_updates | POLYANA
Так ли много людей зарабатывает на Prediction Markets?
Свежее исследование по Polymarket от ESSEC Business School и ECGI показывает картину довольно знакомую для любого рынка: основная масса участников теряет деньги, а прибыль уходит очень узкому кругу сильных игроков.
Авторы проанализировали данные за 2022–2025 годы: более 1,4 млн пользователей, 70 млн сделок и свыше $20 млрд объема.
Результат показательный: около 71% участников в минусе, а топ-1% забирает 84% всей прибыли. То есть Polymarket для большинства — это не “легкие деньги на новостях”, а довольно эффективный рынок, где слабые системно платят сильным.
Лучшие результаты чаще у тех, кто качественнее читает цену, лучше оценивает вероятности и действует дисциплинированнее. А вот путь к убыткам вполне типичный: ставки на лонгшоты, лишние сделки, импульсивная торговля и роль обычного taker’а вместо поставщика ликвидности.
Вывод простой: Polymarket может хорошо отражать коллективные ожидания, но зарабатывать на нем без реального преимущества над рынком намного сложнее, чем кажется со стороны.
Ознакомится самостоятельно:
https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6443103
#poly_updates | POLYANA
Свежее исследование по Polymarket от ESSEC Business School и ECGI показывает картину довольно знакомую для любого рынка: основная масса участников теряет деньги, а прибыль уходит очень узкому кругу сильных игроков.
Авторы проанализировали данные за 2022–2025 годы: более 1,4 млн пользователей, 70 млн сделок и свыше $20 млрд объема.
Результат показательный: около 71% участников в минусе, а топ-1% забирает 84% всей прибыли. То есть Polymarket для большинства — это не “легкие деньги на новостях”, а довольно эффективный рынок, где слабые системно платят сильным.
Лучшие результаты чаще у тех, кто качественнее читает цену, лучше оценивает вероятности и действует дисциплинированнее. А вот путь к убыткам вполне типичный: ставки на лонгшоты, лишние сделки, импульсивная торговля и роль обычного taker’а вместо поставщика ликвидности.
Вывод простой: Polymarket может хорошо отражать коллективные ожидания, но зарабатывать на нем без реального преимущества над рынком намного сложнее, чем кажется со стороны.
Ознакомится самостоятельно:
https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6443103
#poly_updates | POLYANA
Polymarket переезжает на CLOB V2 — 28 апреля, ~11:00 UTC
Крупнейший апдейт биржи. Ожидается около часа даунтайма.
https://x.com/polymarketdevs/status/2045173502328594677?s=46
Что важно знать:
- Все открытые лимитки будут отменены при переключении
- V1 после миграции перестанет работать полностью
- Залог переезжает с USDC.e на pUSD (оборачивается через Collateral Onramp)
- Новые адреса контрактов и новая структура ордеров
- Если торгуете через API/SDK — обновить интеграцию надо до 22-го
Средства и позиции в безопасности. Новая версия уже открыта для тестов всем желающим.
По безопасности: контракты CTFv2 открыты, аудит от Cantina и Quantstamp, параллельно запущена багбаунти-программа на $5M.
Гайд по миграции: docs.polymarket.com/v2-migration
#poly_updates | POLYANA
Крупнейший апдейт биржи. Ожидается около часа даунтайма.
https://x.com/polymarketdevs/status/2045173502328594677?s=46
Что важно знать:
- Все открытые лимитки будут отменены при переключении
- V1 после миграции перестанет работать полностью
- Залог переезжает с USDC.e на pUSD (оборачивается через Collateral Onramp)
- Новые адреса контрактов и новая структура ордеров
- Если торгуете через API/SDK — обновить интеграцию надо до 22-го
Средства и позиции в безопасности. Новая версия уже открыта для тестов всем желающим.
По безопасности: контракты CTFv2 открыты, аудит от Cantina и Quantstamp, параллельно запущена багбаунти-программа на $5M.
Гайд по миграции: docs.polymarket.com/v2-migration
#poly_updates | POLYANA
Архив исторических данных стаканов (orderbooks) Polymarket.
В архиве публикуются почасовые снапшоты стаканов всех рынков.
Что внутри
• Orderbook данные Polymarket
• Hourly snapshots (обновление каждый час)
• Формат Parquet — удобный для аналитики и обработки больших данных
• Бесплатный доступ для исследований
Для чего можно использовать
— research и анализ prediction-маркетов
— бэктестинг торговых стратегий
— анализ ликвидности рынков
— обучение ML / AI моделей
— построение аналитических инструментов
Ссылки
Архив данных
https://archive.pmxt.dev/
Основной сайт
https://www.pmxt.dev/
GitHub
https://github.com/pmxt-dev/pmxt
Документация
https://www.pmxt.dev/docs
#poly_updates | POLYANA
В архиве публикуются почасовые снапшоты стаканов всех рынков.
Что внутри
• Orderbook данные Polymarket
• Hourly snapshots (обновление каждый час)
• Формат Parquet — удобный для аналитики и обработки больших данных
• Бесплатный доступ для исследований
Для чего можно использовать
— research и анализ prediction-маркетов
— бэктестинг торговых стратегий
— анализ ликвидности рынков
— обучение ML / AI моделей
— построение аналитических инструментов
Ссылки
Архив данных
https://archive.pmxt.dev/
Основной сайт
https://www.pmxt.dev/
GitHub
https://github.com/pmxt-dev/pmxt
Документация
https://www.pmxt.dev/docs
#poly_updates | POLYANA
This media is not supported in your browser
VIEW IN TELEGRAM
Полик запускает торговлю фьючами
POLYANA
Polymarket переезжает на CLOB V2 — 28 апреля, ~11:00 UTC Крупнейший апдейт биржи. Ожидается около часа даунтайма. https://x.com/polymarketdevs/status/2045173502328594677?s=46 Что важно знать: - Все открытые лимитки будут отменены при переключении - V1 после…
Polymarket проводит масштабное обновление биржи
Платформа перешла с USDC.e на Polymarket USD (pUSD) с конвертацией 1:1 к USDC, при этом для большинства пользователей процесс прошёл автоматически, а для API-трейдеров доступен через wrap. В рамках обновления были очищены ордербуки и временно приостанавливались торги, после чего система запущена с обновлённой архитектурой.
На фоне запуска платформа выделила 1 000 000 долларов вознаграждений для пользователей, которые обеспечат ликвидность в первые 24 часа после обновления, что делает текущий момент ключевым для активных участников рынка.
#poly_updates | POLYANA
Платформа перешла с USDC.e на Polymarket USD (pUSD) с конвертацией 1:1 к USDC, при этом для большинства пользователей процесс прошёл автоматически, а для API-трейдеров доступен через wrap. В рамках обновления были очищены ордербуки и временно приостанавливались торги, после чего система запущена с обновлённой архитектурой.
На фоне запуска платформа выделила 1 000 000 долларов вознаграждений для пользователей, которые обеспечат ликвидность в первые 24 часа после обновления, что делает текущий момент ключевым для активных участников рынка.
#poly_updates | POLYANA
Эксплойт Polymarket
Появилась информация о крупной утечке данных с Polymarket. По заявлению злоумышленника (xorcat), было извлечено более 300,000 записей.
- Более 10 000 пользовательских профилей с персональными данными
- 250 000+ активных CLOB-рынков и ~48 500 gamma-маркетов.
- 4111 комментариев с привязкой к профилям.
- 9000 профилей подписчиков.
- 1000 отчётов (включая 58 уникальных ETH-адресов и admin-индикаторы).
- 292 события с адресами отправителей и резолверов.
- 100 конфигураций наград (USDC-контракты, ставки).
- Утечка внутренних user ID
Общий объём: ~750 MB (JSON), сжатый архив ~8.3 MB
Причина — уязвимости API:
- Использование скрытых (undocumented) endpoints
- Обход пагинации (limit без ограничений, нет rate limit)
- Ошибка CORS (разрешены любые origin + credentials)
- Доступ к чувствительным endpoint без авторизации
Подтверждённые уязвимости (есть POC):
- SSRF через Axios (CVE-2025-62718, CVSS 9.9)
- Обход авторизации в Next.js (CVE-2024-51479)
- Открытые endpoints:
– /comments/{id} → утечка профилей
– /reports → активность пользователей + admin-индикаторы
– /v1/data/followers/{address} → полный соцграф
Дополнительно опубликовали:
- Полные дампы данных (markets, profiles, events и др.)
- 5 рабочих эксплойтов (CORS, SSRF, auth bypass, DoS, WebSocket)
- Скрипт для автоматического сбора новых данных
- Red Team отчёт с маппингом на MITRE ATT&CK
#poly_updates | POLYANA
Появилась информация о крупной утечке данных с Polymarket. По заявлению злоумышленника (xorcat), было извлечено более 300,000 записей.
- Более 10 000 пользовательских профилей с персональными данными
- 250 000+ активных CLOB-рынков и ~48 500 gamma-маркетов.
- 4111 комментариев с привязкой к профилям.
- 9000 профилей подписчиков.
- 1000 отчётов (включая 58 уникальных ETH-адресов и admin-индикаторы).
- 292 события с адресами отправителей и резолверов.
- 100 конфигураций наград (USDC-контракты, ставки).
- Утечка внутренних user ID
Общий объём: ~750 MB (JSON), сжатый архив ~8.3 MB
Причина — уязвимости API:
- Использование скрытых (undocumented) endpoints
- Обход пагинации (limit без ограничений, нет rate limit)
- Ошибка CORS (разрешены любые origin + credentials)
- Доступ к чувствительным endpoint без авторизации
Подтверждённые уязвимости (есть POC):
- SSRF через Axios (CVE-2025-62718, CVSS 9.9)
- Обход авторизации в Next.js (CVE-2024-51479)
- Открытые endpoints:
– /comments/{id} → утечка профилей
– /reports → активность пользователей + admin-индикаторы
– /v1/data/followers/{address} → полный соцграф
Дополнительно опубликовали:
- Полные дампы данных (markets, profiles, events и др.)
- 5 рабочих эксплойтов (CORS, SSRF, auth bypass, DoS, WebSocket)
- Скрипт для автоматического сбора новых данных
- Red Team отчёт с маппингом на MITRE ATT&CK
#poly_updates | POLYANA
Патчим py_clob_client под скорость
Polymarket прячется за Cloudflare и держит CLOB на стандартной питон-сборке requests — из коробки это означает:
- TLS-челленджи и периодические 403 от CF
- пересоздание TCP сокета на каждый POST.
На активной работе с ордерами набегает 200-400мс потерь на ровном месте.
Решение: HTTP-handler в py_clob_client на curl_cffi
impersonate="chrome120" подделывает TLS-fingerprint (JA3/JA4 + HTTP/2 settings) под живой Chrome. CF перестаёт ставить челленджи, 403'шек больше нет. Бонусом — Session держит keep-alive: следующий запрос не платит handshake.
2. Pre-sign с кешем - главная победа по latency
Каждый presign на CLOB — это EIP-712 подпись через eth_account + сборка ордера = 100-150мс CPU. Если основной цикл регулярно зовёт presign_order, чтобы держать готовую подпись наготове, то перед самим выстрелом приходят ещё одна-две пересайны, хотя свежая подпись с прошлой итерации ещё валидна. В инструментарии стадия pre_fire стабильно сидела на 200-260мс.
Коротко-замыкание сверху функции:
TTL стоит ниже 5с-порога, который fire_presigned использует для протухания - кеш гарантированно не остынет между обновлениями.
3. Затянули петли и сшивку
HTTP к коллектору новый сокет каждый раз (requests.Session + pool_maxsize=2)
Persistent session сама по себе срезала 2-5мс с каждого /snapshot, потому что keep-alive теперь работает end-to-end.
Результат:
7-step stopwatch с наносекундными timestamps на каждый ордер. До/после (медианы
На выходе имеем ~330мс отыграно на каждом запросе. На быстрых движениях это разница между "успел" и "не успел" = "заработал" и "не заработал"
#Skilled|POLYANA
Polymarket прячется за Cloudflare и держит CLOB на стандартной питон-сборке requests — из коробки это означает:
- TLS-челленджи и периодические 403 от CF
- пересоздание TCP сокета на каждый POST.
На активной работе с ордерами набегает 200-400мс потерь на ровном месте.
Решение: HTTP-handler в py_clob_client на curl_cffi
import py_clob_client_v2.http_helpers.helpers as clob_helpers
from curl_cffi import requests as curl_requests
_session = curl_requests.Session(impersonate="chrome120")
def patched_request(endpoint, method, headers=None, data=None, params=None):
headers = clob_helpers._overload_headers(method, headers)
resp = _session.request(method=method, url=endpoint, headers=headers,
data=data, params=params, timeout=15)
if resp.status_code != 200:
raise clob_helpers.PolyApiException(resp)
return resp.json()
clob_helpers.request = patched_request
impersonate="chrome120" подделывает TLS-fingerprint (JA3/JA4 + HTTP/2 settings) под живой Chrome. CF перестаёт ставить челленджи, 403'шек больше нет. Бонусом — Session держит keep-alive: следующий запрос не платит handshake.
2. Pre-sign с кешем - главная победа по latency
Каждый presign на CLOB — это EIP-712 подпись через eth_account + сборка ордера = 100-150мс CPU. Если основной цикл регулярно зовёт presign_order, чтобы держать готовую подпись наготове, то перед самим выстрелом приходят ещё одна-две пересайны, хотя свежая подпись с прошлой итерации ещё валидна. В инструментарии стадия pre_fire стабильно сидела на 200-260мс.
Коротко-замыкание сверху функции:
def presign_order(self, token_id, price, amount, ...):
cached = self._presigned.get(token_id)
if cached and (now - cached["ts"] < 1.5) and abs(cached["price"] - price) < 0.01:
return cached["signed"] # ← пропускаем подпись
# иначе подписываем как обычно 1.5с
TTL стоит ниже 5с-порога, который fire_presigned использует для протухания - кеш гарантированно не остынет между обновлениями.
3. Затянули петли и сшивку
параметр было стало
Collector loop 200ms 50ms → 10ms
Основной цикл 100ms 20ms
Client refresh 200ms 50ms
HTTP к коллектору новый сокет каждый раз (requests.Session + pool_maxsize=2)
Persistent session сама по себе срезала 2-5мс с каждого /snapshot, потому что keep-alive теперь работает end-to-end.
Результат:
7-step stopwatch с наносекундными timestamps на каждый ордер. До/после (медианы
до после
data_age 90ms 12ms (50→10мс поллинг)
decide 5ms 5ms
pre_fire 230ms 25ms (пресайн-кеш)
dispatch 15ms 12ms
submit→resp 180ms 135ms (curl_cffi/keep-alive)
db 3ms 3ms
─────────────────────────────────────
TOTAL ~520ms ~190ms
На выходе имеем ~330мс отыграно на каждом запросе. На быстрых движениях это разница между "успел" и "не успел" = "заработал" и "не заработал"
#Skilled|POLYANA
⚠️ Осторожно — возможны сбои на Polymarket
Похоже, лёг 5-минутный BTC-рынок (BTC Up/Down 5m). Что наблюдаем прямо сейчас:
• Стакан завис на 50¢ / 51¢ и не переоценивается — цена стоит на месте, даже когда BTC уходит далеко от таргета (видели разницу ~$90 при сохранении 50/51). • Объём $0, реальных сделок нет («Последнее: --»). • Книга идентична при повторных запросах — маркет-мейкер не двигается.
Что делать: • Не торгуйте 5м BTC-рынок, пока не восстановится — ордера могут не исполниться, а котировки не отражают реальную вероятность. • Возможно затронуты и другие 5м крипто-рынки — проверяйте стакан перед входом (объём, переоценку под спот). • По открытым позициям резолюция (Chainlink), скорее всего, отработает штатно — но входы/выходы сейчас ненадёжны.
Следим, отпишем когда оживёт.
POLYANA
Похоже, лёг 5-минутный BTC-рынок (BTC Up/Down 5m). Что наблюдаем прямо сейчас:
• Стакан завис на 50¢ / 51¢ и не переоценивается — цена стоит на месте, даже когда BTC уходит далеко от таргета (видели разницу ~$90 при сохранении 50/51). • Объём $0, реальных сделок нет («Последнее: --»). • Книга идентична при повторных запросах — маркет-мейкер не двигается.
Что делать: • Не торгуйте 5м BTC-рынок, пока не восстановится — ордера могут не исполниться, а котировки не отражают реальную вероятность. • Возможно затронуты и другие 5м крипто-рынки — проверяйте стакан перед входом (объём, переоценку под спот). • По открытым позициям резолюция (Chainlink), скорее всего, отработает штатно — но входы/выходы сейчас ненадёжны.
Следим, отпишем когда оживёт.
POLYANA
YES token: best_bid=0.50 best_ask=0.51 44 bids / 45 asks (63ms)
NO token: best_bid=0.49 best_ask=0.50 45 bids / 44 asks (46ms)