Преодолевая даталенд

Иерархическая кластеризация валютного рынка

Использование машинного обучения без учителя для определения кластеров поведенческих валют

Как мы можем справиться с беспорядком из кусочков головоломки? Хорошо зарекомендовавшая себя стратегия состоит в том, чтобы начать с распределения частей, чтобы их можно было сразу рассмотреть. Затем мы сортируем их на узнаваемые группы, сначала по ребрам, а затем по цвету. Группирование частей в соответствии с заранее определенными общими атрибутами помогает нам понять, как они могут быть связаны друг с другом, и облегчает решение головоломки. Кластеризация в науке о данных следует аналогичному процессу.

Кластеризация направлена ​​на поиск групп объектов, в которых объекты в группе похожи друг на друга, но отличаются от объектов в других группах. Его часто используют в качестве промежуточной аналитической процедуры, помогающей в классификации интересующей переменной. Например, в предыдущей статье я использовал алгоритм K-средних для классификации активности клиентов в сфере электронной коммерции, а позже эта классификация была введена в эконометрическую модель. Однако кластеризация может быть полезна сама по себе, выявляя структуру и ассоциации между, казалось бы, случайным набором объектов.

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

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

Почему агломеративная иерархическая кластеризация

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

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

Алгоритм на основе плотности, такой как DBSCAN, может не работать в этом контексте. Более того, DBSCAN, скорее всего, не будет работать оптимально с имеющимся размером выборки, потому что алгоритм требует, чтобы минимальное количество объектов в определенной окрестности считалось кластером, а минимальное должно быть, по крайней мере, равно количеству функций плюс один. . На самом деле нет ничего необычного в том, чтобы установить минимальное количество наблюдений на кластер, вдвое превышающее количество функций при запуске алгоритма DBSCAN. Как я расскажу ниже, размер выборки всего 31.

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

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

Преимущества кластеризации AH:

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

Недостатки:

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

Алгоритм AH использует различные методологии, называемые «связями», для расчета расстояния между двумя кластерами, и они часто могут давать довольно разные результаты. На приведенной ниже диаграмме из scikit-learn показаны четыре наиболее популярных связи и их результаты для ряда «игрушечных» наборов данных. Я проведу анализ, используя Среднее, Полное и Варда связи и сравните результаты. Связь Single плохо работает с зашумленными данными, и, поскольку это, скорее всего, относится к данным финансового рынка, я не буду использовать этот конкретный метод.

Данные и особенности

Я взял дневные спотовые обменные курсы 29 наиболее широко торгуемых валют, а также дневные цены на золото и серебро с января 2017 года по декабрь 2019 года. Я не включил какие-либо привязанные валюты, такие как датская крона или гонконгский доллар, поскольку это было бы бессмысленно для целей данного упражнения. Размер выборки - 31. Всего за период выборки был 781 торговый день. По некоторым валютам данные отсутствовали из-за различных национальных праздников, и я воспользовался целесообразностью «предварительного заполнения» недостающих данных.

Этот тип данных легко получить из различных источников, и я взял свои из Bloomberg. Для единообразия все обменные курсы, включая золото и серебро, были приведены по их стоимости к 1 доллару США. В обычном формате валютного рынка он будет отображаться как USD / XXX, где XXX является валютой котировки. Более полное объяснение доступно здесь. Думайте об этом как о качелях с точки зрения доллара США или левостороннего игрока. Когда обменный курс USD / XXX понижается, стоимость доллара падает, а стоимость XXX растет. Когда обменный курс USD / XXX повышается, стоимость доллара растет, а стоимость XXX падает.

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

Первый - это бета-версия валюты по отношению к более широкой тенденции доллара США (USD) (т. Е. Эквивалент «бета-версии CAPM»). Доллар США является основной резервной валютой в мире и, безусловно, наиболее широко торгуемой валютой. Обменный курс по умолчанию для почти каждой валюты мира указан по отношению к доллару США. То, как валюта движется по отношению к более широкому тренду доллара США, всегда является ключевым фактором в том, как участники рынка воспринимают ее и торгуют ею. Я использую бета-версию для широкого взвешенного по торговле доллара США Федеральной резервной системы (с пометкой "usd_beta") в качестве прокси для этого атрибута.

