Блог им. Saro

Мое имхо на оптимизацию алгоритма.

Приветствую!

Заранее прошу прощения за ошибки в тексте. иногда залипает буква «о» и приходится ее копипастом печатать.

Хотелось бы подискутировать на тему оптимизации. Много трейдеров, находятся в нескончаемых поисках лучших параметров для своих стратегий, и ставят оптимизацию, выше чем саму суть алгоритма и трейдинга. Лично сам я, крайне редко прибегаю к оптимизации. И не важно какой крутой бы не был тестер. с бэктестингом или форвард, 3д графики и различные коэффициенты — это все, не так будет важно при попытках переоптимизировать и подогнаться под график. 
Смысл всей оптимизации, под имеющиеся данные — найти наилучший результат. это по сути — просто статистика. Да мы можем подставить наоптимизированные цифры в новую история (форвард) и тем самым сделать вывод типа и на истории хорошо и на новых данных тоже хорошо, вот только гарантии, что онлайн — будет так же, нет никакой, если мы в самом алгоритме, не учли возможные изменения в рынке.
Нет речи о создании, конечно, грааля. Приведу пример: например парный трейдинг в классике, пара газпром/лукойл. торгуем себе от соотношения пары 8-9, а потом бац и разрыв уходит до 6 потом до 3 и все, что мы там и как бы не оптимизировали — рынок уже другой. Взять ртс. до 2008года потом до 2011 потом до 2014 — абсолютно разная бумага. Это нужно понимать и не делать оптимизацию на 15 лет и думать, что если все гладко, то у нас грааль. 
Конечно все это выбор каждого, потому расскажу в каких случаях я прибегаю к оптимизации.
Пример 1 
Алгоритм по паттернам. у каждого они свои. условно смотрю на величину бара на минутке, 5, 10 и 15, а так же их объемы. 
Следущим шагом я в алгоритме указываю минимальные значения которые готов рассматривать и максимальные. Далее идут в оптимизацию и смотрю — какие есть варианты. 
Мое имхо на оптимизацию алгоритма.
Сортирую по лучшему доходу и смотрю — ага, есть 100результатов из них есть варианты с большой частотой сделок и маленькой — доход соразмерен. Логичен ли для меня/алгоритма вариант с малой частотой сделок или наоборт? Дальше анализирую сами параметры. если их разброс очень сильный при соразмерных результатах — то нужно проверить на истории подлиннее. В идеале конечно останется несколько близких результатов и это можно будет просто в часть диверсификации алгоритма впихнуть. 
Мое имхо на оптимизацию алгоритма.
Дальше оцениваю наихудшие результаты. опять же не для галочки — а чтобы рассмотреть при каких параметрах — так случается. ввиду это случайностей или нелогичности таких параметров. возможно не хватает каких либо фильтров и тд.  но чаще всего, естественно, дело в слишком неподходящих параметрах  для данного алгоритма. 
Смотрю ли я на гладкость эквити или коэффициенты? практически нет. Редко удается в трендовом алгоритме, с малой частотой сделок, построить ровную эквити. это нужно понимать и не пытаться накрутить параметры ради подобной цели. 

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

П.С. никого не отговариваю и никого не призываю к отказу от оптимизации. 

★3
34 комментария
Только неверно: оптимизация — это никаким боком не статистика. Две большие разницы.)
avatar
3Qu, это получится семантика если углубиться.
Микаелян Саро, совсем не оптимально работать на дырявой клавиатуре, да еще и писать об этом в посте на серьезную тему. Клава рабочая стоит от 500-1000 руб., вроде. Нервы уже чуть дороже, а репутация трейдера, способного взять с рынка хотя бы на клаву — еще дороже :)
avatar
(1:10) || algo, ну некогда человеку до магазина дойти. Я уже полгода мышку меняю.)) И я его понимаю.)
avatar
3Qu, мне было б лень каждый текст copy-paste дрючить, а Саро, видно, ну очень трудолюбивый человек =))
avatar
(1:10) || algo, ну почему ж… матерюсь но делаю)) ежики кололись но лезли на кактус))

