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

 
artemiusgreat:
... 

просто мне, как не математику, абстрактная теоретическая формула с интегралами и альфа, бета, фи не говорит ни о чем, ...

Ну, так и стоит ли мучаться с аналитическим решением?

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

 

kazakov.v:

... придумываешь целевую функцию ...

это само по себе является аналитическим решением

 
anonymous:

Точнее, рекомендуют делать PCA на основе SVD разложения. Ковариационная матрица используется в любом случае, количество вычислений не уменьшается. 

Задача оценивания ковариации тоже не так проста, как кажется. Оценка cov(x) = (x-E(x))' (x-E(x)) далеко не лучшая среди известных.

  • эмм, вроде бы это единственная формула ковариации и чем плоха эта формула - не полностью удаляет тренд, имеет большую погрешность или что-то еще?
  • степень взаимосвязи инструментов оценивается не по ковариации, а по корреляции (в относительных единицах с приведением дисперсии к 1)


Но вообще появились более актуальные вопросы :

  • надо ли каждую таймсерию перед расчетами переводить в пипсодоллары чтобы все мерять в долларах и поможет ли это избавиться от погрешности единиц измерения?
  • заметил, что при наличии в расчетах фин. инcтрумента, коэффициент влияния которого намного больше остальных, делает график синтетика идентичным этому фин. инструменту, например, при наличии допустим портфеля GBPUSD / AUDUSD / EURUSD (кол-во инструментов здесь не влияет, можно больше) и таких коэффициентах 0.055 / 0.317 / 0.805 график синтетика один в один отображает график EURUSD - но это же бред, ведь, к примеру, коэффициент AUDUSD = 0.317 тоже здесь достаточно высок, но на синтетик он практически НЕ влияет, открываю два графика - EURUSD растет, AUDUSD падает бескомпромисно, и хоть они оба участвуют в расчете синтетика, падение AUDUSD вообще никак не отображается на графике синтетика ... как это обьяснить, ведь при таком раскладе использование полученных коэффициентов практически равносильно прямой торговле парой EURUSD, да - нет?
  • киньте, плиз, ссылку на какой-нибудь сайт, которому доверяете, где можно было бы посмотреть на то, как должен выглядеть индекс доллара или, желательно, других валют


Немного пояснений по смыслу этой возни :

Изначально задумывался Pairs Trading (многие здесь могут скептично скривить лицо, но все не так однозначно) - это действительно может быть прибыльным, НО всегда случается беда (обычно 1-2 раза в месяц), пары НЕ сходятся, как результат, либо бесконечный висяк (своего рода лок), либо слив при попытке разрулить этот лок. Возникло некоторое желание увеличить кол-во пар для диверсификации, но перечитал сообщения более продвинутых в этой теме, понял, что с 2мя парами и треугольником делал все слишком примитивно (ошибся) - надо изначально все выравнивать по USD и коэффициентам даже для начальных лотов - поэтому пока в очередной раз переписываю советник на 2х парах, но тема портфеля и их разбиение по кластерам также актуальна, поэтому буду признателен за ответы на вопросы выше.


P.S. вечером выложу новую версию - поправил несколько багов, оптимизировал выделение памяти, отрисовал график синтетика, вынес все методы в отдельный файл для использования в советнике, добавил возможность составления синтетика автоматически по выбранной валюте (не паре, типа индекс)

P.P.S. для расчетов синтетика используются весовые коэффициенты на основе ковариационной матрицы (не корреляционной) и считается он как среднее геометрическое

 

 artemiusgreat:

 ...буду признателен за ответы на вопросы выше...

Рад бы помочь, да еще меньше понимаюсь в статистических расчетах...

hrenfx вам товарищ, однозначно.

Скажите пожалуйста, как Вы определяете уровни покупки/продажи синтетика? Имею ввиду - какую функцию используете для расчёта отступов от средней, если её используете.

 
pronych:

Рад бы помочь, да еще меньше понимаюсь в статистических расчетах...

hrenfx вам товарищ, однозначно.

Скажите пожалуйста, как Вы определяете уровни покупки/продажи синтетика? Имею ввиду - какую функцию используете для расчёта отступов от средней, если её используете.

да, я знаю тех, кто занимался этим, перелопатил много тем на четверке, реально много :)

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

последнее сообщение Хренфикса на Forex Factory звучало примерно так (после описание работы одного трейдера) : "Не ставил цели никого зацепить, только повысить общий уровень знаний, к тому же, как вы можете заметить я сейчас тоже в просадке около 90% ... да и вообще, хрень все это (о торговле вцелом)"

По поводу расчета уровней :

НЕПРАВИЛЬНЫЙ ВАРИАНТ : если вы спрашиваете как я открывался в советнике - зря, я делал это неправильно, использовался разницу машек, как в индикаторе Семен Семеныча, но сглаживание машек мешало понять когда валюты действительно сошлись, поэтому чтобы обойтись без сложных расчетов я просто ждал пока профит по всем открытым позициям станет положительным, индикатор ена разнице машек есть здесь - https://www.mql5.com/ru/forum/14348 (там есть баги кое-какие, но общий смысл отражает)

