Блог им. SergeyJu
ПЕРЕПОДГОНКА ч.2
В предыдущей заметке https://smart-lab.ru/blog/628025.php
я описал пример применения метода Монте-Карло для оценки переподгонки на базе дневных данных по фьючерсу на индекс РТС. Поскольку мало кто понял, о чем я, собственно, веду речь, и зачем это вообще нужно, продолжу.
Весь расчет был сделан для считающегося условно-безопасным случая 3 – х индикаторов (2^3=8 кластеров). Резонный вопрос, а если кластеров больше или меньше, что будет. Для начала провел моделирование для случая 2, 4, 8, 16, 32 кластеров и привел эмпирическую формулу, связывающую результат с числом степеней свободы (число коих на 1 меньше числа кластеров).
Число кластеров |
Степеней свободы |
Средний Шарп |
Приведенный Шарп |
2 |
1 |
0,214 |
0,214 |
4 |
3 |
0,375 |
0,216 |
8 |
7 |
0,573 |
0,217 |
16 |
15 |
0,836 |
0,216 |
32 |
31 |
1,191 |
0,214 |
Связь очень простая, средний финансовый результат (или Шарп, в данном случае это одно и тоже с точностью до множителя) от числа кластеров подгонки пропорционален корню из числа степеней свободы. С точностью до 3 знака. Каждое измерение состояло из 100 000 случайных попыток построить эквити. Так что расхождения в 3 знаке трактовать как наличие более сложной зависимости нет оснований. Гистограмма распределения финрезов эквитей выглядит во всех случаях почти как гауссовский колокол. В общем, ничего удивительного, ЦПТ она такая, созданная из корня.
Приведу таблицу, аналогичную предыдущей, но в терминах среднегодовой доходности.
Число кластеров |
Степеней свободы |
Среднегодовая доходность |
СКО среднегодовой доходности |
2 |
1 |
8,8% |
6,6% |
4 |
3 |
15,1% |
6,5% |
8 |
7 |
23,1% |
6,5% |
16 |
15 |
33,6% |
6,4% |
32 |
31 |
48,0% |
6,3% |
Всего 32 кластера – и чудовищно высокая 1,48 ^ 13 > в 500 раз за 13 лет доходность!
А если мы имеем освященный временем индикатор, и замешаем его в подгонку? Возьмем в качестве такого индикатора экспоненциальное скользящее среднее, а в качестве порогового условия для него – сравнение с ценой закрытия дня. Больше или меньше. По формуле
S(i)=S(i-1)+(C(i)-S(i-1))*(1/P)
используем случайный вещественный параметр P в диапазоне 2-32. В стандартной терминологии это, примерно, от 4 до 64 дней. Среднегодовая доходность 16,4%, её СКО 2,2%. То есть этот индикатор по потенциалу примерно соответствует двум случайным индикаторам.
Сразу тянутся руки добавить еще один простой индикатор – и вот оно, счастье. К сожалению, дальше все не так просто. Например, RSI вообще не имеет смысла.
Возможно продолжение...
все энто при наличие Мощнейшего бычьего тренда с середины 80 до начала нулевых…
и вновь входил, когда индикатор настроения очень умных и не очень… приходил в движение в их сторону…..
Ваша идея - зеленая свеча пересекает среднюю — покупаем, красная пересекает среднюю — продаем… возможно энто и есть сермяжная правда трейдинга…
«Хотелось бы так сказать в общих чертах понять что ему нужно» ©
Почти ничего не понял).
1. Речь о том, что проверяется гипотеза о том, что чем больше степеней свободы, тем больше вероятность подгонки? — Или про другое?)
2. Это исследование ради исследования, как я понял, чисто теория, причем теория, не нарушающая представления автора о мире, т.е. ну так чисто поразвлечься.
Но плюсы поставил. Оценка адекватности системы реальности вопрос интересный.
Вообще, имхо, если оптимальность системы оценивать не по Макс прибыли, или лучше вообще не по прибыли, то вопросы подгонки уже остро не стоят.
Та простота, которая достигается только огромным усилием ума.
А эмпирики говорят о 2, максимум 3 индикаторах. Почему так выходит. Как можно наращивать сложность системы оптимизации, а как — нельзя. На самом деле ответов на эти вопросы ни у кого нет. Так, соображения…
Их нужно долго уговаривать «включить воображение», чтобы осознать очевидное: огромную разницу между традиционными data sets и биржевыми данными.
Мне кажется, случайный лес дает очень дельный способ защититься от переподгонки — строить много существенно разных моделей.
В том числе и поэтому все простые штучки по учебнику ML буксуют на рыночных данных.
1. Из одного индикатора 70 шт
2. Из двух индикаторов 70х70
3. Из трех 70х70х70
Пришел к выводам:
1. Из трех индикаторов системы были не лучше, чем из двух
2. Из одного также проигрывали системам из двух (видимо оттого, что были слишком примитивны, а второй индикатор давал некую подстраховку)
3. Многие классические индикаторы это абсолютное г..., и с ними ничего не работает
Выбрал такой подход:
1. Прогоняю системы из одного индикатора, чтобы отсеять г...
2. Оставляю из нескольких рабочих переборы из 2х индикаторов 70х70
3. Дальше в интересных комбинациях перебираю индикаторы и оцениваю пятно параметров
Ну и еще конечно это отбор инструментов, периодов тестов и пр…
Как не переоптимизировать движение пьяного который каждый два квартала поворачивает либо налево либо направо. Все равно кругами ходить будет.
Получается довольно пессимистично?
Оценка сверху показывает, что большие доходности будут почти наверное жуткой переподгонкой.
Оценка снизу, где подгонка разумна, говорят, что на интересные доходности рассчитывать не приходится.
За что зацепиться оптимисту?
Полагать, что есть некие рыночные индикаторы и нерыночные.
Из нерыночных (тупое преобразование временного ряда) ничего не соорудить.
Получается, чтобы дойти до рыночных (которые не любое преобразование данных), нужен опыт торговли и съесть тот самый пуд говна. Что по итогу вряд ли стоит делать тому, кто еще в это не вляпался.
Для обычного торговца сейчас, имхо, почти нет простого доступного арбитража, который лучше торговли линейных инструментов. Но возможен арбитраж так сказать портфельный. Когда разные активы и системы «тянут в разные стороны». Условно, портфель акций, управляемый моментумом и шортовая система на фьючерсе на индекс.
SergeyJu, я правильно понимаю, Вы построили индикатор степени случайности индикаторов и теперь с помощью него можно отделять зерна от плевел?
Торгую на раз-два — сделка.Типа считаю углы до 2х или до 5ти ( 2я или 5я свеча фрактала Вильямса. У меня есть сборник гениальных индюков на языке Метастока (вижел бейсик ). Средние на синусах -это чтото особенное. Могу подарить.
PI:=3.1415926;
SD:=180/6;
S1:=Sin(1*180/6)*C;
S2:=Sin(2*180/6)*Ref(C,-1);
S3:=Sin(3*180/6)*Ref(C,-2);
S4:=Sin(4*180/6)*Ref(C,-3);
S5:=Sin(5*180/6)*Ref(C,-4);
Num:=S1+S2+S3+S4+S5;
Den:=Sin(SD)+Sin(2*SD)+Sin(3*SD)+Sin(4*SD)+Sin(5*SD);
Num/Den
hamster-invest.ru/