Почему при тестировании торговых систем я не использую 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) при поиске системы автоматическим подбором индикаторов и параметров.
Есть различные программы, которые сами подбирают систему для какого-либо инструмента путем перебора индикаторов, математическими путями и т.п. Например, 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 :)
Привет Иван.
ОтветитьУдалить//Вот почему я не использую OOS :)
А не пробовали после IS делать несколько OOS, так чтобы охватить
все состояния рынка UpTrend, DnTrend, Flat. Для WLD3-4 была такая
приблуда- Autorun.Если помните, то в ней можно было ставить на тестирование несколько систем, на нескольких портфелях и по нескольким произвольно выбранным периодам OOS.
В Omega2000(TS9) можно было прям в одном коде прописать IS и несколько периодов OOS.
А так логика Ваших рассуждений в ерна и понятна.
С уважением,
Александр
Вот кстати
Удалитьhttp://www.long-short.ru/post/kross-validatsiya-cross-validation-304
Нет, не пробовал. Дело в том что я уже давно, вообще, не оптимизирую системы. Параметры употребляю логические, типа 250(год), 20 (месяц), 5 (неделя) и т.п.
УдалитьНедавно, где-то читал, если Вы как трейдер уже не оптимизируете свои ТС в различных программах ...., то
Удалитьто Вы профессионал. А ещё раньше, лет 15 назад то ли на Пауке, то ли
на почившем в бозе Мойша форуме фразу: Если бы Вы знали насколько прост Грааль :-)
На самом деле в этой фразе есть рациональное зерно, ведь Вы знаете, что чем меньше параметров в ТС, тем система стабильный.
Мне иногда кажется я что рынки напоминают шахматы - все знают как ходят фигуры, но лишь единицы могут
"прочитать логику противника и его намерния"
Хотя и в наше время можно найти много неэффективностей на рынке, которые можно эффективно использовать. Пардон за каламбур.
С уважением,
Александр
Оптимизировать систему обязательно надо, только в устойчивых зонах. А для того чтобы их найти эти зоны потребуется неделя ручного машинного труда. Рынок подвержен частотному изменению, фазовый сдвиг мало влияет. Для этого и нужна широкополосная система только и всего. И если не делать вышеперечисленного любая система перестанет работать эффективно уже максимум через год. OOS поэтому и ненужна. Нужно знать смещение (дрейф) этих зон.
ОтветитьУдалить