Может ли нейросеть написать торговую стратегию: что получится за два часа и чего в этом не будет
Нейросеть за два часа напишет вам работающий код. Работающий код и работающая стратегия - это разные вещи, и путают их почти все. Код запускается, открывает и закрывает сделки, рисует красивую кривую доходности на истории. Стратегия - это код плюс то, чего в нём по определению нет: доказательство, что закономерность существует за пределами выбранного куска истории, и правила поведения в те месяцы, когда она не работает.
Проверка занимает одну минуту. Спросите у того, кто показывает вам сгенерированную стратегию: на каком отрезке она подбиралась, на каком проверялась, и совпадают ли эти отрезки. Если ответ звучит как «я взял данные за три года и оптимизировал параметры», перед вами не стратегия, а описание прошлого. Ниже разберём, что именно происходит за эти два часа и сколько времени занимает то, что за них не происходит.
Что нейросеть действительно делает за два часа
Хорошо и быстро она делает три вещи. Пишет код без синтаксических ошибок. Реализует любую описанную словами логику: пересечение скользящих, пробой канала, возврат к среднему, фильтр по волатильности. Подбирает параметры так, чтобы кривая на выбранном отрезке выглядела ровной.
Последний пункт и есть ловушка. Подбор параметров под конкретный кусок истории называется оптимизацией, и современный инструмент делает её за секунды. Именно поэтому результат получается красивым: вы видите не предсказание, а наилучшую подгонку под то, что уже случилось. Раньше на такую подгонку уходили недели, и это само по себе отсеивало часть самообмана. Сейчас барьер исчез, а вместе с ним исчезло и время на сомнение.
Чего в сгенерированном коде нет по определению
Разделения данных. Закономерность проверяется на том отрезке, где её не искали. Это называется форвард-тестом или walk-forward. Если история 2019-2026 использована и для подбора, и для проверки, результат не значит ничего: вы измеряете память, а не предсказательную силу.
Издержек исполнения. Комиссия, проскальзывание, ставка финансирования по фьючерсам. На бумаге стратегия с сотней сделок в месяц может показывать 60% годовых, а после вычета реальных издержек уйти в минус. Именно поэтому в отчётности клиенту мы показываем чистый результат: доходность уже после комиссий и издержек исполнения, а не валовую цифру, к которой потом появляются сноски.
Поведения в разных режимах рынка. Любая система хороша в одной фазе и плоха в другой. Трендовая зарабатывает на направленных движениях и отдаёт часть заработанного в боковике. Возврат к среднему делает обратное. Сгенерированный за два часа код обычно проверен на одной фазе, и когда фаза сменится, автор об этом узнает по счёту.
Правил остановки. Что делать, если убытки идут подряд. Какая просадка считается нормальной, а какая означает, что закономерность сломалась. Без этих правил решение принимает человек в моменте, а человек в просадке принимает худшие решения из возможных.
Почему красивый бэктест не доказывает ничего
Возьмите тысячу случайных наборов правил и прогоните на одной истории. Несколько десятков покажут отличный результат просто по теории вероятностей. Отобрав лучший, вы получите красивую кривую и ноль оснований ждать её повторения. Это называется ошибкой множественного сравнения, и она не лечится ни мощностью компьютера, ни качеством модели.
Отличить подгонку от закономерности помогают три стандартные проверки. Первая: результат на данных, которые не участвовали в подборе. Вторая: устойчивость к сдвигу параметров - если при изменении периода индикатора с 20 на 22 доходность падает вдвое, вы нашли не закономерность, а совпадение. Третья: работает ли принцип на других инструментах и рынках. Эффект моментума, на котором построена значительная часть нашего портфеля, известен с 1990-х и подтверждён на акциях, товарных фьючерсах и валютах. Правило, которое живёт только на одной паре и только в один год, закономерностью не является.
Монте-Карло: зачем гонять историю тысячу раз
Историческая кривая доходности - это один путь из множества возможных. Сделки шли в том порядке, в каком шли, но с тем же набором сделок в другой последовательности картина выглядела бы иначе: просадка могла оказаться вдвое глубже просто потому, что убытки сгруппировались бы плотнее. По одной кривой отличить «система работает» от «повезло с порядком» невозможно.
Метод Монте-Карло решает ровно эту задачу. Берётся набор фактических сделок или дневных доходностей, из него многократно, обычно тысячи или десятки тысяч раз, собираются альтернативные варианты истории: другой порядок, другая выборка с возвращением, иногда с добавлением шума к издержкам и проскальзыванию. На выходе получается не одна цифра, а распределение исходов.
Что это распределение показывает. Не «максимальная просадка была 23%», а «в 95 случаях из 100 просадка не превышает такой-то величины, а в 5 случаях из 100 доходит до такой». Не «доходность 80% годовых», а диапазон, в который результат попадает с заданной вероятностью. Плюс отдельная величина - вероятность потерять неприемлемую долю капитала при выбранном размере позиции, её называют risk of ruin.
Именно так строятся стресс-сценарии. К перемешиванию добавляют условия, которых в истории не было или почти не было: издержки вдвое выше, ликвидность падает в момент выхода, серия убытков вдвое длиннее худшей исторической, рынок стоит в боковике вдвое дольше. Смысл не в предсказании конкретного будущего, а в ответе на вопрос «при каком сочетании неудач эта конструкция перестаёт быть жизнеспособной».
Наша расчётная максимально допустимая просадка 30-35% получена именно так: из фактической истории плюс моделирование сценариев, которые на рынке пока не наблюдались. Историческая просадка меньше, и запас между ней и расчётной величиной - это и есть результат стресс-моделирования, а не округление вверх.
Чего Монте-Карло не делает. Он не создаёт новых данных: если исходная выборка коротка или снята с одной рыночной фазы, тысяча перемешиваний не добавит знания, а только придаст уверенности неверному выводу. Простое перемешивание сделок разрушает автокорреляцию и кластеризацию волатильности, из-за чего результат выходит оптимистичнее реальности: в жизни убытки приходят сериями, а не равномерно. И он не моделирует режим, которого в истории не было вовсе, если такой режим не задать руками отдельным сценарием.
Практический вывод для того, кому показывают стратегию: спрашивайте не только «какая была максимальная просадка», но и «какая просадка ожидается с вероятностью 95 процентов и на каком количестве прогонов это посчитано». Первый вопрос про прошлое, второй про то, к чему готовиться.
Сколько времени это занимает на самом деле
Написание кода это первые два процента работы. Дальше идёт то, что нельзя ускорить: проверка на непересекающихся отрезках, стресс-сценарии, оценка ёмкости, тестирование на живом счёте маленьким объёмом, наблюдение за расхождением реальных сделок с расчётными.
Ядро наших торговых систем создано в 2012 году на фондовом рынке. В 2019 году оно перенесено на рынок цифровых активов, и с этого момента идёт непрерывная торговля на живом капитале, семь лет и по сей день. Базовые компоненты за это время не переписывались. Это не консерватизм ради консерватизма: каждая переделка под текущую фазу рынка улучшает вчерашнюю картину и ухудшает завтрашнюю.
Шесть признаков, по которым система отличается от скрипта
• Есть трек на живых деньгах, а не только на истории, и известна дата, с которой он начался.
• Известна максимальная просадка и срок восстановления после неё, а не только доходность.
• Правила риска записаны числами до сделки: доля капитала на сделку, уровень остановки.
• Есть ответ, в какой фазе рынка система работает плохо, и он дан заранее, а не после убытков.
• Параметры не менялись под последние месяцы, и это можно проверить по истории изменений.
• Результат воспроизводится независимо, по данным биржи, а не по словам автора.
Где нейросеть действительно полезна
Она сильно ускоряет реализацию и проверку идей. Гипотеза, на которую раньше уходил день, теперь проверяется за час, и за то же время можно перебрать больше вариантов. Она хорошо пишет обвязку: загрузку данных, расчёт метрик, оформление отчёта.
Чего она не делает - не отвечает за деньги. Инструмент не несёт последствий за решение и не отличает закономерность от совпадения, если его об этом не попросили правильным образом. Ответственность за это остаётся на человеке, и именно она отделяет систему, работающую годами, от кода, который два часа назад показал красивый график.
Мы показываем свои цифры так, чтобы их можно было проверить: доходность, просадка, коэффициенты риска и движение средств считаются по истории сделок биржи, а не заявляются нами. Как это выглядит на живом счёте, разбираем в нашем Telegram-канале
Материал носит информационный характер и не является инвестиционной рекомендацией.