Найти в Дзене
Трейдинг и Роботы

#6 Марк: Оптимизация: Прибыль и прибыль

Оглавление

Теперь, когда разработка серии Марков завершена и выделен наилучший сценарий использования базовой стратегии, можно приступить к финальной оптимизации.

Контрольный тест

Начну с контрольного тестирования, стартовые настройки такие:

Контрольный тест: параметры
Контрольный тест: параметры

Ежедневно в 7:00 открывается позиция EUR/USD по рынку объемом 0.01 лота в направлении движения рынка в прошлый день.

Позиция не закрывается по времени (возможен перенос по суткам), оставаясь открытой до тех пор, пока не достигнет уровня тейка (50 пунктов) или стопа (50 пунктов), который переносится трейлингом (по 10 пунктов). Безубыток не выставляется.

Результаты контрольного теста такие:

Контрольный тест: результаты
Контрольный тест: результаты

За 1 календарный месяц (июль 2020), было открыто 23 позиции. Контрольный тест завершился практически в ноль. Самая продолжительная серия убытков (4) опустила депозит всего на 2,2%.

Изменение баланса депозита в контрольном тесте
Изменение баланса депозита в контрольном тесте

Стоит отдельно отметить, что Марк 4 не уводит депозит в просадку. Это очень хорошо, потенциально можно будет увеличить торговый лот в 2-5 раз, по результату оптимизации. Проверим это позднее.

В общем — удобная стартовая площадка для оптимизации.

Большая оптимизация

Константами для оптимизации являются инструмент, лот и проскальзывание.

*вместо скрина параметров, который я потерял
*вместо скрина параметров, который я потерял

Также из оптимизации я исключил функцию безубытка — работает по тикам и в разы нагружает процесс оптимизации и мешает извлечению прибыли.

Исключил и размер Тейка. Но это небольшая жертва, поскольку нахождение идеального значения для параметра практически не имеет смысла — для разных временных периодов может сильно отличаться (почему Стоп надо оптимизировать объясню ниже).

Две части одной оптимизации

Поскольку изменяемых параметров для робота получилось достаточно много, придется проводить разумную (выборочную) оптимизацию, которая переберет не все возможные комбинации за раз (на это уйдут недели вычислений).

Поскольку у меня нет под рукой нет свободного дата-центра, придется разделить оптимизацию на 2 части.

Сначала выделю оптимальный параметр открытия позиции (часы открытия и закрытия), полученный результат станет константой для выбора параметров закрытия позиций (размера стопа и трейлинга).

Часть 1: Открытие позиций

Первой парой параметров в оптимизации станет час открытия (первая половина дня с шагом 1 час), и закрытие (закрываем в 24 часа или не закрываем вообще).

Параметры оптимизации по открытию позиций
Параметры оптимизации по открытию позиций

Примечание: Стоп и Тейк для этого теста константы по 100 пт, трейлинг выключен.

Всего 44 варианта было просчитано примерно за 10 минут. Карта результатов первой оптимизации выглядит следующим образом:

Карта оптимизации по открытию позиций
Карта оптимизации по открытию позиций

Результат очевиден! Закрывать позиции в конце дня (первая строка) не выгодно, но выгодно не закрывать по времени (зеленая строка).

По первой строке: разброс показателей с закрытием в 23 часа небольшой: худший результат -3% за месяц, если открывать в 4-5 утра; лучший результат 1% в плюс.

По зеленой строке: Самыми прибыльными являются показатели справа: открывать сделки в 21-22 часа, но там открывается 12 позиций в месяц, вместо 23 в контрольном тесте, значит существуют какие-то ошибки.

Даже не буду тратить время на разбор, поскольку это идейно не подходит базовой стратегии и отлично видно другое множество хороших результатов.

Открытие позиций с 8 утра и до 14 дня без закрытия (по часам), приносит около 15% прибыль в месяц. Этот вариант в работу.

Часть 2: Закрытие позиций

Второй парой параметров в оптимизации станет величина Стопа (от 10 до 200 с шагом 10 пунктов) и Трейлинга (от 10 до 50 с шагом 5 пунктов).

Параметры оптимизации по закрытию позиций
Параметры оптимизации по закрытию позиций

Примечание: открытие позиций — теперь статичные параметры, открываем с началом лондонской торговой сессии, в 9:00 UTC, и не закрываем.

Почему Стоп оптимизирую а Тейк нет?
Все просто — уровень Стопа динамический (переставляется Трейлингом) и мы ищем комбинацию, образующую эту динамику.
Тейк же, статичный, и взяв лучший вариант для этого параметра мы рискуем ориентироваться на конкретные ценовые движения в прошлом, а не на закономерности.
В общем случае, такой подход ведет в ловушку оптимизации, о чем я рассказывал в прошлый раз, в абзаце почему нельзя взять самый лучший результат оптимизации и получать 150% прибыли?
Зачем разбил оптимизацию на части?
Если бы отправил на оптимизацию все параметры сразу, то количество сочетаний выросло бы экспоненциально.
Получилось бы порядка 2’900 комбинаций, которые проверялись бы несколько суток, исходя из имеющейся вычислительной мощности.

Все 180 комбинаций вариантов сочетания Стопа и Трейлинга просчитались в 100 потоков за 2 итерации примерно за час.

Карта результатов оптимизации параметров закрытия позиций выглядит следующим образом:

Карта оптимизации по закрытию позиций
Карта оптимизации по закрытию позиций

Сразу бросается глаза отсутсвие отрицательных результатов. Это означает, что робот будет приносить прибыль практически при любых условиях на рынке.

Также результаты плавно растекаются по шкале параметров — даже при существенной разнице поведения текущего рынка и во время периода оптимизации — большой разницы по прибыльности быть не должно.

Расширение оптимизации параметров закрытия позиций

Еще я сразу обратил внимание на то, что карта результатов оптимизации плавно растекается влево-вправо, но как будто бы обрезана снизу.

Хочу провести дополнительную оптимизацию, сократив параметры Стопа (горизонтальная шкала) и добавив варианты с большим значением Трейлинга (вертикальная шкала).

Сегмент от которого буду расширять оптимизацию вниз
Сегмент от которого буду расширять оптимизацию вниз

Для всех результатов, в которых Марк 4 принес более 10% в месяц, добавим еще 50 вариантов трейлинга (теперь от 10 до 100 с шагом 10 пунктов).

Получилось всего 80 вариаций, точность будет чуть ниже, чем в прошлый раз из-за большего шага, но прошлые результаты были достаточно кучными, так что этим можно пренебречь.

Буду расширять еще, в направлении стрелки
Буду расширять еще, в направлении стрелки

Синий прямоугольник — открывшаяся область — показывает, что можно достичь лучших результатов просто сократив стоп и увеличивая Трейлинг.

Это неожиданный и любопытный результат.

Сокращение максимально возможного уровня убытков мне нравится как идея (кому не понравится?). Попробую развить эту тенденцию, оптимизируя по параметрам, идущим в сторону направления стрелки.

Параметры для второго расширения
Параметры для второго расширения

Перебираю параметры таким образом, чтобы левый нижний угол, если это лучший результат, оказался в центре новой карты оптимизации.

Еще 121 вариант и полчаса ожидания спустя, надежды в целом, оправдались, но есть одно но:

Внимание на желтый прямоугольник; цифры с определенного момента не меняются
Внимание на желтый прямоугольник; цифры с определенного момента не меняются

Прошлые результаты оказались в центре (ну почти, слева я побольше отступ по вариантам параметров сделал на всякий), то есть теперь лучшая прибыльность лежит в центре оптимизации.

Однако, по одному из множеств результатов оптимизации Марк 4 работает лучше без трейлинга. На расстоянии Трейлинга более 90 (желтая рамка) не видно никаких улучшений; все результаты в большую сторону, по сути, получены без использования этого чудо-инструмента.

Собирая воедино изначальную оптимизацию для закрытия позиций и ее расширения, карта получается следующая:

Это собранный результат всех (трех) оптимизаций по закрытию
Это собранный результат всех (трех) оптимизаций по закрытию

Выводы из объединенной карты оптимизации следующие:

  • Прибыльно поставить стоп 80 пунктов и вообще не трейлить.
  • Прибыльно поставить стоп 100 пунктов и трейлить на 50, результат примерно такой же.

Я выбираю путь с трейлингом, поскольку конкретное число для Стопа то же самое что и конкретное число для Тейка — это ловушка оптимизации (статичная переменная, показывающая отличные результаты на конкретно взятом историческом промежутке).

И еще я выбрал этот путь по причине постоянного сокращения максимально возможного убытка для каждой позиции.

Итоги финальной оптимизации

Марк 4 — просто огонь! При самых разных вариациях настроек работает в плюс.

Ни какого тебе красного, ни даже розового цвета на картах оптимизации. Как ни крути настройки, получается большая или меньшая, но прибыль.

Оптимальные параметры

Стабильные, наименее рискованные и наиболее прибыльные параметры, отвечающие идейности базовой стратегии, по результатам консолидированной оптимизации, получились следующие:

Оптимальные параметры для Марка 4
Оптимальные параметры для Марка 4

Ежедневно в 9:00 открывается позиция EUR/USD по рынку (объемом 0.01 лота) в направлении закрытия вчерашнего дня.

Позиция не закрывается по времени (возможен перенос по суткам), оставаясь открытой до тех пор, пока не достигнет уровня Тейка (100 пунктов) или Стопа (100 пунктов), который переносится Трейлингом (по 50 пунктов). Безубыток не выставляется.

Результаты итогового теста

Результаты итогового теста
Результаты итогового теста

По результатам теста с оптимальными параметрами, Марк 4 принес прибыль 13,54% за месяц (с учетом всех овернайт-свопов).

Изменение баланса депозита в итоговом тесте
Изменение баланса депозита в итоговом тесте

Робот максимум ушел в просадку на 5,5% на старте тестирования, но это скорее исключение, экстремальное значение, вызванное вхождением в рабочий цикл.

Ожидаемая прибыльность

Когда я увидел очень низкую просадку в оптимизации по открытию позиций (выше), то предположил, что «потенциально можно будет увеличить торговый лот в 2-5 раз, по результату оптимизации».

И это действительно так. По результату финальной оптимизации: соотношение прибыли к риску для робота Марк 4 составляет 2 к 1.

-18

В тесте на демо-счете использую 0.3 лота для депо $5k, что расчетно подразумевает 50% прибыли в месяц при максимальной просадке 25%.

Следующим шагом, отправлю робота на тестирование в режиме реального времени.