Блог им. first

Ловушки тестирования и оптимизации

    • 09 февраля 2018, 03:55
    • |
    • First
  • Еще
Очень интересно узнать, кто какие методы использует для для избежания подгонки (overfitting) системы.

Я лично ничего, кроме форвард тестирования для себя пока не нашёл. Поделитесь, если кто сталкивался и успешно использует подобные методы.

Что можете сказать про алгоритм бустинга AdaBoost?
★6
58 комментариев
правило первое: всё что можно упростить — упрости.

Это значит что:
1) если на тестах нечто более сложное даёт результат лучше, а нечто более простое проигрывает, всё равно выбирай более простое. Оно в жизни будет наоборот =)
2) всё сложное, но без чего нельзя обойтись надо спрятать в «чёрный ящик» оттестить как следует и забыть — пусть там себе работает и на глаза не попадается (никаких внешних параметров).
3) больше чисел во время разработки! Больше всяких распределений и сводных таблиц. А затем выбирается самое сладкое на глазок и всё. Остаётся золото из шлака. Остальное — забыть.

Параметров может быть очень много, но они все должны быть такие, что бы не возможно было ничего оптимизацией испортить =). Пример: куча параметров по временным ограничениям + РМ + 1 ключевой параметр, от которого зависит «чувствительность». 1 раз на глазок подбирается и всё. Больше ничего и не надо.

Причём, пробовал я много раз всякие хитрые подходы с самооптимизацией и внутренней настройкой бота — фигня выходит. Всё что можно упростить — упрости =)
Fry (Антон), если у вас есть проблемы со сложными алгоритмами, это не значит, что они — зло. Хорошая программа для обработки сложных данных не может быть простой. Посмотрите насколько сложные расчеты прогноза погоды! Для их «алго» требуются суперкомпьютеры, а вы ратуете за упрощение...
Упростить сложное можно только одним способом —
отрезать от него что-то… нужное.
avatar
VladMih, я специально расшифровал по пунктам (см пункт 2). Как пример: у меня есть весьма сложный алгоритм (2000 строк кода и 2 конечные формулы с кучей весовых коэффициентов), но на выходе всё просто до одного бита (кроме одного параметра).
Fry (Антон), самообман.
От того, что все сложности не выведены в настройки, а зашиты внутрь (предварительно подогнанные «кучей весовых коэффициентов»), вы ничего не приобретаете, а наоборот — теряете возможность подкорректировать «подгонку» под текущий рынок.
avatar
VladMih, да-да. Давайте займёмся предсказыванием движения рынка как погодой.
Ещё суперкомпьютер загрузим, Грефа позавём, пусть расскажет нам про бигдата =)
Fry (Антон), да хоть Кудрина зовите! )))
Только сначала объясните чем современное прогнозирование погоды отличается от алготрейдинга.
avatar
VladMih, заказчиками и отношением к делу.
Fry (Антон), ну, разве что...
А по сути разницы в алго не нашлись что сказать? Понимаю )
avatar
VladMih, крайне дилетантский подход проводить подобные аналогии. Странно, что Вы этого не понимаете =).
Как пример: вход даже на 1 контракт в топ ликвиднейших мировых инструментов создаёт глубокую обратную реакцию. Рынками манипулируют. Все данные по клиентам сливаются. Кукл существует. Есть куча закономерностей-ловушек, которые очевидны, существуют до момента пока кто-то не начнёт их торговать. Кого-то ловят, сливают. Как только попытки торговать это прекращаются — закономерность возвращается на место. Существует ещё множество глубочайших различий с погодными явлениями. Но в рамках камента никак не поместится этот разговор.
Fry (Антон), а я может дилетантизмом считаю ВАШИ «мюсли».
Хотите вместо доводов кидаться какашками? — Досвидос.
avatar
VladMih, кто-то наливает негатив и он раскручивается в ходе дискуссии. Мне кажется в данном случае начинал не я ;)
Fry (Антон), согласен
avatar

Fry (Антон), 
>> «Есть куча закономерностей-ловушек, которые очевидны, существуют до момента пока кто-то не начнёт их торговать. Кого-то ловят, сливают. Как только попытки торговать это прекращаются — закономерность возвращается на место.»

Забавное видение знакомых вещей)). Не встречался с таким ещё, кажется. Когда есть темный слой — можно много теорий строить по поводу того, что там в темноте — может оно и так, конечно — хз.

 

avatar
Replikant_mih, буду говорить конкретно за фьючерсный рынок у амеров (опционный в т.ч.). Наиболее ярко проявляется на CBOE. Впрочем и на CME есть.
Любой вход-выход в рынок порождает ответную реакцию котировок.
Классическая теория эффективных рынков что нам говорит?
Спрос и предложение определяют цену. То есть любая покупка по этой теории должна подталкивать цену вверх, а продажа — вниз. Чем больше объём, тем сильнее должно быть это влияние.
Что мы видим в реальных рыночных котировках?
Всё наоборот для мелких участников рынка (для ритейла интернет-трейдинга). Каждый вход в покупку против ММ вызывает обратную реакцию и цена падает на несколько пунктов. ММ самокотирует себе прибыль. Это движение является чистой воды манипуляцией. ММ-бот так поступает не со всеми. То есть ММ наверняка знает кто входит в рынок. Знает размер счёта, плечо, «точку боли» и т.п. ММ высаживает на стопы или маржин-колы всех слабых. Самый слабый вылетает первым. Самый слабый — это тот, кто больше всего нагрузил депозит. Так рынок и ходит мелкой и крупной рябью. Вы спросите: а как же взаимосвязь всех рыночных инструментов? А очень просто если подумать. Флуктуации на спрэдах между инструментами есть? Вот это и есть те самые манипуляции. Их даже численно можно заметить =)
Fry (Антон), Да ну, теорией заговора какой-то попахивает. Явления наверняка имеют место быть, просто обоснования другие. Например, ММ не знает кто входит, а догадывается — ну обычный алгоритм как любой другой, который вероятностно по паттернам или каким-то другим признакам оценивает силу денег и прочее.
avatar
Replikant_mih, возможно. Но тогда у ММ есть вероятность нарваться на инсайдера. Если инсайдер узнает эту особенность бота, то он будет собирать позицию с забросом по одному контрактику, затягивая ММ-бота в ловушку отклонения цены от текущей адекватной. Раз зайдёт, два зайдёт, а потом ка жахнет сотней контрактов =). ММ тогда придётся срочно флетовать это дело где только получится (через все смежные инструменты). В целом будет потеря.
Fry (Антон), Нуу, я думаю у ММ тоже рисков полно, какие-то такие в том числе. Тоже как-то страхуется, как-то борется с. Я не знаю наверняка, да и вообще про работу ММ мало что знаю, просто рассуждаю :)
avatar
Replikant_mih, я тоже просто рассуждаю. В поисках истины. Почему так много думаю про работу ММ? Потому что на фьючерсных рынках роль ММ ключевая. Это их поляна. Их правила игры.
Ведь как всё это устроено?
ММ существует для того чтобы обслуживать интересы самых крупных участников рынка. Чтобы крупняку не приходилось встречаться лицом к лицу с мелочью. Весь этот геморой с ритейлом ММ берёт на себя. Крупняк открывает свои позиции об ММ всегда на 99% уж точно. Далее задача ММ раскидать всё это дело по мелким контрагентам или найти встречного крупняка (что бывает редко). Это основная работа ради которой существует институт маркетмейкинга. Но для выполнения этой работы ММ предоставляются ключевые привилегии. Используя их ММ создаёт себе доход. Вот тут и открывается поле для «моих фантазий» =)
Fry (Антон), Интересно, есть где-нибудь место, где можно верифицировать все свои домыслы подобные?))
avatar
Replikant_mih, разумеется есть! На своём депозите =)
Fry (Антон), )) ну это да)), но это другое, депозит показывает, насколько правильно ты оцениваешь закономерности во внешних проявлениях скрытых вещей. Но твои скрытые домыслы депозит не верифицирует, в смысле можно правильно оценивать закономерности во внешних видимых проявлениях — что позволит зарабатывать — но при этом иметь полностью бредовое представлением о том, почему так происходит.
avatar
Replikant_mih, если бредовое представление даёт профит стабильно и позволяет спать спокойно (укрепляет нервную систему), то меня устраивает этот бред. Я буду в него верить всё крепче и крепче пока не обломаюсь. То есть для меня это не вопрос классической науки, а вопрос веры.
Хотя… Квантовая теория тоже не находила подтверждения, но по ней рассчитывали кучу практических вещей почти полвека. Практики пользовались, а теоретики приняли как аксиому =)
Да и в математике сама основа такая — сплошные аксиомы.

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

Есть, конечно, случаи судебных разбирательств за манипуляции на рынке. Там собираются доказательства. Часто дела выигрываются. Штрафы правда смешные. Система работает.
Например, если не ошибаюсь, то Haim Bodek выиграл-таки дело о манипуляции ММ. Ничего с тех пор не изменилось. Собака лает, караван идёт.

Fry (Антон), Да, вопрос веры, я просто, если могу знать достоверно, не начинаю во что-то верить капитально (хотя немного конечно могу), просто вешаю ярлычок, что это гипотеза. Если гипотеза мне будет нравиться — могу в нее понемногу верить, но всегда буду помнить, что это всего-лишь гипотеза.

Кстати, аналогично я пометил все эти квантовые и прочие странно ощущающиеся с точки зрения здравого смысла теории)).

Это все фигня — тут главное — если внешние проявления начнут говорить, что походу представление о черном ящике ошибочное — легко пересмотреть свое представление о черном ящике, а не танцевать от веры.

avatar
Replikant_mih, как я пробовал это доказать для себя. Пробовал входы по некоторым общим правилам на CME и в кухне ДЦ с таким маленьким счётом, что мои позиции точно не выводятся на рынок. По уму надо было пробовать на демке, но я для себя ставил другие задачи. Так что проверка этих моих предположений была всего лишь побочным эффектом. Вышло так, что себя я убедил. Признаюсь честно, как научное доказательство ну совсем не катит! Даже на уровне школьного исследования так не делают. =) Да, выходит хреновый я искатель истины =(
Что вы называете форвардным тестированием?
avatar
форвардное тестирование для лохов… сам подумай… последние данные имеют максимальную ценность… а их как раз и выкидываем из оптимизации...
имеет смысл все делать наоборот… ну например оптимизировать за последние лет 5… с 2012-2017гг а затем тестировать на более ранних данных 2007-2012гг

вообще алготрейдинг ничем не отличается от инвестирования… так же выбираем бумажки… и молимся чтоб динамика сохранилась

из этого следуем мораль… которую расписывать не буду… т.к грааль
avatar
ves2010, насколько знаком с вашими подходами,  грааль не в методах торговли, а в выборе правильного инструмента для торговли.
avatar
ves2010, 
имеет смысл все делать наоборот… ну например оптимизировать за последние лет 5… с 2012-2017гг а затем тестировать на более ранних данных 2007-2012гг
Хорошая идея. Надо будет попробовать. Спасибо.
avatar
Чем меньше модификаций цены применяется, чем проще и яснее логика, тем лучше. 
avatar
МОЙ вариант — это три обязательных пункта:
1. Наличие трейдерской (не математической) ТС, основанной на логике проверенного ручного трейдинга.
2. Соответствие алго этой логике хотя бы процентов на 90.
3. Штучно-выборочная ручная проверка на соответствие робо-сделок этой логике.
Если открытие сделок строго в логике, если есть запас по основным показателям, такой подход долгосрочно спасёт на любом или почти любом рынке.

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

Главные недостатки моего подхода:
1. Не каждый алготрейдер является приличным трейдером, таким дорога в математику (у меня дорога наоборот :0) ).
2. Сложность полной формализации ручных методов.
Зато если удалось формализовать, тема тестирования решается элементарно.
avatar
VladMih, а как, на ваш взгляд, появляется первый пункт про ТС, основанную на логике проверенного ручн трейдинга? Это что-то случайно? Либо есть либо нет — либо возникло либо не возникло? Или у этого другие корни, например, из каких-то более топорных математических алго?
avatar
Sergey Pavlov, вряд ли вы меня поймете, мы «гонщики» из разных «конюшен». Попытаюсь.
Все мои ТС основаны на визуальной оценке графиков, оценке положения цены относительно мувингов и графических разметок + индикаторные сигналы. 
Случайность при 13 летнем стаже Форекса?!...
Случайность — это скорее случайно подобранный математический алгоритм новичка. И таких алго здесь подавляющее большинство.
Не спорю, этот метод имеет право на жизнь, но… именно из этого вытекают все ваши сложности тестирования, к тому же не дающего гарантию, что результаты любого математического теста могут гарантировать хотя бы 50% того, что даст мне соответствие алго-сделок логике трейдинга.
avatar
VladMih, вы так ответили, словно я вас в чем-то обвинили или укорил))) Случайность это когда сложилось как сложилось. Это ни плохо, ни хорошо. Если мы не можем точно сказать, по какому алгоритму следовать, чтобы достичь результата, значит мы можем сойтись лишь в том, что это случайность.

Почему один смотрит на всё то, что вы описали и у него ничего не выходит, а у вас за 13 лет всё сложилось удачно? Значит дело в чем-то другом…
avatar
Sergey Pavlov, скорей это ВЫ кинулись в обиды.
Вы чистый алго, я чистый ручной трейдер, даже ни одного языка программирования не знаю, колупаюсь в кубиках ТСЛаб. Поторгуйте 13 лет руками на форексе (и ИМЕННО на форексе), тогда вам легче будет понять о чем я написал. 

Причем случайность?
Я её не отрицал! В казино тоже выигрывают!
Но мы же не это обсуждаем!

Причем «дело в чем-то другом»? Я и «другое» не отрицал! НО.
Когда читаю на СЛ про многолетний стаж всех присутствующих подряд, меня дурной смех разбирает — 99% этих «стажеров» продолжают работать на дядю, плюс еще может и бизнес имеют, а трейдинг у них два часа в неделю. Ну и сравнивают свои годы с моими… Умора... 
А 15-17 часов в день без выходных и праздников первые три года не хотите? И сейчас весь день в терминале! Я за неделю набираю их «год»!
Вот и прочувствуйте для начала хотя бы эту разницу.
avatar
вообще в форвард тестировании вижу мало смысла. Что мешает протестить наборы параметров отдельно по каждому году, а потом сопоставить по какому-либо показателю и сравнить между собой. Здесь Николай Флёров много писал про оптимизацию стратегий и портфелей, еще у ves2010 интересные идеи, да много кто чего писал. Желательно что бы страта работала на очень большом горизонте лет. Потом нужно определить область параметров и получить результаты на это области. Потом в том же экселе определить более узкую область лучших показателей и выбирать значения параметров из этой лучшей области. Возможно что лучше выбирать не один набор параметров, а группу и в торговле использовать не одну страту с одним набором параметров, но одну и ту же страту но с несколькими наборами параметров. В этом случае желательно что бы максимальные просадки были в разные периоды. Это конечно от лукавого, но хуже не будет.
avatar
Любая система--это формализованное выражение некой рыночной особенности. То есть система это не просто алгоритм, а еще и понимание, что и как происходит. 

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

smart-lab.ru/blog/186186.php

anatoly-utkin.livejournal.com/14058.html

avatar
anatolyutkin, При таком подходе наверно сложно оставаться непредвзятым в ситуации когда танцуешь от данных, построил систему с красивыми показателями и ищешь обоснование в реальном мире — мозг такое умеет делать)) — подгонять обоснование под любые задачи))
avatar
Replikant_mih, Да, так и есть. Помогают опыт, интуиция. ЧувствА помогут :) Трейдинг вообще вещь чувственная, имхо. Где нерв, где градус накала и страсти--там и бабло :) 
avatar
AdaBoost идин из первых успешных алгоритмов бустинга. Насколько понимаю, сейчас существуют более совершенные алгоритмы построенные на градиентном бустинге решающих деревьев. Есть множество доступных реализаций — CatBoost, XGboost, sklearn и т.д.
Но это все не про проверку от переподгонки. 


avatar
anatolyutkin, интересные системы! а есть такие же, но чтоб срабатывали раз в минуту? :)

кстати, как голубой бейджик у Тимофея получить?
avatar
ПBМ, Закономерностей много всяких на базарчике :) Тут какое дело. Лично мне в общем-то уже не жалко. Но проблема в том, что любая малоликвидная система, вынесенная на публику, ломается. Человек с тыщью лотов RI решит на пару минуток зайти. А потом выйти. Незаметненько так, а чо. Пичалька будет в общем, такие дела. Поэтому публично я раньше говорил только про системы с условно бесконечной ликвидностью. А сейчас что-то и про них не хочется. 

Бейдж не знаю, мне не говорили :) 
avatar
VladMih, :) Гы. Насчет блох я бы так не сказал. На таких вещах большие деньги делаются. Бабло переходит от быстрых к терпеливым--слышали?

Из быстрых? Котирование, например. Опционы берите, котируйте. Кстати, там и скорость особая не нужна, можно не hft даже. Алгоритмы там--да простейшие. Купил дешевле, продал дороже и так много раз. C#, transaq connector--и вперед. Из не hft интрадея--ну что вам сказать. Ну есть они. Давайте этим ограничимся. А то меня коллеги не поймут, бугога. Кстати, вот эта вся быстрая алготема и есть ловля блох имхо, потому что чрезвычайно чувствительна к сайзу. 
avatar
оверфиттинговые системы обычно после запуска сразу лепят 3-5-7-10 стабильно отрицательных сделок.
камнем на дно, короче.
это самый простой вариант для отсейки.
другие колупаются 2-3 месяца, потом — камнем на дно. тут сложнее.
третьи могут жить по полгода. других у меня не было пока.
сейчас в работе только 2 робота, которые зарабатывают. одному нужна волатильность поменьше, второму текущая и выше.
обоим сейчас «от роду» порядка двух месяцев. хотя концепцию я придумал несколько лет назад, т.е. это «династия», подгонял прошлой весной-летом. осенью лакировал доп. «курвфиттингом», и 2 месяца назад снова оптимизячил.

возможно у меня просто такой слишком нетерпеливый темперамент. не многие роботы доживают до выхода из просадки. хотя концепция меняется слабо. только всякие бантики вокруг.
avatar
VladMih, Да хоть котирование, хоть трейдинг. Хоть как назовите. Главное, чтоб бабло было на счетах, да побольше. Бабло побеждает зло! 
avatar
Форвардное тестирование не избавит вас от переоптимизации. Да и наврядли что-то может избавить, если у вас менее 100 000 сделок за период тестирования :) Тут важен опыт и понимание.
avatar
Деление выборки на две части — самообман. Все равно подбирается вариант примерно одинаково работающий на обеих частях. Так что результат процедуры тот же, а времени уходит больше, только и всего
avatar
wrmngr, ну как бы можно таким макаром отсеять явно не робастный алгоритм. 
avatar
First, переподгоняется не торговая система, а модель, лежащая в её основе. Как бороться с переподгонкой этим математики занимаются а не трейдеры, иди лучше учись
First, явно неробастный лучше не начинать писать даже) SECRET все верно говорит — «опыт и понимание»
avatar
wrmngr,  ну по крайней мере то,  что отсеется при делении на две непересекающиеся части точно торговать нельзя. Только сравнивать надо не доходности за весь период. Доходность за длинный период априори неробастна. 
avatar
А. Г., как ооочень грубый фильтр конечно подойдет, но при определенном опыте написания торговых моделей совершенно излишний. Главное не забывать, что есть не только параметрическая подгонка. Я склоняюсь к мысли, что устойчивость модели нужно проверять сразу на множестве смежных инструментов без замены структуры и параметров. Так, к примеру, модель разработанная для условной «акции роснефти» должна сносно себя вести и на «газпроме» и на «сбере». Т.е. на подгруппе «Акции РФ»
avatar
wrmngr,  совсем необязательно,  что одна система сможет сносно торговать на разных инструментах даже с одного рынка.  Потому что одна акция может  быть трендовой на таймфрейме системы,  а другая контртрендовой. А средние доходности тренда и контртренда на одном таймфрейме либо у оба равны нулю,  либо имеют разные знаки.
avatar
А. Г., Да, это так, но такую систему для одной бумаги уже страшновато запускать, ведь мы не знаем чем обусловлена индивидуальная динамика на конкретном фрейме и когда она (динамика) может измениться
avatar
 Как я защищаюсь — отношусь к стратегии как к исследованию, прям такому — аналитическому)), да с большим кол-вом итераций (стратегий) многие вещи начанают обрутиниваться, но тем не менее это исследование. Цель исследования отделить случайности от закономерности, выявить связи, корреляции, взаимодействия элементов системы и прочее. Строишь промежуточные гипотезы, проверяешь, оцениваешь достаточность доказательств и т.д. Если предоставишь себе достаточно доказательств неслучайности результатов — считай не переоптимизировал :)
avatar

теги блога First

....все тэги



UPDONW
Новый дизайн