Eth_algotrader
Eth_algotrader личный блог
09 июля 2024, 22:29

Как я перестал волноваться о просадках и начал их ждать

Главный враг всех алготрейдеров, как известно, просадка. Чего они только не делают, чтобы ее избежать!
— диверсифицируют свою стратегию по 30 инструментам на 10 таймфреймах с 15 наборами параметров
— мучают оптимизатор миллиардами прогонов до тех пор, пока все убыточные сделки не исчезнут
— убирают стопы, включают сетку и добавляют мартина, чтобы просадок не было видно ну хотя бы по балансу
— ну и продолжают, конечно же, поиск Грааля, который обязательно должен расти под 45 градусов вверх 365 дней в году...

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

Полагаю, что проблема просадок заключается не в несовершенстве торгового алгоритма, а в неправильном управлении капиталом. Что делает типичный алготрейдер, когда его счет растет? Разумеется, постепенно повышает торговый объем. А что обычно случается со всеми системами (особенно трендовыми) после того, как они дают существенную прибыль? Конечно же, они уходят в просадку! Потому что после любого сильного движения на рынке наступает консолидация, в которой система теряет.

Что получаем в итоге:
период хорошего для системы рынка --> рост счета --> повышение объема --> период плохого рынка --> заход в просадку на повышенном объеме --> повышенный размер просадки --> снижение размера счета --> снижение объема --> более длительный выход из просадки на малом объеме.

Этому подходу можно было бы противопоставить торговлю фиксированным объемом, которая почти всегда дает менее глубокие просадки и более быстрые выходы из них (т.е. более высокий фактор восстановления). Но как тогда вообще повышать объем с ростом депозита?

И здесь конечно же вспоминается нетленная картинка:

Как я перестал волноваться о просадках и начал их ждать
Ведь ее можно применять не только к торговле, но и… к управлению капиталом в алготрейдинге!

Например, так:
1. Начнем торговлю фиксированным лотом.
2. Как только будет достигнута минимальная величина просадки, поднимем лот до нового значения баланса (максимального, до начала просадки)
3. Если просадка еще значительно углубится, поднимем лот еще раз.

Тогда сценарий полностью поменяется:
период хорошего для системы рынка --> рост счета --> период плохого рынка --> заход в просадку на малом объеме --> сниженный размер просадки --> снижение размера счета --> повышение объема --> более быстрый выход из просадки на повышенном объеме.

Ладно, хватит болтать, давайте проверим все это на цифрах! Берем вот такую систему за 6 лет (2018-2024) на крипте, начинаем с депозита 8000$ и торгуем фиксированный лот=4 (фикс. размер позиции, если быть точнее, потому что лот конечно же нормируется на цену, иначе риск будет плавать с изменением цены):
Как я перестал волноваться о просадках и начал их ждать
1205 сделок. Получаем с учетом комиссий 115 000$ прибыли при просадке 4000$, ФВ=28.5. Фикс.лот — это своего рода эталон для анализа торговых систем. Любой метод реинвестирования повысит прибыль, но ухудшит отношение прибыли к просадке (ФВ).

Начнем с классического метода, % от депозита. Будем торговать 4 лота на каждые 20 000$ баланса:
Как я перестал волноваться о просадках и начал их ждать
Прибыль:  1 686 000 $
Мах просадка: 162 000 $
ФВ: 10.4

Прибыли конечно больше, но фактор резко упал. Качество снизилось. 

Что если мы не будем снижать объем на просадке, чтобы выйти из нее быстрее? Т.е. лот зависит от мах.баланса, а не от текущего:
Как я перестал волноваться о просадках и начал их ждать
Это конечно более агрессивный подход, поэтому, чтобы адекватно сравнить его с предыдущим, я снизил стартовый риск таким образом, чтобы получить в итоге такую же прибыль. Тогда мы можем сравнить, какой подход даст меньшую просадку.

Прибыль:  1 690 000 $
Мах просадка: 159 000 $
ФВ: 10.6

Просадка совсем чуть-чуть ниже. Получше, но не убедительно. Давайте попробуем теперь повышать объем до заданного при достижении определенного уровня просадки. Какого? Посмотрим на график просадок фикс.лота (просадки умножены на 10 для масштаба):
Как я перестал волноваться о просадках и начал их ждать

