preview
Теория хаоса в трейдинге (Часть 1): Введение, применение на финансовых рынках и индикатор Ляпунова

Теория хаоса в трейдинге (Часть 1): Введение, применение на финансовых рынках и индикатор Ляпунова

MetaTrader 5Тестер | 24 июля 2024, 11:23
534 3
Yevgeniy Koshtenko
Yevgeniy Koshtenko

Введение в теорию хаоса и её связь с финансовыми рынками

Что такое теория хаоса и как ее можно применить на финансовых рынках? Сегодня разберемся с этим вопросом.

Планируется написание цикла статей, который ответит на вопросы - что такое теория хаоса, как отличается концепция хаоса на рынке, предложенная Биллом Вильямсом, от классической, научно обоснованной теории. Как теория описывает рынок? Как ее возможно применять, в каких областях трейдинга? 

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


Основные концепции теории хаоса: аттракторы, фракталы и эффект бабочки

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

  1. Аттракторы: Это как магниты для состояний системы — к ним система тяготеет со временем. На финансовых рынках это могут быть определенные цены или повторяющиеся узоры, к которым рынок возвращается снова и снова. Особенно интересны странные аттракторы, которые можно найти в хаотических системах. Они выглядят сложно и могут показать скрытый порядок в случайном поведении рынка.

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

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

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


Хаотические системы в контексте финансовых рынков

Финансовые рынки обладают характеристиками хаотических систем, что важно для их анализа и прогнозирования.
  • Нелинейность: Малые изменения вызывают непропорциональные колебания.
  • Чувствительность к начальным условиям: Небольшие события могут вызывать крупные движения.
  • Самоорганизация: Формирование трендов и паттернов без внешнего управления.
  • Фрактальная структура: Ценовые графики показывают фрактальные свойства.
  • Ограниченная предсказуемость: Точность прогнозов снижается с увеличением горизонта.
  • Странные аттракторы: Колебания вокруг определенных уровней или состояний.
  • Переходы между состояниями: Внезапные переходы от стабильности к волатильности.
Понимание этого помогает разработке сложных методов анализа, управления рисками и торговых алгоритмов.


Волатильность в трейдинге

Волатильность — это важнейшее понятие в трейдинге и финансах, связанное с теорией хаоса. Она измеряет, как сильно изменяется цена актива за определённое время. В трейдинге волатильность помогает оценивать риск, формировать цену опционов и разрабатывать торговые стратегии.

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

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

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


Классическая теория хаоса и подход Билла Вильямса

Классическая теория хаоса и концепция "хаоса" Билла Вильямса сильно различаются. Классическая теория хаоса опирается на строгие математические принципы и использует сложные инструменты для анализа систем. Вильямс, напротив, использует интуитивный подход и технические индикаторы, такие как Alligator и Fractals, которые не имеют прямого отношения к математической теории хаоса.


Классическая теория хаоса основана на строгих математических принципах и научных исследованиях в области нелинейной динамики. Она использует точные математические методы для Классическая теория рассматривает хаос как детерминированное, но непредсказуемое поведение. Вильямс же использует термин "хаос" более свободно, говоря об общей непредсказуемости рынков. Его методы направлены на практическое применение в торговле, а не на глубокий анализ хаотической природы рынков.

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


Теория хаоса в анализе рынков

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

Этот подход помогает объяснить, почему небольшие события могут приводить к значительным рыночным движениям, и почему долгосрочные прогнозы часто оказываются неточными. Теория хаоса позволяет анализировать такие явления, как рыночные крахи и пузыри, предоставляя новые инструменты для более точного и адаптивного анализа рынка.


Показатель Ляпунова и его применение в анализе финансовых временных рядов

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

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

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

Для расчета показателя Ляпунова в финансовых данных необходимо создать фазовое пространство, анализируя, как близкие точки в этом пространстве расходятся. Этот процесс требует выбора правильных параметров, таких как размерность и временная задержка.

Один из важных аспектов использования показателя Ляпунова — это оценка того, как долго прогнозы будут точными. Чем больше значение показателя, тем короче срок, в течение которого прогнозы остаются надежными. Это особенно полезно для краткосрочной торговли и управления рисками.

Теперь мы можем приступить к реализации показателя Ляпунова на MQL5.


Реализация показателя Ляпунова средствами MQL5

Данный индикатор реализует расчет показателя Ляпунова для анализа финансовых временных рядов. Он позволяет оценить степень хаотичности рынка и потенциальную предсказуемость ценовых движений.

Входные параметры:

input int    InpTimeLag = 1;       // Time lag
input int    InpEmbedDim = 2;      // Embedding dimension
input int    InpDataLength = 1000; // Data length for calculation
  • InpTimeLag: определяет временную задержку для реконструкции фазового пространства.
  • InpEmbedDim: задает размерность вложения для реконструкции фазового пространства.
  • InpDataLength: устанавливает количество свечей, используемых для расчета показателя.

Есть одна глобальная переменная:

double LyapunovBuffer[];
Инициализация:

int OnInit()
{
   SetIndexBuffer(0, LyapunovBuffer, INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS, 5);
   IndicatorSetString(INDICATOR_SHORTNAME, "Lyapunov Exponent");
   return(INIT_SUCCEEDED);
}

В функции OnInit() мы настраиваем буфер индикатора, устанавливаем точность отображения до 5 знаков после запятой и задаем короткое имя индикатора.

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int start;
   if(prev_calculated == 0)
      start = InpDataLength;
   else
      start = prev_calculated - 1;
   
   for(int i = start; i < rates_total; i++)
   {
      LyapunovBuffer[i] = CalculateLyapunovExponent(close, i);
   }
   
   return(rates_total);
}

Функция OnCalculate() вызывается при каждом тике и выполняет расчет показателя Ляпунова для каждой свечи, начиная с InpDataLength .

Расчет показателя Ляпунова:
double CalculateLyapunovExponent(const double &price[], int index)
{
   if(index < InpDataLength)
      return 0;
   
   double sum = 0;
   int count = 0;
   
   for(int i = 0; i < InpDataLength - (InpEmbedDim - 1) * InpTimeLag; i++)
   {
      int nearestNeighbor = FindNearestNeighbor(price, index - InpDataLength + i, index);
      if(nearestNeighbor != -1)
      {
         double initialDistance = MathAbs(price[index - InpDataLength + i] - price[nearestNeighbor]);
         double finalDistance = MathAbs(price[index - InpDataLength + i + InpTimeLag] - price[nearestNeighbor + InpTimeLag]);
         
         if(initialDistance > 0 && finalDistance > 0)
         {
            sum += MathLog(finalDistance / initialDistance);
            count++;
         }
      }
   }
   
   if(count > 0)
      return sum / (count * InpTimeLag);
   else
      return 0;
}

Функция CalculateLyapunovExponent() реализует алгоритм расчета локального показателя Ляпунова. Она использует метод ближайших соседей для оценки расхождения траекторий в реконструированном фазовом пространстве.

Поиск ближайшего соседа:

int FindNearestNeighbor(const double &price[], int startIndex, int endIndex)
{
   double minDistance = DBL_MAX;
   int nearestIndex = -1;
   
   for(int i = startIndex; i < endIndex - (InpEmbedDim - 1) * InpTimeLag; i++)
   {
      if(MathAbs(i - startIndex) > InpTimeLag)
      {
         double distance = 0;
         for(int j = 0; j < InpEmbedDim; j++)
         {
            distance += MathPow(price[startIndex + j * InpTimeLag] - price[i + j * InpTimeLag], 2);
         }
         distance = MathSqrt(distance);
         
         if(distance < minDistance)
         {
            minDistance = distance;
            nearestIndex = i;
         }
      }
   }
   
   return nearestIndex;
}

Функция FindNearestNeighbor() ищет ближайшую точку в реконструированном фазовом пространстве, используя евклидово расстояние.


Интерпретация результатов

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



Статистический анализ разворотов и продолжений тренда с использованием показателя Ляпунова

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

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

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

Ключевой особенностью скрипта является его способность сопоставлять моменты разворотов и продолжений тренда со значениями показателя Ляпунова. Это позволяет выявить статистические закономерности между хаотическим поведением рынка и его ценовой динамикой. Скрипт подсчитывает количество разворотов и продолжений тренда, происходящих при положительных и отрицательных значениях показателя Ляпунова.

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


Интерпретация результатов статистического анализа

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

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

Положительные значения показателя Ляпунова, которые обычно ассоциируются с более хаотичным, непредсказуемым поведением, наблюдаются чуть более чем в половине всех случаев (50.61% для разворотов и 51.09% для продолжений). Это может указывать на небольшое преобладание периодов повышенной волатильности или неопределенности на рынке.

