Home>Blog>Your Copy Trading Bot Will Break. Here's How to Build One That Doesn't.
Your Copy Trading Bot Will Break. Here's How to Build One That Doesn't.

Your Copy Trading Bot Will Break. Here's How to Build One That Doesn't.

By @CoinMarketMan - 08-Jul-2026

Ваш бот для копітрейдингу зламається. Ось як побудувати такий, що не зламається.

Побудувати бот для копітрейдингу на Hyperliquid — справа на одну добу. Цикл опитування — це десь 50 рядків Python: отримати позиції гаманця, порівняти їх з локальним станом, дублювати дельту. Кожна open-source реалізація на GitHub слідує приблизно тій самій схемі, і більшість із них чудово працює в перший тиждень тестування.

Потім відбувається одна з п'яти речей. Провідний гаманець закриває позицію між інтервалами опитування, і ви тримаєте застарілу угоду через каскад ліквідацій. Гаманець, який ви копіюєте, хеджує на іншому майданчику, тому те, що виглядає як спрямована ставка, насправді є однією ногою нейтральної позиції. Або плече гаманця має сенс для рахунку на $3M, але призводить до маржин-колу на вашому рахунку в $10K, бо ваш бот скопіював напрямок, не коригуючи розмір.

Цикл опитування — не найскладніша частина. Рівень ризику навколо нього — ось що потребує місяців для правильного налаштування, і саме цю частину більшість туторіалів повністю пропускає.

Цей гайд охоплює чотиришарову архітектуру бота для копітрейдингу, яка справляється зі структурними режимами відмов, з конкретним кодом для onchain-інфраструктури Hyperliquid та API когортної аналітики HyperTracker. Якщо ви вже побудували базовий цикл і спостерігали, як він ламається у продакшні, — це той самий відсутній рівень.

Чому Hyperliquid — найкращий майданчик для копітрейдингу

Копітрейдинг вимагає прозорих даних про позиції. На централізованій біржі копітрейдинг можливий лише якщо сама біржа реалізує його як функцію, відбирає "провідних трейдерів" і надає доступ до їхніх позицій через власну систему. На Hyperliquid кожна позиція є onchain і доступна для запиту за замовчуванням. Вам не потрібен дозвіл біржі, щоб бачити, що робить будь-який гаманець.

Повністю onchain стакан ордерів Hyperliquid обробляє близько 200 000 ордерів на секунду. Кожне виконання, кожне скасування, кожна зміна позиції — це верифікована подія в мережі. Для копітрейдингу конкретно це означає дві речі: ви можете опитувати позиції будь-якого гаманця без API-ключа від біржі, і ви можете переконатись, що виконання вашого бота справді відбулось onchain, а не довіряти офчейн-движку матчингу.

Мінімальний розмір ордера на Hyperliquid становить $10 у номінальній вартості. Це важливо, бо пропорційний розмір на малому рахунку може давати торгові розміри нижче цього порогу. Ваш бот повинен обробляти це коректно: пропустити угоду, залогувати її і рухатись далі.

Чотиришарова архітектура

Бот для копітрейдингу, який виживає в живій торгівлі, має чотири окремі рівні. Кожен із них може зламатись незалежно, а це означає, що кожен потребує власної обробки помилок і логування.

Copy Bot Architecture

Рівень 1: Пошук гаманців

Якість системи копітрейдингу повністю залежить від вибору гаманців. Бездоганний движок виконання, що дублює поганий гаманець, буде стабільно втрачати гроші. Рівень пошуку фільтрує всю екосистему Hyperliquid до кількох гаманців, вартих уваги.

Почніть з таблиці лідерів. Ендпойнт /leaderboards/perp-pnl HyperTracker ранжує гаманці за кумулятивним perp PnL за весь час, місяць, тиждень і день. PnL за весь час — найнадійніший фільтр, бо він охоплює результативність через кілька ринкових режимів, що відокремлює стійку перевагу від вдалого тижня.

Потім фільтруйте за когортою. HyperTracker класифікує кожен гаманець на Hyperliquid в одну з 16 поведінкових когорт: 8 за розміром рахунку (від Shrimp до Leviathan) і 8 за PnL за весь час (від Giga-Rekt до Money Printer). Для копітрейдингу когорта Money Printer (PnL за весь час понад $1M, segment ID 8) і когорта Smart Money ($100K до $1M, segment ID 9) — це два сегменти, де стійка прибутковість найімовірніше відображає реальну торгову перевагу, а не дисперсію.