Второй - соотношение валюты к мировым фондовым рынкам. На валютном рынке принято классифицировать различные валюты как «защищающие от риска» или «безопасную гавань», в зависимости от того, как они ведут себя во время роста фондовых рынков и во время рыночных распродаж. Таким образом, я использую корреляцию с Всемирным индексом MSCI All-Country World Index (помеченным как «equity_corr») в качестве второй характеристики.

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

Функциональная инженерия

Двумя основными задачами разработки функций было вычисление бета-версии каждой валютной пары по отношению к доллару США и корреляции с индексом MSCI. Бета-версия CAPM традиционно рассчитывается на основе простых процентных доходов. Процедура включала линейную регрессию, при которой каждая валютная пара подвергалась регрессии по широкому торгово-взвешенному доллару США. Бета - это, по сути, коэффициент регрессии.

С другой стороны, чтобы вычислить корреляции MSCI, я сначала рассчитал дневную доходность, а затем преобразовал ее в журнал. Корреляции Пирсона - это линейная мера, и я использовал логарифмическую доходность, чтобы уменьшить вероятный перекос в распределении дневной доходности FX. Этот метод повышает линейность отношений между рядами доходностей каждой валюты и позволяет правильно оценить их линейные корреляции. Я не буду вдаваться в подробное обсуждение различий между бета-коэффициентом и корреляцией, за исключением того, что отмечу, что первое подразумевает причинно-следственную связь, а второе - нет.

Конечным результатом процесса разработки функций была матрица из трех функций: usd_beta, Equity_corr и объем. Глядя на матрицу слева, полезно еще раз отметить, что вся статистика по валютам выражена в единицах их соответствующих значений для 1 доллара США.

Например, «cny» вверху списка на самом деле означает USD / CNY. Соответствующее значение usd_beta на уровне 0,5580 означает, что повышение курса доллара США, взвешенного по сделке, на 1% приведет к повышению курса доллара США к юаню на 0,5580%.

Equity_corr, равное -0,2680, означает, что существует умеренная отрицательная связь в (логарифмической) дневной доходности между MSCI ACWI и USD / CNY, подразумевая, что китайский юань имеет тенденцию к повышаются, когда мировые акции растут (т. е. более низкий курс доллара к юаню означает падение доллара по отношению к китайскому юаню).

Пояснительный анализ данных

Сама вышеприведенная матрица обеспечивает хороший пояснительный анализ данных (EDA). Позвольте мне обсудить пару моментов, чтобы прояснить выводы. Южноафриканский ранд (zar или USD / ZAR) имел самое высокое положительное значение usd_beta, а также самое отрицательное значение equity_corr чтение. Это означает, что USD / ZAR будет двигаться больше, чем сдвиг более широкого взвешенного по торговле доллара США, будь то вверх или вниз. В то же время пара имела тенденцию сильно двигаться (относительно остальных данных) в направлении, противоположном индексу MSCI. Поэтому, когда мировые акции падали, южноафриканский ранд имел тенденцию обесцениваться (то есть выше курс доллара США к юаню).

С другой стороны, японская иена (jpy или USD / JPY) имела самый высокий положительный equity_corr. Напротив, большинство валют в выборке имели отрицательные значения equity_corr разной степени, за исключением иены, швейцарского франка (chf или USD / CHF) и золота (au $ ). У иены также был относительно низкий usd_beta. Не зря иена известна специалистам валютного рынка как валюта-убежище, которая имеет тенденцию дорожать в плохих мировых рыночных условиях.

Однако наиболее важным моментом является то, что эти три функции не полностью коррелированы друг с другом. Колумбийское песо (коп), например, имело умеренное значение usd_beta, одно из самых отрицательных значений equity_corr и относительно высокий объем. Но у евро был usd_beta приблизительно один, почти нулевой Equity_corr и средне- -низкая громкость. Серебро (ag $) тем временем имело самый высокий объем в списке и очень высокий usd_beta, но также почти нулевое значение Equity_corr. Корреляционная матрица функций показана ниже, хотя, по общему признанию, существует повышенная положительная корреляция между функциями vol и usd_beta .

Визуализация данных

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

К счастью, в этом случае имеется визуальное подтверждение поведения кластеризации на различных двумерных диаграммах рассеяния. В этом случае мы используем только три измерения, так что все еще можно визуализировать объекты в их естественной среде обитания, так сказать. Человеческому глазу может быть сложно различить, как точки данных в трехмерном пространстве распределены на статическом графике, и для этой цели рекомендуется использовать интерактивный график. Ниже представлены два снимка трехмерной диаграммы рассеяния, левая часть которой расположена в исходном порядке оси, а правая - с инвертированными значениями. Трехмерная диаграмма рассеяния подтверждает поведение кластеризации.

Иерархическая кластеризация

Алгоритм кластеризации AH начинается с каждого объекта как его собственного индивидуального кластера. Алгоритм вычисляет «расстояние» между каждой парой объектов в пространственном пространстве признаков и объединяет два ближайших объекта. Я забегу вперед в повествовании, чтобы показать результирующую дендрограмму (положенную на бок) из ссылки Complete ниже. Наличие наглядного пособия поможет понять процесс кластеризации.

В данном случае EUR и RON были первыми валютами, которые были сгруппированы в кластер из двух. Затем кластер EUR-RON стал единичным наблюдением, и алгоритм пересчитал попарные расстояния по всем наблюдениям в многомерном пространстве. Вторую группу составили ILS и CNY. Процесс продолжался, и различные кластеры были объединены во все более крупные кластеры слева направо на дендрограмме, в результате чего образовался универсальный кластер, охватывающий все валюты в выборке.

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

Мы замечаем, что азиатские валюты сформировали отчетливый кластер до distance = 2, хотя этот кластер также включал ILS и CAD. С другой стороны, AUD и NZD (австралийские валюты) быстро сгруппировались среди группы преимущественно европейских валют. Первый взгляд на проблему предполагает, что географическая близость не гарантирует сходства в поведении.

Определение кластеров

Полная связь давала самый высокий кофенетический коэффициент на уровне 0,6410, и поэтому его дендрограмма была выделена выше. Связка Ward, напротив, имела самый низкий балл по этому показателю. Постоянный вопрос при кластерном анализе: как определить правильность кластеров, которые мы получаем, с точки зрения как количества кластеров, так и их релевантности?

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

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

Популярным показателем согласованности внутри кластера является коэффициент силуэта. Оценка коэффициента силуэта ограничена между -1 для сильно неопределенных кластеров и +1 для очень плотных кластеров. Баллы, близкие к нулю, указывают на увеличивающееся перекрытие кластеров. Таким образом, коэффициент силуэта выше, когда кластеры плотные и четко очерченные.

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

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

Четыре кластера:

  • Кластер 0: AG $, TRY, ZAR.
  • Группа 1 - NOK, CLP, AUD, SEK, NZD, HUF, PLN, EUR, RON, GBP, COP, MXN, BRL, RUB.
  • Группа 2 - австралийский доллар, швейцарский франк, японская йена
  • Группа 3 - INR, THB, PHP, MYR, TWD, CNY, SGD, IDR, KRW, ILS, CAD.

Кластер TRY, ZAR и серебра отличается в первую очередь своими чрезвычайно высокими значениями vol и usd_beta («Кластер 0» синего цвета). Это резко контрастирует с кластером JPY, CHF и золота, у которого были средние и низкие значения usd_beta, низкие vol и положительные значения equity_corr ( «Кластер 2» желтого цвета). Также существует кластер, состоящий в основном из азиатских валют («Кластер 3» зеленым), который отличается от группы FX в «Кластере 1» (в красный), имея обычно более низкие значения usd_beta и vol по сравнению.

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

Кластерный анализ и оценка

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

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

Ниже представлена ​​сводная статистика выбранных четырех кластеров. Статистический подход к оценке кластерного распределения может принимать форму выполнения двухвыборочных t-тестов по кластерам для каждой функции или ANOVA, когда количество кластеров равно трем или более. В частности, я использую t-критерий Велча, который не предполагает равных отклонений между двумя выборками. Визуальный подход к сопоставлению и сравнению распределений кластеров осуществляется с помощью коробчатых диаграмм.

  • Кластер 0 - AG $, TRY, ZAR
  • Группа 1 - NOK, CLP, AUD, SEK, NZD, HUF, PLN, EUR, RON, GBP, COP, MXN, BRL, RUB.
  • Группа 2 - австралийский доллар, швейцарский франк, японская йена
  • Группа 3 - INR, THB, PHP, MYR, TWD, CNY, SGD, IDR, KRW, ILS, CAD.