Микаелян Саро, суньте в usb что-нибудь. должно работать
avatar
(1:10) || algo, вы можете подумать это сарказм… но я абсолютно в этом русле даже не подумал!) лол… спасибо. 
(1:10) || algo, это клавиша на ноуте)) и заменить ее можно только найдя такой же ноутбук.
Микаелян Саро, фтопку такой ноут… а клаву через usb он разве не поймет? нервы реально дороже. бывают занудные проблемы, которые много эмоций сосут, но решаются легко и просто. на мой взгляд, это одна из таких
avatar
Микаелян Саро, чтобы не дергаться, «о» можно набрать так нажимаем Alt, и не отпуская +0238. О — Alt +0206. + и цифры набираются на цифровой клавиатуре! Раскладка должна быть переключена на русскую!
avatar
3Qu, а вы там на что нажимаете, чтобы получилось «днргаться»? ))
avatar
VladMih, на клавиши почти не смотрю, иногда промахиваюсь.))
avatar
3Qu, Быстрее будет с экранной клавиатуры набирать :D
avatar
Соглашусь, что просто тупой набор индикаторов без привязки к торговому методу — это просто подбор фильтров для приближения к идеальным сделкам на истории и оптимизация в данном случае просто максимально подгоняет сделки к идеальному результату.
Я считаю, что оптимизация в ТСЛаб — это мощный инструмент статистики и если к обработке данных под свою стратегию подходить в рамках логики самой стратегии, то оптимизация не такой уж и враг, а хороший помощник. Очень много трейдеров статистику обрабатывают в ручную)
А красивая эквити достигается путем риск-менеджмента — это логики работы стоп-лосса и необходимости перевода в БУ, а также трейла, который для роботов можно делать с любыми логиками, которые невозможно осуществить вручную.
Андрей Синкин, 
Соглашусь, что просто тупой набор индикаторов без привязки к торговому методу — это просто подбор фильтров для приближения к идеальным сделкам на истории и оптимизация в данном случае просто максимально подгоняет сделки к идеальному результату.
С привязкой к торговому методу оптимизация остается подгонкой. Метод м.б. и не рабочим, но оптимизацией мы его туда загоним.
Единственно рабочий метод наруливания стратегии — это статистика. И критерием должно быть не макс прибыль, и даже вообще не прибыль.
Что должно быть — эт не знаю, т.к. для разных даже функциональных узлов стратегии могут быть свои критерии. На этот вопрос нет однозначного ответа и выбор метода решается конкретной статистикой на истории.
avatar
3Qu, 
Согласен, что не рабочий метод можно на истории сделать рабочим за счет грамотного сопровождения позиции и оптимизация будет просто подгонка. И результаты у этого «не рабочего» метода будут в любом случае слабыми, неустойчивыми и т.д.
Но когда метод показывает хорошие результаты и без оптимизации, и, например, если торговля ведется от зон с высокими объемами, по сигналам с определенными параметрами (объем, размер бара и т.д.), то на истории под конкретный инструмент можно определить оптимальные параметры (объем, размер бара, проход цены и т.д.), то это уже можно назвать статистика, т.к. определили рабочие параметры нашей торговой системы к определенному инструменту.

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

Я вообще не понимаю что такое нерабочий метод.
Или метод логически обоснован и он есть, или его попросту нет.
avatar

В примерах по оптимизации мало сделок и с такими вариантами скриптов полностью согласен с концепцией жизни без оптимизации.

Но приведу 2 примера оптимизации и хотелось бы разумной критики:

Вариант № 1

Берем абстрактный скрипт, который торгует на SI и совершает 2000-3000 сделок в год. Оптимизируем его на 2010-2013 выбираем 5 вариантов (из средних и хороших результатов)  и пускаем на 2014 — 2019 и получаем хорошие результаты и более менее устраивающую эквити (не дающую убыток более 2-3 х месяцев подряд). Как бы вы оценили такой вариант?

Считаете ли Вы значимым, большое превышение время теста скрипта над временем оптимизации?

И подход № 2 совершенно иной:

Берем абстрактный скрипт опять же с достаточно большим количество сделок например 50 в неделю. Оптимизируем его на интервале 1 год и запускаем на интервал 1 месяц в реальную торговлю. Несколько вариантов оптимизации. То есть рассчитывая на очень краткую экстраполяцию.

Насколько реалистичен такой подход на Ваш взгляд? 

avatar
Oblitus, ну второй вариант я сам часто практикую. но не на 1 месяц все ж запускаю. бывают разные периоды у алгоритмов и месяц не показатель
Oblitus, обычно так и делают, но главный фокус тут не в краткости экстраполяции, а в её соответствии алгоритму. Если сделать короче, чем того требует алгоритм, просто соберете все просадки, которые алго обязан пересидеть перед основным взлетом эквити (который будет именно на этих настройках!).
О, кстати, пришла в голову мысль как определять периоды оптимизации и форварда (давно была, но сообразил чего надо проверить). Пошел советоваться с другом-программистом и искать математика. )
avatar

