SergeyJu
SergeyJu личный блог
15 июня 2020, 18:47

Переподгонка, простейшая модель

               Для численного моделирования переподгонки я взял дневки фьючерса на индекс РТС, с середины декабря 2006 по начало мая 2020,  которые корректно склеены. Сначала рассмотрим систему максимальной доходности для 1 фьюча, торгуемого в обе стороны. Её эквити будет сумма модулей логарифмических приращений дневок, взятая нарастающим итогом.  Финансовый «результат» 5207% (логарифмических), или 391% годовых. Число дневных баров 3356, коэффициент Шарпа с нулевым смещением (нулевой % ставкой) 9,8.

               Наша «подгонка» будет состоять из 2 этапов. На первом мы моделируем наличие 3 индикаторов с порогом, просто присваивая каждому приращению случайное целое от 1 до 8, которое будет номером кластера. Напомню, что каждый индикатор с порогом делит массив баров на 2 кластера, а 2^3=8.  На втором этапе суммируем дневные приращения внутри каждого кластера и приписываем кластеру позицию лонг, если сумма положительна и шорт, если отрицательна. Получаем эквити, для которой можно посчитать число сделок (перемен позиции), доходность, к-т Шарпа.

               Методом Монте-Карло я настругал 1 000 000 (миллион) таких эквити. Средние результаты не впечатляют. Число сделок на каждую 1500-1700 с очень небольшими отклонениями, средняя годовая доходность 22,8% (общая за период 304%) ,  средний Шарп 0,57. Хочется только отметить, если взяты 3 не случайных индикатора, результаты должны быть существенно лучше.

               Гораздо интереснее обстоит дело с экстремальными значениями. Число случайных эквити с Шарпом более 1 составляет 0,78%. С шарпом более 1,1 – 0,18%. Максимальная эквити имела Шарп 1,47 и итоговую логарифмическую доходность 781,7% (среднегодовую 58,7%).

               Таким образом, подгоняя всего 3 индикатора и по одному порогу на каждый из них, мы, при некотором усердии, можем «добиться»  очень много.

               Гистограмма распределения к-тов Шарпа за миллион испытаний очень напоминает чуть –чуть покореженную гауссову кривую, с укороченным левым хвостом и растянутым правым. Мода чуть меньше среднего (Шарп 0,53 против среднего 0,57).  Мне стало интересно, что будет, если сократить число сделок. Для этого я модифицировал испытания Монте-Карло  так, чтобы с вероятностью 50% сохранялся предыдущий номер кластера, в противном случае снова делался бросок 8-гранной кости. Если не считать того, что число сделок сократилось до 600-900, не изменилось практически ничего.

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

28 Комментариев
  • Андрей К
    15 июня 2020, 19:00
    Гораздо интереснее обстоит дело с экстремальными значениями. Число случайных эквити с Шарпом более 1 составляет 0,78%
    правильно ли я понял, что вы берете в работу далее для изучения именно эти значения? просто я такую страту сразу в топку выкидываю. Интересно как у вас подход работает или нет
  • 3Qu
    15 июня 2020, 19:09
    Надо хорошо подумать,  являются ли обычные наши меры против переподгонки достаточными. Кажется, что не очень.
    Эт точно.
  • 3Qu
    15 июня 2020, 19:56
    Здесь ещё надо разобраться, что есть переподгонка?
    Если используется конкретное свойство и обычная логика, то в любом случае переподгонка, но она только на руку. В этом случае переподгонка полезна, и чем точнее подгоняется, тем лучше для системы.
    Если же мы не знаем что ищем, то переподгонка нам обеспечена.
  • Пафос Респектыч
    15 июня 2020, 20:29
    Если модель сама по себе неадекватная, то как параметры ни оптимизируй лучше она от этого не станет. И действительно выглядеть это может как переподгонка, но это не она )

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

    Когда-нибудь скорее всего сработает хорошо, но так и машки банальные тоже когда-нибудь точно хорошо отработают ))
  • Пафос Респектыч
    15 июня 2020, 20:35
    Наша «подгонка» будет состоять из 2 этапов. На первом мы моделируем наличие 3 индикаторов с порогом, просто присваивая каждому приращению случайное целое от 1 до 8, которое будет номером кластера. Напомню, что каждый индикатор с порогом делит массив баров на 2 кластера, а 2^3=8.  На втором этапе суммируем дневные приращения внутри каждого кластера и приписываем кластеру позицию лонг, если сумма положительна и шорт, если отрицательна. Получаем эквити, для которой можно посчитать число сделок (перемен позиции), доходность, к-т Шарпа.

    Тест Уэлча посчитайте ещё ) я серьёзно.

    ru.wikipedia.org/wiki/T-критерий_Уэлча
      • Пафос Респектыч
        15 июня 2020, 21:52
        SergeyJu, ну надо же понять, насколько случайно/неслучайно мы на два кластера ценовые приращения делим? А то смысл вообще всем этим заниматься )
          • Пафос Респектыч
            15 июня 2020, 22:42
            SergeyJu, а да, я не совсем внимательно прочитал как вы на кластеры делите. Тогда вообще непонятно зачем вы этим всем занимаетесь ))
  • Jkrsss
    15 июня 2020, 21:03
    Наличие трех индикаторов случайных — это шутка в стиле найти решение для задачи трёх тел :) Очень интересно как часто переворачиваетесь(turnover)? Лучше вместо индикаторов — численно решить задачу разладки(стефана), а потом уже моделировать с помощью Монте-карло. Найти границы где  перестает работать метод.

     
      • bocha
        15 июня 2020, 22:16
        SergeyJu,   не сумев за много лет ответить на этот вопрос, я подался в примитивисты: оставил только системы с 1 параметром. Три строчки на векторном языке.  
        Но потом подумал… и с двумя параметрами тоже оставил.  )))
        • ака Tуземец
          15 июня 2020, 23:35
          bocha, вон умные люди читают перепику Энгельса Далио, говорят трейдер должен неустанно развиваться! кагжитак-то? стыдно.
        • Носорог
          16 июня 2020, 08:26
          bocha, с радостью приму в дар все выброшенные вами ТС. Обязуюсь проинформировать если найду среди них работающие (на мой взгляд).

          Теперь по теме. Для себя я пока вопрос с количеством параметров решил так — на этапе первичного поиска ТС их может быть много. С одной стороны это конечно токсично с точки зрения переподгонки. С другой, можно представить что я просто объединил множество 2х параметных систем, до которых додумались мои клоны в миллионе параллельных миров. И ведь каждый мой клон уверен что изучает 2х параметную ТС. А вот на этапе более детальной оптимизации действительно параметров должно быть минимум. Осталось только договориться с собой что есть первичная промывка золотосодержащего песка, а что — вторичная. И какие принципы оптимизации вообще использовать. Тут конечно есть мысли и даже конкретные, но пока на практике до них не дошёл. 
        • Jkrsss
          16 июня 2020, 10:06
          bocha, параметров может быть больше, надо только знать схемку как выстраивать без внутренних противоречий. мне вепольный анализ помогает-триз.
      • Jkrsss
        16 июня 2020, 10:01
        SergeyJu, Если был бы портель акций, можно взять корреляцию между этим методом и фундаментальным коэфф. публикуемым раз квартал, переворачиваемость упадет на порядок. доходность нормальная. разница в день это много. хоть в 5 дней. либо тупо внутри дня отсекая начало и конец дня.
  • Susanin
    15 июня 2020, 22:55
    а смысл если вы все равно не угадаете какой вариант будет в будущем?
  • ака Tуземец
    15 июня 2020, 23:25
    ничосе вы тут спалились все анархо-примитивисты



  • ezomm
    16 июня 2020, 01:23
    Проще простого зигзага не придумать .5 новых техник Эндрюса рулят ценой.

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

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