import requests

API_BASE = "https://ht-api.coinmarketman.com/api/external"
headers = {"Authorization": "Bearer YOUR_JWT_TOKEN"}

# Smart Money wallets with open positions, sorted by PnL
response = requests.get(
    f"{API_BASE}/wallets",
    headers=headers,
    params={
        "segmentIds": 9,
        "hasOpenPositions": True,
        "orderBy": "perpPnl",
        "order": "desc",
        "limit": 20,
    },
)
candidates = response.json()

Після відбору кандидатів перевірте частоту їхньої активності. Гаманець, що торгує раз на місяць, генерує замало сигналів, щоб бути корисним. Гаманець, що щодня відкриває десятки позицій, генерує забагато шуму, і витрати на виконання з'їдять будь-яку перевагу. Корисний діапазон для копітрейдингу — гаманці, що відкривають кілька позицій на тиждень з чіткими входами і визначеними горизонтами утримання.

Рівень 2: Моніторинг позицій

Рівень моніторингу опитує позиції кожного цільового гаманця з регулярним інтервалом і виявляє зміни. П'ять хвилин — стандартний ритм для копітрейдингу без HFT. Швидше опитування ловить входи раніше, але збільшує витрати на API і додає шум від часткових виконань, що ще не осіли. Повільніше опитування пропускає короткочасні позиції і збільшує розбіжність у часі виходу.

Polling Loop Flow

Движок дифів — ядро цього рівня. Кожен цикл опитування він порівнює поточні позиції віддаленого гаманця з вашим локальним знімком і генерує набір подій: OPEN (з'явилась нова позиція), INCREASE (існуюча позиція зросла), REDUCE (існуюча позиція скоротилась) і CLOSE (позиція зникла). Кожен тип події потребує різної обробки на рівні виконання.

def diff_positions(local_state, remote_positions):
    events = []
    remote_map = {p["coin"]: p for p in remote_positions}
    local_map = {p["coin"]: p for p in local_state}

    for coin, pos in remote_map.items():
        if coin not in local_map:
            events.append({"type": "OPEN", "coin": coin, "position": pos})
        elif abs(float(pos["szi"]) - float(local_map[coin]["szi"])) > 0.001:
            if abs(float(pos["szi"])) > abs(float(local_map[coin]["szi"])):
                events.append({"type": "INCREASE", "coin": coin, "position": pos})
            else:
                events.append({"type": "REDUCE", "coin": coin, "position": pos})

    for coin in local_map:
        if coin not in remote_map:
            events.append({"type": "CLOSE", "coin": coin, "position": local_map[coin]})

    return events

Рівень 3: Шлюз ризику

Це рівень, який більшість туторіалів пропускає, і саме він визначає, чи виживе ваш бот у живій торгівлі. Шлюз ризику знаходиться між рівнем моніторингу і рівнем виконання. Він отримує торгові сигнали і або схвалює їх, або модифікує, або повністю відхиляє.

Пропорційний розмір. Найпоширеніша помилка в копітрейдингу — невідповідність розміру. Якщо провідний гаманець має $3M в equity і відкриває позицію вартістю $300K, для нього це виважений розподіл. Якщо ваш бот дублює ту саму суму в доларах на рахунку в $10K, ви маєте плече 30x на одній угоді. Пропорційний розмір масштабує позицію до відношення equity вашого рахунку:

def calculate_copy_size(lead_size, lead_equity, my_equity):
    ratio = my_equity / lead_equity
    scaled = lead_size * ratio
    # Hyperliquid minimum notional is $10
    if scaled * current_price < 10:
        return None  # Skip: below minimum
    return scaled

Обмеження плеча. Навіть при пропорційному розмірі провідний гаманець може використовувати плече, що перевищує вашу толерантність до ризику. Ваш бот повинен незалежно встановлювати стелю плеча для кожного активу, незалежно від того, яке плече використовує провідний гаманець. Якщо сигнал передбачає 20x, а ваша стеля — 5x, шлюз ризику відповідно зменшує розмір або пропускає угоду.

Ліміт експозиції. Одна позиція не повинна поглинати весь ваш рахунок. Встановіть максимальний відсоток equity на угоду. Коли шлюз ризику отримує сигнал, що перевищить цей ліміт, він або масштабує вниз, або відхиляє.

Автоматичний вимикач. Якщо equity вашого рахунку падає нижче порогового значення за одну сесію, бот повинен припинити відкривати нові позиції. Це аварійний вимикач, який не дає каскадним збиткам накопичитись у ліквідацію. Він не закриває існуючі позиції (це зафіксує збитки під час тимчасового просідання). Він просто ставить нові входи на паузу, доки ви не розглянете ситуацію вручну.

Рівень 4: Виконання

Рівень виконання перетворює схвалені сигнали на ордери на Hyperliquid за допомогою офіційного Python SDK. Ключова функція — exchange.order(), яка приймає актив, напрямок, розмір, ціну і тип ордера.

from hyperliquid.exchange import Exchange
from hyperliquid.info import Info
from hyperliquid.utils import constants

info = Info(constants.MAINNET_API_URL, skip_ws=True)
exchange = Exchange(wallet, constants.MAINNET_API_URL)

# Place a market buy order for ETH
result = exchange.order(
    coin="ETH",
    is_buy=True,
    sz=0.5,
    px=None,  # market order
    order_type={"limit": {"tif": "Ioc"}},  # IOC for market-like execution
)

Після виконання бот повинен перевірити заповнення. SDK повертає об'єкт статусу з resting (ордер розміщений у стакані) або filled (миттєве заповнення із середньою ціною). Для копітрейдингу у більшості випадків потрібні IOC-ордери (immediate-or-cancel), бо суть полягає в тому, щоб відповідати позиції провідного гаманця прямо зараз, а не чекати конкретної ціни.

Логуйте кожне виконання з ціною входу провідного гаманця, вашою ціною входу, часовою дельтою між виявленням і заповненням та слипаджем. Цей лог стане діагностичним інструментом для подальшого налаштування системи.

П'ять режимів відмови (і як з кожним впоратись)

Failure Modes

Кожен бот для копітрейдингу, побудований на базовому циклі опитування, вразливий до тих самих п'яти структурних відмов. Це не баги. Це обмеження дизайну, які вимагають архітектурних рішень.

Прихований хедж. Провідний гаманець відкриває лонг ETH на Hyperliquid і шорт ETH того ж розміру на іншому майданчику. Їхня нетто-експозиція — нуль. Ваша копія — naked long. Коли ETH падає, вони нічого не втрачають, а ви втрачаєте все. Виявити це лише з onchain-даних неможливо, бо хедж існує в іншій мережі або на централізованій біржі. Мітигація — використовувати сигнали когорт замість окремих гаманців. Коли вся когорта Smart Money зміщується нетто-лонг на ETH, це консенсусний сигнал від сотень гаманців. Всі вони одночасно хеджувати не можуть.

Затухання сигналу. Коли гаманець стає популярним для копітрейдингу, все більше ботів підхоплюють той самий сигнал. Провідний гаманець входить за $3 500. До того часу, як ваш бот виявляє і виконує, ціна вже $3 512, бо інші копітрейдери вже купили. Цей слипадж накопичується на кожній угоді і з часом знищує перевагу. Відстежуйте вашу ціну входу відносно ціни заповнення провідного гаманця. Якщо слипадж стабільно перевищує порогове значення, цей гаманець занадто переповнений, щоб копіювати його прибутково.

Невідповідність розміру. Вже розглянуто в розділі шлюзу ризику. Пропорційний розмір і незалежна стеля плеча — основний захист.

Розбіжність часу виходу. Провідний гаманець закриває позицію між інтервалами опитування. Ви пропускаєте сигнал виходу і тримаєте застарілу позицію. Якщо позиція розвертається протягом цього проміжку, ви несете збиток, якого провідний гаманець уникнув. Скорочуйте інтервал опитування для гаманців з активними позиціями (опитуйте кожну хвилину, коли скопійована позиція жива, і кожні п'ять хвилин в режимі очікування). Встановлюйте незалежні трейлінг-стопи на власні позиції як страховку.

Упередженість вцілілих. Таблиця лідерів показує гаманці, прибуткові прямо зараз. Вона не показує тисячі гаманців, що слідували схожим стратегіям і злились. Гаманець з $2M у загальному прибутку міг досягти цього через агресивне плече, яке врешті-решт повернеться до середнього. Фільтруйте за кількістю угод (мінімум сотні угод) і дивіться на просідання відносно загального PnL. Гаманець з високим PnL і масивними просіданнями — гірша ціль для копіювання, ніж гаманець з помірним PnL і рівною кривою equity.

Когортні сигнали як безпечніша альтернатива

Копітрейдинг з одного гаманця — це вибірка розміром в одиницю. Ви ставите на те, що одна адреса має стійку перевагу, не хеджує деінде і продовжуватиме торгувати за шаблоном, якому ваш бот може слідувати. Кожне припущення в цьому ланцюжку може зруйнуватись.

Сигнали когортного рівня агрегують позиціонування по сотнях гаманців з однаковим профілем прибутковості. Коли наші дані показують, що когорта Money Printer зміщується нетто-лонг на BTC, поки когорта Giga-Rekt (PnL за весь час нижче -$1M, segment ID 15) іде нетто-шорт по тому самому активу, це розходження є статистично значущим сигналом. Один гаманець може помилятись або хеджуватись. Ціла когорта прибутковості, що діє синхронно, — це інша якість інформації.

Ендпойнт /cohort-metrics HyperTracker дає вам агреговане позиціонування за сегментом, що оновлюється кожні 5 хвилин. Ви можете побудувати систему, що моніторить когортний баєс замість окремих гаманців, що усуває проблему прихованого хеджу, зменшує затухання сигналу (жодної окремої адреси для натовпу) і забезпечує диверсифіковане джерело сигналів.

# Fetch Smart Money cohort metrics for BTC
cohort_data = requests.get(
    f"{API_BASE}/cohort-metrics",
    headers=headers,
    params={"coin": "BTC", "segmentId": 9},
).json()

# Check net bias: are Smart Money wallets net long or short?
net_bias = cohort_data.get("netBias")

Компроміс — точність. Когортні сигнали говорять вам, що смарт-мані накопичує, але не вказують ціну входу, плече чи точний тайминг. Ви використовуєте когортні сигнали для спрямованого баєсу, а власні входи керуєте через технічні рівні, лімітні ордери або DCA.

Суха обкатка перед виходом у живу торгівлю

Розгортайте з реальними даними і симульованим виконанням щонайменше два тижні до того, як вкладати капітал. Суха обкатка виявляє проблеми, які бектестинг не може виявити: ліміти API під виробничим навантаженням, граничні випадки в движку дифів, коли Hyperliquid додає новий актив, і точність симуляції заповнення.

Логуйте кожну симульовану угоду з ціною на момент виявлення, ціною на момент симульованого заповнення (можна використовувати mid-price як проксі) і результатом, якби ви насправді виконали. Відстежуйте частку перемог, середній слипадж і максимальне просідання за весь період сухої обкатки. Якщо симульовані результати не відповідають вашим припущенням з бектестингу в розумних межах, розрив зазвичай криється у виконанні: слипадж, тайминг або граничні випадки розміру позиції, які бектест не захопив.

Кілька open-source ботів для копітрейдингу на Hyperliquid підтримують dry mode з коробки. Python-боти зазвичай реалізують це як трекер симульованого балансу, що обробляє реальні сигнали без відправки ордерів, що дозволяє вам перевірити весь пайплайн від пошуку гаманців через шлюз ризику до логіки виконання без ризику для капіталу.

Побудуйте свою систему копітрейдингу з когортною аналітикою

API HyperTracker надає вам дані таблиці лідерів, когортну фільтрацію і метрики агрегованого позиціонування, що живлять рівні пошуку гаманців і сигналів. Починайте з безкоштовного тарифу (100 запитів/день) і масштабуйтесь до Pulse ($179/міс), коли будете готові до виробничих ритмів опитування.

Отримайте свій API-ключ

Архітектура важливіша за сигнал

Більшість гайдів про ботів для копітрейдингу зосереджені на сигналі: який гаманець відстежувати, які угоди копіювати. Сигнал — це, мабуть, 10% системи. Архітектура навколо нього — решта 90%. Шлюз ризику, логіка розміру позиції, автоматичний вимикач, обробник тайминга виходу, монітор слипаджу, фреймворк сухої обкатки. Саме ці компоненти визначають, чи переживе бот своє перше просідання, чи ліквідує ваш рахунок у вівторок вдень.

Будуйте рівень ризику першим. Тестуйте його з екстремальними вхідними даними. Потім додавайте сигнал поверх. Найкращий бот для копітрейдингу — той, який знає, коли нічого не робити.