Ship a Prediction Market Bot on Hyperliquid in 100 Lines
By @CoinMarketMan - 14-Jul-2026
Зберіть бот для ринку передбачень на Hyperliquid у 100 рядків
Більшість туторіалів з ринків передбачень зупиняються на «встановіть SDK і розмістіть ордер». Це найлегша частина. Складніше — знати, якими ринками торгувати і коли ціна хибна. HIP-4 ринки результатів на Hyperliquid працюють на тому самому механізмі зіставлення, що й перпи та спот, а отже, ви можете накладати дані про позиціонування когорт поверх бінарних угод за результатами, щоб вловлювати хибне ціноутворення, яке суто трейдери ринків передбачень не здатні побачити.
Цей посібник проведе вас крізь побудову Python-бота, який знаходить HIP-4 ринки, зчитує книги ордерів, перевіряє, що робить Smart Money на базовому активі, і розміщує угоди, коли сигнали збігаються. Усе це вміщується приблизно в 100 рядків робочого коду.
Як насправді працюють HIP-4 ринки результатів
HIP-4 запустився на Hyperliquid mainnet 2 травня 2026 року. Кожен ринок ставить бінарне питання: чи перевищить BTC цільову ціну до певного терміну закінчення? Трейдери купують позиції YES або NO, використовуючи USDC як заставу. Після закінчення терміну переможна сторона розраховується по 1 USDC за одиницю, а сторона, що програла, — по 0.
Ціна токена YES у будь-який момент відображає імпліцитну ймовірність настання події за оцінкою ринку. Якщо YES торгується по $0.65, ринок закладає 65% шанс на те, що подія відбудеться. Відповідний токен NO має торгуватися близько $0.35, оскільки обидві сторони поділяють об'єднану книгу ордерів, де купівля YES за ціною p дзеркально відображає продаж NO за ціною 1-p.
Три речі відрізняють HIP-4 від Polymarket. По-перше, розрахунок детермінований: набір валідаторів Hyperliquid вирішує кожен контракт відносно заздалегідь визначеного об'єктивного джерела даних — без вікна для суперечок і без голосування токенами. По-друге, немає кредитного плеча та ризику ліквідації. Позиції повністю забезпечені при відкритті. По-третє, на даний момент комісії за відкриття позицій відсутні, хоча builder codes все ще застосовуються до угод.
Система кодування, яку потрібно зрозуміти правильно
HIP-4 використовує систему кодування з трьох форматів, яка ставить у глухий кут кожного розробника з першого разу. Кожен результат має ідентифікатор, а кожна сторона (YES = 0, NO = 1) виробляє числове кодування за формулою: encoding = 10 * outcome_id + side.
Але формат, який ви використовуєте, залежить від контексту. Для розміщення ордерів і запитів книги ордерів додається префікс #, тому outcome 2 YES стає #20. Для пошуку балансів додається префікс +, тому та сама позиція стає +20. Для внутрішніх ідентифікаторів активів SDK кодування додається до 100,000,000.
Ці формати не взаємозамінні. Використання #20 для пошуку балансу або +20 для ордера мовчки завершиться невдачею без жодного повідомлення про помилку. Ось допоміжні функції:
def encode_coin(outcome_id: int, side: int) -> str:
"""Order placement and book queries."""
return f"#{10 * outcome_id + side}"
def encode_balance_coin(outcome_id: int, side: int) -> str:
"""Balance lookups only."""
return f"+{10 * outcome_id + side}"
def encode_asset_id(outcome_id: int, side: int) -> int:
"""SDK internal mapping."""
return 100_000_000 + 10 * outcome_id + side
Необхідний патч SDK: Офіційний hyperliquid-python-sdk не підтримує HIP-4 нативно. Його карта coin_to_asset будується лише на основі spot_meta, тому кодування результатів, що починаються з 100,000,000, невідомі резолверу. Вам потрібно отримати outcomeMeta і вручну вставити відображення. Код нижче вирішує це.
Виявлення активних ринків
Перше, що ваш бот має зробити, — це знайти, які ринки існують. Ендпоінт outcomeMeta повертає кожен активний і вирішений результат, включно з ідентифікатором результату, описом, розділеним вертикальною рискою (клас, базовий актив, дата закінчення, цільова ціна), і специфікаціями сторін.
import httpx
BASE_URL = "https://api.hyperliquid.xyz"
def fetch_outcome_meta():
r = httpx.post(
f"{BASE_URL}/info",
json={"type": "outcomeMeta"},
timeout=10.0,
)
return r.json()
def parse_active_markets(meta):
markets = []
for o in meta.get("outcomes", []):
desc = o.get("description", "")
parts = desc.split("|")
if len(parts) >= 4:
markets.append({
"outcome_id": o["outcome"],
"underlying": parts[1].strip(),
"expiry": parts[2].strip(),
"target": parts[3].strip(),
})
return markets
Це дає вам список усіх ринків результатів на платформі. Фільтруйте за терміном закінчення, щоб зосередитися на ринках, які ще не вирішені. Наприклад, щоденний ринок BTC розраховується щодня о 06:00 UTC відносно ціни BTC mark.
Зчитування книги ордерів та імпліцитної ймовірності
Кожна сторона результату має власну книгу ордерів. Ви запитуєте її так само, як і спот-книгу, просто використовуючи формат монети #N:
def fetch_book(coin: str):
r = httpx.post(
f"{BASE_URL}/info",
json={"type": "l2Book", "coin": coin},
timeout=10.0,
)
levels = r.json().get("levels", [[], []])
bids = [(float(p), float(s)) for p, s in levels[0]]
asks = [(float(p), float(s)) for p, s in levels[1]]
return bids, asks
def get_mid_price(coin: str) -> float:
bids, asks = fetch_book(coin)
if bids and asks:
return (bids[0][0] + asks[0][0]) / 2
return 0.0
# Приклад: outcome 2
yes_mid = get_mid_price("#20")
no_mid = get_mid_price("#21")
print(f"YES: {yes_mid:.4f}, NO: {no_mid:.4f}, sum: {yes_mid + no_mid:.4f}")
На справедливому ринку середня ціна YES + середня ціна NO має дорівнювати приблизно 1.0. Будь-яке стійке відхилення — це або артефакт комісій, або хибне ціноутворення, варте вивчення. Спред між двома сторонами — ваш перший сигнал.
Накладання сигналів когорт поверх цін результатів
Саме тут боти ринків передбачень стають цікавими. Звичайний трейдер ринку передбачень дивиться на книгу ордерів і, можливо, на зовнішні новини. Розробник з доступом до даних когорт може побачити щось інше: що насправді роблять найприбутковіші гаманці на Hyperliquid з базовим активом.
Уявіть ринок результатів BTC, який закладає 55% ймовірність того, що BTC перевищить цільову ціну до терміну закінчення. Це найкраще припущення ринку. Але наші дані когорт показують, що гаманці Money Printer (ті, хто має понад $1M загального прибутку) мають значну чисту довгу позицію на перпи BTC, тоді як гаманці Giga-Rekt (ті, хто має понад $1M загальних збитків) мають чисту коротку. Коли трейдери з найкращими показниками розходяться з імпліцитною ймовірністю ринку передбачень, це розходження варте уваги.
import requests
HT_BASE = "https://ht-api.coinmarketman.com/api/external"
HT_TOKEN = "your_hypertracker_jwt"
def get_cohort_bias(coin: str = "BTC"):
"""Fetch Money Printer and Giga-Rekt positioning."""
headers = {"Authorization": f"Bearer {HT_TOKEN}"}
r = requests.get(
f"{HT_BASE}/cohort/metrics",
params={"coin": coin},
headers=headers,
)
data = r.json()
# Extract cohort-level long/short ratio
money_printer = next(
(c for c in data if c.get("cohortId") == 8), None
)
giga_rekt = next(
(c for c in data if c.get("cohortId") == 15), None
)
return money_printer, giga_rekt
Ідентифікатори когорт походять із 16-сегментної системи класифікації HyperTracker: 8 сегментів за розміром перп-капіталу (від Shrimp до Leviathan) і 8 за загальним PnL (від Money Printer до Giga-Rekt). Money Printer — це когорта 8, Giga-Rekt — когорта 15. Коли ви бачите, що Money Printer активно займає одну сторону, а ринок результатів оцінений на протилежну, саме в цьому розриві і полює ваш бот.
Розміщення ордерів на HIP-4 ринках
Розміщення ордерів відповідає тому ж патерну, що й спот-торгівля, з кількома специфічними для HIP-4 обмеженнями. Розміри мають бути цілими числами (без дробових одиниць). Мінімальний умовний обсяг становить $10 USDC, тобто size * price >= 10. Ціни варіюються від 0.001 до 0.999.
from hyperliquid.exchange import Exchange
from eth_account import Account
def place_outcome_order(exchange, outcome_id, side, is_buy, price, size):
coin = encode_coin(outcome_id, side)
result = exchange.order(
coin,
is_buy=is_buy,
sz=size,
limit_px=price,
order_type={"limit": {"tif": "Gtc"}},
)
return result
# Приклад: купити 25 YES на outcome 2 за $0.45
# Вартість: 25 * 0.45 = $11.25 (вище мінімуму $10)
# Якщо YES перемагає: отримати 25 * $1 = $25, прибуток = $13.75
result = place_outcome_order(exchange, 2, 0, True, 0.45, 25)
Пам'ятайте: позиції HIP-4 повністю забезпечені заставою. Кредитного плеча немає, ризику ліквідації немає. Ваш максимальний збиток за будь-якою угодою дорівнює рівно тому, що ви заплатили при відкритті. Це робить боти ринків передбачень простішими для осмислення, ніж боти на перпи, — вам ніколи не потрібно турбуватися про підтримку маржі чи примусове закриття.
Зібрати все докупи: повний бот
Ось повний цикл. Бот знаходить активні ринки, зчитує книги ордерів, перевіряє позиціонування когорт за базовим активом і розміщує угоду, коли імпліцитна ймовірність ринку передбачень розходиться з тим, що насправді роблять найприбутковіші трейдери.
import time
def run_bot(exchange, info):
"""Main loop: discover, price, signal, execute."""
meta = fetch_outcome_meta()
markets = parse_active_markets(meta)
for market in markets:
oid = market["outcome_id"]
underlying = market["underlying"]
# Step 1: Get implied probability
yes_mid = get_mid_price(encode_coin(oid, 0))
no_mid = get_mid_price(encode_coin(oid, 1))
if yes_mid == 0 or no_mid == 0:
continue
# Step 2: Get cohort positioning
mp, gr = get_cohort_bias(underlying)
if not mp or not gr:
continue
# Step 3: Simple divergence check
# Thresholds below are illustrative -- calibrate via backtesting
mp_long_pct = mp.get("longPct", 50)
if mp_long_pct > 70 and yes_mid < 0.50: # example values
# Example sizing to meet $10 minimum notional
size = max(10, int(10 / yes_mid) + 1)
print(f"Signal: {underlying} MP {mp_long_pct}% long, "
f"YES at {yes_mid:.2f}. Buying YES.")
place_outcome_order(exchange, oid, 0, True, yes_mid, size)
time.sleep(300) # 5-minute cycle
# Patch SDK and run
info, exchange = make_clients(PRIVATE_KEY, ADDRESS, BASE_URL)
while True:
run_bot(exchange, info)
Поріг розходження та логіка розміщення тут наведені для прикладу. У продакшені ви б відкалібрували їх на основі бектестингу та власної толерантності до ризику. Суть — в архітектурі: ціноутворення ринку передбачень + позиціонування когорт = шар сигналів, до якого звичайні трейдери ринків передбачень не мають доступу.
Крайні випадки та підводні камені
Патч SDK є обов'язковим
Офіційний hyperliquid-python-sdk не знає про активи HIP-4. Вам потрібно отримати outcomeMeta під час запуску і вставити кодування кожного результату в карти coin_to_asset і name_to_coin SDK. Без цього патча SDK відхилятиме ваші ордери з незрозумілою помилкою про невідомі монети.
def make_clients(private_key, address, base_url):
account = Account.from_key(private_key)
info = Info(base_url, skip_ws=True)
exchange = Exchange(account, base_url, account_address=address)
meta = fetch_outcome_meta()
for o in meta.get("outcomes", []):
for side in (0, 1):
coin = encode_coin(o["outcome"], side)
asset_id = encode_asset_id(o["outcome"], side)
info.coin_to_asset[coin] = asset_id
info.name_to_coin[coin] = coin
exchange.info.coin_to_asset[coin] = asset_id
exchange.info.name_to_coin[coin] = coin
return info, exchange
Тільки цілочисельні розміри
На відміну від позицій на перпи, де можна торгувати дробовими розмірами монет, HIP-4 вимагає цілочисельних одиниць. Якщо розрахований розмір виходить 22.7, округліть до 23. Завжди перевіряйте мінімальний умовний обсяг: size * price >= 10 USDC.
Розрахунок відбувається автоматично
Вам не потрібно викликати функцію погашення. Після закінчення терміну USDC автоматично зараховується на ваш рахунок залежно від того, яка сторона перемогла. Без комісій за газ, без транзакції для отримання.
Builder codes теж працюють тут
Якщо ви будуєте фронтенд поверх HIP-4, builder codes заробляють комісії на продажних ордерах так само, як і при спот-торгівлі. Це означає, що кожна платформа ринків передбачень, побудована на Hyperliquid, може монетизуватися через builder codes, не стягуючи плату безпосередньо з користувачів.
Додайте когортний інтелект до свого бота для ринку передбачень
API HyperTracker надає вам дані про позиціонування когорт, які перетворюють звичайні боти ринків передбачень на системи, обізнані про Smart Money. 16 поведінкових сегментів, що оновлюються кожні 5 хвилин, доступні одним викликом API.
Почати будувати з HyperTracker
Ландшафт ринків передбачень все ще на ранньому етапі. HIP-4 поділяє той самий механізм зіставлення, модель акаунтів та поверхню API, що й ринки перпів і спот Hyperliquid, а отже, усе, що ви вже знаєте про побудову на Hyperliquid, переноситься напряму. Єдині нові концепції — це схема кодування, цілочисельне розміщення та той факт, що ваші позиції не можуть бути ліквідовані. Для розробників, які вже працюють з даними когорт, ринки передбачень — це просто ще один інструмент, на який можна накладати сигнали. Перевага не в самому ринку передбачень. Вона в тому, щоб знати, що робить Smart Money на базовому активі, перш ніж ринок результатів встигне це врахувати в ціні.