
Чому криптобот заробляє у бектесті, але втрачає в реальній торгівлі
Гарний бектест заспокоює. Він дає стратегії число, графік, частку прибуткових угод і відчуття, що найскладніша частина вже позаду. Потім бот переходить до реальної торгівлі, перший тиждень виглядає інакше, і трейдер запізно ставить правильне запитання: чому ті самі правила добре працювали на історичних свічках, але стали слабшими, коли з’явилися реальні ордери? Коротка відповідь така: бектест перевіряє модель, а реальна торгівля перевіряє операційну реальність. Модель може бути корисною, але вона не є ринком. У ній часто припускається, що дані надходять чисто, ордер виконується за потрібною ціною, ліквідність є завжди, комісії прості, стратегія не підігнана під шум, а майбутній ринок буде схожим на ділянку, на якій підбиралися параметри. Реальна торгівля перевіряє всі ці припущення одночасно. Це не аргумент проти бектестів. Навпаки, бектест залишається одним із головних фільтрів перед тим, як криптобот отримує доступ до капіталу. Але прибутковий бектест — це гіпотеза, а не дозвіл на запуск. Мета цієї статті — розібрати причини, через які бот може вигравати в симуляції та програвати в робочому режимі, а потім перетворити ці причини на практичний контрольний список.
Розрив не виникає з нізвідки
Коли кажуть, що бот "зламався у реальній торгівлі", часто уявляють приховану помилку в коді. Іноді так буває, але частіше розрив між бектестом і реальною торгівлею складається з менш драматичних речей: комісія на вході, трохи гірше виконання, свічка закрилася на секунду пізніше, ордер заповнився частково в тонкому стакані, модель не врахувала ставки фінансування, або параметри здавалися геніальними лише тому, що їх занадто довго підганяли під один історичний період. Корисна модель мислення звучить так: не "бектест проти реальної торгівлі", а "початкова перевага сигналу мінус операційні витрати". Результат бектесту часто схожий на валову перевагу сигналу. Результат у реальній торгівлі — це те, що залишилося після виконання, часу обробки, ліквідності, обмежень облікового запису, моніторингу та зміни ринкового режиму. Якщо перевага на одну угоду мала, навіть помірні тертя можуть її стерти. Якщо стратегія торгує часто, ті самі тертя сплачуються знову і знову.
Розрив між бектестом і реальною торгівлею зазвичай складається з ланцюжка невеликих тертів, а не з однієї великої помилки. Дослідження бектестування з урахуванням виконання приходять до схожого висновку. У роботі AutoQuant окремо розглянуто, як затримка виконання, ставки фінансування, комісії та прослизання можуть завищувати результати в бектестах криптовалютних безстрокових ф’ючерсів. Конкретні числа залежать від біржі, пари, розміру позиції та логіки стратегії, але напрям майже завжди один: тест без витрат або бектест лише з комісіями занадто щедрий до стратегії.
Комісії — це параметри стратегії, а не примітка в кінці
Комісії здаються простими, доки їх не помножити на торговий оборот. Стратегія, яка входить і виходить раз на місяць, може пережити неточну модель комісій. Стратегія, яка торгує кілька разів на день, не може. Кожен вхід, вихід, добір, частковий вихід, стоп і повторний вхід мають ціну. На ф’ючерсах і безстрокових контрактах додається ставка фінансування. Якщо її ігнорувати, система з високою частотою угод або тривалим утриманням позиції може виглядати значно сильнішою, ніж буде насправді. Спред також важливий. Якщо бектест використовує ціни закриття свічок, він може неявно припускати, що бот купує і продає за однією чистою опорною ціною. У реальній торгівлі покупець платить ціну продавця, а продавець приймає ціну покупця. На найліквідніших BTC-парах у спокійні години різниця може бути невеликою, але на менш ліквідних торгових парах, під час новин або різкої волатильності спред розширюється. Для стратегії, яка забирає невеликі рухи, спред може з’їсти саме той рух, заради якого вона створена. Тому перше запитання перед реальною торгівлею — не "яка дохідність у бектесті?", а "скільки дохідності стратегія заробляє на одиницю витрат?". Якщо очікувана угода приносить лише кілька базисних пунктів до комісій, бот крихкий. Якщо стрес-тест із подвоєною комісією або подвоєним прослизанням ламає криву капіталу, стратегію рано запускати нормальним обсягом.
Прослизання і ліквідність змінюють угоду, яку ви тестували
Прослизання — це різниця між ціною, яку очікувала стратегія, і ціною, яку вона отримала. Це не завжди помилка. Це нормальний наслідок ордера, який потрапляє в ринок, що рухається. У крипті ефект посилюється цілодобовою торгівлею, фрагментованою ліквідністю, раптовою волатильністю та торговими парами, де глибина книги заявок може швидко зникнути. Ринковий ордер у спокійному стакані й той самий ринковий ордер після каскаду ліквідацій — це різні події. Ліквідність робить розмір позиції частиною стратегії. Бектест легко масштабує сигнал зі 100 до 100 000 доларів, не змінюючи свічки. Ринок так не працює. Більший ордер з’їдає глибину, чекає в стакані, заповнюється частково або відводить середню ціну виконання від припущеного входу. У результаті стратегія, яка здавалася необмежено масштабованою на історичних свічках, погіршується, щойно розмір ордера стає помітним для книги заявок. Часткові виконання створюють ще одне джерело розбіжності. Бектест часто вважає, що вхід або виконано повністю, або не виконано взагалі. Реальна торгівля може бути менш передбачуваною: половина позиції заповнилася, ціна пішла, залишок скасовано, а логіка виходу тепер керує меншою та інакше оціненою позицією. Якщо облік позиції, розрахунок обсягу і захисні стопи не обробляють це акуратно, шлях у реальній торгівлі розходиться з тестовим шляхом навіть за незмінних сигналів.
Затримки переводять стратегію зі свічкової логіки в реальність виконання
Багато криптостратегій пишуться так, ніби сигнал і ордер — одна подія. У робочому режимі це ланцюжок. Надходять ринкові дані, свічка або тік обробляється, сигнал розраховується, проходять перевірки ризику, запит підписується, ордер надсилається, біржа приймає його, а виконання приходить пізніше. Кожен крок невеликий, але ринок може рухатися між ними. Затримка важлива не лише для високочастотних стратегій. Стратегія на чотиригодинному інтервалі теж страждає, якщо припускає виконання точно за ціною закриття свічки, особливо коли багато учасників дивиться на те саме закриття. Захисний стоп також поводиться інакше: ціна спрацювання, тип ордера, механізм зіставлення заявок і швидкі свічки взаємодіють між собою. Бектест бачить одну лінію, а біржа — потік подій. Реалістичний бектест не має використовувати неможливу семантику виконання. Якщо сигнал відомий лише після закриття свічки, модель не повинна входити за найкращою ціною цієї ж свічки. Якщо індикатор використовує закриття, угоду варто тестувати на наступному виконуваному моменті. Іноді один такий зсув прибирає значну частину "магічної" дохідності.
Переоптимізація: коли бектест занадто добре вивчив минуле
Переоптимізація — тиха причина багатьох провалів. Вона виникає, коли правила підлаштовуються під історичний шум, а не під повторювану поведінку ринку. Трейдер додає фільтр, змінює поріг, виключає невдалу ділянку, рухає ковзну середню і повторює цикл, доки графік не стане гладким. Бектест покращується, але стратегія стає менш реальною. Проблема добре описана і поза криптою. У роботі All that Glitters Is Not Gold автори досліджували великий набір алгоритмічних стратегій і виявили, що популярні метрики бектесту, зокрема коефіцієнт Шарпа, слабко передбачали результати на відкладеній вибірці. Також була знайдена залежність між інтенсивністю бектестування та збільшенням розриву між бектестом і відкладеною вибіркою. Це саме той ризик, із яким стикається роздрібний автор ботів, коли безкінечно шукає ідеальні налаштування.
Переоптимізація перетворює історичну вибірку на саму стратегію. Здоровіший процес розділяє пошук ідеї та перевірку. Один період можна використати для дизайну, інший — для оцінки, а потім потрібен підхід із покроковою перевіркою або тестом на ковзних вікнах, який показує, чи переживає стратегія зміну умов без постійної підгонки під минуле. Оцінювати варто не найкращий оптимізований прогін, а те, як стратегія деградує за зростання витрат, невеликого зсуву параметрів, зміни торгових пар і зміни ринкового режиму.
Ринкові режими ламають навіть добрі правила
Стратегія може бути розумною і все одно втрачати у реальній торгівлі, бо змінився режим ринку. Трендові системи часто виглядають чудово під час стійких рухів і болісно в боковику. Стратегії повернення до середнього збирають невеликі повернення доти, доки пробій не перетворює кожен "відкат" на продовження тренду. Сіткові стратегії та усереднення можуть здаватися стабільними всередині діапазону й небезпечними, коли ціна виходить із діапазону імпульсно. У крипті це особливо помітно, бо режими змінюються швидко. Пара може бути ліквідною та спокійною, а за кілька днів стати тонкою і різкою. Кореляції зростають у стресові періоди, тому портфель, який у бектесті виглядав диверсифікованим, у реальній торгівлі поводиться як одна велика позиція. Фільтри волатильності, фільтри обсягу, фільтри ставок фінансування і правила вибору торгових пар — не прикраса, а опис умов, за яких боту дозволено довіряти своїй перевазі. Практичне запитання звучить не "чи працює стратегія?", а "за яких умов вона працює, і як ми дізнаємося, що цих умов уже немає?". Бектест треба розрізати за режимами: тренд, боковик, висока волатильність, низька ліквідність, бичача фаза, ведмежа фаза, тихі вихідні. Якщо весь прибуток прийшов з одного вузького режиму, боту в реальній торгівлі потрібні правила паузи поза цим режимом.
API і налаштування облікового запису теж впливають на реальну торгівлю
Реальна торгівля залежить не лише від сигналів, а й від межі облікового запису. API-ключі — це операційна інфраструктура, а не дрібне налаштування. Binance пояснює, що API-ключі потрібно захищати, не зберігати у відкритому вигляді, ротувати за потреби та обмежувати за IP, коли це можливо; там само описані області доступу і IP-обмеження у гайді з безпеки API-ключів . Bybit в інструкції зі створення API-ключа також показує, що створення ключа й вибір дозволів — окремий усвідомлений процес. Для торгового бота безпечний базовий варіант — вузькі дозволи: читання і торгівля лише там, де це справді потрібно, без права на виведення коштів, із розділенням ключів за середовищами або обліковими записами, якщо можливо. Ключ із неправильними правами може блокувати ордери, ламати валідацію або створювати ризик безпеки. Ключ, який використовується не з того IP, може відмовити в найгірший момент. Бот, який не може надійно поставити або скасувати ордер, уже не той бот, що пройшов бектест. Моніторинг належить до тієї ж області. Система реальної торгівлі має надсилати сповіщення про відхилені ордери, застарілі дані, пропущені перевірки працездатності, аномальне прослизання, неочікувану експозицію та порушення лімітів просадки. Без моніторингу трейдер дізнається про операційну проблему лише після того, як вона вже вплинула на фінансовий результат.
Контрольний список перед запуском у реальній торгівлі
Перед переходом від бектесту до реальної торгівлі стратегія має пройти перевірку суворішу, ніж "крива зростає". Спочатку потрібно змоделювати реальні тарифи комісій, очікуваний спред, консервативне прослизання і ставки фінансування там, де вони є. Потім перевірити стратегію на даних, які не використовувалися під час дизайну. Після цього корисна покрокова перевірка або тест на ковзних вікнах, щоб стратегія показала стійкість без постійної переоптимізації. Далі — перевірка стійкості до змін. Добра стратегія не повинна розвалюватися, якщо ковзна середня змінюється з 21 на 24, прослизання подвоюється або одна торгова пара виключається. Перший запуск на реальному ринку краще робити малим обсягом: його мета — не максимальна дохідність, а перевірка виконання, затримок, статусів ордерів і фактичних витрат. Нарешті, умови зупинки потрібно задати до запуску: максимальний денний збиток, максимальна просадка стратегії, поріг застарілих даних, поріг відхилених ордерів і умови ручної перевірки.
Бот не готовий до реальної торгівлі, доки його операційні припущення не записані явно. Контрольний список важливо записати, бо реальний ринок створює тиск. Коли бот втрачає гроші, хочеться терміново змінити налаштування. Коли бот заробляє, хочеться занадто швидко збільшити розмір. Письмовий план дій перетворює ці моменти на рішення, які вже були ухвалені спокійно.
Окремий проміжний етап — тестова торгівля без реального виконання або запуск малим обсягом на реальному ринку. Він не доводить, що стратегія буде прибутковою, але перевіряє те, чого не бачить історичний прогін: коректність статусів ордерів, фактичний час реакції, стабільність підключення, частоту відмов біржі й те, наскільки фактичні виконання схожі на модель. Якщо вже на малому розмірі якість виконання гірша за очікування, збільшувати капітал зарано.
Де тут SteadyEdge
SteadyEdge будується навколо того самого циклу: зібрати стратегію, перевірити її на історії, запустити з контрольованими припущеннями й спостерігати, що відбувається після запуску. Платформа не може прибрати ринковий ризик, і жоден серйозний інструмент не має цього обіцяти. Цінність в іншому: налаштування стратегії, контекст бектесту, інструменти контролю реальної торгівлі, аналітика і операційна перевірка мають бути в одному робочому контурі. Цей контур важливий, бо сильні торгові системи оцінюються не за одним красивим бектестом. Вони оцінюються за тим, наскільки чітко описані їхні припущення, як швидко вони показують розбіжності з реальністю і наскільки дисципліновано трейдер реагує, коли ринок не погоджується з моделлю. Бот, який втрачає після слабкого бектесту, нікого не дивує. Бот, який втрачає після сильного, але нереалістичного бектесту, — це проблема процесу, якій можна запобігти.
Дисклеймер
Ця стаття має освітній характер і не є фінансовою, інвестиційною або торговою рекомендацією. Криптоактиви волатильні, автоматична торгівля може посилювати збитки, а результати в минулому не гарантують результатів у майбутньому. Тестуйте обережно, використовуйте ліміти ризику та приймайте самостійні рішення.