a) Total least squares + любой тест на стационарность (тот же ADF).
b) Johansen test

- голосов: 30
- 2012.10.12
- www.mql5.com
Спасибо за ответы ...
1. ALGLIB - полезно, но пока мне рано такое использовать, у меня операций не так много, да и без понимания использовать черный ящик - себе во вред
2. TLS, похоже действительно имеет смысл, а вот тест Йохансена везде описан только теоретически, нет ли у вас случайно под рукой примера его практического применения, там где уже числами оперируют?
3. пока что решил остановится на методе Хренфикса из Recycle, судя по всему - это Метод Главных Компонент (хотя в русской литературе все действительно уныло, поэтому лучше смотреть Principal Components), но почему ковариационная матрица в коде Recycle треугольная, если во всех источниках указывается, что это должна быть матрица с дисперисей на диагонали и ковариацией в остальных ячейках?
2. а вот тест Йохансена везде описан только теоретически, нет ли у вас случайно под рукой примера его практического применения, там где уже числами оперируют?
Google по запросу "Johansen test" выдает уйму примеров. Либо вот вам пример на языке R (из хелпа):
install.packages('urca')
library(urca)
data(denmark)
sjd <- denmark[, c("LRM", "LRY", "IBO", "IDE")]
sjd.vecm <- ca.jo(sjd, ecdet = "const", type="eigen", K=2, spec="longrun",
season=4)
summary(sjd.vecm)
Результат:
Values of test statistic and critical values of test:
test 10pct 5pct 1pct
r <= 3 | 2.35 7.52 9.24 12.97
r <= 2 | 6.34 13.75 15.67 20.20
r <= 1 | 10.36 19.77 22.00 26.81
r = 0 | 30.09 25.56 28.14 33.24
Итого, 1 вектор коинтеграции.
3. почему ковариационная матрица в коде Recycle треугольная, если во всех источниках указывается, что это должна быть матрица с дисперисей на диагонали и ковариацией в остальных ячейках?
Также во всех источниках указывается, что матрица ковариации симметрична относительно диагонали ;)
Переписал Recycle на МТ5, но на методе GetOptimalVector мой мозг сломался, потому что ни в один известный мне алгоритм это не вписывается (предполагаю, что это ноу-хау - уменьшение дисперсии делением матрицы на ее максимальное значение), а бездумно переписывать не хотелось, поэтому написанное у меня, после метода GetCovMatrix - уже импровизация по тому материалу, что прочитал в разных источниках, вдобавок надо еще расчитать портфель на полученных коэффициентах, в принципе Хренфикс приводит формулу синтетика, но опять же, надо будет еще изучить теорию Марковица, а потом еще раз сравнить с велосипедом Хренфикса.
Пока есть такое : https://charts.mql5.com/3/538/eurusd-m15-alpari-limited-temp-file-screenshot-53150-png.png
Вектор был выбран как минимальное собственное значение ковариационной матрицы (eigenvalue), соответствующее минимальной дисперсии цен. Если есть заинтересованные в развитии темы - просьба глянуть код и высказать свое мнение, потому как очень вероятны ошибки ... коэффициенты слегка отличаются, но мне кажутся правильными :)
Вопросы:
1. опять же в нескольких независимых источниках советуют вместо PCA применять SVD (Singular Value Decomposition) как более надежный метод, не использующий ковариационную матрицу и потому требующий меньшего количества вычислений ... может ли кто потвердить или опровергнуть это?
2. Это уже не так важно, но для общего развития ... один метод в индикаторе Хренфикса не дает покоя - GetSign - знает ли кто его назначение? Теоретически могу предположить, что ковариационная матрица формирует элипсоид в декартовой системе координат и данный метод проверяет какие из точек этого элипсоида лежат в положительной, а какие в отрицательной плоскостях ...
3. Для того, чтобы проверить коэффициенты на стабильность (продолжительность действия) надо расчитать их для опр. интервала времени, а на оставшемся промежутке времени просто применять их без перерасчета, это и будет период Out Of Sample, правильно?
Вот, к примеру, самое вменяемое что нашел по тесту Йоханссена, если правильно понял, то :
1. берем первую разность на каждом ряде, сохраняем остаток (трендовая составляющая)
2. по остатку расчитываем какой-то S, судя по формуле это будет дисперсия (хотя дисперсия на тренде звучит странно)
Сразу же вопрос - почему J, K = { 0, 1 }, что такое R' (что означает штрих) ?
3. Получили собтвенные значения для S - что они будут значить, также как и PCA - чем меньше коэффициент и дисперсия, тем вероятней сходимость рядов?
Update : кажется дошло :)
Надо взять на одном ряде первую и вторую разность, вторая - это производная, J и K изменяются от 0 до 1 как раз потому что разницы всего две, дальше стандартная ковариационная матрица на этих данных и solving of eigenproblem ...
Вот, к примеру, самое вменяемое что нашел по тесту Йоханссена, если правильно понял, то :
1. берем первую разность на каждом ряде, сохраняем остаток (трендовая составляющая)
2. по остатку расчитываем какой-то S, судя по формуле это будет дисперсия
Сразу же вопрос - почему J, K = { 0, 1 }, что такое R' (что означает штрих) ?
3. Получили собтвенные значения для S - что они будут значить, также как и PCA - чем меньше коэффициент и дисперсия, тем вероятней сходимость рядов?
R регрессия
штрих производная
1. опять же в нескольких независимых источниках советуют вместо PCA применять SVD (Singular Value Decomposition) как более надежный метод, не использующий ковариационную матрицу и потому требующий меньшего количества вычислений ... может ли кто потвердить или опровергнуть это?
Точнее, рекомендуют делать PCA на основе SVD разложения. Ковариационная матрица используется в любом случае, количество вычислений не уменьшается.
Задача оценивания ковариации тоже не так проста, как кажется. Оценка cov(x) = (x-E(x))' (x-E(x)) далеко не лучшая среди известных.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
С двумя парами все относительно просто - написать линейную комбинацию, допустим Xi - C*Yi, пропустить через нее два тестируемых ряда и проверить на стационарность, допустим, Дики-Фуллером.
Как проверить наличие коинтеграции для множества пар, т.е. чтобы при открытии позиций по этому портфелю суммарный (профит - спред) болтался в области 0?