.
Волновой анализ. Шаг 1. Попытка разложить график котировок в ряд Фурье.
Автор megabax   
19.11.2011 г.
New Page 1
См. так же анонсы уроков "создаем биржевого робота на C#, в том числе новый урок Пишем биржевого робота на C#. Урок 6. Анализ опционной стратегии. Часть 1.

Волновой анализ. Шаг 1. Попытка разложить график котировок в ряд Фурье.

На шаге 23 экспериментального проекта "Генетический алгоритм" я решил создать отдельную ветку этого проекта: "Волновой анализ".  На эту мысль меня натолкнул ezom, посоветовав посмотреть в сторону волн Эллиота, а так же оставив комментарий в блоге. Идея такова: "В природе все циклично. День сменяет ночь, периодически меняются времена года. Сердце человека тоже бьется циклично. Звук - это колебания, цикличные колебания воздуха или другой среды. Свет, электромагнитные волны, другие излучения - это тоже примеры циклов. Циклы есть и в экономике. Подъем сменяется спадом и кризисом, потом снова идет подъем и там много раз. И циклов этих в экономике тоже очень много - длинные, короткие, средние. Логично предположить, что и в колебаниях котировок тоже присутствуют множество циклов: в кризис котировки падают, во время бума растут".

А что если попробовать расчленить график котировок на эти элементарные циклы? Благо, для этого есть созданный задолго до нас математический аппарат - ряды Фурье (см. на моем сайте уроки "Цифровая обработка сигналов".). И так, я написал программу, которая вычисляет коэффициенты Фурье и по этим коэффициентам рассчитал котировки. Исходный и рассчитанный график наложил друг на друга:

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

Ладно, и что это дает? Давайте попробуем продолжить график в "будущее время", то есть, возьмем вторую половину исторических данных:

Как видим, дальше совпадения графика прекратились. Это объяснимо, во первых, тем, что в ряд Фурье можно разложить только периодическую функцию, а график котировок - функция не периодическая. Во вторых, разложив график в ряд Фурье, мы как ни крути, учли не всех экономические циклы. Так что нечего было и ожидать, что в долгосрочной перспективе такое вычисление способно предсказать котировки.

А в краткосрочной? На ближайшие две три, или чуть больше свечей? Я решил это проверить и написал простейший торговый симулятор, который работает по следующему алгоритму:

  • Рассчитывает ряд Фурье на историческом периоде, который кончается за несколько свечей до текущей (что бы исключить всплеск неточности, который вы видите на графике в виде синего пика).

  • Используя относительные величины (на сколько от свече к свече меняются расчетные котировки) рассчитываем прогнозные цены. Например, если текущая свеча имеет close=100 рублей, а по прогнозам цена должна упасть на 5%, то следующее close будет 95 рублей.

  • Используя прогноз, моделируем сделку: покупку или продажу акций.

В результате моделирования результат оказался отрицательный. Как показала практика, реальные котировки даже близко не валяются с предсказанными.

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

Последнее обновление ( 19.11.2011 г. )