Оптимизация и Тестирование вне выборки. - страница 3

 
Integer: В хозяйстве все сгодится. Сравнивать с MQ нет смысла, потому что эта программа сама не тестирует, только запускает тестер
Да никто и не отвергает тестер. Тестер хорош, спору нет. Я имел в виду оптимизатор. Вот оптимизаторы сравнивать можно. Ну ладно, тема вечная, она никогда не кончится. ..
 
leonid553:

Думаю, что это будет полезная добавка к тестеру мт4. Возможно, и скорее всего, где-то кем-то такое уже реализовано.


Вы правы - реализовано. Посмотрите для примера здесь (проект MT4NetTester). Только не просите его дать, это на заказ.
 
Integer:
Mak:
Ребят, а у меня все это уже давно работает.
Правда под TradeStation, и не бесплатно ... :))
Под МТ делать смысла не вижу, у нас не привыкли платить за работу.


У меня тоже почти готово))) И в советник ничего встраивать не надо - програмке скармиливается файл с набором параметров

Ребята! А кто вам мешает написать статью в эту тему, выложить в ней разработку с описанием и получить гонорар?

Я не ищу халявы. Трудолюбия у меня хватает. Не хватает специальных знаний. А какая разница, - кто вам заплатит?

 
leonid553:

Добрый день всем.

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

Появилась мысль по оптимизации экспертов вне выборки. Предположим, мы "зарядили" советника на оптимизацию по ряду параметров. Задали дату. Например с 1 янв. 2006 по первое января 2007г.

Получили несколько тысяч выриантов. После чего, сохраняем страничку РЕЗУЛЬТАТЫ ОПТИМИЗАЦИИ в виде отдельного файла. Далее задаем для оптимизации след. период истории, т.е. прибавляем месяц или два или сколько надо.

Т.е. в нашем случае, ставим например с 1 янв. 2007г. по 1 июня 2007г. И опять включаем оптимизацию. Точнее это будет не совсем оптимизация. Оптимизатор должен брать параметры не в СВОЙСТВАХ ЭКСПЕРТА, а ПЕРЕбрать по очереди наборы параметров из того файла, что мы сохранили после первой оптимизации. После этой второй оптимизации у нас остаются лишь те вАрианты, которые дали прибыль вне выборки!

В результате, в идеале, мы получаем "идеальные параметры" для последующей работы и тестирования в онлайне!

Думаю, что это будет полезная добавка к тестеру мт4. Возможно, и скорее всего, где-то кем-то такое уже реализовано. Если кто знает, - прошу поделиться ссылкой!

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

Это называется Walk forward optimisation (WFO) или Walk forward analysis (WFA).
Тема старая и популярная на западе.
 
Mathemat:
ОК, общая идея ясна. Ну тогда последний вопрос всем реализовавшим этот проект (т.е. к Belford, Mak, Integer): стоит ли игра свеч? Конечно, приятно иметь под рукой "оптимизатор", который делает не просто curve fit (как метаквотовский), но еще и пытается проверить стратегию на данных out-of-sample, - но действительно ли он заслуживает более высокой оценки, чем оптимизатор от MQ (который тоже хорош, но только как curve fitter)?
В общем стоит, хотя если рассмотреть сам процесс WFO, то можно заметить, что это тоже оптимизация, только более сложная.
Среди лучших в первой серии отбираем лучшие во второй серии и т.д. - это тоже оптимизация со своим curve fitting.

Мой оптимизатор - просто сказка :)))

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

Пример реализации своего критерия оптимизации я выложил в теме 'init() при оптимизации'. И пытаюсь написать по нему статью. Применённый метод, я думаю, позволяет сделать много чего, от WFO до собственного генетического алгоритма.

 
Mathemat:
leonid553, идешь в правильном направлении, так как существующая "оптимизация" без тестирования на данных out-of-sample - это чистейший curve fit. Но основной алгоритм должен быть сложнее, примерно как в нейросетевых программах. Вся "оптимизация" должна идти сразу на всех наборах данных одновременно (это пожелание разработчикам). Можно, конечно, работать только с двумя наборами данных, но лучше предусмотреть три - обучающий (А), валидирующий (В) и тестирующий (С). Ну а в существующих условиях придется работать примерно как ты предлагаешь.