VladMih, Меня вариант 2 смущает выбором период когда скрипт следует выключать. 

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

Но опасаюсь. Что тут тоже вероятен подгон. 

avatar
Паттерн оптимизируется отдельно, индикатор «проверяется» отдельно.
А логика тут в чём? Мне кажется такой подход (запрячь в одну телегу коня и трепетную лань без попытки их «синхронизировать») хуже, чем переоптимизация. Перегнул чуток, но вы поняли.

Могу согласиться с подходом, когда индикатор применяется просто как фильтр — ну тогда можно, конечно, посмотреть чего от него больше, вреда или пользы. При таком подходе можно оптимизировать отдельно параметры индикатора.
И всё же считаю, что лучше потом окончательно оптимизировать ВСЕ параметры совместно. Ну просто не понимаю почему нет!
Опасность переоптимизировать?
Ну так не надо ПЕРЕ, надо просто оптимизировать ))
avatar
VladMih, цель была именно в проверке подходит ли такой фильтр в принципе.) 
Микаелян Саро, я думал пост про "оптимизацию алгоритма".
Про предварительный подбор фильтра я б и не отвечал.
avatar
VladMih, не. я поделился, при каких обстоятельствах — пользуюсь оптимизацией)) 
Микаелян Саро, Саро привет, на данный момент дописывается робот на базе кластерного анализа, и там очень много параметров оптимизации, существует ли способ при больших количествах параметрах оптимизации прогнать оптимизацию, но ускоренно, важно чтобы в просчёте участвовали одновременно все параметры, или можно не со всеми но поэтапно оптимизировать? Если да, то эффективно ли вообще выйдет таким подходом оптимизировать (по кускам)....


Михаил Березовиков, в таком случае я делаю оптимизацию с большим шагом. дальше уменьшаю диапозон и меньшим шагом прохожу. 
Михаил Березовиков, делай по кускам. Другого выхода нет. Мой совет. Смотреть не на показатели. А на изменение показателей рядом стоящих по параметру. Чем меньше разброс, тем лучше. Но тема большая, и в автором не раскрыта.
avatar
я сторонник настройки систем (не люблю слово — оптимизация)) на небольших периодах. Имхо, 200-300 сделок вполне достаточно для настройки, и еще 100 для проверки. Если пустышку тянем, то большая история и много сделок ничего не дадут. Если стратегия рабочая, то и небольшого количества хватит для оценки.
avatar
3Qu, да. И стратегия живет так же — не долго. Вопрос — как вы определяете. Что система (оптимизированная) сдохла?
avatar
LogikoMen, 
 И стратегия живет так же — не долго.
Исходя из чего такие выводы? С потолка? Даже исходя из здравого смысла такой вывод не прокатывает.
А стратегия по любому живет недолго — 1-2 года. Рынок меняется. И настраивать на большой истории нет смысла. Ловите плюшки которых уже давно нет и оптимизируюте под все сразу.  Усредняетесь под все сразу. В результате большую часть сегодняшних реалий просто пропускаете мимо.
avatar
3Qu, вопрос стоял не в правильности подхода. А как определить смерть системы. Постоянные системы. Которые не сливают — хоть какая то гарантия сохранения денег. Оптимизированные под короткий период — тыкать пальцем в небо. Для короткой истории выбрать что то — нужен правильный подход. Его хоть озвучите?
avatar
LogikoMen, постараюсь озвучить, хотя трудно.
1. Определяем принципы стратегии. Какие конкретно статистические свойства будет использовать.
2. на модели все это прогоняем, и уточняем свойства и их статистику. Прибыль не является главным критерием. Скажем, если удачная сделка, даже с большой прибылью выпадает из общей статистики, мы уточняем статистику, чтобы этой сделки не было, не совершалась.
2. Дальше тест не менее 100-300 сделок, и можно переделывать систему под реал.
Обычно хорошо себя показывает. Отклонение на реале ~20-25%.
Т.е., мы оптимизируем не макс прибыль, а условия входа в сделку под максимум распределения удачных сделок в стратегии, независимо от их прибыльности.
Как-то так.
avatar

теги блога Микаелян Саро

....все тэги



UPDONW