First
First личный блог
09 февраля 2018, 03:55

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

Очень интересно узнать, кто какие методы использует для для избежания подгонки (overfitting) системы.

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

Что можете сказать про алгоритм бустинга AdaBoost?
58 Комментариев
  • Антон Денисков (Fry)
    09 февраля 2018, 04:56
    правило первое: всё что можно упростить — упрости.

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

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

    Причём, пробовал я много раз всякие хитрые подходы с самооптимизацией и внутренней настройкой бота — фигня выходит. Всё что можно упростить — упрости =)
    • VladMih
      09 февраля 2018, 10:41
      Fry (Антон), если у вас есть проблемы со сложными алгоритмами, это не значит, что они — зло. Хорошая программа для обработки сложных данных не может быть простой. Посмотрите насколько сложные расчеты прогноза погоды! Для их «алго» требуются суперкомпьютеры, а вы ратуете за упрощение...
      Упростить сложное можно только одним способом —
      отрезать от него что-то… нужное.
      • Антон Денисков (Fry)
        09 февраля 2018, 11:01
        VladMih, я специально расшифровал по пунктам (см пункт 2). Как пример: у меня есть весьма сложный алгоритм (2000 строк кода и 2 конечные формулы с кучей весовых коэффициентов), но на выходе всё просто до одного бита (кроме одного параметра).
        • VladMih
          09 февраля 2018, 11:07
          Fry (Антон), самообман.
          От того, что все сложности не выведены в настройки, а зашиты внутрь (предварительно подогнанные «кучей весовых коэффициентов»), вы ничего не приобретаете, а наоборот — теряете возможность подкорректировать «подгонку» под текущий рынок.
          • Антон Денисков (Fry)
            09 февраля 2018, 11:16
            VladMih, да-да. Давайте займёмся предсказыванием движения рынка как погодой.
            Ещё суперкомпьютер загрузим, Грефа позавём, пусть расскажет нам про бигдата =)
            • VladMih
              09 февраля 2018, 11:19
              Fry (Антон), да хоть Кудрина зовите! )))
              Только сначала объясните чем современное прогнозирование погоды отличается от алготрейдинга.
              • Антон Денисков (Fry)
                09 февраля 2018, 11:24
                VladMih, заказчиками и отношением к делу.
                • VladMih
                  09 февраля 2018, 11:32
                  Fry (Антон), ну, разве что...
                  А по сути разницы в алго не нашлись что сказать? Понимаю )
                  • Антон Денисков (Fry)
                    09 февраля 2018, 18:46
                    VladMih, крайне дилетантский подход проводить подобные аналогии. Странно, что Вы этого не понимаете =).
                    Как пример: вход даже на 1 контракт в топ ликвиднейших мировых инструментов создаёт глубокую обратную реакцию. Рынками манипулируют. Все данные по клиентам сливаются. Кукл существует. Есть куча закономерностей-ловушек, которые очевидны, существуют до момента пока кто-то не начнёт их торговать. Кого-то ловят, сливают. Как только попытки торговать это прекращаются — закономерность возвращается на место. Существует ещё множество глубочайших различий с погодными явлениями. Но в рамках камента никак не поместится этот разговор.
                    • VladMih
                      09 февраля 2018, 19:01
                      Fry (Антон), а я может дилетантизмом считаю ВАШИ «мюсли».
                      Хотите вместо доводов кидаться какашками? — Досвидос.
                      • Антон Денисков (Fry)
                        09 февраля 2018, 19:16
                        VladMih, кто-то наливает негатив и он раскручивается в ходе дискуссии. Мне кажется в данном случае начинал не я ;)
                    • Boris Litvinov
                      09 февраля 2018, 21:36
                      Fry (Антон), согласен
                    • Replikant_mih
                      10 февраля 2018, 21:19

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

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

                       

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

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

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

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

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

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

                                      • Антон Денисков (Fry)
                                        10 февраля 2018, 23:58
                                        Replikant_mih, как я пробовал это доказать для себя. Пробовал входы по некоторым общим правилам на CME и в кухне ДЦ с таким маленьким счётом, что мои позиции точно не выводятся на рынок. По уму надо было пробовать на демке, но я для себя ставил другие задачи. Так что проверка этих моих предположений была всего лишь побочным эффектом. Вышло так, что себя я убедил. Признаюсь честно, как научное доказательство ну совсем не катит! Даже на уровне школьного исследования так не делают. =) Да, выходит хреновый я искатель истины =(
  • Sergey Pavlov
    09 февраля 2018, 08:05
    Что вы называете форвардным тестированием?
  • ves2010
    09 февраля 2018, 08:48
    форвардное тестирование для лохов… сам подумай… последние данные имеют максимальную ценность… а их как раз и выкидываем из оптимизации...
    имеет смысл все делать наоборот… ну например оптимизировать за последние лет 5… с 2012-2017гг а затем тестировать на более ранних данных 2007-2012гг

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

    из этого следуем мораль… которую расписывать не буду… т.к грааль
    • tores
      09 февраля 2018, 10:37
      ves2010, насколько знаком с вашими подходами,  грааль не в методах торговли, а в выборе правильного инструмента для торговли.
  • Friendly Deep Space
    09 февраля 2018, 10:18
    Чем меньше модификаций цены применяется, чем проще и яснее логика, тем лучше. 
  • VladMih
    09 февраля 2018, 10:36
    МОЙ вариант — это три обязательных пункта:
    1. Наличие трейдерской (не математической) ТС, основанной на логике проверенного ручного трейдинга.
    2. Соответствие алго этой логике хотя бы процентов на 90.
    3. Штучно-выборочная ручная проверка на соответствие робо-сделок этой логике.
    Если открытие сделок строго в логике, если есть запас по основным показателям, такой подход долгосрочно спасёт на любом или почти любом рынке.

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

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

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

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

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

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

    smart-lab.ru/blog/186186.php

    anatoly-utkin.livejournal.com/14058.html

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


  • П М
    09 февраля 2018, 12:57
    оверфиттинговые системы обычно после запуска сразу лепят 3-5-7-10 стабильно отрицательных сделок.
    камнем на дно, короче.
    это самый простой вариант для отсейки.
    другие колупаются 2-3 месяца, потом — камнем на дно. тут сложнее.
    третьи могут жить по полгода. других у меня не было пока.
    сейчас в работе только 2 робота, которые зарабатывают. одному нужна волатильность поменьше, второму текущая и выше.
    обоим сейчас «от роду» порядка двух месяцев. хотя концепцию я придумал несколько лет назад, т.е. это «династия», подгонял прошлой весной-летом. осенью лакировал доп. «курвфиттингом», и 2 месяца назад снова оптимизячил.

    возможно у меня просто такой слишком нетерпеливый темперамент. не многие роботы доживают до выхода из просадки. хотя концепция меняется слабо. только всякие бантики вокруг.
  • SECRET
    09 февраля 2018, 15:10
    Форвардное тестирование не избавит вас от переоптимизации. Да и наврядли что-то может избавить, если у вас менее 100 000 сделок за период тестирования :) Тут важен опыт и понимание.
  • wrmngr
    09 февраля 2018, 15:36
    Деление выборки на две части — самообман. Все равно подбирается вариант примерно одинаково работающий на обеих частях. Так что результат процедуры тот же, а времени уходит больше, только и всего
      • Пафос Респектыч
        09 февраля 2018, 23:28
        First, переподгоняется не торговая система, а модель, лежащая в её основе. Как бороться с переподгонкой этим математики занимаются а не трейдеры, иди лучше учись
      • wrmngr
        10 февраля 2018, 01:10
        First, явно неробастный лучше не начинать писать даже) SECRET все верно говорит — «опыт и понимание»
    • А. Г.
      09 февраля 2018, 20:11
      wrmngr,  ну по крайней мере то,  что отсеется при делении на две непересекающиеся части точно торговать нельзя. Только сравнивать надо не доходности за весь период. Доходность за длинный период априори неробастна. 
      • wrmngr
        10 февраля 2018, 01:00
        А. Г., как ооочень грубый фильтр конечно подойдет, но при определенном опыте написания торговых моделей совершенно излишний. Главное не забывать, что есть не только параметрическая подгонка. Я склоняюсь к мысли, что устойчивость модели нужно проверять сразу на множестве смежных инструментов без замены структуры и параметров. Так, к примеру, модель разработанная для условной «акции роснефти» должна сносно себя вести и на «газпроме» и на «сбере». Т.е. на подгруппе «Акции РФ»
        • А. Г.
          10 февраля 2018, 01:36
          wrmngr,  совсем необязательно,  что одна система сможет сносно торговать на разных инструментах даже с одного рынка.  Потому что одна акция может  быть трендовой на таймфрейме системы,  а другая контртрендовой. А средние доходности тренда и контртренда на одном таймфрейме либо у оба равны нулю,  либо имеют разные знаки.
  • wrmngr
    10 февраля 2018, 11:59
    А. Г., Да, это так, но такую систему для одной бумаги уже страшновато запускать, ведь мы не знаем чем обусловлена индивидуальная динамика на конкретном фрейме и когда она (динамика) может измениться
  • Replikant_mih
    10 февраля 2018, 21:30
     Как я защищаюсь — отношусь к стратегии как к исследованию, прям такому — аналитическому)), да с большим кол-вом итераций (стратегий) многие вещи начанают обрутиниваться, но тем не менее это исследование. Цель исследования отделить случайности от закономерности, выявить связи, корреляции, взаимодействия элементов системы и прочее. Строишь промежуточные гипотезы, проверяешь, оцениваешь достаточность доказательств и т.д. Если предоставишь себе достаточно доказательств неслучайности результатов — считай не переоптимизировал :)

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн