Бывает очень полезно искать локальные экстремумы. С точки зрения математического моделирования на ценовых рядах, это не такая тривиальная задача. Я пробовал разные методы, и на удивление, весьма неплохими оказались достаточно известные всем — фракталы Вильямса. Те самые которые ищут максимум или минимум цен среди N+1 значений по простому условию –центральное из них было выше, или ниже тех, которое идут до неё, и после. Особенно хорошо фракталам удается находить такие экстремумы на больших временных интервалах и с большим количеством N (График 1, Фаркталы Вильямса N=30 Days)
Однако, самый большой недостаток фракталов Вильямса, это скорость их появления. То есть существенное запаздывание появление, что делает их абсолютно непригодным с точки зрения проведения хоть каких-нибудь значимых динамических исследований. Они прекрасно отображают историю, но и только. Думаю, я не ошибусь, если скажу, что и в ТА его редко используют. Помнится в 2017 году мы с другом написали робота, который должен был торговать от уровней, которые показывал последний известный фрактал (График 2. Пример построения фрактального уровня).
Пользовались мы разными логиками, но в конечном итоге, все варианты были убыточными, или как говорят правильно — имели отрицательное мат ожидание. Первое, что приходило на ум – это сместить появление фрактала, а соответственно и фрактального уровня на момент его появления (График 3. Пример построения фрактального уровня на момент его появления) и прогнать логики еще раз. К тому же появились и другие логики, но опять же мат ожидание было отрицательным. Второе предположение — это считать, что последний известный максимум (минимум) уже после известного последнего фрактала, считать как не сформировавшийся фрактал. И тоже все тесты были отрицательными. На этом эксперименты с фракталами тогда закончились.
Долгое время у меня эти фракталы не шли из головы именно из-за того, что локальные экстремумы на истории они действительно очень неплохо определяли. А зная, экстремумы, можно легко считать различные текущие отклонения от них цен, что дает хорошее поле для дальнейших исследований, и даже совсем не обязательно для построения торгового алгоритма.
И вот неделе две назад я решил немного дописать и модифицировать наш старый фрактальный индикатор, оставив в нем логику — если мы знаем последний наблюдаемый фрактал, но цена ушла выше него (или ниже, если речь идет о нижнем фрактале), то считать их как новые несформировавшиеся фракталы и новыми фрактальными уровнями. Соответственно, если цена выросла, а потом откатилась назад, то индикатор должен был фиксировать последний известный максимум, даже если формально он еще не стал фаркталом. Таким образом, такой индикатор был лишен недостатка классических фракталов Вильямса, а именно момента их появления. На Графиках 4 и 5 показан результат построения модернизированного фрактального уровня, они изображены сплошной линией. Прерывистой нанесены фрактальные уровни с учетом времени их появления (определения). Я не тестировал получившийся индикатор на нашем старом роботе, хотя эту работу можно было бы провести ради интереса, но что-то мне подсказывает, что даже в таком виде результатом было бы все-равно отрицательное математическое ожидание.
Получив новый модернизированный фрактальный индикатор я сразу пошел дальше. Мне стало интересно провести анализ отклонений цены от этого индикатора и поиск редких событий, которые могли бы предсказать точки потенциальных входов или выходов из позиций в ценных бумагах. Теперь сделать это было просто – достаточно было рассчитать сами отклонения, понятное дело в процентах, на выбранном интервале, а редкость можно было бы определить перцентилями, которое можно задавать самому. На графике 6, зелеными стрелочками отмечены потенциальные моменты покупок, красными – продаж. На нижней части графика отображены сами отклонения и перцентили.
Конечно, уже тогда стало понятно, что индикатор будет показывать немало ложных сигналов, потому что любой выброс типа 2020 года или 2008 года, слишком сильно скажется на величине перцентиля и будет совсем непоказательным. Поэтому, по сути, было два пути:
Сначала я решил отнормировать отклонения, и ничего не придумал лучше, чем сделать это по волатильности. Ситуация явно улучшилась. При этом я могу считать волатильность по любому выбранному диапазону, а также еще и разными методиками – обычным образом или методом JPMorgan, о которой писал в одной из своих более ранних статей. На графиках 7 и 8 показаны результаты с нормировкой на волатильность посчитанную двумя способами в окне в 365 дней.
На первый взгляд кажется, что индикатор давал много ложных сигналов, но тут важна интерпретация и управление риском позиции. Во-первых, использованы только один тип сигналов, редкость больших отклонений, хотя на самом деле есть еще как минимум один – это когда отклонение равны нулю, а во-вторых, все точки входов близки к экстремумам, то есть в теории, даже если позиция была занята неправильно, то потери на STOP LOSS будут минимальными. Дальше в этом направлении нужно проводить дополнительные исследования (пока писал родилось еще две мысли — как вариант нормировки можно попробовать разницу между самими фрактальными уровнями, или же эта разница может послужить еще одним индикатором/фильтром).
Другой вариант — посчитать сами перцентили в скользящем окне. Идея казалось по началу здравой, но оказалось совсем неэффективной. Смотри График 9.
Раздумывая над данным индикатором, я не предполагал, что его можно будет использовать как-то для краткосрочной торговли, хотя допускаю, там можно что-то поколдовать. Моя идея была прозаичней – удобство в исследованиях и попытки найти моменты, где стоит агрессивно покупать акции, или же хеджировать портфель. Поэтому я искал редкие события. Конечно, на текущий момент надо подбирать параметры и смотреть варианты. Но в целом мне нравится то, что у меня получилось.
А в качестве исследования это удобно, например, как показано на графиках 10 и 11 по SP500. Видно, что после кризиса 2008 года рынок только в 5% случаев падал чуть ниже 11%, а в 20% не опускался ниже 6%. Поистине — 12 лет для рынка США были такими в истории, которые не встречались за все его время существования. Но также мы видим, что отрыв от локальных низов достиг таких значений, которые никогда не были раньше. Дает ли нам это надежное представлении о скором конце безумств, конечно нет. Но выглядит красиво!
P.S. Настоящей пост в большой степени является фиксацией моих мыслей и идей, а также полученных результатов. Я ни в коей мере не преследую цель научить кого-то чему-то, так что если вы, читая его хотели найти Грааль, то это была большая ошибка с вашей стороны.