
Факторов, на самом деле, очень много, но вот топ самых распространённых причин, по которым «граальная» стратегия с графиком под 45 градусов рассыпается при встрече с реальным рынком:
Торговые издержки. Мало кто учитывает биржевые комиссии, спреды в стакане, проскальзывания при исполнении ордеров и задержки между отправкой ордера и его исполнением на бирже. Торговые издержки на некоторых активах могут составлять львиную долю от предполагаемой прибыли. Если не угадал с масштабом стратегии, с её частотой, например, не учтя или занизив комиссию — из прибыльной стратегии легко сделать убыток по счёту. Тоже самое и с проскальзыванием(разница между ценой, по которой вы рассчитывали войти, и ценой реального исполнения) — в бэктесте это часто игнорируют, а на реальном рынке оно является одним из главных врагов.
Заглядывание в будущее. Наверно, самая распространенная ошибка, генерирующая грааль. Эта ошибка часто встречается там, где нет понимания, в какой момент мы имеем завершенные (полные) данные в конкретный момент времени. Может быть как при расчете индикаторов, машинном обучении (например, нормализации данных на всей доступной истории), так и при использовании цен из будущего для выставления ордеров.
Даже в системах бэктестирования, где разработчики предусмотрели защиту от заглядывания в будущее, многие могут допускать ошибки в расчётах. Например, стратегия предполагает использование какой-то метрики, это может быть ставка фондирования, официальный курс ЦБ, индекс потребительских цен — не важно, главное понимать, что данный индикатор публикуется и известен к определенному времени, а иногда еще и с временным лагом от того времени, что выдает поставщик данных. Необходимо правильно синхронизировать данные, чтобы избежать нерелевантных результатов бэктестов. Ошибки синхронизации не просто влияют на результат, а создают “грааль”. Потому что если бы кто-то реально знал будущее даже на минуту вперёд, этот кто-то мог бы заработать все деньги мира.
Ограничения среды бэктестирования. Например, стратегия использует одновременно 2 ордера — стоп и тейк и на следующей свече выполняется условие для исполнения обоих ордеров. Разные реализации бэктестеров и\или код стратегии может исполнить тейк, а не стоп, или оба ордера, но как бы это отработало в реальности можно проверить только по тиковым данным, что не всегда целесообразно из-за большого количества мощностей для этих проверок, но такие вещи тоже нужно учитывать.
Неправильная работа с данными. Банальные ошибки в обработке исторических данных, некорректные формулы, неверные временные метки. Казалось бы, мелочь, но каждая такая мелочь рисует вам фальшивую картину.
Когда ко мне приносят график стратегии с эквити под 45 градусов или экспоненциально растущей и без просадок, первым делом проверяю именно эти пункты.
Здесь можно разделить на два подхода к восприятию рынка.

Первый:глобально рынок не меняется, прочитайте, хотя “Записки биржевого спекулянта” — прошло 100 лет, а читаешь и удивляешься, что отличается техника, а не суть. Тренды и флэты были, есть и будут. Пока на рынке существуют участники, совершающие сделки, тренд когда-нибудь случится. Наша задача — просто его дождаться, поймать и забрать.
Второй: микроструктура рынка всё-таки меняется. Это важно, скорее, для HFT-стратегий и маркетмейкеров, где миллисекунды и наносекунды переворачивают equity.
Мы — приверженцы первой теории и считаем, что глобально тренды никуда не денутся, и торгуем именно тренды, потому что это предсказуемо, легко управляется и, главное, можно контролировать риск. При этом в портфеле есть боты, заточенные на более длинные трендовые движения, и те, что ищут более короткие, настолько, насколько позволяют реальные торговые издержки.
Что касается дообучения моделей: по криптоактивам оптимизируемся каждый квартал, потому что это быстро меняющийся рынок. По другим рынкам — раз в полгода. Но тут важный нюанс: для наших стратегий одна из ключевых характеристик — время работы в продакшене. Стратегии нужно дать поработать и реализоваться. Поскольку горизонт инвестирования по портфелю, как минимум, от года, дать стратегии поторговать месяц и сказать, что она не работает, нельзя.

Назовем “подгонку под данные” оптимизацией.
Без оптимизации параметров в алготрейдинге нельзя, но ее нужно правильно готовить. Ее цель — подобрать параметры, с которыми стратегия будет работать с максимальной эффективностью.
Правильная оптимизация — это хорошо, а вот подгонка под кривую (curve fitting), когда параметры и условия настраиваются так, чтобы обработать каждое рыночное движение на in sample — плохо.
Чтобы избежать подгонки эквити, мы используем несколько приемов.
Во-первых, мы не используем фильтры и любые константы в торговой логике для редких событий.
Во-вторых, мы не торгуем инструменты, у которых недостаточно истории для качественного бэктеста. Минимум три года для in-sample, чтобы стабилизировать внутренние параметры стратегии, ещё 3-5 лет нужно для out-of-sample. То есть минимальный горизонт данных для качественной проверки составляет шесть-десять лет — тут работает правило “чем больше, тем лучше”.
В-третьих, все бэктесты у нас проходят с walk forward analysis — последовательная проверка на данных, которые стратегия «не видела». Единичного форвардного теста недостаточно, чтобы сделать вывод о работоспособности стратегии, не то что просто оптимизации на всей истории.
Так что главный «краш-тест» — это walk forward analysis на достаточно длинной истории. Если стратегия работает только на in-sample данных, а на out-of-sample разваливается — это переобучение или просто нерабочая стратегия.

Замечаю ли манипуляции? Скорее нет, чем да. Потому что мне в принципе не важно, из-за чего начала расти цена. Если я могу зайти в начале тренда и выйти в конце, то какая разница, манипуляция это, органический рост, новости или фаза луны?
Но иногда, конечно, видно. Даже на свечных данных. Если проанализировать ордерлоги или трейдлоги — тоже. Например, на крипте сильно выделялся один из маркетмейкеров в стакане. У маркетмейкеров есть договорённости с биржей о минимальном спреде и объёме, который они обязаны поддерживать. Так вот, один из них держал минимальный спред буквально одним контрактом. Как только прилетал крупный ордер — стакан резко пустел, оставались только минимальные ордера в спреде. Цель: максимально «прострелить» цену и исполниться по лучшей для себя цене. По свечам это видно: минутная свеча на крипте в 10% вверх-вниз, тело сжато в процент, тени огромные.
Так что манипуляции существуют, но чаще на низколиквидных активах и на наши стратегии никак не влияют.