ПРАВИЛЬНЫЙ ВАРИАНТ : переводить все в доллары, приводить к стационарному ряду в индикаторе (минус Мат Ожидание, но anonymous говорит, что это плохая мера, есть еще первая разность, но она вообще рубит ряд в корне полностью меняя его) и по этому ряду считать Standard Deviation - это и будет уровень, по которому можно открываться / закрываться, чуть детальней, например, здесь, страницы с 4й http://www.forexfactory.com/showthread.php?t=262827&page=4 хотя полезно читать все, также есть несколько тем на четверке от 3х юзеров ...

по поводу уровней синтетика - до советника с синтетиком дело еще не дошло, но там ситуация та же, есть формула синтетиска, делаем ее стационарной и и дальше по тексту https://www.mql5.com/ru/code/10096

В тестере не работают функции SymbolSelect для валют, отличных от выбранной - МТ5
В тестере не работают функции SymbolSelect для валют, отличных от выбранной - МТ5
  • www.mql5.com
первый вопрос - почему при использовании мультивалютных индикаторов в тестере тестер завершает работу с ошибкой?
 

Если следите за тем что hrenfx пишет, то вам наверное сюда

Форум с уклоном на алготрейдеров.  

Посты / Публикации hrenfx / Трейдитрейд - конфедерация трейдеров
Посты / Публикации hrenfx / Трейдитрейд - конфедерация трейдеров
  • 2014.01.17
  • tradetrade.ru
В продолжение этого поста логично дать небольшой более близкий к трейдингу список русскоязычных материалов, который может быть полезным. Собрал материалы, которые рассчитаны не только на подготовленного читателя, но и на новичков. Все взято с MQL-community. Количество статей там значительно...
 
Или на хабре опять же. Но лучше форум конечно. Торговлей еще интересуется :)
 
artemiusgreat:
  • эмм, вроде бы это единственная формула ковариации и чем плоха эта формула - не полностью удаляет тренд, имеет большую погрешность или что-то еще?

Большая погрешность, плохая применимость на финансовых данных. Из общедоступного по моему опыту Ledoit-Wolf estimator весьма хорош. Можно и более точную модель построить.

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

Да.

Изначально задумывался Pairs Trading (многие здесь могут скептично скривить лицо, но все не так однозначно) - это действительно может быть прибыльным, НО всегда случается беда (обычно 1-2 раза в месяц), пары НЕ сходятся, как результат, либо бесконечный висяк (своего рода лок), либо слив при попытке разрулить этот лок.

Так бывает когда используется плохая модель оценки справедливой цены.

 
input int InpDepth = 1000; // сколько баров использовать для расчета
input int InpOosDepth = 0; // сколько баров выделить на тестирование OOS, т.е. расчитываем коэффициенты на InpDepth барах, а потом на InpOosDepth их просто применяем для порверки стабильности
input int InpIterations = 1000; // допустимые итерации при нахождении eigenvalues вращением Якоби (сколько разрешено итераций до достижения желаемой точности)
input bool InpUseMinimum = true; // выбирать вектор с наибольшей корреляцией и минимальной дисперсией (false - самый размашистый)
input bool InpUseCorrelation = true; // считать коэффициенты в условных единицах или валютозависимых
input double InpPrecision = 0.0001; // точность расчетов при нахождении eigenvalues вращением Якоби (желаемая точность, при достижении такой точности, итерации прекращаются, обычно хватает ~ 50 итераций, но на всякий случай поставил 1000)
input ENUM_TIMEFRAMES InpPeriod = PERIOD_CURRENT; // составлять матрицы из текущего периода или другого
input string InpUnit = "USD"; // если InpSymbols - пустая строка, то выбрать все все символы в обзоре рынка, которые включают USD

input string InpSymbols = "AUDUSD,EURUSD,GBPUSD,USDCHF,USDJPY,USDCAD,NZDUSD,USDSEK,USDSGD,USDMXN,USDNOK"; // пары для расчета, если оставить эту строку пустой используется параметр InpUnit

P.S. этот вариант не включает в себя рекомендаций anonymous'a

P.P.S. из-за методики расчета график иногда получается перевернутым

- проблема описана здесь : http://www.forexfactory.com/showthread.php?p=4443700#post4443700

- пояснение здесь : http://www.forexfactory.com/showthread.php?p=4450788#post4450788 + Хренфикс придумал свой самопальный метод, физического смысла которого я не понимаю, поэтому боюсь применять (замена суммы квадратов коэффициентов на сумму их модулей)

P.P.P.S. коментарии / замечания, как всегда, приветствуются ...

Файлы:
Portfolio.zip  5 kb
 
artemiusgreat:

С двумя парами все относительно просто - написать линейную комбинацию, допустим Xi - C*Yi, пропустить через нее два тестируемых ряда и проверить на стационарность, допустим, Дики-Фуллером.

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

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