Скачать MetaTrader 5

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

25 августа 2010, 20:16
Руслан
18
3 716

Введение

Довольно часто приходится слышать разговоры о связи между различными валютами на рынке Форекс.

Основное обсуждение при этом обычно сводится к фундаментальным факторам, практическому опыту или просто домыслам, обусловленными личными стереотипами говорящего. Как крайний случай, выступает гипотеза одной или нескольких «мировых» валют, которые «тянут» за собой все остальные.

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


1. Теоретическая часть

1.1. Зависимые и независимые переменные

Рассмотрим две переменные (котировки) x и y. В любой момент времени, мгновенные значения этих переменных определяют точку на плоскости XY (рис. 1). Движение точки с течением времени образует траекторию. Форма и тип этой траектории будут определяться типом связи между переменными.


Рисунок 1. Точка на плоскости

Например, если переменная x никак не связана с переменной y, то мы не увидим никакой регулярной структуры: при достаточном количестве точек, они равномерно заполнят плоскость XY (рис.2).

Рисунок 2. Отсутствие корреляций - равномерное заполнение плоскости

Если же зависимость между x и y существует, то будет видна некоторая регулярная структура: в простейшем случае это будет кривая (рис. 3),

Рисунок 3. Наличие корреляций - кривая

хотя может быть и более сложная структура (рис. 4).


Рисунок 4. Наличие корреляций - структура на плоскости

То же самое характерно для трех- и более -мерного пространства: если между всеми переменными есть связь или зависимость, то точки будут образовывать кривую (рис. 5), если в наборе присутствуют две независимые переменные, то точки образуют поверхность (рис. 6), если три — то точки заполнят трехмерное пространство и т.д.


Рисунок 5. Кривая в трехмерном пространстве

Рисунок 6. Поверхность в трехмерном пространстве

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

Рисунок 7. Отсутствие корреляций - равномерное распределение точек в пространстве

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

Важна фрактальная размерность этой структуры: линия имеет размерность равную 1, поверхность — 2, объемная структура — 3 и т.д. Обычно можно считать, что значение фрактальной размерности соответствует количеству независимых переменных в наборе данных.

Также мы можем встретиться с дробной размерностью, например, 1.61 или 2.68. Такое может произойти, если получившаяся структура окажется фракталом — самоподобным множеством с нецелой размерностью. Пример фрактала приведен на рисунке 8, его размерность приблизительно равна 1.89, т.е. это уже не линия (размерность равна 1), но еще не поверхность (размерность равна 2).

Рисунок 8. Ковер Серпинского

Фрактальная размерность может быть разной для одного и того же множества на разных масштабах.

Например, если смотреть на множество, изображенное на рисунке 9 «издалека», то ясно видно, что это линия, т.е. фрактальная размерность этого множества равна единице. Если же посмотреть на это же множество «вблизи», то увидим что это совсем не линия, а «расплывчатая труба» - точки не образуют четкую линию, но случайным образом собраны вокруг нее. Фрактальная размерность этой «трубы» должна быть равна размерности пространства, в котором мы рассматриваем нашу структуру, т.к. точки в «трубе» равномерно заполнят все доступные измерения.

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

Рисунок 9. Пример фрактальной "трубы"

1.2. Определение фрактальной размерности

Для определения фрактальной размерности можно использовать box-counting алгоритм, основанный на исследовании зависимости количества кубиков, содержащих точки множества, от размера ребра кубика (здесь имеются ввиду не обязательно трехмерные кубики: в одномерном пространстве «кубиком» будет отрезок, в двумерном — квадрат и т.д.).

Теоретически, эта зависимость имеет вид N(ε)~1/εD, где D – фрактальная размерность множества, ε — размер ребра кубика, N(ε) – количество кубиков, содержащих точки множества при размере кубика ε. Это позволяет определить фрактальную размерность

Не вдаваясь в детали алгоритма, его работу можно описать следующим образом:

  1. Исследуемое множество точек разбивается на кубики размера ε и считается количество кубиков N, содержащих хотя бы одну точку множества.

  2. Для разных ε определяется соответствующее значение N, т.е. накапливаются данные для построения зависимости N(ε).

  3. Зависимость N(ε) строится в двойных логарифмических координатах и определяется угол ее наклона, который и будет значением фрактальной размерности.

