Принципы работы с оптимизатором и основные способы избежать подгонки.

 

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

От "профессионалов" - не значит от меня, по крайней мере только от меня, я горячо надеюсь, что к данной теме подключатся люди, которые на своем ни малом опыте поняли основополагающие принципы при работе с историческими данными.

В тоже время, просто продолжать одну из старых веток я не хочу, - ведь важен первоначальный посыл, вектор развития темы. Так же, зная о невероятной способности этого форума к самозафлуживанию хотелось бы сразу определить критерии общения. Очень прошу - не надо высказывать свое мнение по всякому поводу, только потому, что оно у Вас есть. Цель этой ветки - это обмен опытом между трейдерами высокой квалификации. Особенно хочется сделать ударение на слове "трейдеры". Не программисты, не эконометристы, не математики (Алексея это конечно же не касается:), а трейдеры. Если даже просто молча слушать дельные мысли, - это уже обогатит копилку Ваших знаний, а квинтэссенция знаний не будет разбавлена чередой очередных мнений людей, которым еще самим многое нужно понять. Я говорю это без излишнего пафоса, самолюбования и провокаций. Я и сам многое не знаю и открыто признаю это. Моя цель точно такая же как и у новичка, впервые узнавшего о том, что такое оптимизация. Я хочу узнать что-то новое и интересное от людей, которые разбираются в этом вопросе лучше чем я.

Зачем нужно тестирование на исторических данных и нужно ли оно вообще, задаются многие трейдеры, среди которых есть даже мтс-ники. Отвечу сразу:

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

Безусловно, как и для каждого утверждения здесь можно найти 1 000 оговорок. Только не надо их писать здесь, то что Вы хотите сказать я и так знаю. Добавлю, что существует класс инвесторов, чей инвестиционный горизонт огромен (типа Уорена Бафетта). Их не интересует, что будет происходить с рынком в первые 10-15 лет. Они работают не с рынком а с компаниями. Их дейсвия ни когда не станут статистически значимыми. Это просто иные принципы работы и все.

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

Я надеюсь что из этой ветки получится рассказ о том, как своевременно узнать, что рынок изменил свои свойства, как различать закономерность от совпадения, как правильно ее искать и использвать.

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

C-4: Вы явно переоцениваете людей с хорошей научной подготовкой. Они, как правило, наоборот ставят научный метод впереди идеи. Зачастую в их методах нет ничего кроме самого метода. Для них рынок не важен, это лишь объект приложения, важна лишь сама методика. Они годами воюют с ветренными мельницами, которых на самом деле даже нет. Просто генерируйте простые и здравые идеи, и тогда рынок ответит Вам взаимностью. Я могу с уверенностью сказать что глубина идеи обратно пропорциональна ее сложности, - рынок знает об этом, и каждый день доказывает мне это правило.

ask: Вы хотите сказать (перефразировав вас): рынок-это просто и на нем можно заработать используя достаточно простые и примитивные методы?

С-4: Ну да, совершенно верно.

LeoV:

Полностью и безоговорочно солидарен с C-4.

По поводу этого, могу пояснить следующее.

ТС может быть как сложная так и простая. В чем их отличие? А отличие в следующем -

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

Что такое сложная или простая ТС? Какие есть плюсы и минусы?

У сложной ТС:

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

2. Чтобы избежать подгонки, необходимо фиксировать некоторые переменные - какие переменные необходимо фиксировать, как фиксировать?

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

2. Трудное осмысление трейдером принципов работы ТС, тем самым сложное предвидение работы в будущем.

У простой ТС:

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

2. Фиксация некоторых переменных, которые можно осмыслить и зафиксировать в правильном значении.

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

4. Работа ТС, которую можно осмыслить и понять как она может работать в будущем и если не будет работать в будущем, то почему. )))

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

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

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

Теперь представьте что Вы поручили оптимизатору расставить точки перегиба. Для стратегии работающей на линейном тренде вы дали две точки (вход и выход), для стратегии на тренде 2 степени вы дали уже три точки (вход, выход и одну точку перегиба), для стратегии на тренде шестой степени вы выделили аж целых 5 точек. Что Вы хотите чтобы нашел оптимизатор? Он невероятно точно найдет точки перегиба таким образом, что бы требуемый итоговый критерий был наилучшим. Многие этого не понимают и заставляют с малым шагом перебирать шестимерное пространство возможных параметров. Бедный оптимизатор будет комбинировать эти точки несколько суток, но в конце концов найдет то, что я наглаз определил на этом графике со скоростью три опирации в минуту. На самом деле проблемы скорости перебора параметров не существует, - это является лишь частным случаем не понимания того, что на самом деле ищется, и будет предложено в качестве ответа.

 
C-4:

С удовольствием поддержу этот топик, собрав в него мои разрозненные высказывания на форуме.

 

C-4:

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

Полностью не согласен с этим высказыванием.

Как таковое тестирование не имеет никакого отношения к прогнозу вероятности исхода торговли в будущем. Это просто цифра, которая оценивает работу ТС на данном конкретном участке и все.

Тестер является прекрасным средством отладки ТС как программы, но ничего не дает нам для оценки сути торгового алгоритма.

Бытовой пример.