Мне видится, что тестирование (обучение, валидация, прогон и т.п.) вне выборки уменьшает множество А="Наборы параметров прибыльные на выборке" до множества Б="Наборы параметров прибыльные как на выборке, так и вне выборки". Оптимизация сходу на выборка+вне выборка дает множество С="Наборы параметров прибыльные на выборка+вне выборка".

Содержится ли множество Б в множестве С? По-моему, очевидно, да, т.к. множество Б содержит "Наборы параметров прибыльные как на выборке, так и вне выборки", а следовательно они являются "Наборами параметров прибыльные на выборка+вне выборка".

Что же лишнего содержится в С, по сравнению с Б?

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

Также, среди множества С будут наборы параметров прибыльные на выборке (только на выборке), но неприбыльные вне выборки. Т.е. на выборке мы зарабатываем средства, а вот вне выборки - теряем.

Итак, сквозной прогон дает нам множество С, которое собержит подмножество Д="Наборов параметров неприбыльных либо на выборке, либо вне выборки, но в целом прибыльных на на выборка+вне выборка", и которого нет в множестве Б. Если это проблема для нас, то решается она гораздо проще нежели тестирование вне выборки.

А вот избегаем ли мы тестированием вне выборки подгонки по кривую? Нет. Более того, можно утверждать, что самая жесточайшая (должна соблюдаться прибыльность в отдельно взятых участках) подгонка остается, а выбрасывается только подмножество Д (может, искомое дитя?), которое и подгонкой-то назвать трудно. Все, чего мы избегаем разбиением периода тестирование на отрезки, так это исключение параметров, дающих неприбыльные результаты на одном из отрезков. Всё чего мы достигаем - это прибыльность на каждом отрезке. Логическим финалом такого подхода является прибыльность каждой сделки в отдельности. Кто только даст гарантию, что такие чудные параметры не преподнесены нам дьяволом абсолютной подгонки под кривую?

 

Советник - советнику рознь! Бывают эксперты для кот. описанное мной тестирование является самым оптимиальным.

Что, например, мы потеряем вот здесь? Да ничего!

 
Vita:
Все, чего мы избегаем разбиением периода тестирование на отрезки, так это исключение параметров, дающих неприбыльные результаты на одном из отрезков. Всё чего мы достигаем - это прибыльность на каждом отрезке. Логическим финалом такого подхода является прибыльность каждой сделки в отдельности. Кто только даст гарантию, что такие чудные параметры не преподнесены нам дьяволом абсолютной подгонки под кривую?

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

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

 
lna01:
Vita:
Все, чего мы избегаем разбиением периода тестирование на отрезки, так это исключение параметров, дающих неприбыльные результаты на одном из отрезков. Всё чего мы достигаем - это прибыльность на каждом отрезке. Логическим финалом такого подхода является прибыльность каждой сделки в отдельности. Кто только даст гарантию, что такие чудные параметры не преподнесены нам дьяволом абсолютной подгонки под кривую?

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

--> Скозной прогон делает тоже самое (обозначаем, проверяем). Чего дополнительного привносит разбиение по сравнению со сквозным прогоном?

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

--> Если под "обработав реультаты оптимизации на всей выборке" вы имеете ввиду отбросить множество Д, то не соглашусь - отбрасывать результаты, дающие промежуточные убытки (на выборке или вне выборки), - это элементарная задача, решаемая в ходе самой оптимизации на всей выборке, т.е. не надо никакой обработки после оптимизации. Результатом сходу будет множество Б. И никаких трудоемких дополнительных проверок вне выборки.