?

Log in

No account? Create an account

jc_trader


JC-TRADER. Биржевые игры. Системные Спекуляции.


Previous Entry Поделиться Next Entry
Почему я не использую OOS
jc_trader
Почему при тестировании торговых систем я не использую OOS (Out Of Sample)? Потому что в этом совершенно нет нужды. Но начну с того в каких случаях OOS необходим.

1) при поиске системы автоматическим подбором индикаторов и параметров.

Есть различные программы, которые сами подбирают систему для какого-либо инструмента путем перебора индикаторов, математическими путями и т.п. Например, Adaptrade Builder, ForexStrategyBuilder и др. Понятно что на определенном участке графика можно подобрать что-либо, для того чтобы построить более-менее гладкую восходящую эквити. Если еще применить кучу фильтров и оптимизировать параметры, то эквити на каком-нибудь участке графика будет гладкой до невозможности. Но сразу же после IS (in Sample) начнут действовать совершенно другие закономерности и, с огромной вероятностью, система не пройдет испытание OOS, что является положительным моментом для трейдера. И хорошо бы чтобы ВСЕ варианты систем не прошли бы OOS, но ведь найдется такая система, которая совершенно случайно пройдет испытание и у трейдера появится ложная надежда и он поставит такую систему в реальную торговлю. Чем это чревато, наверняка знают все действующие трейдеры. Поэтому, вывод, что применяй OOS в данном случае, что не применяй, результат будет один и тот же. А все потому что таким путем торговую систему не построить. Ну разве что только для какой-то одной определенной фазы рынка. А фазы ведь меняются без предупреждения.

2) при поиске системы программами нейронных сетей.

Эти программы обычно дают на выходе очень гладкие восходящие эквити, ну просто граали. И чтобы развенчать их, просто необходим OOS. Но опять же, попадаем в ловушку, так как есть вероятность что OOS совершенно случайно продолжит восходящую эквити и трейдер поверит в найденный грааль. Лучше бы не верил, потому что OOS сильно навредит ему.

3) при проверке торговых идей от балды, типа, а проверю-ка я торговлю по стохастику.

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

Так как же быть?

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

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

1) Тестирование на огромном промежутке времени, например с 1950 года по 2016. Тогда просадок просто не будет видно визуально на таком сжатом графике. Их не видно, но они есть. Протестировать лет, хотя бы за 5 и просадки сразу визуализируются.

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

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

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

Вот почему я не использую OOS :)
Метки:

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

Поэтому, в данном случае применение OOS несет в себе высокий риск."

1. "может выпасть плановая, естественная просадка..... и мы забракуем наш настоящий грааль."

Если плановая, то не забракуем. OOS тоже надо правильно использовать, как и любой инструмент.



Нет спора, "OOS тоже надо правильно использовать"

"Получить понимание изменения эквити в любой момент времени и тогда OOS станет просто не нужной."

Ну да, если все понимать! ) и понимать правильно! ) то конечно OOS не нужен.
Конечно, если быть уверенным в идее, то не нужен OOS, не нужны тогда и большие выборки и многое не нужно. Но с другой стороны, в этом случае тоже OOS не сможет повредить.


Для наглядности упростим реальный рынок на примере. Допустим что фондовый рынок всегда растет, и мы заметили эту неэффективность. В голове отложилась идея, а не покупать ли нам в начале каждой недели и закрывать на всякий случай на выходные. Проверили систему на бэктестере и действительно убедились что это приносит постоянную прибыль. Зачем нам в данном случае OOS если мы и так знаем что если рынок продолжит расти (продолжится неэффективность), мы будем получать прибыль. Но в то же время и понимаем что если рынок будет падать, система сломается. Без всякого OOS понятно. Но и OOS не повредит, это бесспорно :)

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


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

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

Edited at 2016-11-28 22:29 (UTC)

Если удастся найти такую рыночную неэффективность чтобы полноценно торгующая система на тиках или минутках не имела убыточных месяцев в течении хотя бы десятка лет (IS + OOS) на разных фазах рынка, то автору сразу дадут нобелевскую премию :)

Ну если только RI до 2012 года, и то на часовиках, в основном. :)

