Канал создавался для личной рефлексии - теперь открываем его публично.
На Polymarket мы уже более 6 месяцев. Прошли через всё: от первых факапов до рабочего софта. Теперь делимся - чтобы ваш путь был проще.
Всё началось после того, как мы наткнулись на аккаунт Gabagool22. Увидели результаты и задались вопросом:
"А почему бы не написать что-то похожее?" - и понеслось.
Методом проб и ошибок выяснили, что 15-минутные маркеты - не наше. Причина простая: за 15 минут рынок успевает несколько раз сменить направление, шум перекрывает сигнал, а удерживать статистическое преимущество на таком горизонте значительно сложнее. В итоге остановились на 5-минутных опционах на BTC - достаточно коротко, чтобы работал моментум, и достаточно долго, чтобы успеть зайти.
На канале разберём всё, что нужно для работы с Polymarket на техническом уровне: архитектуру CLOB и matching engine, исполнение ордеров через py-clob-client с паттерном presign -> fire, микроструктуру рынка и динамику спреда, data pipeline от Binance WS до SQLite, инфраструктуру и деплой, все нужные эндпоинты и инструменты - а также бэктест с реальными результатами.
Любую идею можно реализовать. Если не сделаете вы - сделает кто-то другой.
POLYANA
На Polymarket мы уже более 6 месяцев. Прошли через всё: от первых факапов до рабочего софта. Теперь делимся - чтобы ваш путь был проще.
Всё началось после того, как мы наткнулись на аккаунт Gabagool22. Увидели результаты и задались вопросом:
"А почему бы не написать что-то похожее?" - и понеслось.
Методом проб и ошибок выяснили, что 15-минутные маркеты - не наше. Причина простая: за 15 минут рынок успевает несколько раз сменить направление, шум перекрывает сигнал, а удерживать статистическое преимущество на таком горизонте значительно сложнее. В итоге остановились на 5-минутных опционах на BTC - достаточно коротко, чтобы работал моментум, и достаточно долго, чтобы успеть зайти.
На канале разберём всё, что нужно для работы с Polymarket на техническом уровне: архитектуру CLOB и matching engine, исполнение ордеров через py-clob-client с паттерном presign -> fire, микроструктуру рынка и динамику спреда, data pipeline от Binance WS до SQLite, инфраструктуру и деплой, все нужные эндпоинты и инструменты - а также бэктест с реальными результатами.
Любую идею можно реализовать. Если не сделаете вы - сделает кто-то другой.
POLYANA
Навiгацiя по каналу.
Обирайте тему, яка вас цікавить, та натискайте на заголовок, щоб перейти до поста. Всі матеріали поділені за рівнями складності:
#Entry
Що таке BTC Up/Down на Polymarket
Як читати стакан на Polymarket
#Intermediate
Інфраструктура торгового бота для Polymarket BTC 5-хв бінарних опціонів
Real-time волатильність: 4 методи + Order Flow Imbalance з Binance
Підводний камінь: Chainlink ≠ Binance. Архітектура бота та Корисні ендпоінти
#Skilled
Iншi рубрики:
#updated_data
11.03-24.03
#poly_updates
Fees update 30.03
POLYANA
Обирайте тему, яка вас цікавить, та натискайте на заголовок, щоб перейти до поста. Всі матеріали поділені за рівнями складності:
#Entry
Що таке BTC Up/Down на Polymarket
Як читати стакан на Polymarket
#Intermediate
Інфраструктура торгового бота для Polymarket BTC 5-хв бінарних опціонів
Real-time волатильність: 4 методи + Order Flow Imbalance з Binance
Підводний камінь: Chainlink ≠ Binance. Архітектура бота та Корисні ендпоінти
#Skilled
Iншi рубрики:
#updated_data
11.03-24.03
#poly_updates
Fees update 30.03
POLYANA
Что такое BTC Up/Down на Polymarket
Каждые 5 минут на Polymarket открывается новый рынок. Вопрос простой: "BTC будет выше или ниже через 5 минут?"
Два токена: YES (вверх) и NO (вниз). Цена каждого - от $0.01 до $0.99.
Когда 5 минут заканчиваются - происходит РЕЗОЛВ.
Победивший токен становится $1.00.
Проигравший - $0.00.
Всё. Без нюансов.
Пример
BTC стоит $69,200. Открылось ОКНО 14:00–14:05.
Через 3 минуты BTC вырос до $69,250. Ты считаешь, что он останется выше. Покупаешь YES за $0.75.
Сценарий А: BTC в конце выше → YES = $1.00. Ты заработал +$0.25.
Сценарий Б: BTC упал ниже → YES = $0.00. Ты потерял -$0.75.
Где найти эти рынки
Каждое ОКНО - отдельный рынок с уникальным идентификатором. Находим через GAMMA API:
Кто устанавливает цену?
Не букмекер. Не Polymarket. Цену YES и NO определяет рынок - такие же трейдеры, как и ты. Они выставляют ордера в СТАКАН (книгу заявок), и из этого формируется цена.
Если все уверены, что BTC пойдет вверх - YES будет стоить $0.90+. Если есть неопределенность - где-то $0.50.
И вот здесь самое главное: рынок не всегда прав. Иногда YES стоит $0.65, а реальная вероятность Up - 85%. Эта разница - то, на чем можно зарабатывать.
#Entry | POLYANA
Каждые 5 минут на Polymarket открывается новый рынок. Вопрос простой: "BTC будет выше или ниже через 5 минут?"
Два токена: YES (вверх) и NO (вниз). Цена каждого - от $0.01 до $0.99.
Когда 5 минут заканчиваются - происходит РЕЗОЛВ.
Победивший токен становится $1.00.
Проигравший - $0.00.
Всё. Без нюансов.
Пример
BTC стоит $69,200. Открылось ОКНО 14:00–14:05.
Через 3 минуты BTC вырос до $69,250. Ты считаешь, что он останется выше. Покупаешь YES за $0.75.
Сценарий А: BTC в конце выше → YES = $1.00. Ты заработал +$0.25.
Сценарий Б: BTC упал ниже → YES = $0.00. Ты потерял -$0.75.
Где найти эти рынки
Каждое ОКНО - отдельный рынок с уникальным идентификатором. Находим через GAMMA API:
import requests, time
# Поточне 5-хв ВІКНО
now = int(time.time())
window_start = now - (now % 300)
slug = f"btc-updown-5m-{window_start}"
resp = requests.get(
"https://gamma-api.polymarket.com/events",
params={"slug": slug}
)
event = resp.json()[0]
for market in event["markets"]:
title = market["groupItemTitle"]
token_id = market["clobTokenIds"]
print(f"{title}: {token_id}")
# Виведе:
# Up: 28982754460...
# Down: 48776888529...
Кто устанавливает цену?
Не букмекер. Не Polymarket. Цену YES и NO определяет рынок - такие же трейдеры, как и ты. Они выставляют ордера в СТАКАН (книгу заявок), и из этого формируется цена.
Если все уверены, что BTC пойдет вверх - YES будет стоить $0.90+. Если есть неопределенность - где-то $0.50.
И вот здесь самое главное: рынок не всегда прав. Иногда YES стоит $0.65, а реальная вероятность Up - 85%. Эта разница - то, на чем можно зарабатывать.
#Entry | 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_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