Прогнозирование фьючерсных цен на основе годовой сезонной колеблемости (концепт, требуется научная правка).
если вас еще интересует результат, то имеется инструмент для получения обьктивных линейнo независимых составляющих временного ряда (Specto):
https://www.mql5.com/ru/forum/120198/page6#211845
сумма составляющих дает ряд.
Если честно, я не много не понимаю, что делает этот инструмент и как его можно приспособить для этой задачи? В моей модели сезонности есть фактически только две составляющие: общая тенденция и сезонная компонента. При этом общая тенденция в моей модели рассматривается как случайное явление. Размер сезонной компоненты велик. Все - что не общая тенденция есть сезонная компонента. Так как из года в год поведение цены в одни и те же промежутки времени может меняться, сезонная компонента будет сглаживаться или стремится к нулю. Например ценовой взлет в январе 2000 года будет нивелироваться ценовым падением в январе 2001 года. В результате сезонная компонента выровняет сама себя. Останутся только закономерности хотя и слабые. Как видно на графике золота от сезонности остается только 1,5 - 2,0% от движения цены.
Инструмент сам выделяет обьективные линейно декоррелированные составляющие. Если у вас все есть, то и хорошо. Я не навязываю и не продаю ничего. :)
Фирма Apple, если я правильно понял, это какая то сельскохозяйственная или фруктовая фирма. В производственном цикле этой компании есть сезонные компоненты, весенняя посевная и осенняя жатва, правильно ли я понял?
Или такие сезоны: Стив Джобс есть. Стива Джобса нету.
На графике, одном из них, я насчитал штук 13-14 "шишок", то есть примерно одна "шишка" в год. Пики этих "шишок" приходятся на первый квартал года, примерно. Так что, моя теория состоит в том, что эта "сезонность" скорее всего связана с окончанием финансового года, выплатой дивидендов и т.д.
Но, это так, в самом первом приближении.
Фирма Apple, если я правильно понял, это какая то сельскохозяйственная или фруктовая фирма. В производственном цикле этой компании есть сезонные компоненты, весенняя посевная и осенняя жатва, правильно ли я понял?
На графике, одном из них, я насчитал штук 13-14 "шишок", то есть примерно одна "шишка" в год. Пики этих "шишок" приходятся на первый квартал года, примерно. Так что, моя теория состоит в том, что эта "сезонность" скорее всего связана с окончанием финансового года, выплатой дивидендов и т.д.
Но, это так, в самом первом приближении.
В реальности шишок и впадин больше чем 13 или 14. В среднем за десять лет получается по 110-120 сделок. Все это на основе недельных данных. Если Подсчитать сезонную компоненту на основе дневных данных, сделок будет гораздо больше. К тому же сезонность можно рассчитать для квартала или даже месяца а не года, сделок в этом случае будет еще больше. Такой Гуру как Ларри Вильямс расчитывает сезонность даже для одной недели. Его концепция TDW - это и есть сезонный фактор рассчитанные для недели.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Для анализа фьючерсных рынков мне долгое время был необходим инструмент предсказывающий долгосрочное поведение активов на основе их сезонной колеблемости. Впервые я нашел эту идею в трудах Ларри Вильямса, и тогда она показалась мне очень заманчивой. На просторах интернета крайне мало качественной информации на эту тему. Поставщиков таких данных можно пересчитать на пальцах одной руки, к тому же методика расчета у всех разная и сезонные графики различаются весьма сильно. Наиболее качественным таким поставщиком является Moore Research Inc., но методика расчета не известна, м они хотят денег за свои картинки сезонной колеблемости. К тому же роботы не понимают картинок, поэтому потребовалось написать более совершенный инструмент. Я долго думал как создать такие графики автоматически и вот алгоритм который я разработал (он может содержать ошибки, поэтому если не сложно проверьте его).
1. Во-первых, необходимо нормализовать ценовые колебания относительно какого-то значения. Поясню на примере. Возьмем акции Apple, в начале 2000 года они торговались в районе 6$ сейчас в районе 200$. Сравнение колеблемости 2000 года с 2010 будет не корректно. Поэтому лучше рассчитывать колеблемость не на основе ценового приращения, а на основе процентного приращения. Например если за неделю акции Apple упали с 6 до 4$ в 2000 году, то это означает падение на 33%, то же самое произойдет в 2010 году если Apple упадет с 200 до 134$. Далее я рассчитал процентное приращение закрытие недели по отношению к закрытию предыдущей недели и записал все эти результаты в массив. На графике массив этих приращений получился следующим:
Как видно, разброс значений процентной разницы от текущей недели по отношению к предыдущей достаточно равномерен. И не смотря на возрастающую стоимость акций, процентное изменение не возрастает.
2. Как видно, этот график обладает экстремальными выбросами как в положительную так и в отрицательную сторону. Эти выбросы могут исказить общий результат поэтому их необходимо отфильтровать. Для этого я рассчитал величину одного стандартного квадратичного отклонение для генеральной совокупности, затем умножил его на два. Полученная величина стала означать потолок возможных значений. Затем я срезал все величины превышающие эту величину по модулю до размера этой самой величины (все что выше красной линии). Таким образом я отфильтровал экстремальные значения по двум сигмам. Почему по двум, а не по трем? Дело в том, что даже для нормального распределения вероятность пересечения третей сигмы крайне мала и составляет около 0.2%. Поэтому фильтрация по двум сигмам думаю является оптимальной:
Затем отфильтрованные изменения цены я прибавил друг к другу и получил вот такой аккумулятивный график, весьма сильно напоминающий реальный график Apple:
Как видно, разница между фильтрованными (красный цвет) и не фильтрованными приращениями минимальна (синий цвет).
3. После этого необходимо было рассчитать сезонную компоненту на этом графике. Я почитал несколько учебников статистики, и понял что все в этом случае сводится к трем вещам. Расчет тенденции, невелирование случайных приращений например на основе средних, расчет собственно сезонной компоненты. Так как мы оперируем недельными барами а случайные колебания и выбросы находятся внутри них можно сказать что мы загладили влияние случайной компоненты. Однако можно делать расчеты не на основе Закрытие – Предыдущее закрытие, а на основе Средняя цена за неделю – Средняя цена за предыдущую неделю (визуально график практически не меняется).
Итак, я снова вернулся к массиву процентных изменений цены, разбил его на годы, а затем собрал на аккумулятивной основе каждый такой год. Например для 1990 года получилась такая вот картинка:
Я долго думал, какую функцию общей тенденции использовать и на какие временные промежутки ее рассчитывать. В конце концов, я понял, что так как мы ищем сезонные закономерности протяженностью ровно один год, то и функцию тенденции необходимо рассчитывать только для одного года. При этом я использую линейную функцию тренда, рассчитанную с помощью системы уравнений наименьших квадратов:
Обратите внимание, что функция линейного тренда расчитанная в моей программе (красная линия) идентична функции линейного тренда рассчитанной в Exel (черная пунктирная линия). Смысл в том, что все что превышает или не достигает общей функции – есть сезонная колеблемость. Теперь выравниваем эту колеблемость по линии тренда, получаем такую вот картинку:
Вуаля, мы получили сезонную колеблемость расчитанную для одного года. Теперь рассчитаем сезонную колеблемость для каждого года в отдельности, затем найдем средние величины всех этих колеблемостей, и построим их график. Этот график и будет паттерном который должен повторяться из года в год. Вот какой график я получил для золота:
Затем я написал советник, рассчитывающий сезонную колеблемость предыдущих лет, и затем продающий на падениях этой колеблемости и покупающий на росте. Важно отметить, что во первых, советник покупает и продают только на основе этого индекса, не пользуясь данными по текущим ценам, а во-вторых, он рассчитывает значения на уже известных данных прошлых лет. Например, если я запускаю его в 2000 году он рассчитает 15-летний индекс на основе данных 1985-1999 года включительно и будет торговать на этой основе до конца 2000 года. С наступлением 2001 года он пересчитает сезонный индекс с 1986 по 2000 год включительно и будет руководствоваться уже им.
В общем, результаты не однозначные. С одной стороны не некоторых инструментах работа советника не сильно отличается от стандартного советника Moving Average. Но на других, золоте или газе например, все прогоны положительные. К тому же система несовершенна, стопов нет, согласования с текущей ситуацией на рынке тоже нет. Торговля ведется на основе недельных данных и без использования текущей цены, поэтому качество тестирование здесь не так важно.
В целом получается довольно интересный материал, который можно было бы оформить в качестве интересной статьи. В этом случае требуется правка научного редактора. Зная, что этот форум посещают знатоки, публикую этот материал для такой научной правки.