Мы видим, что уровень в 800$ захватит подавляющую часть заметных просадок. А уровень 1500$ мог бы быть дополнительным, т.к. он захватывает бОльшую часть более глубоких. Пробуем повышать лот на просадке 800 (для этого мы, разумеется, виртуально считаем эквити на фикс.лоте), опять нормируя риск, чтобы добиться одинаковой прибыли:
Как я перестал волноваться о просадках и начал их ждать
Прибыль:  1 680 000 $
Мах просадка: 148 000 $
ФВ: 11.4

Совсем другое дело! Видим значительно повышение ФВ и заметное снижение мах. просадки. 

Попробуем повышать риск на просадке в 1000:
Как я перестал волноваться о просадках и начал их ждать
Прибыль:  1 680 000 $
Мах просадка: 153 000 $
ФВ: 11

Результат похуже. Пробуем повышать на 1200:
Как я перестал волноваться о просадках и начал их ждать
Прибыль:  1 682 000 $
Мах просадка: 156 000 $
ФВ: 10.8

Еще хуже. На 1500:
Как я перестал волноваться о просадках и начал их ждать
Прибыль:  1 687 000 $
Мах просадка: 166 000 $
ФВ: 10.2

Снова ухудшение! Очень похоже, что излишняя консервативность не позволяет использовать потенциал стратегии. В последнем варианте частота реинвестирования получается 1-2 раза в год. Видимо, это слишком мало.

А что если на первом значении просадки (800) повышать риск только до половины мах.баланса, а на втором (1500) до максимального? Пробуем:
Как я перестал волноваться о просадках и начал их ждать
Прибыль:  1 685 000 $
Мах просадка: 151 000 $
ФВ: 11.1

Тоже хороший результат, очень близкий к лучшему (1 просадка на 800), но все же слабее.

Сведем все результаты в таблицу:
Как я перестал волноваться о просадках и начал их ждать
Как видим, лучший результат при разовом реинвесте на просадке 800. Он заметно обходит стандартный. Ближайший к нему на просадках 800 и 1500.

На практике я решил использовать второй результат, потому что он психологически комфортнее (ты знаешь, что если уйдет глубже, тебе есть, что докинуть) и потому что, конечно же, просадки в будущем всегда больше, чем они были в прошлом :) (даже если бы не было переподгонки, а она в какой-то степени всегда неизбежна).

А сейчас оставлю вам код во включаемом файле MQL5, чтобы вы могли попробовать эти стратегии в своих советниках. В самом файле BalanceIncOnDD.mqh (его разумеется в папку /include) выберите из списка нужный вам режим ММ и задайте значения для 1й и 2й просадок:

enum LotCalcMode{AdjLotByBalance, AdjLotByMaxBalance, AdjLotIn1DD, AdjLotIn2DDs};  //варианты ММ

LotCalcMode MMmode=AdjLotByBalance;    //режим ММ
#define DDsize1 800   //просадка для первого увеличения лота
#define DDsize2 1500   //для второго
Включите его в код своего советника:
#include <BalanceIncOnDD.mqh>
В функцию OnTick() добавьте расчет ММ по текущему балансу:
void OnTick()
{     
    LookForBalanceDDs(BalanceNorm);        
}
где BalanceNorm — величина баланса, на которую нормируется ваш лот (при Lot=4 торгуется по 4 лота на каждые BalanceNorm баланса, в моем случае +-20k).

Лот для сделки установите следующим выражением:
double currlot=NormalizeDouble(Lot*PriceNorm/Bid, 2);
if(AdjustLotByBalance)currlot=NormalizeDouble(currlot*BalanceToCalcLot/BalanceNorm, 2);
где AdjustLotByBalance это режим роста лота с ростом баланса, а PriceNorm — цена актива, по которой нормируется лот (у меня 3000 для Эфира).

Наконец, в функцию OnTester() добавьте отрисовку графиков с просадками (будет в визуализаторе) и вывод всех случаев появления просадок (в логах) указанных размеров:
double OnTester()
{
   OnTesterBalance(!AdjustLotByBalance);
}
Файл с кодом оставляю в блоге mql, здесь нельзя прикрепить его к посту.

В следующей записи я расскажу, как этот подход показал себя в реальной торговле.
33 Комментария
  • Мальчик buybuy
    09 июля 2024, 22:46
    «Как я перестал беспокоиться о просадках, начал их ждать, а на время ожидания пошел работать на завод» © Карпов

    С уважением
  • AntiKukl
    09 июля 2024, 23:21
    а только в крипте такие хорошие результаты? Думаю с форексом, фондой или товарами будет не так хорошо…
  • AntiKukl
    09 июля 2024, 23:36
    просто крипту еще можно просто торговать, пока она не эффективна, но это же не вечно
  • AntiKukl
    09 июля 2024, 23:43
    а сишку легко торговать? наверное очень долгосрочно или на тестах, потому что как только открыта позиция, то против тебя уже работают ИИ сбера ))
  • Кирилл Гудков
    09 июля 2024, 23:57
    Непонятно, зачем фиксированный размер называть фиксированным лотом и постоянно уточнять, что это размер а не лот.

    По самой теме: слишком мало жиру на еще один параметр. RC (aka ФВ) неустойчивый критерий оптимизации, слаб к подгонке.
      • Кирилл Гудков
        10 июля 2024, 00:14
        Eth_algotrader, с шарпом есть проблема, его многие тестеры считают как-то через задницу. Ulcer performance index — неплохой критерий. Ну и на среднюю сделку надо посматривать, если стратегия суетлива. Чтобы не получилось как с одним товарищем, который в том году настрочил тут статей о успешном успехе, а потом куда-то растворился.
  • Ivan Smirnov
    10 июля 2024, 00:48
    Ого! 1 680 000 $! В следующем посте покажете свой Феррари?
  • MatrixLis
    10 июля 2024, 10:18
    1205 сделок за 6 лет. Получается в среднем 1 сделка за 2 дня. Но за 2 дня крипта может поменять направление движения несколько раз. Какая средняя длительность одной сделки? Какой процент прибыльных сделок?
  • bobef
    10 июля 2024, 08:09
    Так это ж мартингейл, давно известный подход.
    • Андрей К
      10 июля 2024, 08:42
      bobef, тоже об этом подумал. Но прочитал в комментах, что бэктест 6 лет. И кочерги за это время так и не случилось ) Интересно бы глянуть из МТ5 график занятых средств
      • Андрей К, 
        это не мартингейл. чувак изобрел реинвест и в оптимизаторе нашел лучшие варианты подгона коэффициентов на истории.
        • Андрей К
          10 июля 2024, 12:19
          Eth_algotrader, ага, наверное про это. Я отвык от метака, забыл что там выводит
  • SergeyJu
    10 июля 2024, 10:42
    Один шаг из сеточного метода. Повышаем доху при (более вероятном) положительном исходе, повышаем риск катастрофы при смене режима рынка. 
    Напрашивается включение в портфель разнородных систем на разнородных активах.
  • Ed Khan
    10 июля 2024, 16:29
    Очень ёмкая, рабочая концепция. Сам точно так же «гарцую» между фиксированным и динамичным рисками. Пришёл к выводам, схожим с выводами автора; успешно использую!)

      • Ed Khan
        10 июля 2024, 16:50

        Eth_algotrader, максимально по-разному)

        Самый частый способ — просто месячная отсечка, а не глубина просадки. И какие-то действия я предпринимаю, только если на начало нового месяца имею просадку (неважно, -1% или -10%).

        Если ставить календарные отсечки, а не по глубине просадки, всё будто бы становится сглаженнее. И обычно успевает измениться негативный характер рынка)

          • Ed Khan
            10 июля 2024, 16:58

            Eth_algotrader, да, исключительно алго) Своя самописная платформа. Крипта. ТФ — обычно использую не единичные, а смешанные (индексные) на одном счёте. Почти всегда миксую только три: D1, H4, H1.

  • GOLD
    10 июля 2024, 18:25
    очередные расчеты на исторических данных показывают очередные фантастические результаты верующим баранам, мечтающим о легком богатстве))



    писал о честном тестировании алгоритмов здесь
    • Ed Khan
      10 июля 2024, 18:27

      GOLD, исторические результаты здесь, полагаю, даны в подтверждение гипотезы, озвученной выше. А не вокруг них всё строилось.

      Нужно различать.

      Или вам больше нравятся гипотезы, озвученные без какой-то подтверждающей визуализации?) 

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн