Фурье и Вейвлет преобразования.

26 января 2019, 14:20
Yuriy Asaulenko
0
208

О преобразовании Фурье не знает только ленивый. Его, с переменным успехом, пытаются применить все поголовно, тем более, что оно общедоступно, и реализовать это проще, чем написать "Hello World!".

В Python это делается так:

import numpy as np
import scipy.fftpack as ft

#Исходные данные
x=[6,2,3,4,5,6,7,7,5]
#Преобразование Фурье
yft=ft.fft(x)
#Обратное преобразование Фурье
xo=ft.ifft(yft)
# получили исходные данные xo==x

#или так

#Преобразование Фурье
yr=ft.rfft(x)
#Обратное преобразование Фурье
xo=ft.irfft(yr)
# получили исходные данные xo==x

Есть и еще с десяток аналогичных функций.

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

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

Итак, мы сформулировали некоторые критерии реакции групп трейдеров на события. Вам это ничего не напоминает? Да, это сильно напоминает вейвлеты, а представление ВР вейвлетами - это вейвлет преобразование. А на рисунке один из широко применяемых вейвлетов по имени - Мексиканская шляпа. О вейвлетах можно почитать здесь.

Вейвлет-преобразование близкий родственник преобразования Фурье, начало бурно развиваться в 90-х, начале 2000-х годов, и теперь широко применяется для обработки сигналов и изображений. Так представление изображения в виде набора вейвлетов позволяет сжать его 5 раз без заметного ухудшения качества, и это теперь доступно и на уровне рядового программиста - "Вейвлет-сжатие «на пальцах»: практика". Все, что для этого нужно - пакет Python SciPy signal и/или пакет PyWavelets

Кстати, в формате JPEG-2000 для сжатия использует вейвлет преобразование.

 И что это может дать нам? Думаю, что минимум можно попробовать заменить рыночный ВР набором вейвлетов, и отсеять из ВР не представляющую интерес информацию. Что касается максимума, то даже боюсь фантазировать, можно зайти слишком далеко.)) Во всяком случае, в ближайшее время я надеюсь посвятить некоторое время экспериментам с вейвлетами и их применению к рыночными ВР.

Чтобы составить представление о  вейвлетах и их возможностях можно почитать книжку, или, хотя-бы ее первые несколько страниц - В. П. Дьяконов  Вейвлеты. От теории к практике.



Поделитесь с друзьями: