Мальчик buybuy
Мальчик buybuy личный блог
13 апреля 2023, 11:03

Простой способ отличить закономерность от подгонки

Добрый день, коллеги!

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

Не секрет, что все алготрейдеры в том или ином виде используют подгонку для получения рабочих стратегий.
Кто-то делает это в лоб и надеется, что полученный методом curve-fitting алгоритм будет работать в будущем.
Кто-то дополнительно делает WTF WFT тесты и отбраковывает плохих кандидатов.
Кто-то просто использует моделирование для подбора оптимальных параметров системы.
Во всяком случае мне неизвестна ни одна алгоритмическая ТС вообще без параметров.

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

1. Тестируем алго в достаточно большом окне (лично я использую 500000+ баров)
2. Тестируем алго в окне вдвое большего размера (1000000+ баров)

Если результат вырос в 2 раза (примерно) — возможно, наша ТС эксплуатирует некую стабильную закономерность
Если в 1.5 раза (примерно, точнее в sqrt(2)) — скорее всего, это тупо результат подгонки
Если вырос еще меньше — в мусор и побыстрее

Ну и (я не выделял этого отдельно) в моих алго, работающих на минутных барах, результаты ТС на достаточно длинных участках одинакового размера примерно одинаковы.

Все просто

С уважением
109 Комментариев
  • Большой Брат
    13 апреля 2023, 11:10
    Количество баров то тут о чем? Число сделок должен быть критерий, а не число баров.
      • Большой Брат
        13 апреля 2023, 11:25
        Мальчик buybuy, Один тестит ТС со средним временем позиции 10 баров, а другой 100 на одной и той же выборке… есть разница в длине верифицируемой истории ТС?
  • Daniil Lazarev
    13 апреля 2023, 11:24
    пусть длинный участок это 500к баров — ДУ
    1. на ДУ подбираем параметры
    2. на другом ДУ проверяем результат, пусть будет P1
    3. на третьем ДУ перепроверяем результат, пусть будет P2
    Есть закономерность, если P1 == P2

      • Daniil Lazarev
        13 апреля 2023, 11:47
        Мальчик buybuy, возможно, но кмк мой вариант (по крайней мере я так делаю) надежнее.

  • GOLD
    13 апреля 2023, 11:41
    Подтверждаю методологическую правильность данного подхода в тестировании алгоритмов. По сути, это простейший клон WFT.

    Напоминаю, что WFT — самый надежный способ лишить иллюзий инфантильного мужчину, мечтающего разбогатеть игрой на бирже. 

    Любой пост про WFT вызывает крики боли и волны ненависти на смартлабе.
    • Jame Bonds
      13 апреля 2023, 11:49
      $100, 
      Напоминаю, что WFT — самый надежный способ лишить иллюзий инфантильного мужчину, мечтающего разбогатеть игрой на бирже. 

      … и внушить ему новые иллюзии )))
  • Whalerman
    13 апреля 2023, 11:45
    Мальчик buybuy,

    ну не везде можно таким способом подтверждать. Результат работы стратегии = функция от поведения временного ряда (по крайней мере для трендовых стратегий без шорта это точно так!). Соответственно, если на «аут оф сэмпл» ряд имеет отличную результативность чем на «ин сэмпл» то это ничего страшного, так как надо смотреть на «альфу» к инструменту/рынку. Стабильность альфы — главный критерий. 
    А то что написано в топике справедливо, но лишь для реверсных стратегий на небольших колебаниях (как правило распределение сделок для таких стратегий скошено вправо и имеет высокий Шарп (как минимум на тестах).

    С уважением!
      • Whalerman
        13 апреля 2023, 11:56
        Мальчик buybuy, 

        по сути прав выше $100 это экспресс WFT. Для пущей проверки робастности параметром стратегии можно сгенерировать временной ряд, перемешав данные в случайном порядке типа бутстрапинга и прогнать на этих данных стратегию n раз, если результат будет отличаться от тестов на исходном ряде — сразу вопрос к такой стратегии.

        С уважением!
        • Daniil Lazarev
          13 апреля 2023, 11:58
          Whalerman, зачем мешать в реальный временной ряд случайные данные ?
          нам же нужно найти параметры для поиска паттерна/паттернов, а так вы просто сводите на нет всю работу
          • Whalerman
            13 апреля 2023, 12:04
            Daniil Lazarev, 

            это дополнительная проверка системы, этим способом можно легко исключить эффект подгонки параметров под временной ряд. К тому же если немного раскрыть вопрос, то методов «перемешивания» может быть много это не обязательно перемешивание каждой точки, перемешивать можно кусками, например взять данные за 18 лет и перемешивать в случайном порядке отрезки равные году, кварталу и т.п. (в таком случае паттерны останутся на месте в большинстве случаев) плюс можно сделать перемешивание с повторениями и без таких — вариантов вагон! Ограничение только фантазия и уровень подготовки.

            С уважением!
            • Daniil Lazarev
              13 апреля 2023, 12:08
              Whalerman, идея понятна,

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

              ну вообщем дело ваше
        • ves2010
          13 апреля 2023, 15:24
          Whalerman, нельзя такое делать… надо пользовать только реальные данные… там фишка в том, что эти данные имеют особую стату внутри дня… которой нет в синтетических данных
  • Daniil Lazarev
    13 апреля 2023, 12:00

    Интересно, а вообще много людей проверяют стратегии на рядах 500к+ ?

    Что — то мне подсказывает, что — нет. 

      • Daniil Lazarev
        13 апреля 2023, 12:06
        Мальчик buybuy, разумеется,

        я тестирую на 1млн, дальше не иду тк за 2 года рынок точно меняется

        Опрос бы провести, было бы любопытно…
    • Whalerman
      13 апреля 2023, 12:06
      Daniil Lazarev, 

      это только на кастомных системах возможно, уважаемый Мальчик buybuy это проделывает на matlab, я на R запускал максимум 2,3 млн — очень тормозит… пробовал скормить это TsLab  = завис сразу!

      С уважением!
      • Daniil Lazarev
        13 апреля 2023, 12:10
        Whalerman, ну так некастомные и не зарабатывает поэтому…
        • Whalerman
          13 апреля 2023, 12:18
          Мальчик buybuy, 

          про тестер в TsLab: подходит для начального уровня и это с лихвой покрывает потребности 95% юзеров (мои личные ощущения). Сам уже лет 7 как ничего не тестирую в лабе, только свой код на R. Векторные вычисления — без них никуда.

          С уважением!
  • Replikant_mih
    13 апреля 2023, 12:04
     Ну, если разместить этот метод на шкале координат где по одной оси будет топорность (считай, много хорошего отсечешь заодно), и эффективность (работает ли вообще эта метода для заявленных целей (для защиты от переподгонки)), то я бы оценил место этого метода в этом пространстве как: очень топорно, но в целом может работать).
      • Replikant_mih
        13 апреля 2023, 12:17
        Мальчик buybuy, Я ж без претензий)), просто лейбл наклеил).
  • bozon
    13 апреля 2023, 12:06
    Значит ЧВК «Вагнер» всё-таки берут Артёмовск, взаимодействие ЧВК с ВКС и регулярными ВС более чем чёткое, снабжение и логистика терпимые — и это всё за РУБЛИ, товарищи! Инфляция всего 3%, рекордно низкая безработица — даже Сечину нашли работу:))
    Значит Путин-то молодец! Значит НАТО сосёт вместе со своим рипером! Значит война скоро закончится очередной победой российского оружия!
    Значит добрая половина дельфийских оракулов смартлаба — панические пи#####лы!))
      • bozon
        13 апреля 2023, 12:30
        Мальчик buybuy, вот и я про то же — каждый должен заниматься своими делами и не мешать другим делать их дела.
          • bozon
            13 апреля 2023, 12:44
            Мальчик buybuy, почему у меня эмоции появляются только против хохлов? Может я неправильный какой-то в понимании смартлаба?
              • bozon
                13 апреля 2023, 13:19
                Мальчик buybuy, да, я получаю информацию из трансляций по федеральным каналам России. У Вас проблемы по этому поводу?
                Из этих источников я вчера узнал, что вулкан Шевелуч выбросил в атмосферу гигантский объём вулканического перпла, видимый с орбиты. Может быть это тот самый украинский вулкан мести, что мстит Путину за угнетение Мальчика byu-byu на смартлабе?) Может быть теперь Мальчик byu-byu больше не будет byu-byu, а станет sell-sell (но только не на moex)?))
                Что из этого всего является фактом?
                  • bozon
                    13 апреля 2023, 13:39
                    Мальчик buybuy, короче, Ваши товарищи-хохлы своё дело знают. С бубном танцы были?))
                      • bozon
                        13 апреля 2023, 13:45
                        Мальчик buybuy, ну хохляцкие тг-каналы — это прям истина в последней инстанции:))
  • 22022022
    13 апреля 2023, 12:33
    Любой тест на истории — подгонка под определенный промежуток истории.
    А хорошая ТС или алго не нуждается в тестировании на прошлом.
      • 22022022
        13 апреля 2023, 12:54
        Мальчик buybuy, потому что эксплуатирует не какие то фантастические закономерности (совпадения) веру в грааль, а задержки, закрытую информацию, правила биржи итп.
  • MadQuant
    13 апреля 2023, 12:36
    Если результат вырос в 2 раза (примерно) — возможно, наша ТС эксплуатирует некую стабильную закономерностьЕсли в 1.5 раза (примерно, точнее в sqrt(2)) — скорее всего, это тупо результат подгонкиЕсли вырорс еще меньше — в мусор и побыстрее

    Вообще это неверно. Если мы тестируем на ОС ровно один раз — то результат на ОС — это и есть реалистичная оценка перформанса системы, R = (результат на ОС) / (результат на бэктесте) — некая оценка стабильности системы, 1 — R — «доля оверфита», скажем так.
    Если тестируете на ОС больше одного раза — то там уже более сложная математика пошла, зависящая от того, что конкретно делаете.
      • MadQuant
        13 апреля 2023, 13:15
        Мальчик buybuy, ОС — это OS == OoS == Out-of-Sample, новые данные, которые подвезли (для окна в два раза большего размера)
          • MadQuant
            13 апреля 2023, 13:27
            Мальчик buybuy, то, что вы говорите — вообще не соотносится ни с какой теорией машинного обучения и здравой логикой. Перформанс модели на новых данных — это чистый несмещенный перформанс, если он положительный — значит он положительный. Если он в два раза больше, чем на данных обучения — значит, это случайно. Если он такой же — отлично, если в 2 раза хуже но положительный — значит, он в 2 раза хуже и положительный.
            доходность ТС на достаточно длинном окне фиксированной длины примерно одинакова (у меня так получается). Если это условие не выполнено — пост можно не читать.
            Пост можно тогда и не писать, это вообще что-то очень частное, мало имеющее отношения к реальности, и ни на что не обобщаемое.
              • MadQuant
                13 апреля 2023, 13:52
                Мальчик buybuy, ну у вас в рассуждениях оверфит начинается с фразы
                я исхожу из аксиомы, что доходность ТС на достаточно длинном окне фиксированной длины примерно одинакова (у меня так получается)
                Вы уже сделали подгонку произвольной величины, дальше какое там соотношение перформанса на первой/второй части истории — не так важно. В реальной торговле это все будет либо как-то работать, либо как-то не работать, чисто наудачу.
  • 22022022
    13 апреля 2023, 12:38
    История — это логическая ловушка.
  • 3Qu
    13 апреля 2023, 12:46
    Тестируем алго в достаточно большом окне (лично я использую 500000+ баров)
    2. Тестируем алго в окне вдвое большего размера (1000000+ баров)

    Если результат вырос в 2 раза (примерно) — возможно, наша ТС эксплуатирует некую стабильную закономерность
    1. Разрабатываем на истории 1 минута 3 месяца.
    2. Проверяем на истории от 3-х до 9 месяцев.
    Если результат примерно одинаков, то потенциально все ОК.
    • 22022022
      13 апреля 2023, 12:54
      3Qu, это не отменяет совпадения
      • 3Qu
        13 апреля 2023, 13:01
        Мальчик buybuy, 
        С тех пор я поумнел
        Ну или мне так кажется...
        Так кажется.
          • 3Qu
            13 апреля 2023, 13:44
            Мальчик buybuy, наверное, напрасно. Все становится все страньше и страньше.
            Пока переключился с похожей системой на Si. Вроде, по тестам все ничего, но как-то маловато будет. Если удастся нарулить поболе, то мож и на реал пойдет. Пока неинтересно.
              • 3Qu
                13 апреля 2023, 13:58
                Мальчик buybuy, так, и на Бинансе комиссии окупаются.
                Я ж писал — проблемы с вводом/выводом не решены, а как их решать ХЗ.
                  • 3Qu
                    13 апреля 2023, 14:17
                    Мальчик buybuy, 
                    2. Ввод я тебе решу за 5 мин
                    3. С выводом тоже могу помочь
                    Тоже уже писал — и че, мне каждый раз за вводом/выводом за Мальчиком бегать? ))
                    Несерьезно как-то.)
                      • 3Qu
                        13 апреля 2023, 14:33
                        Мальчик buybuy, уж, коли я комп врубил, глянь, что на Si поучается.

                        Тест — 3 месяца, ТФ — 1 минута, 1 фьючерс.
                        Чистыми где-то 3200 р будет.
                        Полное г..., пустые хлопоты в казенном доме.)
                          • 3Qu
                            13 апреля 2023, 14:45
                            Мальчик buybuy, 
                            А кто мешает увеличить плечо?
                            ???
                            Как ты собираешься уменьшить ГО? Это фьючерсы МОЕХ, однако.
                            Красиво то красиво, только толку с нее ноль.)
                              • 3Qu
                                13 апреля 2023, 14:58
                                Мальчик buybuy, денег у нас и своих хватает, у нас ума не хватает.©
                                ГО — 13000 р. 3000 р в квартал с фьючерса (13000 р) — слезы. Сколько бы этих фьючерсов не было.
                                Ну, 10-15 фьючерсов я куплю без ухудшения системы. Дальше это масштабировать не получится. 10 тыщ/месяц — несерьезно.
                                В общем, как ни умножай, толку не будет.
                        • ves2010
                          13 апреля 2023, 15:31
                          3Qu, 5000/300 сделок =16 пунктов на сделку… чет мало...

                          16 /70000=0.02% всего  средняя...

                          • 3Qu
                            13 апреля 2023, 16:01
                            ves2010, график немного устарел, Сейчас 21п/сделка, но все равно это ни о чем. Надо хотя бы 40-50 п.
                            С валютными парами никогда не получалось договориться. Отродясь ничего путного не получалось.)
    • ves2010
      13 апреля 2023, 15:28
      3Qu, ваще не вариант… т.к у тя будет одна фаза рынка дляной 3 мес… например безоткатный рост… или боковик…
      • 3Qu
        13 апреля 2023, 15:29
        ves2010, как раз это это никак не влияет. Но все равно не вариант.)
  • Кирилл Гудков
    13 апреля 2023, 12:53

    Какой должна быть деградация на out of sample — вопрос интересный.
    Однако ожидал от автора злобного матана, а тут какая-то интуитивщина, с квадратным корнем. «Так и я могу!» © Промокашка

    2. Тестируем алго в окне вдвое большего размера

    Имеется ввиду полная переоптимизация под новое окно?
  • Kot_Begemot
    13 апреля 2023, 13:48

    А чего бы корень из двух это фигня? По-моему это норм ваще.
    И чего так всех тянет в Oos тесты?!
    У вас там, наверное, свои какие-то ценности, в этих алготрейдингах.

      • Kot_Begemot
        13 апреля 2023, 15:06

        Мальчик buybuy, в целом, мы можем сказать, что нормальная, не оверфитнутая модель обладает плохим IS, и требовать от нее не худшего OOS. Вроде бы в условиях избыточных данных (относительно требований валидации модели) логично. С оговорками, конечно, но — логично. 

        Одна проблема — где взять столько данных 

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

      • Kot_Begemot
        13 апреля 2023, 15:12

        Мальчик buybuy, я боюсь, что СБ может данный критерий и в 5000 утянуть. Если совершенно не смотреть на IS тест и брать что попало )

        То есть такое дело… требующее массы оговорок.

  • bettor
    13 апреля 2023, 16:37
    Тестируется один и тот же алгоритм с одинаковыми параметрами в обоих случаях? Или происходит перетренировка и подбор новых параметров?
  • robomakerr
    13 апреля 2023, 17:04
    это же обычный OOS
      • robomakerr
        13 апреля 2023, 22:25
        Мальчик buybuy, общепринятое условие — «на OOS не хуже чем на IS»
  • vlad1024
    13 апреля 2023, 18:28
    По мне так лучший вариант, это считать альфу и бету на истории, потом на OOS. Если они сильно расходятся думать, и смотреть график эквити. Рынок в среднем со временем уничтожает неэффективности, в результате доходность многих стратегий падает. Тут скорее надо оценивать потенциальный профит и риски.
    Да, еще бывает полезно проверить, не заглядывает ли стратегия в будущее, перемешав случайно приращения, таким образом получив случайное блуждание.
      • vlad1024
        13 апреля 2023, 18:35
        Мальчик buybuy, на эквити должны быть тренды, так как это следствие стабильного положительного мат.ожидания сделок.
        Если мат. ожидание не стабильно, это лишний повод задуматься.
  • Synthetic
    13 апреля 2023, 19:31
    Случайное перемешивание приращений — ИМХО — тест номер 1.
    Причем сравнивать надо не эквити, а количество сделок. Если оно кардинально не уменьшается, значит Ваша система не может отличить рынок от случайного блуждания. А это не лечится.
  • Roman Ivanov
    13 апреля 2023, 20:48
    Дык а если рынок разный в разных окнах?
  • Waldemar
    16 апреля 2023, 18:24
    500 тысяч баров на дневках… это с какого года до н.э. надо тестировать? Автор идиот? А он тестирует 1,5 миллиона баров. Понятно.что автор тестирует минутки. Но ты хоть говори об этом в посте.))

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

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