Проверка на коинтеграцию нескольких пар, больше 2х - страница 5

 
artemiusgreat:
 

1. кто может обьяснить разницу между True (Population) Covariance Matrix и Sample Covariance Matrix? В частности на одной картинке показано зачем они нужны, на другой показывается, что True Covariance расчитывается как ковариация от обычно Sample Covariance? так ли это?

Вы понимаете неправильно. Кстати, это основы теорвера.

Допустим, что есть некоторая многомерная случайная величина, имеющая многомерное нормальное (для простоты ;) ) распределение с матожиданием mu и матрицей ковариации sigma. Если вы знаете истинные значения этих параметров - всё просто, ничего оценивать не нужно.

Рассмотрим более практический случай - значения mu и sigma неизвестны, но имеется реализация (выборка) данной случайной величины размера n. Тогда можно оценить значения mu и sigma, например, при помощи метода моментов или метода максимального правдоподобия, и получить некие mu_hat и sigma_hat. Т.е. оценка параметров распределения - это некая функция от выборки, дающая приближение к истинным значениям параметров распределения.

Методы оценивания бывают разные (несмещенные, состоятельные, эффективные). В зависимости от типа метода оценивания, при росте размера выборки n до бесконечности, значения mu_hat и sigma_hat могут сойтись к mu и sigma, а могут и не сойтись ;)

Так вот, true covariance - это sigma, sample covariance - это sigma_hat. Первое - вам неизвестно, второе можно посчитать на основе выборки и использовать как приближение к первому.

 
artemiusgreat:

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

Посмотрите внимательно график, индикатор показывает ровно столько баров - сколько выбрано в настройках. Лишнее урезал таким не очень эффективным но простым методом.

      ArrayInitialize(iChart,EMPTY_VALUE);
      
        for (int k = iDepth - 1; k > 0; k--)
        {
            iChart[index] = iSynthetics[0].mPoints[k];
            index++;
        }

Посмотрите внимательно график выше, вершина на индикаторе должна соответствовать вершине на чарте.

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

4. чтобы просто проверить коэффициенты на стационарность - это надо то, что сейчас стоит в индикаторе поместить в цикл и расчитывать на каждый бар - МТ умирает, чтобы такое реализовать надо либо в С++ выносить расчеты, либо делать на новом баре не пересчет всех значений, а только выборочное обновление матриц - такой цели у меня нет

MQL не намного медленнее С++, можно просто код пооптимизировать через профилировщик, в крайнем случае можно подключить OpenCL.

 

очередная версия

1. добавил возможность строить синтетик на весах полученных из обратной матрицы

2. попытался добавить Ledoit-Wolf estimator - кто желает ощутить разницу - можете закоментить строку №112 и раскоментить №113 чтобы посотреть как он работает ...

Итого : как по мне, по сравнению с эстиматором, простая обратная матрица намного лучше отображает поведение синтетика и ту пару, которая дает наибольший разброс либо я что-то не так сделал ... (сравнивать лучше на месячном таймфрейме)

Простая инверсия :

Эстиматор :

Мнения?

Файлы:
Portfolio.zip  6 kb
 
Мысли, что искать стационарные синтетики это курвафиттинг, который рассыпется в реальности. Нет необходимости, чтобы синтетик был постоянно стационарен. Достаточно, чтобы иногда. Т.е. фильтровать базар)) Как и в торговле одним инструментом - знать когда флет достаточно, чтобы заработать. 
 
Avals:
Мысли, что искать стационарные синтетики это курвафиттинг, который рассыпется в реальности. Нет необходимости, чтобы синтетик был постоянно стационарен. Достаточно, чтобы иногда. Т.е. фильтровать базар)) Как и в торговле одним инструментом - знать когда флет достаточно, чтобы заработать. 

Зависит от того, как строить. Вряд ли за curve-fitting можно счесть модель с двумя параметрами, которая описывает динамику портфеля из 20 инструментов за последние 10 лет. А постоянные веса не работают по двум причинам:

1) Предположение о постоянстве коэффициентов не верно;

2) Предположение о линейности равновесных соотношений не верно.

Есть ещё один нюанс, из-за которого не все понимают, что разошедшийся "спред" не всегда соответствует отклонению от положения равновесия. Но за время, проведенное на российских трейдерских форумах, я не видел ни одного намека на попытки вести рассуждения в этом направлении, так что вряд ли тут найдется кто-то, с кем бы мне стоило это обсуждать.

 
anonymous:

Есть ещё один нюанс, из-за которого не все понимают, что разошедшийся "спред" не всегда соответствует отклонению от положения равновесия. Но за время, проведенное на российских трейдерских форумах, я не видел ни одного намека на попытки вести рассуждения в этом направлении, так что вряд ли тут найдется кто-то, с кем бы мне стоило это обсуждать.

Я знаю с кем вам можно это дело обсудить :)
 
TheXpert:
Я знаю с кем вам можно это дело обсудить :)
Я не удивлён ;)
 

сейчас включим нового юзверя в диалог :)

artemiusgreat

Про портфели

если торговать портфелем против портфеля, кластерами, индексами, то в них не должно быть совпадения инструментов, потому что нам надо сформировать 2 портфеля - один на BUY, другой на SELL, если в обоих портфелях будет одна и та же валюта, то она будет направлять оба портфеля в одну и ту же сторону, в результате получится нейтральная позиция из двух синтетиков, которые болтаются вокруг нуля и никогда не сойдутся, нам такое не надо, параллельные линии не пересекаются :)

а вообще, для портфелей лучше оживить другую тему - https://www.mql5.com/ru/forum/16512

и там же есть, один весьма интересный юзер - anonymous - который мог бы пролить свет на некоторые моменты в портфелях, но он пока что ломается и не признается, где собака зарыта :)

Про кластеры

надо прочитать это - http://forex.kbpauk.ru/showthreaded.php/Cat/0/Number/325281/page/0/vc/1 - а потом запустить Recycle и посмотреть на коэффициенты, чтобы удобней было, можно вместо ресайкла запустить индикатор, который есть в теме по ссылке выше, это должно пояснить как формируется кластер

transcendreamer

про портфели: бывают случаи покупаешь два портфеля а например в одном евродоллар продается а в другом покупается

а если два портфеля полностью нейтрализуют друг друга то конечно зачем они такие нужны

кластер - это видимо некая группа инструментов дающих минимальную дисперсию в сумме? или я чего не понял

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

визуально - да, минимальная дисперсия может быть показателем, пример

- в ресайкл забивается примерно такой портфель USDCAD + AUDUSD + EURUSD + GBPUSD - это покажет коэффициенты, на которых можно построить регрессию по всем валютам в виде синтетика
- добавим в этот портфель кросс для двух имеющихся пар, EURGBP, теперь EURUSD + GBPUSD + EURGBP создают практически замкнутую систему, кластер, при которой остальные валюты считаются системой отклонением от нормы распределения и перестают учитываться, в результате это покажет громадные коэффициенты у замкнутой системы, а все остальные валюты обнулит

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

2. в первом пункте вроде пояснил зачем кластеризация, теперь почему бессмысленно добавлять в два портфеля одну и ту же валюту, на примере, два портфеля :

- BUY(EURUSD + AUDUSD + USDCHF)
- SELL(EURUSD + GBPUSD + USDJPY + USDCAD)

Вопрос : в чем его отличие от такой пары портфелей, кроме двух доп. спредов за EURUSD?

- BUY(AUDUSD + USDCHF)
- SELL(GBPUSD + USDJPY + USDCAD)

 
artemiusgreat:


Вопрос : в чем его отличие от такой пары портфелей, кроме двух доп. спредов за EURUSD?

- BUY(AUDUSD + USDCHF)
- SELL(GBPUSD + USDJPY + USDCAD)

Если рассматривать независимыми переменными портфеля сами валюты, а не пары (что резонно), то тут еще больше лишнего. В первой строке - USD и продается и покупается, фактически (с поправкой на соотношение лотов) торгуем AUDCHF. Во второй тоже USD можно один раз сократить, например до (GBPJPY USDCAD).
 
marketeer:
Если рассматривать независимыми переменными портфеля сами валюты, а не пары (что резонно), то тут еще больше лишнего. В первой строке - USD и продается и покупается, фактически (с поправкой на соотношение лотов) торгуем AUDCHF. Во второй тоже USD можно один раз сократить, например до (GBPJPY USDCAD).

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

И кроссом никогда не сможете получить нужное соотношение валют в синтетике. 

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