Например, на рисунке 10 изображены два множества: плоская фигура (а) и линия (б). Ячейки содержащие точки множества окрашены серым цветом. Подсчитывая, количество «серых» ячеек при разных размерах ячеек, получаем зависимости изображенные на рисунке 11. Определяя наклон прямых, аппроксимирующих эти зависимости, находим фрактальные размерности: Dа≈2,Dб≈1.


Рисунок 10. Измерение множеств

На практике для определения фрактальной размерности обычно используют не box-counting, а алгоритм Грассберга-Прокаччиа, т.к. он дает более точные результаты в пространствах высокой размерности. Идея алгоритма заключается в получении зависимости С(ε) — вероятности попадания двух точек множества в ячейку размера ε от размера ячейки и определении наклона линейного участка этой зависимости.

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


Рисунок 11. Оценка фрактальной размерности множеств

1.3. Пример определения фрактальной размерности

Чтобы убедится в работоспособности предложенной методики, попробуем определить уровень шума и количество независимых переменных для множества изображенного на рисунке 9. Это трехмерное множество состоит из 3000 точек и представляет из себя линию (одна независимая переменная) с наложенным на нее шумом. Шум имеет нормальное распределение при СКО равном 0.01.

На рисунке 12 показана зависимость С(ε) в логарифмическом масштабе. На ней мы видим два линейных участка, пересекающихся при ε≈2-4.6≈0.04. Наклон первой прямой ≈2.6, а второй ≈1.0.

Полученные результаты означают, что тестовое множество имеет одну независимую переменную на масштабе большем 0.0 и «почти три» независимые переменные или наложенный шум на масштабе меньшем 0.04. Это хорошо согласуется с исходными данными: согласно правилу «трех сигм», 99.7% точек образуют «трубу» диаметром 2*3*0.01≈0.06.


Рисунок 12. Зависимость C(e) в логарифмическом масштабе


2. Практическая часть

2.1. Исходные данные

Для изучения фрактальных свойств рынка Форекс, были использованы общедоступные данные, охватывающие период с 2000 по 2009 год включительно. Исследование проводилось на ценах закрытия семи основных валютных пар: EURUSD, USDJPY, GBPUSD, AUDUSD, USDCHF, USDCAD, NZDUSD.

2.2. Реализация

