Блог им. SergeyJu

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

               Для численного моделирования переподгонки я взял дневки фьючерса на индекс РТС, с середины декабря 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, не изменилось практически ничего.

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

★9
28 комментариев
Гораздо интереснее обстоит дело с экстремальными значениями. Число случайных эквити с Шарпом более 1 составляет 0,78%
правильно ли я понял, что вы берете в работу далее для изучения именно эти значения? просто я такую страту сразу в топку выкидываю. Интересно как у вас подход работает или нет
avatar
Андрей К, не понял, как я могу взять в работу то, что нельзя торговать? Попытаться сделать из случайных данных фичу. Пока не научился.
avatar
Надо хорошо подумать,  являются ли обычные наши меры против переподгонки достаточными. Кажется, что не очень.
Эт точно.
avatar
Здесь ещё надо разобраться, что есть переподгонка?
Если используется конкретное свойство и обычная логика, то в любом случае переподгонка, но она только на руку. В этом случае переподгонка полезна, и чем точнее подгоняется, тем лучше для системы.
Если же мы не знаем что ищем, то переподгонка нам обеспечена.
avatar
Если модель сама по себе неадекватная, то как параметры ни оптимизируй лучше она от этого не станет. И действительно выглядеть это может как переподгонка, но это не она )

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

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

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

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

 
avatar
Jkrsss, на днях как раз рассуждали на тему, сколько должно быть сделок и сколько индикаторов, чтобы уберечься от переподгонки. Выясняется, что 3 индикаторов уже много, а сделок может быть просто до.уя при самой голимой, бессмысленной подгонке. 
avatar
SergeyJu,   не сумев за много лет ответить на этот вопрос, я подался в примитивисты: оставил только системы с 1 параметром. Три строчки на векторном языке.  
Но потом подумал… и с двумя параметрами тоже оставил.  )))
avatar
bocha, вон умные люди читают перепику Энгельса Далио, говорят трейдер должен неустанно развиваться! кагжитак-то? стыдно.
bocha, с радостью приму в дар все выброшенные вами ТС. Обязуюсь проинформировать если найду среди них работающие (на мой взгляд).

Теперь по теме. Для себя я пока вопрос с количеством параметров решил так — на этапе первичного поиска ТС их может быть много. С одной стороны это конечно токсично с точки зрения переподгонки. С другой, можно представить что я просто объединил множество 2х параметных систем, до которых додумались мои клоны в миллионе параллельных миров. И ведь каждый мой клон уверен что изучает 2х параметную ТС. А вот на этапе более детальной оптимизации действительно параметров должно быть минимум. Осталось только договориться с собой что есть первичная промывка золотосодержащего песка, а что — вторичная. И какие принципы оптимизации вообще использовать. Тут конечно есть мысли и даже конкретные, но пока на практике до них не дошёл. 
avatar
bocha, параметров может быть больше, надо только знать схемку как выстраивать без внутренних противоречий. мне вепольный анализ помогает-триз.
avatar
SergeyJu, Если был бы портель акций, можно взять корреляцию между этим методом и фундаментальным коэфф. публикуемым раз квартал, переворачиваемость упадет на порядок. доходность нормальная. разница в день это много. хоть в 5 дней. либо тупо внутри дня отсекая начало и конец дня.
avatar
WhalerMan, понимаете, все рассуждают на тему, куда может привести разумная деятельность. А я попытался посчитать, куда может привести деятельность неразумная. Риторический вопрс на тему, является ли подгонка с помощью нейронной сети разумной, заметьте, я опускаю.
avatar
а смысл если вы все равно не угадаете какой вариант будет в будущем?
avatar
ничосе вы тут спалились все анархо-примитивисты



Проще простого зигзага не придумать .5 новых техник Эндрюса рулят ценой.
avatar
WhalerMan, Учите волновой анализ и увидите расчет 3й волны в простом зигзаге (2я волна Эллиота) .t3(время 3й волны)= t1  или   t3=t1+t2. Или менее вероятные варианты t1+t2 > t3 >t1.Лучший прогноз это 70% успеха прогноза.
avatar

теги блога SergeyJu

....все тэги



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