Pull to refresh

Проверка теории повторяемости биржевых графиков

Level of difficultyMedium
Reading time3 min
Views2.8K

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

В частности, на эту мысль натолкнул трейдер Игорь Андреев, который в своём ТГ-канале часто прикладывает участки графика из прошлого, тем самым предполагая, куда пойдёт цена.

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

В общем, вызов принят. Попробуем проверить данную теорию имеющимися средствами Python.

Качаем исторические данные OHLCV с ByBit Spot по случайным 30 монетам из топ-50 CoinMarketCap. Тесты будем проводить на 1-минутном таймфрейме.

Открываем графики и вручную подбираем участки, совпадения с которыми будем потом искать в исторических данных. В качестве среднестатистического паттерна выбирались падающие участки с яркими всплесками по объёмам, которые в последующем корректировались на 0.4–0.5 от падения.

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

Так как паттерны подбирались на разных монетах и бэктесты с ними также будут проходить на разных монетах, значения паттернов OHLCV приводились к относительным величинам от 0 до 1.

Общая логика бэктестов

Ищем совпадения с паттерном в исторических данных.

Сравнение двух участков разных графиков проводилось стандартными средствами Python:
- Cosine (косинусное сходство)
- Pearsonr (коэффициент корреляции Пирсона)
- Spearmanr (коэффициент корреляции Спирмена)
- Euclidean (евклидово расстояние)
- Cityblock (манхэттенское расстояние)
- Mean Squared Error (MSE, среднеквадратичная ошибка)
- Mean Absolute Error (MAE, средняя абсолютная ошибка)
- Mahalanobis (расстояние Махаланобиса)
- Jensenshannon (дивергенция Дженсена — Шеннона)

В результате серии тестов в качестве наиболее корректного был выбран метод Cosine.
Коэффициенты степени совпадения также подбирались опытным путём.

Берём эталонный паттерн, исторические данные какой-то монеты (1-минутный таймфрейм) и итерируемся по каждой свече. На каждом шаге берётся участок графика, равный по длине паттерну, приводится также к относительным величинам, чтобы сравнение было корректным. Сравниваем.

Если паттерн совпадал с текущим участком графика с требуемой точностью — имитируем заход в лонг-позицию:

  • стоп-лосс — под минимум;

  • тейк-профит — 0.4–0.5 коррекции от падения;

  • риск/профит — 1 к 3;

  • далее отслеживаем результат сделки (закрываем сделку в плюс или минус).

Первичные результаты

Всего проведено более 3000 тестов на ~300 паттернах. В тестах использовались исторические данные 30 монет из CMC-50. Средняя длина данных на монету — ~1.8 млн минутных свечей (чуть более 3-х лет).

В 30% тестов WinRate (соотношение прибыльных сделок к убыточным) составляет более 25%. То есть в 1/3 тестов математическое ожидание положительное, так как RR = 1/3.

  • Средний WinRate (avg): 22.3%

  • Медианный WinRate: 21.7%

Это выше гипотетической случайной стратегии с RR 1:3, которая обычно даёт ~15-17% WinRate.

  • Стандартное отклонение (stddev): 10.5%

Что говорит о высокой дисперсии: часть паттернов даёт слабый результат, но есть и устойчиво прибыльные.

Удачные результаты тестов выглядят так:

Но есть и такие:

Ну и что дальше-то?

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

Тестовое отслеживание некоторых паттернов в реальном времени реализовано в моём ТГ-канале.

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

Если эта идея вам откликается — пишите, делитесь и следите за продолжением.

Tags:
Hubs:
Total votes 6: ↑5 and ↓1+4
Comments9

Articles