Приведенные ниже диаграммы для функции usd_beta предполагают, что кластер 0 однозначно отличается от других по этому атрибуту. Кластер 3, состоящий в основном из азиатских валют, имеет самое низкое среднее значение usd_beta из всех, но распределение имеет некоторое маргинальное совпадение с кластером 2. Также имеется некоторое совпадение в распределениях между кластерами 1 и 2. t -тесты подтверждают, что кластер 0 имеет среднее значение usd_beta, которое статистически отличается (с p-значением ‹5%) от всех остальных. Кластер 1 и кластер 3 также продемонстрировали статистически значимую разницу между их средними значениями usd_beta.

Приведенные ниже прямоугольные диаграммы для equity_corr показывают, что этот атрибут четко отличает кластер 2 от остальных. Фактически, это единственный кластер с положительными значениями equity_corr. Между кластерами 0, 1 и 3 существуют большие совпадения, которые настолько очевидны, что выполнение t-тестов было бы излишним. В любом случае t-тесты демонстрируют, что кластер 2 имеет среднее значение equity_corr, которое статистически отличается (с p-значением ‹5%) от других. Назовем это «кластером-убежищем», состоящим из золота, японской иены и швейцарского франка.

Наконец, коробчатые диаграммы для функции vol предполагают, что кластер 0 снова однозначно отличается от других по этому атрибуту. Перекрытие между кластерами 1 и 2 очевидно, и есть некоторое маргинальное перекрытие в распределениях между кластерами 2 и 3. t-тесты подтверждают, что кластер 0 имеет среднее значение объем, которое составляет статистически отличается (с p-значением ‹5%) от остальных. Кластер 1 и кластер 3 также показали статистически значимую разницу между их средними значениями объема.

Статистические данные показывают, что кластер 0 (TRY, ZAR и серебро) статистически отличается чрезвычайно высокими значениями usd_beta и vol ценности. Кластер 2 (JPY, CHF и золото) отличается положительными значениями equity_corr. Кластер 3 (в основном азиатские валютные пары), как правило, имеет самые низкие значения usd_beta и vol, но с некоторым незначительным перекрытием. по этим атрибутам с помощью кластера 2. Кластер 1, с другой стороны, является «промежуточным» кластером, особенно на usd_beta и vol, со значениями usd_beta обычно выше 1,0 по сравнению с кластерами 2 и 3. Вся статистика t-теста доступна на моей странице GitHub по ссылке ниже.

Заключение

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

Я собирал ежедневные данные с 2017 по 2019 год по наиболее широко торгуемой 31 мировой валюте, включая золото и серебро, но исключая валюты с привязкой. Цель заключалась в том, чтобы сгруппировать эти валюты по их поведению. Были выбраны три функции, которые повлияли на мировой валютный рынок: usd_beta, equity_corr и vol. Я также выбрал алгоритм агломеративной иерархической (AH) кластеризации из-за его уместности, учитывая цели упражнения и характер данных. Исследовательская визуализация данных с помощью диаграмм рассеяния указала на вероятность кластеризации.

Затем я приступил к кластеризации AH, в результате чего были получены те же кластеры с двух по четыре по связям Среднее и Полное. , причем последний имеет наивысшие баллы по коенетике. Четыре кластера, в свою очередь, дали наивысшие баллы по коэффициенту силуэта по всем трем методам связи. После межкластерной оценки использовались двухвыборочные t-тесты и коробчатые диаграммы, которые продемонстрировали релевантность трех выбранных атрибутов при сегментации выборки мировых валют.

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

(Полный код Python для этого упражнения доступен на моей странице GitHub.)

Если вы видели ценность в чтении подобных статей, вы можете подписаться на Medium здесь, чтобы читать другие статьи, написанные мной и бесчисленным множеством других авторов. Спасибо.