Для нас это важно, но не критично. Наши ребята, ответственные за инфраструктуру, арендуют серверы рядом с серверами биржи. Минимальная задержка важна: лучше иметь десять миллисекунд между отправкой ордера и исполнением на бирже, чем десять секунд. Но для нашей частоты торговли это вторичный показатель. Мы не HFT, где прибыль может резко сократиться из-за пары миллисекунд. Для трендовых стратегий «физика» не решающий фактор, но и не то, чем стоит пренебрегать.
Я считаю, что можно, если сказать LLM: «Торгуй по этим правилам» и написать ей торговые правила из нормальной рабочей стратегии. Тогда она сможет (после нескольких итераций с различными промтами), но, по сути, это будет просто экзекьютор, который непонятно для чего нужен. Потому что зачем LLM, если можно написать алгоритм?
А вот чтобы LLM сама придумала стратегию и торговала прибыльно год-два? Пока что вряд ли. И это подтверждается тем, что крупные игроки не дают AI самостоятельно торговать. Советник, аналитик, бухгалтер, поисковик — да, трейдер — нет.
Сейчас все поголовно используют ИИ, наши разработчики тоже используют AI-инструменты для написания простых функций и быстрого анализа, но по итогам этого анализа все равно нужно всё проверять на классическом бэктестере с учетом всех нюансов, описанных выше.
В ближайшем будущем AI-продукт, возможно, будет, но не тот, который ты подразумеваешь, а внутренний продукт для ускорения разработки и написания документации.
В нашем деле очень велика цена ошибки, так что для генерации торговых сигналов нейросети пока не используются: классический алгоритмический подход себя оправдывает, и менять его на менее предсказуемый инструмент слишком рискованно. Наша цель — создание стратегий и инфраструктуры, которые обеспечат долгосрочный прирост капитала выше бенчмарков с прогнозируемым уровнем риска, а не громкие заголовки уровня “AI-бот превратил 100 тыс. рублей в 100 млн всего за 2 дня/2 часа”. Появятся успешные кейсы, когда LLM будет управлять портфелем эффективно несколько лет — тогда, безусловно, станем тратить больше времени на работу с AI.
Главное — относиться к исследованию, как к рутине, в хорошем смысле этого слова. Отрицательный результат — тоже результат, и хороший, потому что ты не потеряешь деньги на нерабочей гипотезе. Сложно не вспомнить фразу Томаса Эдисона: “Я не терпел поражений. Я просто нашёл 10 000 способов, которые не работают”.
Проверил гипотезу, увидел, что она на бэктестах не зарабатывает или зарабатывает хуже, чем уже имеющийся портфель — круто, мы её не запустим в продакшн, мы на ней не потеряем. Надо не искать грааль, а проверять гипотезы. Дал отрицательный результат — хорошо, не потеряли денег. Дал положительный — круто, запускаем в работу, дополняя стратегию.
Можно сравнить с работой лаборанта: анализ за анализом, рутина, но каждый результат — это информация, а не победа или поражение.
Ещё одна рекомендация: периодически менять исследовательские задачи. Поработали над гипотезами — переключитесь на проверку статистических характеристик, на идеи, которые напрямую не генерируют сигналы. Сменить направление, чтобы разбавить постоянные разочарования от разрушенных граалей любым положительным результатом просто от выполнения задачи.
Ёмкость стратегии — это объём, который можно проторговать, не влияя на рынок и не ухудшив метрики. Мы с этим сталкиваемся на MOEX.
Конкретный кейс: в 2018–2020 годах запустили модель исполнения крупных ордеров на Московской бирже. И буквально через считанные недели заметили, как стакан начал редеть в моменты нашего исполнения. Экзекьюшен стал заметно хуже. Кто-то из рыночных игроков просчитал наши заявки и ордера, поправили модель исполнения и перестали быть заметными.
На тонких рынках в альткоинах или на Мосбирже такое периодически возникает. Нашли способ, как этого избежать. Подробностями делиться не будем, но разобрались, как решить проблему.
Важно контролировать торговые издержки в реальном времени, чтобы вовремя среагировать на негативные изменения.
Для старта есть хорошие публичные и бесплатные инструменты:
MetaTrader — хороший функционал, достаточно быстро считает, много готовых скриптов. Позволяет протестировать и сразу запустить в торговлю.
TSLab — российская разработка, пожалуй, самый распространённый бэктестер в СНГ. Функциональный, удобный, тоже позволяет разработать стратегию, протестировать и запустить код в торговлю с минимальной адаптацией. Отличный инструмент.
Этого хватает, чтобы начать: хочешь MA протестировать — пересеклись вверх — покупаем, пересеклись вниз — продаём. Для генерации большого сильного портфеля этого, правда, будет уже недостаточно.
Мы в Quant Hill долгое время работали через TSLab, потом разработали своё решение на Python с учётом всех внутренних требований. Генерируем отчёты с более чем пятьюдесятью метриками для анализа, плюс кривые доходности, просадок, плечей и прочее. Ни одного дизайнера не пострадало, зато функционал позволяет полностью сформировать портфель, просимулировать его с помощью walk forward анализа на максимальном количестве истории по сотням инструментов и тысячам ботов. И это же ПО формирует продакшн-портфель: параметры всех ботов из портфеля идут в базу, откуда забираются продовыми ботами для торговли на реальных счетах.
Нормальный бэктестер для серьёзной работы — это, скорее, самописное детище, где ты контролируешь каждый шаг и обладаешь достаточной экспертизой и в кодинге, и в трейдинге, чтобы учесть все нюансы. Но начинать стоит с публичных решений, чтобы понять базу, набить шишки и определить, какого функционала вам не хватает.
Практические советы:
· Обращайте внимание при бэктесте не только на свечу, но и на объём. Обязательно смотрите на объём при исполнении.
· Измеряйте реальное проскальзывание при исполнении ордеров.
· Постарайтесь спрятать заявки от маркетмейкера. Маркетмейкеры ждут и анализируют. Это не паранойя, а реальность, с которой сталкиваются все, кто дорос до определённого объёма.

За одиннадцать лет работы я ещё ни разу не видел тех, кто в долгую мог проторговать стратегию возврата к среднему (арбитраж не в счет). Мы абсолютно все гипотезы проверяем симуляцией на исторических данных, максимально приближенно к реальной торговле. И контртрендовые алгоритмы никогда не проходили этот тест.
Почему? Трендовая стратегия простая: есть тренд — зарабатываешь, нет тренда — твоя задача не потерять больше, чем планировалось. В контртрендовой же нужна волшебная кнопка «выключить бота перед трендом». Но такой кнопки нет.
Всегда после растущей под 45 градусов эквити случается одно движение, которое нивелирует годовую-двухгодовую доходность или весь депозит за одну ночь или за одну неделю. Такой график ещё называют графиком веса индейки.
Даже те контртрендовые алгоритмы, которые у нас получались и срабатывали в боковиках (там, где трендовые стратегии теряют), в портфеле с трендовыми ботами показывали суммарную эквити хуже, чем просто тренд. Дешевле отдать рынку в боковике и потерять меньше в конце периода.
Мы периодически наблюдаем за торговыми командами, которые используют контртрендовые стратегии, иногда радуемся их хорошим результатам, и запускаем очередной виток проверки контррендовых стратегий. Потом просыпаешься, видишь новость, как на криптобирже ликвидировали позиции на миллиарды долларов, заходишь посмотреть, как дела у товарищей — и грусть, тоска, печаль. Где-то что-то с рисками было не то. Как и в любой контртрендовой стратегии — чтобы зарабатывать в боковике, нужно брать плечи, усредняться против тренда, а это всегда кончается плохо.