О спектральном анализе ценовых рядов

posted by admin @ 21:09 ПП
26 Ноябрь 2009

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

Поясню вкратце, что это такое (для более детального изучения смотри какую-нибудь книгу по матанализу, где есть разложение в ряды и интегралы Фурье, например Жук В.В., Натансон Г.И., Тригонометрические ряды Фурье и элементы теории аппроксимации). Пусть есть некоторая функция времени: f(t). Наша задача представить ее в виде суммы слагаемых вида an*cos(n*w*t+phin). Если мы сумеем это сделать, то выделим в нашей функции различные циклы. Покажу эту процедуру на примере. Пусть f(t) задана так:
а) на интервале времени от -2 секунд до 2 секунд она равна -1 при -2<t<0, и +1 при 0<t<2,
б) при других временах она задается периодическим транслированием отрезка [-2,2]  (черная кривая на  рис. 1).

148.JPG

Стандартными методами можно показать (см., например, Демидович, Задачи по матанализу), что такая функция равна сумме бесконечного числа синусоид (гармоник) вида:4/(pi*(2*n+1))*sin(pi/2*(2*n+1)*t),

где суммирование ведется по n от нуля до бесконечности. На рис.1 приведены: сама функция (черный цвет), первый член ряда (зеленый цвет), сумма первых двух членов (синий), сумма первых трех членов (фиолетовый), сумма первых 10 членов ряда (красный). Видно, что ряд гармоник неплохо аппроксимирует функцию, причем чем больше членов ряда мы возьмем, тем больше сумма ряда похожа на исходную функцию. Поскольку ряд есть сумма синусоид, то мы, тем самым, выделили циклы в нашей функции. Из формул и рисунка видно, что в нашей функции есть циклы с частотой 1/4 раз в секунду, 3/4 раз в секунду, 5/4 раз в секунду, и.т.д. Графическое изображение зависимости амплитуды гармоники от частоты называется спектром функции. У нас в спектре есть только частоты (2n+1)/4 c амплитудами 4/(pi*(2*n+1)) (см. рис. 2), то есть спектр линейчатый. Вот вкратце теория Фурье-анализа.

149.JPG

Как это может быть полезно для трейдера? Поскольку f(t) любая, а процедура нахождения членов ряда формализована, то можно применить Фурье-анализ к ценовым рядам. На рис. 3 представлен спектр ценового ряда, составленного из цен закрытия Сургутнефтегаза на периоде 30.05.1997-н.вр. Видно, что спектр спадает приблизительно как 1/частота, что неплохо, кроме того, есть некоторая мелкомасштабная структура. Максимумы на спектре (например, на частоте 0.0015 раз/торговый день) могут соответствовать неким циклам.

150.JPG

Что мне не нравится:

1) Аналогичные спектры дают выборки из полностью случайных сигналов (что такое полностью случайный сигнал, смотри здесь),

2) Мне не удалось найти стационарные циклы, т. е. циклы, частоты которых не менялись бы при изменении рассматриваемого периода.

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

6 Responses to “О спектральном анализе ценовых рядов”

  1. Владимир Says:

    Анатолий, каким математическим аппаратом (библиотека, софт) ты пользуешься для разложения Фурье?

  2. admin Says:

    Для Фурье-анализа цен подойдет любая программа, осуществляющая дискретное преобразование Фурье (Discrete Fourier Transform, DFT). Как правило, оно выполнено в виде быстрого преобразования Фурье (Fast Fourier Transform, FFT). Я пользуюсь программой Origin. Думаю, плагины есть и для эксель, на крайняк можно самому написать на чем угодно, хоть на Wealth-Lab, ничего особо сложного там нет.

  3. Владимир Says:

    Анатолий, какое будет твое мнение о вот таком математическом аппарате:
    Детрендим временную серию.
    Проверяем что начало и конец серии совпадают в некотором приближении (грубый критерий на периодический процесс)
    Применяем преобразование Фурье.

    Можно ли будет глядя на полученное распределение амплитуд (или на фазы), дать ответ на вопрос имеем ли мы дело с периодическим процессом в некотором приближении? Как должно будет выглядеть такое распределение? Какой математический критерий можно было бы использовать?

  4. admin Says:

    Понимаете, периодических процессов в природе не существует. Периодический процесс бесконечен во времени, а бесконечных времен не бывает. Поэтому периодический процесс–это модель, верная лишь при определенных предположениях. Обычно, для того, чтобы говорить о приближенной периодичности, необходимо, чтобы период был много меньше времени наблюдения. Допустим, вы берете временное окно в 1000 дней, а изучаете циклы с периодом 10 дней. Это первое.

    Второе: о математическом критерии. Если на большом временном окне (что такое большое–см. выше) вы нашли стабильный максимум в спектре–вы нашли цикличность в процессе. Стабильный–значит он слабо зависит от конкретного временного окна, т. е. для окна 2000–2003 максимум будет там-же и той же амплитуды, что и для окна 2003–2006 или 2002–2005. Повторюсь, я такого не видел. Распределение цен нестационарно.

    Третье: для того, чтобы осознанно пользоваться Фурье-анализом, необходимо набить руку, понимать, что это такое. Иначе может быть мучительно больно. Я бы рекомендовал следующую последовательность действий:
    1) Найти софт для FFT и освоить его
    2) Поизучать спектры простых и неслучайных функций типа синуса, линейной, параболы, Гаусса, Лоренца, и.т.д.
    3) Поизучать спектры модельных случайных процессов (типа описанных в моей статье “О калибровке стратегий на полностью случайных процессах”)
    4) Поизучать спектры биржевых цен
    Если после этого вы сумеете найти цикличность в биржевых ценах, то ее можно торговать.

    Четвертое: детрендить цены не стоит. Во-первых, вы не знаете, связан ли тренд с неслучайной компонентой, поскольку в полностью случайных процессах тоже трендов хватает. Во-вторых, Фурье анализ чувствует циклы и на трендовых функциях, например, в спектре трендовой функции sin(10*t)+t будет максимум на частоте 10. Грубо говоря, если волнообразность видно глазом, то в спектре будет максимум.

  5. Владимир Says:

    Буду переваривать. Спасибо большое!

  6. narsimha Says:

    Hi! Someone in my Facebook group shared this website with us so I came
    to take a look. I’m definitely loving the information. I’m bookmarking
    and will be tweeting this to my followers! Great blog and
    terrific design and style.

Leave a Reply


ИСПОЛЬЗОВАНИЕ CAPTCHA: CAPTCHA ИНОГДА ГЛЮЧИТ. ПОЭТОМУ ПОСЛЕ НАБОРА КОММЕНТА (ОСОБЕННО ДЛИННОГО) КРАЙНЕ РЕКОМЕНДУЮ СКОПИРОВАТЬ ЕГО В ТЕКСТОВЫЙ РЕДАКТОР, А УЖЕ ПОТОМ ВВОДИТЬ КОД ДЛЯ CAPTCHA.

*

Anti-Spam Image

счетчик посещений