Универсальных рыночных неэффективностей не так много. Я пока нашел две. Думаю не больше 10 наберется для всех рынков. Поэтому народ ищет под каждый рынок свой грааль. Тут уж точно без ООС не обойтись. Выхода нет другого :)


Первые три пункта как раз для них. :)

Юрий, а вы знаете кого-то еще в рунете, кто прибыльно на Америке торгует хотя бы несколько лет, кого можно почитать?

Я бы и сам почитал если бы знал :)

И вот он момент, когда можно частично не согласиться с великим и ужасным jc-trader! ;)

Если проверять идею - о, да, никакой OOS не нужен. Если ты строишь систему от логики - и проверяешь работоспособность этой логики на графике - тут вы на 100% правы.

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

Идею в мусорку от такой проверки не выкинешь - ты уже знаешь, что она крута, и что ее можно торговать "в голом виде".

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

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

Зачем вы(не вы конкретно, а целая братия фанатов оос и прочей популяризированной различными шарлатанами туфты) эту бесполезную оос пытаетесь впихнуть везде, где ни попадя? Или "авторитет" всяких попсо-книжек по "дата майнингу", или их авторов, вам уже настолько мозг загадил? Чем вам общий вид эквити не угодил?
Прямо секта свидетелей ООС какая-то блин...
Простейшая же логика доказывает бесполезность сего метода в его классическом понимании.
Ну начните уже самостоятельно думать...

Edited at 2016-12-08 16:22 (UTC)

Проблему с браковкой потенциально прибыльной системы из-за случайно выпавшей на ООС просадки можно решить за счет увеличения объема исследуемых данных. Я использую ООС в 5 лет, то есть несколько тысяч сделок. Ин сэмпл соответственно 10-20 лет. То есть даже если предположить, что будет случайная просадка на этом интервале, то встает закономерный вопрос, а имеет ли вообще смысл торговать систему с такой "естественной" просадкой в 5 лет)

Так можно и без разбивки на IS и OOS протестировать сразу за 25 лет и увидите что последние 5 лет система не зарабатывает :)

Если есть только один вариант системы, тогда да, без разницы, ООС только для психологического спокойствия)
Но если есть несколько вариантов одной системы, то возникает ситуация выбора. Я не говорю о переборе параметров при классической оптимизации. Именно о разных вариантах эксплуатации одной и той же закономерности. Получается своего рода проверка навыка выбора рабочей системы. У вас это уже наверняка на автоматизме происходит после тысячи систем) У новичка же, да даже у разработчика среднего опыта навык отсутствует или еще находится в процессе поиска. При таком раскладе ООС позволяет себя "обучать" правилам отбора работающей системы. С перспективой на формализацию этих правил и автоматизацию процесса поиска систем)

Все верно, каждый делает по-своему. Главное чтобы был результат.

Чем вам не угодил общий вид эквити нескольких вариантов системы? Зачем городить излишние конструкции, которые не несут никакой практической пользы?


Edited at 2016-12-08 16:23 (UTC)

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

Как побочный эффект это дает на выходе один из способов решения озвученной вами проблемы отсеивания курфофиттинга. Не идеальный, но работающий исправно. Но это, так скажем узкая специализация, как другие используют ООС, я не знаю) Может вы и правы, что в общем классическом смысле от этого нет никакой пользы.

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

А насчёт софта который типа автоматом генерирует стратегии - так это давно уже есть,
StrategyQuant и Forex Strategy Builder например. Используют или рандом генерацию или генетический алгоритм (в кванте) для генерирования стратегий. Настроек хуева туча, можно создать подобие ИИ для отбора стратегий по куче параметров - но только это всё хрень полная и не работает такой метод от слова вообще. Потому что этот софт занимается курвафиттингом.
И вряд ли таким способом можно "намайнить" торговую идею. А если идея есть - то и никакой софт подобный и ИИ нахрен не нужен. А проверить торговые идеи - можно и существующими инструментами без всяких изобретений.

Edited at 2016-12-10 07:55 (UTC)

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

Ну и чтобы подытожить. Рассуждать о том, ООС (фибоначчи/волны/ звезды/индикаторы) это хорошо или плохо, можно долго. Но на рынке есть довольно четкий критерий - это финансовый результат. Если использование/неиспользование конкретного метода приносит конкретному человеку систематическую прибыль, значит для него это правильно. Вот и вся правда)

  • 1