Почему корреляционный анализ криптовалют даёт ложные сигналы
Классическая поломка выглядит так: матрица связей активов считается один раз по всей доступной истории, и каждая пара получает один коэффициент — например, 0,68 между двумя крупными монетами. На этих числах строят портфель, считают риск и выбирают, чем закрывать позицию. Проблема в том, что такой коэффициент описывает среднее по нескольким разным рынкам сразу, а не то состояние, в котором решение будет исполняться.
Рынок криптовалют нестационарен: периоды спокойного бокового движения, резких распродаж и изолированного роста отдельных историй сменяют друг друга за считанные дни. Внутри одного режима активы движутся со связью 0,6–0,8, при смене режима она падает до 0,2, а иногда меняет знак — актив, который «страховал» остальные, начинает тянуть портфель вниз вместе с ними. Ковариационная структура перестраивается быстрее, чем её успевают пересчитать, поэтому статистика за длинный период смешивает режимы и перестаёт что-либо предсказывать именно в момент, когда нужна.
Обратная крайность — ошибка на коротких окнах. Если считать связь по десяткам последних точек, оценка становится настолько шумной, что ширина доверительного интервала сопоставима с самим коэффициентом: 0,7 и −0,1 формально неразличимы. Добавьте множественные сравнения — в матрице из нескольких сотен пар всегда найдётся десяток значений, превысивших порог случайно. Это и есть ложные сигналы корреляции: они выглядят как найденная закономерность, а на деле отражают объём перебора.
Цена такой ошибки измеряется не в процентах отклонения, а в классе отказов. Портфель, собранный как «диверсифицированный», при смене режима ведёт себя как одна большая ставка, а расчётный риск оказывается заниженным в разы — до первого реального движения. Ниже разбираем, как это закрывается: скользящими окнами с контролем значимости, режимной разметкой и пересчётом связей до того, как на них начнут принимать решения.
Что даёт непрерывный анализ связей вместо разовых выгрузок
Разовая выгрузка даёт срез на момент запуска: связи между активами пересчитаны, отчёт сдан. Через несколько часов новостной импульс и волна ликвидаций меняют картину — часть пар расходится, часть начинает двигаться синхронно, — а решение всё ещё принимается по вчерашним числам. Непрерывный пересчёт закрывает этот разрыв: матрица связей живёт вместе с рынком.
- Единая матрица связей обновляется по расписанию, а не по запросу: торговый отдел, риск-менеджмент и руководство видят один набор коэффициентов, расхождения в отчётах исчезают.
- Автоматический пересчёт связей идёт на скользящем окне — старые наблюдения вытесняются, поэтому пары реагируют на смену режима рынка, а не тянут связь месячной давности.
- Анализ связей активов отсекает слабые и случайные зависимости по порогу значимости: доля ложных сигналов в отчёте падает примерно вдвое.
- Мониторинг связей портфеля показывает вклад каждой позиции в общий риск — видно, где портфель держит одну и ту же ставку разными инструментами.
- Снижение ручных расчётов: выгрузки и пересборка таблиц заменяются расписанием и оповещениями, аналитик занимается трактовкой данных, а не их подготовкой.
- История изменений сохраняется: можно поднять, как выглядела матрица до события, и объяснить решение задним числом.
Порог оповещения настраивается под задачу: система пишет, когда связь выходит из привычного коридора, вместо ежедневного чтения таблиц. Источники — биржевые данные и агрегаторы вроде CoinGecko, с проверкой на пропуски и рассинхрон меток времени.
Режимы расчёта связей: окно, веса, полная история
Режимы расчёта связей отличаются тем, по какому набору котировок считается коэффициент: по последним N свечам, по всей истории с затухающими весами или по полной истории без весов. Выбор режима определяет, покажет ли матрица текущий режим рынка или усреднённую картину за годы — и насколько быстро система отреагирует на расхождение пары.
| Вариант | Когда подходит | Ограничения |
|---|---|---|
| Скользящее окно | Нужна реакция на текущий режим: развороты, расхождения, краткосрочные пары | Длина окна наблюдения задаёт инерцию: короткое окно шумит и даёт ложные связи, длинное запаздывает |
| Экспоненциальное взвешивание | Нужен компромисс: свежие наблюдения весят больше, но история не отбрасывается | Требует подбора коэффициента затухания, результат чувствителен к его значению |
| Полная история котировок | Оценка структурной, долгосрочной связи между активами | Не отражает смену режима: на длинном горизонте связь усредняется и теряет сигнал |
Как выбираем длину окна
Длину окна наблюдения подбираем по устойчивости, а не на глаз: считаем матрицу на разных интервалах и смотрим, какие связи сохраняются во всех вариантах. Устойчивые пары идут в сигналы, неустойчивые — в отдельный список для наблюдения. Так отсекаются связи, которые держатся только на одном удачном отрезке.
Данные берём из полной истории котировок с нескольких площадок и сверяем с CoinGecko — расхождение цен между источниками само по себе искажает корреляцию. Режим расчёта хранится как параметр, поэтому переключение между окном и взвешиванием не требует пересборки системы.
Этапы внедрения: аудит источников, схема, настройка, передача
Система корреляционного анализа опирается на данные нескольких бирж, и первое расхождение возникает ещё до расчётов: разные интервалы свечей, часовые пояса, пропуски в ночные часы, разница между ценой последней сделки и средней. Если не привести ряды к общей временной сетке, матрица связей покажет артефакты вместо реальных зависимостей. Поэтому работы идут строго по этапам.
- Аудит источников котировок. Фиксируем перечень бирж и пар, проверяем доступ к API, лимиты запросов, глубину и полноту истории, расхождения меток времени между площадками.
- Проектирование схемы данных. Сводим ряды к единой частоте, описываем правила заполнения пропусков и отбраковки аномальных свечей, определяем, где хранятся исторические ряды.
- Настройка расчёта связей. Задаём окно скольжения, метрику связи, устойчивость к выбросам и порог значимости — так, чтобы результат реагировал на смену режима рынка, а не на шум.
- Проверка на исторических данных. Прогоняем расчёт на прошлых периодах, включая резкие движения, и сверяем с независимой реализацией — расхождение должно укладываться в заданную погрешность.
- Промышленный запуск и мониторинг. Настраиваем расписание пересчёта, контроль задержек поступления котировок и оповещения о пропусках, чтобы значения не залипали на устаревших данных.
- Передача регламентов и обучение команды. Отдаём документацию по источникам, правила пересчёта, инструкции по разбору сбоев и проводим разбор с вашими аналитиками.
Артефакты поставки: схемы конвейера, регламенты, документация
Комплект поставки собирается так, чтобы систему можно было эксплуатировать и развивать без нашего участия: инженер заказчика открывает схему, находит нужный узел, меняет параметр и пересчитывает витрину, не заглядывая в переписку с нами. Поэтому в артефакты входят не только исходники, но и описания принятых решений — почему окно корреляции выбрано таким, что происходит при разрыве потока котировок и где границы допустимых отклонений.
- Схема конвейера расчёта — от приёма свечей и сделок до публикации матрицы: узлы, очереди, точки сохранения состояния, поведение при пропуске интервалов.
- Регламент пересчёта — расписание плановых прогонов, окна и лаги, правила ручного перезапуска за прошлые периоды и порядок сверки результата с предыдущим срезом.
- Политики доступа к данным — роли и области видимости: кто работает с сырыми потоками, кто только с витринами, кому доступны выгрузки, как ведётся журнал обращений.
- Документация системы — описание модулей и словарь метрик (окно, лаг, коэффициент, знак связи), инструкции по развёртыванию, обновлению и откату на предыдущую сборку.
- Конфигурации — параметры источников котировок, списки отслеживаемых активов и пар, пороги срабатывания оповещений о расхождении.
- Набор проверок — тесты на корректность расчёта коэффициентов и контрольные примеры, по которым видно, что после изменений связи считаются верно.
- Регламент инцидентов — классификация сбоев, очередность действий, точки эскалации и перечень того, что чинится на стороне заказчика.
- Передача знаний — разборы архитектурных решений, доступы к репозиториям и реестру образов, контакты ответственных по каждому модулю.
Такой комплект закрывает главный риск сопровождения: изменения вносятся по документу, а не по памяти конкретного разработчика. Опишите задачу — вернёмся с оценкой и планом, включая состав этих артефактов.
Кейс: пересчёт связей в реальном времени вместо ручных таблиц
Заказчик — аналитическая группа, которая вела позиции сразу на нескольких площадках и опиралась на матрицу корреляций: какие активы движутся вместе, а какие расходятся. Матрицу собирали вручную — выгрузка котировок из CoinGecko и биржевых отчётов, формулы в таблицах, сверка глазами. На сорока с лишним инструментах полный пересчёт занимал 3–4 часа, и к моменту готовности часть связей уже успевала перестроиться.
Как было
Скользящее окно считалось по фиксированной формуле, пороги задавались константой и правились руками. Ошибка в одной ячейке тянула за собой весь вывод, а расхождение между коротким и длинным окном никто не видел до совещания. Пропущенный разрыв связи обнаруживался уже после того, как решение принято.
Что стало
Мы перенесли расчёт в сервис, который держит поток котировок и пересчитывает скользящие окна непрерывно, а результаты складывает в хранилище с историей по каждой паре. Порог вынесли в настройки: правило следит за парой и поднимает оповещение, когда её связь рвётся или меняет знак. Вместо часов задержка сократилась до секунд, ручных операций в цикле не осталось.
- задержка связи с рынком: часы → секунды;
- ручные пересчёты: ежедневная смена → ноль;
- охват: 40+ пар, две шкалы окна, история по всем;
- оповещения: по факту разбора → автоматически при разрыве связи.
За первый месяц выяснилось, что около трети «устойчивых» на длинном окне пар распадались на коротком — такие расхождения раньше просто не попадали в таблицу. Аналитик перестал быть оператором выгрузок и занялся разбором сигналов, а не заполнением ячеек. Любое оповещение проверяется по историческим данным: видно, когда связь действительно изменилась, а когда сработал шум.
Что делать, если связи между активами ломаются на смене режима?
Корреляция между активами — не постоянная величина, а параметр текущего режима. Пока рынок в спокойном тренде, связь между парами держится неделями и на ней строятся хеджевые и арбитражные конструкции. На смене режима — после резкого движения, перетока ликвидности или общей переоценки риска — знак зависимости разворачивается за часы, тогда как усреднённое окно ещё сутки показывает прежнее значение.
Поэтому система считает связь не одним числом, а набором окон разной длины — от часовых до недельных — и следит за расхождением между ними. Резкое расхождение короткого и длинного окна вместе со сменой волатильностного режима работает ранним признаком разрыва: пара не выбрасывается сразу, а уходит в карантин с пониженным весом, пока связь не подтвердится заново на свежих данных.
Второй слой — устойчивость зависимостей. Оценки считаются ранговыми методами с усечением выбросов, а порог значимости корректируется на множественность сравнений: без поправки на тысячах пар доля случайных совпадений даёт десятки ложных срабатываний в сутки. Связь признаётся рабочей, только если знак и порядок величины сохраняются на нескольких окнах, на разных горизонтах и при проверке вне выборки.
Защита от ложных сигналов живёт на уровне исполнения, а не только расчёта. Вес сигнала пропорционален текущей устойчивости пары, при разрыве связей размер позиции сокращается автоматически, а логика переводится на менее связанные инструменты. Каждая смена режима фиксируется отдельной меткой вместе с состоянием портфеля — по этой истории видно, какие правила сработали ложно, и их уточняют до следующего разворота.
Частые технические сомнения: окна, пропуски данных, новые инструменты
Технические сомнения до старта почти всегда про данные: хватит ли истории, что делать с дырами в рядах, как считать связь, когда состав инструментов меняется каждую неделю. Отвечаем на то, что чаще всего уточняют инженеры на этапе оценки — обычно это снимает большую часть вопросов ещё до расчёта.
Как считать корреляцию, если в ряду есть пропуски?
Пропуски делим на два класса: сбой источника восстанавливаем по второму поставщику и помечаем, а неторговые промежутки оставляем пустыми — заполнение назад даёт ложную синхронность. Окно считается только по меткам, где данные есть у обоих инструментов.
Как выбрать длину окна?
Окно — не одна константа, а набор: короткое ловит быстрые со-движения, длинное показывает устойчивую связь. Считаем несколько длин параллельно, чтобы видеть, где связь держится, а где распадается в шум. Длину берём от горизонта удержания позиции.
Что делать при листинге нового инструмента?
Сначала карантин: инструмент набирает историю и только потом попадает в матрицу связей. Так свежий листинг не тянет ложные связи и не сдвигает веса остальных. Рост числа инструментов учитываем заранее — число пар растёт быстрее, поэтому масштабируем расчёт по парам.
Задержки котировок ломают расчёт?
Источники отдают данные с разной задержкой, и если выравнивать их по времени получения, а не по времени события, связь смещается. Сводим ряды по метке события, а расхождение выше порога помечаем и исключаем из окна. Если поток отстаёт, инструмент временно выпадает из расчёта.
Обсудим задачу: какие данные есть и что считаем первым
Чтобы оценка и план работ опирались на факты, а не на предположения, нам нужен от вас короткий набор исходных данных. По нему мы за один проход определяем объём вычислительной части, состав интеграций и реальные сроки внедрения — без этапа «уточним потом».
- Список бирж, источников котировок и торговых пар, по которым считаем корреляции: централизованные площадки, агрегаторы, собственные потоки.
- Глубина истории и шаг свечей — от минутных до дневных, с указанием, нужна ли синхронная метка времени по всем инструментам.
- Состав инструментов: только ликвидные пары, стейблкоины, производные метрики — объёмы, волатильность, спред.
- Окна расчёта и способ нормировки: скользящие окна, лог-доходности или цены, правила обработки пропусков и разрывов в данных.
- Сценарии использования: скрининг рынка, поиск расхождений между парами, уведомления при выходе корреляции из коридора, выгрузка в вашу аналитику.
- Требования к свежести результата: сколько инструментов и как часто пересчитываем, кто и откуда смотрит отчёт.
- Доступы и инфраструктура: куда разворачиваем — ваш контур или выделенные мощности, какие есть ограничения по сети и хранению.
В ответ вы получаете оценку и план работ: этапы, состав поставки, точки приёмки и сроки внедрения с запасом на интеграцию с источниками. Опишите задачу — вернёмся с планом и уточняющими вопросами по данным.







