Рынок Forex остаётся одним из самых ликвидных сегментов финансовой системы, где данные обновляются непрерывно, а решения часто принимаются в условиях неопределённости. Классические подходы к анализу котировок (технические индикаторы, свечные модели, статистические оценки) активно применяются, однако в прикладной аналитике всё чаще возникает потребность в инструментах поиска аналогов: какие исторические участки движения цены наиболее похожи на текущую ситуацию и как развивались события после них.
Задача поиска похожих участков относится к поиску последовательностей во временных рядах и на практике оказывается вычислительно затратной: прямой перебор всех окон требует O(n*m) операций, где n - длина ряда, m - длина искомого паттерна. Для реальных данных Forex такой подход неприемлем в интерактивном режиме.
Дополнительная сложность связана с природой финансовых временных рядов: высокая шумовая составляющая, микроструктурные эффекты и локальные выбросы затрудняют сопоставление “по форме”. Поэтому актуальным становится комбинированный подход:
снизить влияние шума с помощью сглаживания;
сравнивать форму, а не уровень, используя нормализацию;
ускорить поиск, применив FFT-ускоренные методы.
Пусть задан временной ряд котировок (например, ряд цен закрытия)
T={t1,t2,…,tn}, и пользовательский запрос (выделенный фрагмент на графике)
Q={q1,q2,…,qm}, m≪n. Требуется найти позиции i в ряду T, где последовательность Ti={ti,ti+1,…,ti+m−1}максимально похожа на Q. Мера схожести формально задаётся расстоянием: D(i)=dist(Q,Ti).
Задача поиска топ-k совпадений сводится к вычислению профиля расстояний D(i) для всех допустимых i и выбору минимальных значений с учётом исключения перекрытий.
Финансовый ряд содержит быстрые колебания, которые могут не отражать устойчивых закономерностей, но влияют на численные меры расстояния. В прикладных задачах важно уменьшить дисперсию без сильного искажения формы паттерна. Один из простых и устойчивых методов — экспоненциальное скользящее среднее (EMA):
yt=αxt+(1−α)yt−1, α∈(0,1], где xt — исходный сигнал (например, Close), yt — сглаженный сигнал, α — коэффициент сглаживания.
Интерпретация параметра α:
малое α (например, 0.05–0.2) сильнее подавляет шум, но повышает инерционность;
большое α (например, 0.3–0.7) лучше сохраняет краткосрочные изменения, но слабее фильтрует шум.
Практически важная деталь для аналитического интерфейса: пользователь должен видеть реальную котировку, поэтому на графике отображается исходный ряд xt, а поиск выполняется по сглаженному yt . Это сохраняет доверие к данным и одновременно повышает устойчивость алгоритма сопоставления.
Котировки могут иметь похожую динамику при разном уровне цены и амплитуде колебаний. Поэтому сравнение “в лоб” по евклидовой метрике часто некорректно: фрагменты одной формы, но разных масштабов, будут казаться далёкими.
Распространённое решение — z-нормализация (стандартизация) последовательностей. Для окна X={x1,…,xm}:
(1)
(2)
(3)
После этого сравнивается по евклидовому расстоянию:
(4)
Преимущество такого подхода: алгоритм фокусируется на геометрии движения (паттерне), а не на абсолютных показаниях.
Прямой расчёт D(i) для каждого окна требует вычисления суммы из m слагаемых для каждого из (n−m+1) окон:
(5)
При n∼106 и m∼500 это сотни миллионов операций — не подходит для интерактивных приложений.
MASS (Mueen’s Algorithm for Similarity Search) вычисляет профиль расстояний эффективно, используя то, что ключевая операция в евклидовой метрике — скользящее скалярное произведение запроса и окон ряда. Скалярные произведения для всех сдвигов можно получить через свёртку, а свёртка эффективно вычисляется в частотной области:
(6)
где — FFT, — обратное FFT.
Сложность такого вычисления:
(7)
что радикально быстрее O(nm) при больших n.
Если известны:
скалярные произведения
(8)
скользящие средние μ(i) и стандартные отклонения σ(i) окон Ti,
то z-нормированная дистанция восстанавливается без явного перебора всех m точек в каждом окне. Практически это означает, что после FFT-шага остаются лишь линейные по n операции вычисления μ(i), σ(i) и подстановки в формулу.
Результат MASS — это профиль расстояний D(i). Минимумы этого профиля указывают на позиции, где ряд наиболее похож на запрос. В прикладном интерфейсе удобно показывать не “расстояние”, а “схожесть” в диапазоне [0,1]. Простой вариант нормировки:
(9)
где C — коэффициент масштаба (часто берут C ≈ 2 как “разумный” диапазон для z-нормированных окон). Такая шкала интуитивна: S → 1 означает близкое совпадение формы, S → 0 — существенные различия.
Чтобы избежать выдачи “дубликатов” (почти одинаковых совпадений со сдвигом на несколько точек), применяют:
эксклюзионную зону вокруг исходного выделения;
подавление перекрывающихся совпадений (не выбирать окна, пересекающиеся с уже выбранными).
Главное практическое преимущество MASS — работа на больших исторических рядах. Аналитик может:
визуально проверить совпадения;
связать их с контекстом рынка (волатильность, новости, сессии);
сравнить “что было потом” после исторических аналогов.
Z-нормализация делает поиск ориентированным на форму движения. Это особенно важно на Forex, где абсолютные уровни могут меняться, а паттерны повторяются в относительном выражении.
Сглаживание (EMA) снижает влияние микрошумов и делает расстояние более структурным: совпадения определяются формой трендов/разворотов, а не случайными тиками. При этом показ сырых данных сохраняет прозрачность.
Из недостатков данного метода можно выделить:
MASS сравнивает последовательности одинаковой длины. Если интересуют паттерны разной длительности, требуется другой слой логики.
Если один паттерн “растянут/сжат” по времени, евклидова метрика может дать плохое совпадение.
Слишком сильное сглаживание может стереть полезные микроструктурные признаки. На практике α подбирают эмпирически под таймфрейм и задачу.
Прототип пользовательского интерфейса с реализованным алгоритмом MASS представлен на рис.1. Данный прототип обеспечивает все ключевые функции, такие как вывод графика котировок, установка коэффициента сглаживания, выбор окна поиска, представление схожих последовательностей с выводом меры подобия.
Рисунок 1 – пример пользовательского интерфейса для поиска схожих последовательностей в интерактивном режиме
Комбинация сглаживания и быстрого поиска схожих последовательностей с использованием MASS представляет собой эффективный и интерпретируемый подход к анализу котировок Forex. Предварительная фильтрация (например, EMA) повышает устойчивость к шуму, а z-нормализация смещает фокус сравнения на форму движения цены. Алгоритм MASS обеспечивает вычислительную эффективность и делает возможным интерактивный анализ больших исторических рядов: пользователь может выделить интересующий фрагмент на графике и быстро получить несколько наиболее похожих “исторических аналогов” с численной оценкой совпадения.
Практическая ценность метода заключается в том, что он занимает промежуточное место между простыми индикаторами и сложными обучаемыми моделями: оставаясь математически строгим и быстрым, он позволяет аналитикам и исследователям строить проверяемые гипотезы о повторяемости рыночных сценариев и использовать результаты в рамках более широких систем.
Список литературы
Мусаев, А.А., Моделирование хаотических процессов на рынках капитала // А.А. Мусаев, И.А. Барласов. - Санкт-Петербург: Труды СПИИРАН. 2008. № 7. С. 255–264.
Keogh E., Zhu Y. Matrix Profile Tutorial (Part 2): Distance Profiles / MASS [Электронный ресурс]. — Режим доступа: https://www.cs.ucr.edu/~eamonn/Matrix_Profile_Tutorial_Part2.pdf (дата обращения: 25.01.2026).
Matrix Profile Foundation. mass-ts: Mueen’s Algorithm for Similarity Search (MASS) [Электронныйресурс]. — Режимдоступа: https://github.com/matrix-profile-foundation/mass-ts (датаобращения: 25.01.2026).
Иванова, Е.В., Внедрение концепции матричного профиля в реляционную СУБД для интеллектуального анализа временных рядов // Е.В. Иванова, М.Л. Цымблер. – Челябинск: Вестник ЮУрГУ. Серия Вычислительная математика и информатика. 2021. Т. 10, № 3. С. 72–87