Почему 95% торговых роботов сгорают при первом же шторме: анатомия переобучения и взгляд финансового аудитора с 23-летним стажем
Автор: Роман Валериевич Покушко, эксперт по финансовому аудиту и налоговому анализу, исследователь Сибирского федерального университета (научная специальность 2.3.1 «Системный анализ, управление и обработка информации»)
Страница автора: vc.ru/id4836339
Откройте любую социальную сеть или витрину готовых торговых алгоритмов. В глазах рябит от графиков.
Линии баланса устремляются в небо под углом 45 градусов. Доходность — сотни процентов годовых. Просадок якобы нет вовсе. Всё блестит. Картинка идеальна.
А теперь откройте статистику реальных счетов. Девять из десяти таких «чудо-роботов» сгорают в первые же месяцы. Без шансов. Капитал обращается в пыль при первом же серьезном развороте рынка, геополитическом шоке или внезапном решении регулятора по ключевой ставке.
Я занимаюсь финансовым аудитом и налоговым контролем 23 года. Мой трудовой путь проходил через крупнейшие промышленные холдинги страны — от нефтедобывающего гиганта «РН-Ванкор» («Роснефть») до горно-металлургических активов «Норильского никеля» — и продолжился прикладными экономико-математическими исследованиями в Сибирском федеральном университете.
Моя профессия сформировала жесткий иммунитет к красивым отчетам.
Аудитор не слушает речи директоров. Он вскрывает первичные проводки. Сверяет дебет с кредитом. Ищет скрытые кассовые разрывы, налоговые обязательства и нарисованную «бумажную» прибыль, за которой прячется банкротство.
В корпоративном учете нарисованная прибыль оборачивается миллионными штрафами и арестами счетов. В автоматизированной биржевой торговле нарисованный график тестирования оборачивается мгновенным обнулением капитала.
Фундаментальная причина краха проста: 95% разработчиков путают подгонку параметров под историю (переобучение) с реальной математической устойчивостью системы. Они занимаются самообманом.
Ниже — четыре системные ловушки, в которых гибнут биржевые роботы, и принципы финансового аудита, позволяющие математическим моделям выдерживать вековые штормы.
1. Капкан «бумажного» коэффициента Шарпа
Что делает почти каждый начинающий аналитик? Настраивает оптимизатор на одну витринную цифру — максимизацию коэффициента Шарпа.
Логика на первый взгляд понятна: хочется получить гладкую кривую прибыли без резких скачков. Однако финансовый рынок — не стационарный бухгалтерский баланс, а дискретная, враждебная среда с резкими перепадами плотности заявок.
В таких условиях погоня за максимальным Шарпом приводит к системному парадоксу:
Математический оптимизатор стремится к полному замиранию. Алгоритм искусственно завышает показатель Шарпа простым путем — сокращает число операций до единичных случайных аномалий из прошлого.
В отчете моделирования всё выглядит сказочно: всего десять безупречных сделок за три года и коэффициент выше пяти. Грааль? Нет, бухгалтерская приписка.
При первом же нестандартном импульсе реального рынка такой замерший бот получает сокрушительный удар по защитному приказу. Математическая иллюзия рассыпается в прах.
Решение финансового аудитора:
Вместо изолированного коэффициента Шарпа расчетные ядра обязаны применять функционалы качества, связывающие реальный объем отдачи с жестким критерием сохранения капитала:
К_аудит = ГодоваяДоходность × (1 + 0.3 × √Шарп) × КоэфСохраненияКапитала
Такая целевая функция безжалостно штрафует алгоритм за спячку. Система обязана уметь работать в плотном потоке заявок, отсекая единичные счастливые случайности.
2. Невидимый налог биржи: неучтенное трение
Проверять торговую гипотезу по ценам закрытия свечей — всё равно что составлять финансовый план предприятия, начисто «забыв» включить в него налоги, комиссии за эквайринг и кредиторскую задолженность.
На бумаге получается баснословная рентабельность. В реальности — неплатежеспособность в первый же расчетный день.
В реальной биржевой экономике прибыль поглощается тремя статьями неучтенных скрытых расходов:
1. Строгая задержка исполнения (временная причинность). Сигнал на закрытии свечи i физически не может исполниться по этой же цене. Это аксиома. Заявка уйдет в рынок не ранее следующего интервала ii+1, преодолев задержку канала связи и очередь в биржевом шлюзе.
2. Спред и неизбежное проскальзывание цены. Отправляя рыночную заявку, вы мгновенно теряете несколько шагов цены из биржевого стакана. Если расчетная прибыль алгоритма составляет скромные 0.3%, а двусторонний биржевой сбор и проскальзывание съедают 0.15%, ровно половину вашего заработка забирает инфраструктура. Это скрытый «налог с оборота» биржи. Просто за право войти в сделку.
3. Ценовые разрывы на защитных стопах. Рынок не обязан открываться там, где вы выставили защитный приказ. Если защита стояла на отметке 100 рублей, а после ночи новостей рынок открылся ценовым разрывом на уровне 93 рубля, позиция принудительно закроется по наихудшей цене открытия:
Цена исполнения = min(Цена защиты, Цена открытия) − Проскальзывание
Забыли заложить эти три фактора в симулятор? Вы построили идеальный генератор убытков. Без вариантов.
3. Дешевый трюк с выборкой вместо 12 скользящих срезов
Как вам обычно продают стратегию? Берут массив котировок, делят на две части: на первых 70% обучают, на последних 30% показывают красивый плюс.
В реальной экономике это равносильно попытке судить о круглогодичной рентабельности завода по выручке двух предновогодних недель.
Рынок нестационарен. Его физическое состояние меняется непрерывно: тихий боковик сменяется взрывным направленным трендом, а затем следует сокрушительный сброс ликвидности. Модель, прекрасно обученная на сытом росте 2020–2021 годов, гарантированно захлебнется и погибнет в затяжном изматывающем диапазоне следующего цикла.
Матрица 12-оконного скользящего контроля (Walk-Forward Analysis) Срез 01: [=== 18 месяцев калибровки ===] -> [ 6 месяцев слепого контроля ] Срез 02: [=== 18 месяцев калибровки ===] -> [ 6 месяцев слепого контроля ] Срез 03: [=== 18 месяцев калибровки ===] -> [ 6 месяцев слепого контроля ] ... Срез 12: [=== 18 месяцев калибровки ===] -> [ 6 месяцев слепого контроля ]
Промышленный стандарт:
Окно проверки обязано непрерывно скользить сквозь года. Минимум двенадцать последовательных независимых интервалов:
- Полтора года калибровки → полгода абсолютно слепого тестирования на данных, которых модель гарантированно не видела.
- Правило отбора предельно жесткое: оцениваем не среднюю температуру по больнице, а наихудший результат среди всех двенадцати независимых окон.
Если хотя бы в одном окне из двенадцати система показала убыток — параметры отбраковываются насовсем. Никаких компромиссов.
4. Вековой стресс-тест: испытание ста годами кризисов
Почти все розничные советники настраиваются на истории за последние пару лет.
Но пара лет — это ничто. Это один краткосрочный отрезок монетарной накачки или временного затишья.
В теории системного анализа надежность оценивается исключительно на запредельных перегрузках. В наших прикладных исследованиях мы пропустили математические алгоритмы через столетний массив котировок с 1926 по 2026 год (более 25 100 биржевых торговых дней).
Этот массив вобрал в себя 26 крупнейших мировых катастроф: от Великой Депрессии 1929 года и нефтяного шока 1973-го до краха 1987-го, пандемии 2020-го и геополитического перелома 2022 года.
Вывод отрезвляет. Популярные индикаторы — скользящие средние, осцилляторы перекупленности — на этих кризисах полностью слепы. Они подают команду на закрытие позиций, когда 70% капитала уже сгорело.
Выживают только те подходы, которые измеряют информационную энтропию плотности заявок в биржевом стакане и термодинамику скрытых объемов. Крупные институциональные игроки сбрасывают риск за 24–48 часов до видимой катастрофы на графиках. Именно этот тихий отток ликвидности и нужно фиксировать математически.
Контрольный перечень финансового аудитора: 5 вопросов продавцу любого робота
Прежде чем доверить торговому алгоритму хоть один рубль собственного капитала, задайте разработчику пять прямых вопросов:
1. Причинность: Учитывает ли логика задержку исполнения минимум в один интервал и наихудшую цену при ценовом разрыве?
2. Сборы: Списаны ли с каждой операции встречный спред и проскальзывание в обе стороны?
3. Скользящие окна: Выдержал ли алгоритм двенадцать скользящих срезов подряд без единого убыточного окна?
4. Стресс-тест: Как вела себя математика в дни великих исторических экономических обвалов?
5. Целевая функция: Оптимизировалась ли система под сохранение реального объема средств или под красивую витрину?
Если разработчик уходит от ответа — перед вами не торговая система, а генератор случайных чисел. С неизбежным обнулением счета в финале.
В следующей публикации цикла разберем архитектуру состязательных ансамблей искусственного интеллекта: почему эпоха одиночных языковых моделей уходит и как многоагентные системы отсекают галлюцинации нейросетей.
💬 Вопрос для обсуждения: с какими скрытыми ловушками моделирования и «бумажными граалями» сталкивались вы лично в своих разработках или инвестициях? Напишите в комментариях — разберем самые интересные случаи.