Помогите разобраться с AR(авторегрессией)

 

Стала задача реализации AR на MQL

После прочтения заумной литературы литературы, набросал такой алгоритм:

1) строим автокорреляционную функцию (АКФ) -> получаем коэффициенты автокорреляции Rxx(n) где Rxx(0)=1(корреляция набора данных с самим собой = 1)

как известно коэф корреляции изменяется в диапазоне от -1 до 1 АКФ счила как сказано тут тут (последний пост).

2) строим систему уравнения Юла - Уокера (в матричной форме на картинке )


3) решаем систему (находим а(1).....а(p) - коэффициенты авторегрессии)

4)т.к общий вид модели имеет вид

для получения прогноза на шаг вперёд перемножаем полученные а(p) на Close[р] нужного бара

В итоге получаем бред т.е на EURUSD прогнозы получаются типа -160, 230 итд

Читал что корни уравнения должны лежать в диапазоне (-1..1) но не получается корни могут быть и далеко за этими пределами, и что такое e t в общем уравнении модели


подскажите плиз

 

space_cowboy, поднятый тобой вопрос интересен.

По сути, рассмотренная тобой АР-модель подобна однослойному линейному персептрону со всеми вытекающими последствиями - низкая мощность и известные требования к минимальной длине обучающего вектора. Ты находишь коэффиценты автокорреляции на какой-то длине исторических данных. Если эта длина не удовлетворяет требованию озвученному тут, то это приводит эффекту переобучения и экспоненциальному росту амплитуды выходных сигналов. Что и видим.

 
space_cowboy >>:

Стала задача реализации AR на MQL


...

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






PS: Кажется есть реализация в КОДЕБАZЕ по нескольким алгоритмам


to Neutron

Привет Серега! А смысл? Коллега будет на AR получать аналогичную ... как и на сети, только проблем меньше. (Типа шутка) :о)

 

Привет, Серёга.

Правильно говоришь! Так и есть. Вот только теперь он начнёт задумываться о том, какой длины брать историю для нахождения коэффициентов авторегрессии (необязательно линейной). Согласись, правильный ответ не тривиален, и вполне очевиден в моей подаче:-)

 
Neutron >>:

Привет, Серёга.

Правильно говоришь! Так и есть. Вот только теперь он начнёт задумываться о том, какой длины брать историю для нахождения коэффициентов авторегрессии (необязательно линейной). Согласись, правильный ответ не тривиален, и вполне очевиден в моей подаче:-)

угу, реально 2 параметра:

  • Длина выборки
  • Количество коэффициентов АКФ (порядок модели)

Идентификация модели крайне затруднительна.

 
grasn >>:

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


А никто и не собирается работать на ценах ибо это хаос(мать его) или близко к нему, работать предполагается на осцилляторе, а длина выборки должна быть переменной и равной энному количеству полных циклов осциллятора, и как дополнительное требование наличие нескольких похожих уровней, как на текущий момент за это количество циклов

т.е. чтобы прогноз не "вываливался" далеко за границы определённого коридора

 
grasn писал(а) >>

угу, реально 2 параметра:

  • Длина выборки
  • Количество коэффициентов АКФ (порядок модели)

Идентификация модели крайне затруднительна.

Не понял, ты похвалил меня за проницательность или подверг сарказму?

 

даже код отдам

хоть называется ARIMA но до IMA дело пока не дошло :)

Файлы:
arima.mq4  5 kb
 
space_cowboy писал(а) >>

Стала задача реализации AR на MQL

После прочтения заумной литературы литературы, набросал такой алгоритм:

1) строим автокорреляционную функцию (АКФ) -> получаем коэффициенты автокорреляции Rxx(n) где Rxx(0)=1(корреляция набора данных с самим собой = 1)

как известно коэф корреляции изменяется в диапазоне от -1 до 1 АКФ счила как сказано тут тут (последний пост).

2) строим систему уравнения Юла - Уокера (в матричной форме на картинке )


3) решаем систему (находим а(1).....а(p) - коэффициенты авторегрессии)

4)т.к общий вид модели имеет вид

для получения прогноза на шаг вперёд перемножаем полученные а(p) на Close[р] нужного бара

В итоге получаем бред т.е на EURUSD прогнозы получаются типа -160, 230 итд

Читал что корни уравнения должны лежать в диапазоне (-1..1) но не получается корни могут быть и далеко за этими пределами, и что такое e t в общем уравнении модели

подскажите плиз

Я такое уже сделал. Посмотри здесь 'Extrapolator'

Метод 2.

 
gpwr >>:

Я такое уже сделал. Посмотри здесь 'Extrapolator'

Метод 2.

спасибо, то что надо

 
to space_cowboy 

А никто и не собирается работать на ценах ибо это хаос(мать его) или близко к нему, работать предполагается на осцилляторе, а длина выборки должна быть переменной и равной энному количеству полных циклов осциллятора, и как дополнительное требование наличие нескольких похожих уровней, как на текущий момент за это количество циклов

т.е. чтобы прогноз не "вываливался" далеко за границы определённого коридора

Да какая разница? Проблема то все равно останется и она в идентификации модели. И тут совершенно не важно, что прогнозировать. 


to Neutron

Не понял, ты похвалил меня за проницательность или подверг сарказму?

вообще то хвалил. :о)


to gpwr

Я это и имел в виду :о)

Причина обращения: