
Почему криптобот зарабатывает в бэктесте, но теряет в реальной торговле
Красивый бэктест успокаивает. Он даёт стратегии число, график, процент прибыльных сделок и ощущение, что самая сложная часть уже решена. Потом бот переходит к реальной торговле, первая неделя выглядит совсем иначе, и трейдер слишком поздно задаёт правильный вопрос: почему одни и те же правила отлично работали на исторических свечах, но стали хуже, когда появились реальные ордера? Короткий ответ: бэктест проверяет модель, а реальная торговля проверяет операционную реальность. Модель может быть полезной, но она не является рынком. В ней часто предполагается, что данные приходят чисто, ордер исполняется по нужной цене, ликвидность всегда есть, комиссии простые, стратегия не подогнана под шум, а будущий рынок похож на тот участок, по которому подбирались параметры. Реальная торговля проверяет все эти предположения одновременно. Это не аргумент против бэктестов. Наоборот, бэктест остаётся одним из главных фильтров перед тем, как криптобот получает доступ к капиталу. Но прибыльный бэктест — это гипотеза, а не разрешение на запуск. Задача статьи — разобрать причины, из-за которых бот может выигрывать в симуляции и проигрывать в рабочем режиме, а затем превратить эти причины в практический контрольный список.
Разрыв не возникает из ниоткуда
Когда говорят, что бот "сломался в реальной торговле", часто представляют скрытую ошибку в коде. Иногда так и бывает, но чаще разрыв между бэктестом и реальной торговлей складывается из менее драматичных вещей: комиссия на входе, чуть худшее исполнение, свеча закрылась на секунду позже, ордер заполнился частично в тонком стакане, модель не учла ставки финансирования, или параметры выглядели гениально только потому, что их слишком долго подбирали под один исторический период. Полезная модель мышления звучит так: не "бэктест против реальной торговли", а "исходное преимущество сигнала минус операционные издержки". Результат бэктеста часто похож на валовое преимущество сигнала. Результат в реальной торговле — это то, что осталось после исполнения, времени обработки, ликвидности, ограничений аккаунта, мониторинга и смены рыночного режима. Если преимущество на сделку маленькое, даже умеренные трения могут его стереть. Если стратегия торгует часто, одни и те же трения платятся снова и снова.
Разрыв между бэктестом и реальной торговлей чаще состоит из цепочки небольших трений, а не из одной большой ошибки. Исследования бэктестирования с учётом исполнения приходят к похожему выводу. В работе 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 строится вокруг того же цикла: собрать стратегию, проверить её на истории, запустить с контролируемыми допущениями и наблюдать, что происходит после запуска. Платформа не может убрать рыночный риск, и ни один серьёзный инструмент не должен это обещать. Ценность в другом: настройка стратегии, контекст бэктеста, инструменты контроля реальной торговли, аналитика и операционная проверка должны находиться в одном рабочем контуре. Этот контур важен, потому что сильные торговые системы оцениваются не по одному красивому бэктесту. Они оцениваются по тому, насколько ясно описаны их предположения, как быстро они показывают расхождения с реальностью и насколько дисциплинированно трейдер реагирует, когда рынок не согласен с моделью. Бот, который теряет после слабого бэктеста, никого не удивляет. Бот, который теряет после сильного, но нереалистичного бэктеста, — это предотвратимая проблема процесса.
Дисклеймер
Эта статья носит образовательный характер и не является финансовой, инвестиционной или торговой рекомендацией. Криптоактивы волатильны, автоматическая торговля может усиливать убытки, а результаты в прошлом не гарантируют результатов в будущем. Тестируйте аккуратно, используйте лимиты риска и принимайте самостоятельные решения.