Естественно трейдер идет пешком и проходит 1 км за 10 минут. Является ли это гарантией, что трейдер пройдет следующие км за 10 минут?, А сумеет ли он вообще пройти эти этот 1 км? Нам отвечают - сделайте форвард тест и пройдите еще 1 км. Прошли за 9 минут. Ну и что? Что из этого вытекает? По-моему мнению ровно ничего, так как тесты говорят только о том, что трейдер пройдет еще раз именно те км, которые он прошел. Если будущие км будут аналогичны или какими-то характеристиками похожи на пройденные, то все будет нормально. А если следующий км - это река, или болото? Очевидно, что движение трейдера по этой новой местности будет иным и результаты его тестов не имеют никакого отношения к прогнозу его движения по водной глади.

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


 

Теперь оптимизация и переподгонка.

Это тренер, который занимается с нашим трейдером-ходоком. На стадионе )это такая местность) этот тренер научил ходить нашего ходока за 9 мин, потом за 8 мин. и т.д. Где он должен был остановить свою оптимизацию чтобы не переподогнать нашего ходока. Смешно звучит. Вероятно намекаем на применение допинга.

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

 

Из двух постов следует вывод:

с одной стороны надо описывать варианты местности

с другой стороны точно описывать нашего ходока

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

 
faa1947:

C-4:

Полностью не согласен с этим высказыванием.


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

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

Но я не соглашусь с тем, что оптимизатор ни чего нового не дает. У каждого инструмента есть свои преимущества и оптимизатор не исключение. Основным его преимуществом (не считая простоты и удобства использования) является метод сдвига. Вы можете описать свою модель и аналитически применить ее к конкретному куску рыночной истории. Но оптимизатор может сдвинуть параметры этой модели от точки вашего заданного экстремума на определенное расстояние. Если результативность системы при этом резко упадет, а расстояние сдвига будет не большим, - это явный признак подгонки или нахождения случайной несуществующей зависимости (статистический всплеск). Также, сдвиг может быть сделан и на самих тестируемых данных, например вперед во времени, вне обучающей выборки (OOS), либо вовсе на другой инструмент (почему устойчивая закономерность должна работать только на одном инструменте?). То, насколько изменятся показатели системы при использовании этих методов и будет критерием того, насколько система может быть перспективной. Т.е. тестер позволяет рассчитать степень стационарности системы относительно своих же параметров и временного окна работы!

Почему же метод сдвига такой эффективный? А он эффективный, потому что стоит в некоторых стратегиях изменить один параметр на чуть-чуть, или использовать другие параметры, и как тут же вся прибыль исчезает (наверняка все сталкивались с этим:). Ответ прост: этот метод наиболее приближен к реальности. Хотим мы того или нет: завтряшний рынок будет немножко другим нежели чем сегодня. Процесс, который мы эксплуатируем, тоже чуть-чуть изменит свои характеристики. Т.е. сдвиг произойдет относительно нашей зафиксированной системы не зависимо от того, какие удачные параметры мы подберем, и не зависимо от того, хотим мы этого или нет. Так раз нам не избежать этого, почему бы к этому не подготовится заранее. Будущие изменения нам неизвестны, но мы можем "зафиксировать" состояние рынка в прошлом, а вот значения параметров системы, напротив, сдвигать методом перебора. Если параметры устойчивы, то результат не должен сильно меняться от изменений этих параметров, если неустойчивый то будущий неизбежный сдвиг сломает нашу систему.

 
C-4:

Еще 10 лет назад трейдер поверял свою ТС вручную: разрабатывал правила применял к котиру и вычислял несколько результатов, насколько хватало терпения и усидчивости. На основе этого "тестирования" делался вывод о пригодности ТС. Если слишком много (3-5) убыточных сделок, то в топку. Сегодня мы посмеемся над таки подходом, так как рассуждаем на уровне кол-ва одинаковых сделок подряд и выводим итоговую цифру по нескольким сотням сделок.

Вы предлагает продвинуться вперед сдвигая окно и получить много итоговых цифр. Насколько я знаю в тестере МQ4 это автоматически сделать нельзя и мы повторяем опыт 10 летней давности на следующем уровне. Но дело не в этом, так как качественно ничего не изменилось. Сколько нужно получить этих итоговых цифр из тестера? Опять сколько хватит терпения и усидчивости? А являются ли эти человеческие качества гарантией получения аналогичных результатов в будущем? Ответ однозначен - нет. Нужны некие иные суждения о результатах и эти суждения очевидны: если результаты сдвига окна (в количестве не менее 30, а лучше несколько сотен) стационарны, то можно верить, что в будущем мы получим аналогичные результаты. Если эти результаты тестера после сдвига окна не стационарны - то какие-либо выводы о ТС вообще не уместны! На нестационарном ряде мы можем констатировать только прошлое - вот так было, а как будет - нам не ведомо.

 

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

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

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

 
faa1947:

На нестационарном ряде мы можем констатировать только прошлое - вот так было, а как будет - нам не ведомо.

Совершенно соглашусь.

Перечитал автора еще раз:

Цель этой ветки - это обмен опытом между трейдерами высокой квалификации.

Прошу прощения, что влез-так как читал по диагонали. Когда гуру форекса говорят смертным лучше слушать-что ж, послушаем...
 
ask:

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

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

Это не позволяет применять статистику, а логике никак не противоречит. Искать закономерности не обязательно только статистическими методами.

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

 
Reshetov:

Это не позволяет применять статистику, а логике никак не противоречит. Искать закономерности не обязательно только статистическими методами.

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


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