Мы знаем, что любую простую меру качества торговой системы можно за счет подгонки загнать высоко вверх. Беда в том, что это утверждение верно в отношении прошлого и не опрокидывается в будущее. Переподогнанные системы разваливаются при реальной торговле. С другой стороны, алготорговцы верят, что в ценах есть скрытые закономерности, которые позволяют строить устойчивые торговые системы.
Практики обычно стараются упростить свои системы, чтобы минимизировать именно ПЕРЕподгонку. В математическом смысле сокращают число степеней свободы, число параметров, по которым ведется оптимизация. Не всегда эти параметры такие очевидные, как, например, число баров в алгоритме канала Дончиана.
Или, для примера, при подгонке RSI мы видим уже 3 параметра — переменная сглаживания, порог перекупленности, порог перепроданности. Те, кто используют стандартные настройки, начинают играть в интерпретации, что тоже может иметь смысл подгонки, но я сейчас не об этом.
Хочется иметь какую-то меру, которая скажет нам, вот за введение дополнительного параметра подгонки мы получим вот такой выигрыш фиктивный (ПЕРЕ...), а все что свыше нам скажет, что мы цепанули реальную закономерность.
Для затравки, опишу, очень грубо, модельный пример.
Я взял дневки на американские отраслевые ЕТФ акций серии XL (XLI, XLK, XLU и так далее) в количестве 9 штук плюс SPY, MDY, DIA — ЕТФ акций, соответствующие общим индексам. Итого 12 штук, период времени с конца 1998 года. Примерно по 6500 точек на каждой или чуть больше 25 лет истории. Три одинаковых индикатора, в каждом по 1 подбираемому параметру =порогу.
В качестве меры качества системы — сортино.
Если подобрать три параметра для каждого ЕТФ независимо, мы получим, что ТС даст примерно троекратный выигрыш по Сортино против исходного ряда. Равномерно взвешенный портфель (тут уж нет подгонки) из 12 систем даст выигрыш к среднему Сортино еще в 2 раза.
Если же я буду подбирать все 3 порога одинаковыми для всех ЕТФ, то я потеряю примерно в 1,5 раза по Сортино для каждой системы и суммарный портфель даст выигрыш по сортино против среднего не в 2 раза, как первом случае, а в 1,5 раза.
Внимание, вопрос.
Можно ли количественно оценить, насколько велика доля переподгонки, когда я использую раздельную настройку индикаторов и вообще, будет ли реальный выигрыш от торговли раздельно подогнанного портфеля от портфеля с 3 общими порогами.
Их совокупность и есть результативность алгоритма вход-выход.
А вот как проводить раздельное тестирование? — это уже правильный вопрос.
Посудите сами. Вот протестировал я только входы. И задался вопросом, то преимущество от входов, что я вижу, результат ПЕРЕподгонки, или я ухватил реальную закономерность в ценах?
Нет ответа.
Переподгонка сама по себе включает в себя переподгонку входов и переподгонку выходов.
Если ваше условие выхода невозможно проверить на случайных входах, то значит условие выхода уже переподогнанно.
Сергей Сергаев, О, а этот шар я поймал)), хотя предыдущие комменты тоже не сильно понимал).
Я тоже выходам тоже больше значения придаю (чем обычно это делается), но пока на уровне бэклога задач)). По сути вход у нас по принципу: ждем когда вероятность, риск-реворд будут приятными для нас — входим, в частности что это означает: если мы не уверены в конкретный момент времени — можем легко и свободно интерпретировать это как «не входим». С выходом так нельзя: мы уже сделали ставку, мы в игре, в конкретный момент времени можно сказать «пора выходить», можно сказать «не пора ещё», сказать «хз, чёт я не знаю» — уже не желательно.
Ну а сточки зрения использования вот этой диссоциации выходов и входов для оценки подгонки — об этом точно не задумывался, спасибо.
Все что мы делаем, так или иначе подгонка. Вопрос же, как измерить, насколько она ПЕРЕ
P.S. Я понимаю, что ценовые ряды не симметричны относительно покупки/продажи. Даже если учесть инфляцию. Однако же некое подобие симметрии в виде более — менее торгуемых реверсивных систем наблюдается. И в них выход лонга есть вход шорта и наоборот. Как тут быть с упором на выходы?
Но у меня парадигмально немного не так работает. В приведенном же контексте что имеем: исходно дурацкий флоу, которому мы не даём баловаться за счет снижения степеней свободы, дальше пытаемся оценить: а потенциал идеи, помноженный на уменьшение степеней свободы приемлемую переподгонку дают в итоге? У меня по-другому: сам флоу так работает, что переподгонка не является естественным результатом, но даже в таком флоу на выходе я делаю оценку, но скорее не на переподгонку, скорее это ближе к оценке положения на шкале случйность-закономерность.
Также не понимаю, как подбор параметров может уклониться от проклятия ложной тревоги на шуме.
SergeyJu, Сильно конкретнее к сожалению нельзя). С одной стороны — это «ноу-хау», с другой — то, о чем я говорю — это абстракция высокого уровня, мне сначала нужно полностью объяснить мою парадигму и подход и абстракции предыдущих уровней, чтоб описываемая метрика стала понятна — а это долго).
Дурацкий флоу — сама концепция генерации прогонов с разными параметрами и выбор значений из одного прогона, когда на соседние прогоны мы смотрим только на предмет больше/меньше — т.е. для ранжирования. Подгонка зашита в сам подход). Т.е. что мы делаем: мы зашили подгонку в саму суть подхода, а дальше пытаемся её контролировать затягиванием гаек по типу «убрать нахрен все параметры».
> подбор параметров может уклониться от проклятия ложной тревоги на шуме
Ну, если я в пределах описанного в посте подхода остаюсь, или где-то рядом (т.е. сильно саму парадигму не меняю), нужно смотреть на прогоны шире чем просто лучше-хуже, потому что лучше-хуже имеет несколько групп факторов — случайные и закономерные. Если просто смотреть лучше-хуже, случайные-то поволатильней будут — ты на них и зафитишься (фиттинг на белый шум :) ). Надо фититься на закономерные факторы. Можно просто задаться вопросом/вопросами: если тут есть закономерность в этом факторе и в этом, то как должны/могут выглядеть результаты разных прогонов при таких-то изменениях значения параметра, параметров. Это вектор, по направлению этого вектора можно придумать конкретные флоу, метрики и т.д.)
Ну а если я вернусь в свою парадигму, то максимум, что я могу сказать: а не надо вообще параметры подбирать).
Прямого решения тут нет, зачастую всё зависит от самих параметров подгонки, может и с одним быть переподгонка, а может и с 5-ю быть робастной системой. Как оценить тут вопрос.
Обычно классика RSI, стандартные периоды скользяшек… идут в конец, что-то необычное(нестандартное) в приоритете, если конечно есть результат. А далее уже эмпирически гоняя системы в хвост и в гриву вырисовывается мнение об их устойчивости или хрупкости.
Стандартный ход — взять систему с 98 года и прогнать её на данных до 98 года. Или взять ЕТФ на канадские акции и там пошуршать. То есть, расширить диапазон входных данных. В принципе умею, но это опять костыль.
Салтыков, вы напрасно тратите время.
Кстати, приведите пример чего-нибудь современного, даже интересно стало, чего я не знаю.
Так вот, при обучении нейронной сети на исторических данных с каждым следующим этапом обучения ошибка уменьшается, но существует общеизвестный порог обучения, за которым возникает так называемое «переобучение» нейронной сети. Это когда наша сеть все лучше интерполирует исторические данные, но в то же время все хуже — данные из той же выборки, но не участвующие в обучении...
Поэтому, мне кажется, чтобы получить действительно объективный взгляд на «ценность» инструмента — нужно проверять его при подгонке на нескольких независимых выборках, не участвующих в обучении…
Поэтому практики обычно разрабатывают системы минимизируя параметры. Некоторые вообще считают, что у них нет оптимизируемых параметров, хотя это иллюзия.
Может Вы неправильно их готовите?
Мне кажется, что можно получить ответ только на правильно задаваемый вопрос. Дело в том, что «оптимизируя» параметры всяческих ТС мы как-бы в лоб ставим задачу, аналогичную той, что для нейронной сети — найти зависимости (грааль) по исходным данным. По мне — это тупиковый путь — ответ Вашей ТС или нейронной сети будет аналогичным. Нельзя по предыдущим следам (историческим данным) спрогнозировать дальнейшие шаги. ТС или нейронка может быть только инструментом. Нужно рассматривать не следы системы, а ее состояние в данный момент. Ведь именно состояние определяет ее дальнейшую эволюцию...
Все — глубоко ИМХО…
А. Г., Если мы возьмём размеченные фото кошек и собак, поделим на 2 выборки рандомом, на одной выборке обучим нейросеть, заметим, когда ошибка на тесте закончит падать, начнёт подрастать — в этом месте остановим обучение.
Хотя не, в предыдущем сообщении я наврал, при любом раскладе ошибка не будет равна на трейне и на тесте.
Вернемся к примеру — да, будет некоторая небольшая разница между ошибкой трейна и теста.
Теперь гипотетическая ситуация: возвращаемся в прошлое на несколько миллионов лет назад (или сколько там), отматываем эволюцию назад и фоткаем кошек и собак того времени. Обучаемся на тех фотках, а в качестве тестовой выборки даём фотки современных. Будет разница в ошибках больше — да, почти наверняка.
«Закономерность» это абстракция, чисто понятие для человеков, модель обучается на тех данных, которые есть, с теми их особенностями, которые есть.
Если модели дать трендовый рынок для обучения и модель, условно, научится хорошо торговать на тренде и будет сливать на флете (который она никогда не видела в качестве обучающих данных), значит ли это, что модель переобучилась? — Нет (вернее может да, может нет — не известно).
А если серьезно — целью было через грубую аллегорию сравнить природу процессов. Нисколько не претендую при этом на точность их описания…
Пробуем.
1. Я не знаю, как оценить переподгонку между индивидуальной оптимизацией и оптимизацией портфеля. Т.к. как по мне, объединение активов в портфель (равномерный) улучшает результат только в случае однородных активов (акции и отраслевые индексы одной страны).
2. Зато я знаю, как оценить переподгонку на одном активе — и уже писал об этом ранее. Надо просто увеличить окно в N раз (проще всего N=2). Если подгонка даст результат больше, чем sqrt(N), к предыдущему, то это, скорее, некая закономерность. Если меньше — шум.
3. Но я в своем посте писал вообще не об этом. Попробую тезисно.
3.1. Под индикатором я понимаю не индикатор ТА, но любую функцию от предыдущих приращений цен, которая дает нам сигнал на покупку (значение положительно) или на продажу (значение отрицательно). Неважно, аналитическая это функция или кусок программы. Я называю это плоский реверсивный индикатор (или торговая система).
3.2. Любая система, которая может стоять в сквере (не покупать или не продавать) — это портфель из 2-х реверсивных систем, так что претензии в адрес реверсивных систем не принимаются — это хорошие кирпичики.
3.3. Простейшая процедура продолжения индикатора в будущее — это подгон параметров на интервале, а затем периодический (раз в день, раз в неделю) очередной подгон.
3.4. Масса успешно работающих индикаторов (например, наилучший МНК-прогноз будущего приращения цены) при такой процедуре периодической подгонки никак не улучшают свой результат.
3.5. Некоторые хитрые индикаторы при такой процедуре периодической подгонки улучшают свой результат на 30-40-50%
3.6. Пост был написан про то, что при «антиподгонке» (выбираем параметры, которые хуже всего работали на интервале обучения) некоторые индикаторы улучшают свои результаты в разы (на 100-200-300%). И это в самом деле удивительно
С уважением
(2) совсем не обязательно, что для построения индикатора для какого-то ценового ряда надо использовать данные именно с этого ценового ряда. Чисто навскидку. Может ли цена золота или нефти быть, при некоторой обработке индикатором для цен акций золотодобытчиков или нефтяных компаний? Имхо, стоит пробовать.
1. Посмотрите, плз, на 2-й из приведенных графиков. Там не только эквити красивая длиной 1900000 баров, там и E/DD практически не меняется при перемещении слева направо окна выборки. Так что результат кажется очень устойчивым.
2. Наличие хороших линейных прогнозов для будущего приращения цены (они есть) означает, что цена подчиняется чему-то вроде стохастического дифференциального уравнения (не Ито, конечно, т.к. приращения цен не образуют мартингал, скорее это интегральное СУ Стратоновича).
Вопрос: насколько очевидно, что эти уравнения будут одинаковы или похожи для нефти и нефтедобывающих компаний? Для золота и золотодобывающий компаний?
С уважением
P.S. Так то я пробовал. Но это не более, чем торговля в треугольнике активов, 2 из которых сильно коррелируют. Вместо золота и нефти могу предложить EURUSD и USDCHF. Смысл в этом есть, гигантская прибыль там не растет. Просто красивая версия портфельной задачи.
1 — ложно, противоположное истинно
2 — ложно, параметры конкретного актива — не стационарны
3.2 — ложно, не обязательно реверс-система
3.5 — истинно
3.6 — тему прочёл
причины, не выделены
А что насчет форвард-тестов 3+1 год, там должно быть видно, как сильно скачут коэффициенты для максимизации ф-ции прибыли из года в год.
Даже из логики. На интервале с 1998 года были следующие события падений рынка. Кризис доткомов. Ипотечный кризис, перешедший банковский 2008 год. Башни близнецы. Ковид. Эти потрясения во первых все разные, во вторых происходят реже, чем раз в 3 года.
На период очень высокой волы – возможно, лучше вообще отдельную систему иметь. Т.к. искомый паттерн поведения точно меняется.
Масштаб катастрофы зависит от количества задействованных в ней таймфреймов (для временных процессов). Аналогично и для пространственных структур. Миникатастрофы есть практически в любом графике.
Привел тут старый график — то, что попало под руку из книги Бака Пера — но, все это работает и сегодня... )))
Гудылин рассказывал, что он строит как-то секретные фракталы и рассчитывает, куда должна придти цена. У меня не получается.
Оставляет впечатление неординарной личности. Читать интересно, но в процессе ощущается привкус неадекватности, что, в общем, бывает свойственно одаренности. Но я не поверил — идея, что фракталы на разных таймфреймах должны быть подобны, мягко говоря, не обоснована...
Возвращаясь к нашим баранам — торговать состояние системы — работаю с этим уже несколько лет. Задача не из простых — общеизвестными являются только общие принципы существования таких систем. Т.е. приходится «изобретать» какие-то способы расчета характеристик системы, а, затем, использовать их же для изучения конкретики поведения таких систем. Результаты есть, но пока скромные...
А вот про матаппарат я ничего плохого не говорил.
Есть, конечно, вариант маловероятный. Те, кто получили сильный результат, решили сами доить свою корову и на приз не зарятся.
1. Сгенерировать случайное блуждание того же кол-ва баров(можно перетасовать приращения исходного ряда)
2. Оптимизировать на нём ТС
3. Посчитать и сохранить все метрики(сортино)
4. Повторить процедуру N раз, мин. 100, лучше 1000 и более
5. По результатам будет распределение значений сортино, можно посчитать дов. интервал, СКО.
Чем сильнее отличается значение сортино на раельных данных от симуляции на случайных данных, тем сильнее данная ТС. Например, на сколько сигм далее от центра, если система с 2 параметрами 3.5 сигмы, а с 10 — 4 сигмы, то чуть лучше(но статистически не значимо).
Бутстрап в данном случае это повторение всей процедуры N раз, чтобы получить оценку распределения результатов оптимизации некой ТС на случайных данных.
smart-lab.ru/blog/630447.php
Там же ссылка на первую часть.
Будет как-раз количественная оценка подгонки — результат системы, с поправкой на случайный результат(на случайных данных, без зависимостей).
ssrn.com/abstract=2326253
search.r-project.org/CRAN/refmans/pbo/html/00Index.html
SergeyJu, для чего? нажимай «Download This Paper» и открывай PDF. Или в нём не всё? Там на 34 страницы фаил, никаких регистраций не требует.
Вот, закачал себе на гугл-драйв:
drive.google.com/file/d/1hrVLz8_irCZ9Nr053PJziZ9XTp-45sjB/view?usp=sharing
Стратегия такая:
1. нормализуете цены каждого инструмента в портфеле minmax.
В этом кейсе минимальное значение должно быть у вас 0,25, а максимальное 0,75. Это нужно для того, чтобы будущие цены гарантированно не вышли за диапазон 0 — 1, поскольку мы тут предсказанием занимаемся.
Таким образом, сводите OHLC всех инструментов к одному диапазону.
2. И уже на таком ценовом ряде считаете все свои показатели.
3. Количественно долю переподгонки можно посчитать в таком случае, разделив число успехов на общее число вариантов.
4. Разумеется, чем больше инструментов — тем выше достоверность.
5. Всё описанное выше не сработает, если у вас 3-4-10-15 инструментов. Нужно существенно больше.
6. Радость в том, что вы ценовой диапазон любых из них можете привести к 0,25 — 0,75.