Отрицательные значения показателя Ляпунова, обычно интерпретируемые как признак более упорядоченного, менее хаотичного поведения системы, наблюдаются в 49.39% случаев для разворотов и 48.91% для продолжений тренда. Эти периоды могут характеризоваться более предсказуемым движением цены, следующим определенным паттернам.

Интересно отметить, что процентное соотношение разворотов и продолжений тренда практически идентично как для положительных, так и для отрицательных значений Ляпунова. Разница составляет менее 0.5% в обоих случаях. Это может свидетельствовать о том, что сам по себе показатель Ляпунова не является определяющим фактором для прогнозирования разворота или продолжения тренда.

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


Заключение

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


Последние комментарии | Перейти к обсуждению на форуме трейдеров (3)
Stanislav Korotky
Stanislav Korotky | 24 июл. 2024 в 20:01

Так для каких настроек сделан раздел "Интерпретация результатов статистического анализа"? Если просто для параметров по-умолчанию, то это имхо некорректно. Нужно было бы каким-либо способом определить эффективные значения Time lag и Embedding dimension. Из своих прошлых экспериментов сразу скажу, что лаг точно не должен быть 1, а где-то от 7-8 и выше, в зависимости от таймфрейма. Пространство вложения 2 - тоже только для теста работоспособности кода, но не анализа конкретного ряда.

Yevgeniy Koshtenko
Yevgeniy Koshtenko | 26 июл. 2024 в 00:54
Stanislav Korotky #:

Так для каких настроек сделан раздел "Интерпретация результатов статистического анализа"? Если просто для параметров по-умолчанию, то это имхо некорректно. Нужно было бы каким-либо способом определить эффективные значения Time lag и Embedding dimension. Из своих прошлых экспериментов сразу скажу, что лаг точно не должен быть 1, а где-то от 7-8 и выше, в зависимости от таймфрейма. Пространство вложения 2 - тоже только для теста работоспособности кода, но не анализа конкретного ряда.

Добрый день! Да, у меня тоже крупный лаг лучше идет. Я пока работаю над кодом советника, в следующих статьях будет=)

Bogard_11
Bogard_11 | 26 июл. 2024 в 20:10
Нет на рынке никакого Хаоса! Всё всегда достаточно точно моделируется, если знать как развивается модель!
Разработка системы репликации (Часть 42): Проект Chart Trade (I) Разработка системы репликации (Часть 42): Проект Chart Trade (I)
Давайте создадим что-нибудь поинтереснее. Не хочу портить сюрприз, поэтому следите за статьей, чтобы лучше понять. С самого начала этой серии о разработке системы репликации/моделирования, я говорил, что идея состоит в том, чтобы использовать платформу MetaTrader 5 одинаково как в разрабатываемой нами системе, так и на реальном рынке. Важно, чтобы это было сделано должным образом. Никто не хочет тренироваться и учиться сражаться, используя одни инструменты, в то время как во время боя ему придется пользоваться другими.
Разработка MQTT-клиента для MetaTrader 5: методология TDD (Часть 6) Разработка MQTT-клиента для MetaTrader 5: методология TDD (Часть 6)
Статья является шестой частью серии, описывающей этапы разработки нативного MQL5-клиента для протокола MQTT 5.0. В этой части я опишу основные изменения в нашем первом рефакторинге, получение рабочего проекта наших классов построения пакетов, создание пакетов PUBLISH и PUBACK, а также семантику кодов причин PUBACK.
Алгоритм адаптивного социального поведения — Adaptive Social Behavior Optimization (ASBO): Двухфазная эволюция Алгоритм адаптивного социального поведения — Adaptive Social Behavior Optimization (ASBO): Двухфазная эволюция
Эта статья является продолжением темы социального поведения живых организмов и его воздействия на разработку новой математической модели - ASBO (Adaptive Social Behavior Optimization). Мы погрузимся в двухфазную эволюцию, проведем тестирование алгоритма и сделаем выводы. Подобно тому, как в природе группа живых организмов объединяет свои усилия для выживания, ASBO использует принципы коллективного поведения для решения сложных задач оптимизации.
Разрабатываем мультивалютный советник (Часть 15): Готовим советник к реальной торговле Разрабатываем мультивалютный советник (Часть 15): Готовим советник к реальной торговле
Постепенно приближаясь к получению готового советника, необходимо уделить внимание вопросам, которые являются второстепенными на этапе тестирования торговой стратегии, но становятся важными при переходе к реальной торговле.