Алгоритмы определения фрактальной размерности реализованы в виде функций среды MATLAB на базе разработок профессора Майкла Смолла (Dr Michael Small http://www.eie.polyu.edu.hk/~ensmall/matlab/). Функции с примерами использования доступны в архиве frac.rar приложенном к данной статье.

Для ускорения вычислений, наиболее трудоемкий этап выполнен на языке Си. Перед началом использования, вам необходимо скомпилировать Си-функцию "interbin.c" с помощью команды MATLAB "mex interbin.c".

2.3. Результаты исследования

На рисунке 13 показано совместное движение котировок EURUSD и GBPUSD с 2000 по 2010 год. Сами значения котировок показаны на рисунках 14 и 15.

Рисунок 13. Совместное движение котировок EURUSD и GBPUSD с 2000 по 2010 год


Рисунок 14. График котировок EURUSD с 2000 по 2010 год


Рисунок 15. График котировок GBPUSD с 2000 по 2010 год


Фрактальная размерность множества, изображенного на рисунке 13, приблизительно равна 1.7 (рис. 16). Это означает, что движение EURUSD + GBPUSD не образует «чистого» случайного блуждания, иначе размерность была бы равна 2 (размерность случайного блуждания, в двух- и более мерных пространствах всегда равна 2).

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

Валютные пары
EURUSD
GBPUSD
+USDJPY
+AUDUSD
+USDCHF +USDCAD
+NZDUSD
Размерность
1.7
1.9
1.9
1.9
1.9
1.9

Таблица 1. Изменение размерности при увеличении числа валют

Рисунок 16. Оценка фрактальной размерности

Чтобы получить более интересные результаты, следует перейти от самих котировок, к их изменениям.

В таблице 2 приведены значения размерности для разных интервалов приращений и разного количества валютных пар.

Даты
Количество точек
EURUSD
GBPUSD
+USDJPY
+AUDUSD
+USDCHF
+USDCAD
+NZDUSD
M5
14 Aug 2008 — 31 Dec 2009
100000
1.9
2.8
3.7
4.4
5.3
6.2
M15
18 Nov 2005 — 31 Dec 2009
100000
2
2.8
3.7
4.5
5.9
6.7
M30
16 Nov 2001 — 31 Dec 2009
100000
2
2.8
3.7
4.5
5.7
6.8
H1
03 Jan 2000 — 31 Dec 2009
61765
2
2.9
3.8
4.6
5.6
6.5
H4
03 Jan 2000 — 31 Dec 2009
15558
2
3
4
4.8
5.9
6.3
D1
03 Jan 2000 — 31 Dec 2009
2601
2
3
4
5.1
5.7
6.5

Таблица 2. Изменение размерности при разных интервалах приращений

Если валюты связаны между собой, то при добавлении каждой новой валютной пары, фрактальная размерность должна увеличиваться все меньше и меньше и, в итоге, должна сойтись к некоторому значению, которое покажет количество «свободных переменных» на валютном рынке.

Также, если предположить, что на котировки накладывается «рыночный шум», то на малых интервалах (М5, М15, М30) возможно заполнение всех доступных измерений шумом и этот эффект должен ослабевать на больших таймфреймах «обнажая» зависимости между котировками (аналогично как в тестовом примере).

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

Это несколько противоречит интуитивным убеждениям о связи валют. Кажется, что близкие валюты, например GBP и CHF или AUD и NZD должны показывать схожую динамику. Например, на рисунке 17 показаны зависимости приращений NZDUSD от AUDUSD для пятиминутных (коэффициент корреляции 0.54) и дневных (коэффициент корреляции 0.84) интервалов.

Рисунок 17. Зависимости приращений NZDUSD от AUDUSD для M5 (0.54) и D1 (0.84) интервалов


Из этого рисунка видно, что при увеличении интервала, зависимость все больше вытягивается по диагонали и коэффициент корреляции увеличивается. Но, с «точки зрения» фрактальной размерности, уровень шума слишком высок, чтобы считать эту зависимость одномерной линией. Возможно, на более длительных интервалах (недели, месяцы) фрактальные размерности сойдутся к некоторому значению, но у нас нет возможности это проверить — слишком мало точек для определения размерности.


Заключение

Конечно, интереснее было бы свести движение валют к одной или нескольким независимым переменным — это серьёзно бы упростило задачу восстановления рыночного аттрактора и прогнозирования котировок. Но рынок показывает другой результат: зависимости слабо выражены и «хорошо спрятаны» в большом количестве шума. В этом плане, рынок очень эффективен.

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

Полученные результаты, не позволяют однозначно утверждать о наличии или отсутствии связи между валютами. Можно лишь сказать, что на рассматриваемых таймфреймах уровень шума сопоставим с «силой» связи, поэтому вопрос о связи между валютами остается открытым.


Прикрепленные файлы |
Frac.rar (7.79 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (18)
hrenfx
hrenfx | 2 сен 2010 в 22:19

NorthAlec:

 OK, здесь принято. Но всё-же есть более легковесные инструменты, а есть более инертные (среди валютных пар например большей лёгкостью отличается GBP/JPY). Неплохо бы исследовать взаимосвязи между экстремумами лёгких и тяжёлых инструментов. Что если ввести коэфициенты (уменьшив value где надо) и провести аналогичную процедуру? Что скажете?

Специально провел небольшое исследование на тему легкости/инертности фин. инструментов сразу после вашего поста... На одном из брокеров закачал историю M5 по всем торговым инструментам, что он предлагал (благо советник GetHistoryAllSymbols это позволяет делать быстро). У меня получилось 109 инструментов, среди которых были FOREX, Futures, CFD, Metals. Историю изучал с начала 2010 года по сентябрь. Результат такой: самый "легкий" фин. инструмент оказался CFD Citigroup, немного уступает серебро, потом из FOREX - NZDJPY, CADJPY, AUDJPY. И только после них идет GBPJPY.

Подробности исследования на данный момент нет возможности предоставить. 

hrenfx
hrenfx | 2 сен 2010 в 22:32

irriss:

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

А что до фр. размерности - это как линейка, с ее помощью можно что-то измерить, но понимание что и зачем ты измеряешь должно прийти извне.

Спасибо за статью, прочел ее неделю назад с удовольствием (сразу после статьи про фр. размерность).

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

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

hrenfx
hrenfx | 3 сен 2010 в 20:39

hrenfx:

Специально провел небольшое исследование на тему легкости/инертности фин. инструментов сразу после вашего поста... На одном из брокеров закачал историю M5 по всем торговым инструментам, что он предлагал (благо советник GetHistoryAllSymbols это позволяет делать быстро). У меня получилось 109 инструментов, среди которых были FOREX, Futures, CFD, Metals. Историю изучал с начала 2010 года по сентябрь. Результат такой: самый "легкий" фин. инструмент оказался CFD Citigroup, немного уступает серебро, потом из FOREX - NZDJPY, CADJPY, AUDJPY. И только после них идет GBPJPY.

Легксоть/интертность изучалась, как  количество вершин зигзага с одинаковыми параметрами образования колена для всех фин. инструментов. Скрипт для подобного измерения и результаты его работы прилагаю.

Cmu4
Cmu4 | 26 дек 2010 в 12:41
Господа, на мой взгляд, фильтровать шумы элементарно с помощью МАшек.
GaryKa
GaryKa | 10 апр 2012 в 13:59
irriss:
... размерность случайного блуждания, в двух- и более мерных пространствах всегда равна 2

Встречал следующее утверждение Граница траектории броуновского движения на плоскости имеет фрактальную размерность 4/3 .

Не могли бы вы пояснить почему разные значения. Или может быть речь идет о разных понятиях?

Конкурс советников внутри советника Конкурс советников внутри советника

С помощью виртуальной торговли можно создать адаптивный советник, который будет выполнять включение/отключение сделок на реальном рынке. Соберите несколько стратегий в одном эксперте! Ваш мультисистемный советник будет автоматически выбирать торговую стратегию, которой стоит торговать на реальном рынке по результатам успешности виртуальных сделок. Такой метод позволяет снизить просадку и увеличить прибыльность Вашей работы на рынке. Экспериментируйте и делитесь результатами с другими! Думаю, будет интересно многим узнать о вашем портфеле стратегий.

Конструктор трейдера: Drag Trade Library Конструктор трейдера: Drag Trade Library

В статье описывается библиотека Drag Trade, содержащая функционал для визуальной торговли. Библиотека легко может быть подключена практически к любому советнику. Ваш советник может превратиться из автомата в автоматизированную торгово-информационную систему добавлением нескольких строчек кода и практически без усилий с Вашей стороны.

Повышаем качество кода при помощи Unit Test Повышаем качество кода при помощи Unit Test

Даже в простых программах зачастую находятся ошибки, которые кажутся невероятными. "Как я такое написал?" - первое, что приходит в голову, когда мы обнаруживаем такую ошибку. Второй вопрос - "Как этого избежать?" - приходит гораздо реже. Нельзя написать 100%-ный безошибочный код, особенно в больших проектах, но можно использовать технологии для их своевременного обнаружения. Статья рассказывает о том, как можно повысить качество MQL4 кода, применяя распространенную методику модульного тестирования (Unit Testing).

Работа по Накоплению/Распределению и что из этого можно сделать Работа по Накоплению/Распределению и что из этого можно сделать

Индикатор Накопления/Распределения A/D имеет одно интересное свойство - пробитие трендовой линии, построенной на графике данного индикатора с определённой долей вероятности говорит нам о скором пробое линии тренда на графике цены. Данная статья будет полезна и интересна людям, только начинающим программировать на MQL4, поэтому я постарался изложить всё в наиболее доступной для понимания форме и использовать самые простые конструкции построения кода.