Страницы

2024-06-04

Почему в реале не работают некоторые виды стратегий на лимитных ордерах

 Закодируем простейшую стратегию для американских акций. Настолько простую что проще не бывает. Условия системы:

---------------------------------

- каждый день покупаем акции лимитным ордером, если они падают на 2% от закрытия прошлого дня.

- на следующий день продаем купленные акции на открытии сессии.

----------------------------------

Тестировать будем на акциях из состава индекса Russell-1000 (дневные данные). Максимальное количество открытых позиций -- 10. То есть каждая покупка на 10% от депозита.

Результат за 20 лет поразительный. Среднегодовая доходность  +119%, шарп 2,5 и т.п.





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

Год-два назад на форуме Wealth-Lab стали обсуждать подобную систему, которая показывала такую же доходность, и до сих пор находится на первом месте среди публичных теоретических систем на Велслабе. У меня в тот момент случайно оказались внутридневные данные за десять месяцев по акциям из индекса Nasdaq-100, и я сравнил что будет если протестировать систему сначала на дневных данных, а потом применить для сравнения тест с использованием внутридневных данных. 

Ну и вот, это динамика прибыли за год, протестированная  на дневных данных. Видно что результат значительно превосходит индекс и стратегия прибыльная:




Но стоит подключить внутридневные данные и результат сразу же становится не то что нулевым, но и даже отрицательным. И хуже индекса:




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

Кто-то скажет, в этом случае нужно применить метод Монте-Карло, чтобы перебрать на дневном таймфрейме все возможные варианты очередности открытия позиций. Я тоже так считал. Но сколько ни применяй Монте-Карло, все результаты получаются плюс-минус несколько процентов от оптимистичного сценария и ничто не указывает на то что на самом деле все будет не так. С чем это связано я так и не разобрался, думаю скорее всего прав Cone из Велслаба, который ответил мне что вероятность в МонтеКарло отражения самого пессимистичного сценария очень мала.

В общем, смысл такой:

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

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

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

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

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

7 комментариев:

  1. Очень любопытно, спасибо! А можно ссылку на форуме велса, чтобы почитать ответы?
    К какому выводу пришли вы - входить только по Close?

    ОтветитьУдалить
    Ответы
    1. https://wealth-lab.com/Discussion/OneNight-w-Moving-Percentile-and-Weight-8888
      Нет, по клоузу доходность уже не та. Просто не играю такие системы.

      Удалить
  2. Этот механизм появления фальшивого эджа связан с разрывом во времени. Это чем-то похоже на известный фальшивый эдж в ру фьючерсах, когда открытие было в 10:00. Первая сделка в 10:00 по 100 000, вторая по 101 000. В итоге любая трендовуха покажет плюс, поскольку зайдет по 100 200 и через минуту выйдет по 101 000. А в реале купить по 100 200 невозможно.

    У вас идейно чем-то похоже. Большинство акций, упавших на 2% в течение дня, отрастут обратно. Поэтому если равномерно случайным (то есть равновероятно) образом их выбирать по итогам дня, то будет эдж. То же и Монте-Карло сделает, Монте-Карло--это тоже равновероятный случайный выбор.

    Тут дело в том, что небольшая часть акций упадет процентов на 10%. Так, чтоб среднее приращение акций, уже упавших на 2%, было бы нулем, ибо рынок--это (почти) СБ, волки просто так деньги не отдадут :) То есть из тех, что упали на 2% и в которые ваш тест зайдет лимиткой, 80% отрастут обратно к уровням начала дня, а 20% упадет еще процентов на 8. При этом среднее--ноль :) Если выбирать случайным образом, то вот и эдж, 80% сильно больше 20%.

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

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

    Откуда данные интрадейные брали?

    ОтветитьУдалить
    Ответы
    1. Интрадей можно взять на financialmodellingprep недорого. Я оценил свои EOD стратегии по данной проблеме следующим образом - просто задрал в 10 раз доступный капитал. В результате стало входить абсолютно во все сделки (maxExposure << 100%) и результаты даже стали лучше с т.з. PF и profit, но немного хуже с т.з. DD. Выглядит, что немного переоценена проблема. Хотя, возможно, мой подход проверки не настолько хорош, буду рад критике.

      Удалить
    2. To Анатолий: спасибо, действительно так и есть, согласен. Интрадейные данные брал от Ameritrade -- было встроенное в WL расширение, но за небольшой период.

      Удалить
    3. To BratKarlo: Тоже всегда делаю такие тесты, чтобы присутствовали все сделки. Но не капитал задираю, а просто выставляю процент на сделку соответствующий, чтобы ни одну не пропустить. DD в таких системах в моменты обвала рынков должен быть очень большим, так как все акции будут куплены и все будут падать. Но для оценки средней сделки вполне годится.

      Удалить
    4. Не Уткин ли ваша фимилия ;-)

      Удалить