Теория случайных потоков и FOREX - страница 17

 

Вот АКF, посмотрите плиз. Надо только быть уверенным, что все правильно считается. Проверте.

Файлы:
akf_01.mq4  7 kb
 
Prival:

Вот АКF, посмотрите плиз. Надо только быть уверенным, что все правильно считается. Проверте.


Сам по себе расчёт АКФ сделан по определению и это для начала правильно - код простой и прозрачный. Но интересно было бы сравнить скорость если считать через FFT. Кстати и этот код поддаётся заметному ускорению.
 
lna01:
Prival:

Вот АКF, посмотрите плиз. Надо только быть уверенным, что все правильно считается. Проверте.


Сам по себе расчёт АКФ сделан по определению и это для начала правильно - код простой и прозрачный. Но интересно было бы сравнить скорость если считать через FFT. Кстати и этот код поддаётся заметному ускорению.


Через FFT будет не точно, на 8-ой странице график ('Теория случайных потоков и FOREX'), красная линия АКФ по формуле, синая через FFT. синая кривая симметрична относительно центра. Хотя я может что то и не так зделал (сам файл прикреплён на той же странице чуть выше). lna01 Подскажи в формулах, как используя FFT правильно построить АКФ, я по памяти делал, может где и ошибся.

прямое ДПФ-> модуль+ ^2 -> обратное ДПФ -> выделение действительной части Re() -> нормировка

 
Prival:

Вот АКF, посмотрите плиз. Надо только быть уверенным, что все правильно считается. Проверте.

С маткадом не сравнивали? Специально же сделал WriteToFile для проверки ;)
 
lna01:
Но интересно было бы сравнить скорость если считать через FFT.
В первом варианте был и метод через ПФ - действительно на несколько порядков быстрее. Отказались от него из-за сомнительной точности.

lna01:
Кстати и этот код поддаётся заметному ускорению.
Согласен, код можно оптимизировать. Но вопрос пока не упирается в скорость, поэтому и заниматься этим не хочется.
 
2 Prival , komposter :

АКФ через fft была симметрична скорее всего из-за недописывания нулей. А точность почему-то и правда сомнительна



Но что-то мне кажется, что форсированный под реалтайм "лобовой" расчёт должен быть побыстрее fft-варианта. Однако общий предполагаемый объём расчётов продолжает сильно смущать. В частности уже на данном этапе вызывает вопрос произвол в выборе длины линейной регрессии. Аналогичная проблема для каналов линейной регрессии по большому счёту так и осталась проблемой. Собственно ранее в этой теме я об этом уже писал.
 

Да, вопросов больше, чем ответов. Но стало уже интересно.

1. К-т корреляции вроде как не должен быть по модулю больше 1, а тут так получается.

2. Почему именно a*x+b, Prival? Ты именно так хочешь детрендировать график? Есть и другие способы, более точные. Например, та же линейная регрессия (аналог машки, тока запаздывание там поменьше). Вычитая из цены текущее значение ЛР, мы прекрасно избавляемся от трендов, в том числе и от нелинейных.

Можно просто брать первую разность цен (т.е. сформировать ряд returns), но так убираются только линейные составляющие трендов. Берем вторую разность - уберутся и квадратичные, и т.п.

Если хотим совсем без запаздывания (но с перерисовкой на истории), то можно сделать что-то типа Fourier MA, т.е. машку, основанную на преобразовании Фурье и отбрасывании высоких частот. Это у klot'a тоже есть.

 
Mathemat:

1. К-т корреляции вроде как не должен быть по модулю больше 1, а тут так получается.

Если речь о картинке с fft, то там почему-то выпадает из ряда первый элемент, а именно по нему идёт нормировка. Я не стал разбираться отчего это по сооображениям, приведенным в посте.
 
С FFT надо аккуратней: tnn (или nl в теле) должно быть степенью двойки, т.е. 2^n, где n - целое.
 
rsi:
С FFT надо аккуратней: tnn (или nl в теле) должно быть степенью двойки, т.е. 2^n, где n - целое.
В этом смысле всё в порядке, а вот нечётные элементы спектральной плотности я потерял :). Так что с fft проблемы нет, сейчас заменю исходник в том посте.


P.S. Неправильный исходник просто удалил, а правильный цепляю сюда.

P.P.S. На всякий случай подробнее о работе с данными: Размер исходного массива нужно увеличить 2 раза, после этого снова увеличить его до ближайшей степени двойки. Во все добавленные ячейки нужно записать нули. Массив спектральной плотности для обратного ффт должен также иметь расширенный размер, квадраты амплитуд записываются в ячейки для реальных компонент, в ячейки для мнимых записываются (естественно) нули. В качестве результата берём элементты от начала до исходного размера массива.
2 Prival: Как это точно воспроизвести в маткаде я не знаю, метод проб и ошибок должен в конце концов помочь. АКФ должны с разумной точностью совпадать.
Файлы:
akf_01_fft.mq4  13 kb
Причина обращения: