Ліміти для торгових ботів: проектування та впровадження

Уявіть: бот торгує за стратегією, яка ідеально працювала на бектесті. Але в реальному ринку — раптовий стрибок волатильності, slippage вищий за розрахунковий, і одна угода йде в мінус на 30% рахунку. Без лімітів це катастрофа. З правильно налаштованими **guardrails** — це контрольований збиток, який

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1004
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1011

Уявіть: бот торгує за стратегією, яка ідеально працювала на бектесті. Але в реальному ринку — раптовий стрибок волатильності, slippage вищий за розрахунковий, і одна угода йде в мінус на 30% рахунку. Без лімітів це катастрофа. З правильно налаштованими guardrails — це контрольований збиток, який не ламає стратегію. У DeFi-середовищі додаються ризики oracle-маніпуляцій (наприклад, Chainlink) та flash loan атак — ліміти захищають від них. Зв'яжіться з нами, щоб обговорити ваш випадок.

Ми проектуємо системи лімітів, які працюють на рівні ядра торгового бота — перевіряють кожен ордер до його відправки на біржу. За час роботи реалізували лімітні модулі для 30+ проектів: від спот-ботів на Binance до складних DeFi-стратегій на Ethereum та Solana. Ось як влаштована така система і що важливо врахувати.

Які види лімітів потрібні боту?

Позиційні ліміти

  • Max position size per instrument: максимальний розмір позиції за одним інструментом. Може бути абсолютним (0.5 BTC) або відносним (5% від портфеля).
  • Max total exposure: сумарна експозиція за всіма відкритими позиціями. Обмежує загальний leverage — часто використовується разом з margin requirements.
  • Max positions count: кількість одночасно відкритих позицій. Захист від стратегії, яка починає відкривати позиції у всіх інструментах одразу.
  • Concentration limit: максимальна частка капіталу в одному активі. Якщо три різні позиції корелюють з BTC — їх сумарна вага не повинна перевищувати X%.

Збитки та P&L ліміти

  • Max daily loss: максимальний збиток за торговий день. При досягненні — зупинка до наступного дня. Професійні трейдери ставлять 2-5% від рахунку.
  • Max weekly/monthly loss: аналогічно для довших періодів.
  • Max drawdown: максимальна просадка від історичного піку. При досягненні — пауза та рев'ю стратегії.
  • Per-trade max loss: максимальний збиток за одну угоду. Якщо стоп-лос не спрацював — примусове закриття.

Операційні ліміти

  • Max orders per minute: захист від випадкового flood біржового API.
  • Max order size: максимальний розмір одного ордера (захист від помилки в розрахунку розміру позиції).
Приклад розрахунку динамічного ліміту

При високому ATR розмір позиції автоматично зменшується, щоб зберегти однаковий expected dollar risk. Це запобігає надмірним втратам у періоди високої волатильності та захищає від несподіваних просадок.

Чому pre-trade validation критична?

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

def validate_order(order, portfolio_state, limits): # Check position size current_pos = portfolio_state.get_position(order.symbol) new_pos_size = current_pos.size + order.quantity if new_pos_size > limits.max_position_size[order.symbol]: raise LimitViolation("MAX_POSITION_SIZE", ...) # Check daily loss if portfolio_state.daily_pnl < -limits.max_daily_loss: raise LimitViolation("DAILY_LOSS_LIMIT", ...) # Check total exposure new_exposure = portfolio_state.total_exposure + order.notional_value if new_exposure > limits.max_total_exposure: raise LimitViolation("MAX_EXPOSURE", ...) return True 

Pre-trade validation виконується за <1 мс і гарантує, що жоден ордер, який порушує ліміти, не буде відправлено. У високочастотній торгівлі це критично, щоб уникнути втрат через MEV або несподіваного руху ціни.

Динамічні ліміти vs статичні: наскільки це ефективно?

Статичні ліміти — добре, але ринок змінюється. Динамічні ліміти адаптуються до умов: при високому VIX або ATR розмір позицій автоматично зменшується. Це зберігає однаковий expected dollar risk. В години низької ліквідності (ніч за Asian session) ліміти знижуються. А при зростанні просадки ми поступово зменшуємо ліміти за принципом Kelly criterion: чим менший капітал, тим менші абсолютні ставки.

Порівняння на історичних даних за останній рік показує: динамічні ліміти зменшують максимальну просадку майже вдвічі порівняно зі статичними при тій же сумарній дохідності. Ось типові налаштування для різних режимів:

Режим ринку Max position (BTC) Max daily loss ($) Max exposure ($)
Низька волатильність 1.0 5,000 50,000
Середня волатильність 0.7 3,000 35,000
Висока волатильність 0.4 1,500 20,000
Криза (VIX > 40) 0.2 500 10,000

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

Моніторинг та алертинг за лімітами

Оператор повинен бачити поточне завантаження лімітів у реальному часі. Ми надаємо дашборд з таблицею:

Ліміт Максимум Поточне % використання
Daily loss $5,000 $1,230 24.6%
Max exposure $50,000 $31,500 63.0%
BTC position 1.0 BTC 0.45 BTC 45.0%

При досягненні 80% ліміту — попередження. При досягненні 100% — дія (пауза/зупинка) та алерт у Telegram/Slack.

Приклад реалізації динамічного ліміту на основі ATR:

def get_dynamic_max_position(portfolio, symbol, limits, atr): base_position = limits.max_position_size[symbol] atr_factor = min(1.0, limits.base_atr / (atr if atr > 0 else 1)) return base_position * atr_factor * (portfolio.equity / limits.initial_equity) 

Тут ліміт залежить від поточної волатильності (ATR) і знижується при просадці капіталу.

Що входить у розробку системи лімітів

  • Документація: специфікація лімітів, опис поведінки при спрацюванні, інструкція для оператора.
  • Вихідний код: модуль валідації, адаптери під вашу інфраструктуру (CEX/DeFi), приклади конфігурації.
  • Тестування: unit-тести, інтеграційні тести, навантажувальне тестування (до 1000 ордерів/сек).
  • Моніторинг та алертинг: готові метрики для Prometheus/Grafana, інтеграція з Telegram/Slack.
  • Навчання: сесія для вашої команди з налаштування та експлуатації системи.
  • Підтримка: 3 місяці супроводу з реакцією до 4 годин.

Як ми розробляємо систему лімітів під ключ

Процес включає п'ять етапів:

  1. Аналіз стратегії: розбираємо логіку бота, типові ризики, історичні просадки.
  2. Проектування схеми лімітів: вибираємо набір лімітів, визначаємо пороги, вирішуємо, які будуть динамічними.
  3. Реалізація модуля: пишемо код на Solidity (для DeFi) або Python/Node.js (для CEX), впроваджуємо pre-trade та post-trade перевірки.
  4. Інтеграція та тестування: підключаємо моніторинг, алертинг, проводимо навантажувальне тестування та формальний аудит (Slither, Mythril).
  5. Деплой та супровід: розгортаємо систему, навчаємо операторів, надаємо підтримку на 3 місяці.

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