Автоматическое создание торговых стратегий
Тот, кто впервые слышит, что торговые стратегии можно создавать автоматически и что при этом за считанные часы появляются тысячи кандидатов, начинает сомневаться. Сначала это звучит как генератор случайных чисел с красивым интерфейсом. В начале такого прогона действительно стоит случайность, но это лишь первый из нескольких шагов. В конце этой статьи ты будешь знать, как такой прогон в StrategyQuant X устроен на самом деле, почему из тысяч стратегий в итоге остаётся лишь несколько, и что эти оставшиеся могут тебе сказать, а что нет.
Как программа вообще строит новые стратегии
Builder в StrategyQuant X знает два способа строить новые стратегии: случайная генерация и генетическая эволюция. Ни один из этих способов не лучше другого по своей сути, ты выбираешь режим до того, как запустится прогон.
При создании новой стратегии Builder соединяет ценовые паттерны, технические индикаторы, типы ордеров и связанные с ними строительные блоки в правила входа и выхода. Результат поначалу представляет собой лишь корректно собранную стратегию, а не автоматически разумную.
Насколько велико пространство возможных комбинаций, показывает одна цифра из документации производителя: если сложить все правила и все порядки, получаются расчётно триллионы различных возможных стратегий, и программа, по данным производителя, способна создавать и тестировать тысячи новых стратегий в час. Это порядок величины, а не точный подсчёт для конкретного прогона, и он ничего не говорит о том, сколько из них в итоге окажутся пригодными.

Почему одно лишь количество ничего не говорит о качестве
Не каждая случайно сгенерированная стратегия была положительной в бэктесте, но среди тысяч, которые появляются за час, согласно документации производителя, многие в тесте заработали больше, чем потеряли. Сколько их на самом деле, зависит от выбранных строительных блоков и настроек запуска, фиксированной доли для этого нет. И даже если стратегия хорошо показала себя в бэктесте, это говорит лишь о прошлом, не о будущем.
Именно поэтому чистое количество не является признаком качества. То, что программа за час выдаёт тысячи кандидатов, ничего не говорит о том, сколько из них в итоге на что-то годятся. Порядок величины из предыдущего раздела это мера разнообразия пространства поиска, а не качества того, что в итоге получается.
Первый фильтр: автоматические правила отбраковки
Поскольку случайная генерация может производить и бессмыслицу, например правила, которые исключают друг друга или не имеют экономического смысла, в билдере есть автоматические правила отбраковки. В зависимости от настройки большая часть, согласно документации даже большинство, сгенерированных стратегий может быть отсеяна уже на этом этапе, прежде чем вообще начнётся оценка по показателям бэктеста.
Эти правила не побочный эффект, который лучше всего отключить. Это первый из нескольких фильтров, которые из огромного, неупорядоченного множества делают что-то обозримое.
Как проходит запуск стратегии на практике
Типичный порядок действий, который документация описывает как шаблон, выглядит так: импортировать или скачать котировки, настроить билдер, запустить прогон, просмотреть сгенерированные стратегии и после этого заново протестировать, оптимизировать или дальше улучшать оставшихся кандидатов. Это шаблон, а не жёсткое предписание, отдельные шаги можно подстроить под свой подход.

Пример из документации показывает это на EURUSD, без заданных торговых правил: сначала ты выбираешь режим build, затем настраиваешь ценовые данные и разделение на in-sample и out-of-sample, после этого выбираешь строительные блоки, с которыми может работать builder, и запускаешь генерацию. Лучшие результаты автоматически попадают в базу данных запуска. Пример относится именно к этой конфигурации, другие рынки или таймфреймы не обязательно требуют тех же настроек.
Второй фильтр: строгая проверка и отрезвляющий обычный случай
Тот, кто прошёл правила отбраковки, ещё далеко не закончил. Документация производителя приводит пример, который многих удивляет: вполне может случиться так, что из 1.000 стратегий, показавших положительный результат в первом бэктесте, только одна пройдёт более строгие проверки на устойчивость и тем самым вообще подойдёт как кандидат для live-торговли. Это пример порядка величины, а не фиксированная доля, которая действует для каждого запуска, и он ничего не говорит о том, подходит ли эта одна стратегия на самом деле для live-торговли.
Для большинства тех, кто впервые работает с автоматической генерацией, это ощущается как разочарование. Но это обычный случай, а не признак того, что что-то пошло не так. Именно для этого существует второй фильтр.

Чего не обещает зелёный бэктест
Бэктест, который выглядит положительно, это утверждение о прошлом, а не о будущем. Стратегии, оптимизированные под определённые рыночные условия, как правило, показывают худший результат, как только условия меняются. Это объясняет, почему стратегия, которая долго шла хорошо, вдруг начинает терять деньги, хотя в самом коде ничего не изменилось. Такое поведение нельзя полностью предсказать или предотвратить, это часть природы рыночных режимов.
Второй момент касается анализа what-if: улучшения, которые ты видишь там для одного сценария, могут быть случайными или в реальной торговле выйти иначе, потому что сделки влияют друг на друга. Поэтому производитель рекомендует после каждой настройки заново прогонять стратегию с принятыми настройками, прежде чем на неё полагаться.
Почему мы в QANTERIS учим именно этому процессу
Одна из причин, почему многие новички терпят неудачу со стратегиями, которые построили сами, в том, что они не знают разницы между сырой генерацией и проверенным кандидатом. Учебный материал по StrategyQuant X, который разбирает именно эту тему, описывает, почему большинство стратегий, построенных новичками, терпят неудачу, как автоматически генерировать и тестировать тысячи торговых идей и как из этого строить более устойчивые стратегии. Вот почему мы в QANTERIS показываем этот процесс шаг за шагом, а не просто объясняем интерфейс.
Что показывает этот метод и чего он не показывает
Автоматическая генерация и её фильтры показывают тебе, как стратегия вела себя на исторических данных, которые использовались для теста. Они не показывают, будет ли она так же работать в будущих, неизвестных рыночных условиях. Это не слабость программы, это граница любого метода, который опирается на прошлые данные о ценах, будь то автоматически сгенерированный или написанный вручную.
Что остаётся в итоге: процесс, который из огромного множества возможных стратегий в несколько шагов отбирает небольшое число кандидатов, каждый шаг со своей задачей, но это ничего не говорит о будущих результатах.
Эта статья служит обучению и не является инвестиционным консультированием. Прошлые результаты, в том числе результаты бэктестов, не гарантируют будущих результатов. Торговля финансовыми инструментами связана с рисками, ты можешь потерять деньги.
Эта статья служит обучению и не является инвестиционным консультированием. Прошлые результаты ничего не гарантируют на будущее.
А как это делаешь ты? Расскажи в сообществе. Бесплатно, на твоём языке.
Зарегистрируйся бесплатно