Соавторы: Марина Голдман, Nissieltb
Мы стремимся создать стратегию свинговой торговли для криптовалюты Биткойн (BTC), которая работает лучше, чем покупка и удержание ( HODL) и стратегии, основанные на случайном блуждании. В окончательной модели каждые 12 часов должен выдаваться сигнал удержания/остановки.

Мы делаем это на основе прошлых цен (в долларах США). Для этого мы попробовали модели классификации временных рядов машинного обучения (ML), используя наивную и основанную на тенденциях маркировку данных и прогнозирование временных рядов.

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

Мы оценили производительность на 3 различных наборах проверок и тестов:

  1. Разнообразный рынок (1 января – 21 июля – 1 июля 21 года) – рынок содержит как медвежьи, так и бычьи периоды
  2. Медвежий рынок (15 марта 21–1 июля 21) — нисходящий тренд
  3. Бычий рынок (15 июля – 21 июля – 1 ноября 21 года) — восходящий тренд
  4. Выдерживаемый набор тестов (1 ноября – 21 ноября – 15 февраля – 22 февраля)

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

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

Исследование данных:

Почасовые данные о цене BTC были получены с использованием пакета yfinance, а затем уменьшены до 12-часовой частоты.

from datetime import date
import pandas as pd
import yfinance as yf
data = yf.download(tickers='btc-usd', start=START_DATE), end=END_DATE, interval='1h')
data_downsampled = data['Open'].iloc[(data.index.hour == 0) | (data.index.hour == 12)]

Всего 3458 тайм-очков. В данных нет пропущенных значений.

Прогноз временного ряда

Данные были разделены на обучающую и тестовую выборку с точкой отсечки 1 июля 2021 года.

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

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

Сначала мы решили попробовать модель ARIMA с несколькими параметрами. После изучения тенденции данных было решено использовать первый дифференциал, чтобы получить стационарные входные данные для модели (подтвержденные также p-значением). Изучив графики автокорреляции и частичной автокорреляции, мы решили попробовать параметры модели.

К сожалению, модель ARIMA с различными гиперпараметрами не превзошла базовую модель.

Мы продолжили изучение моделей экспоненциального сглаживания (простой, двойной и тройной). Гиперпараметры, которые были настроены, были сезонными_периодами, тенденциями, сезонными. Наилучшие результаты для BTC были получены для тройной модели (Holt-Winter) с параметрами: Season_periods=2, trend=’add’, Season=’add’. Для других гиперпараметров производительность модели была хуже, чем у базовой модели (случайное блуждание).

Из-за волатильного характера такого актива дисперсия временного ряда также менялась (не стационарно), мы решили применить модель GARCH к остаткам наиболее эффективной модели (Холта-Винтера) и добавить прогнозирование отклонения к прогнозируемому значению. Чтобы изучить параметры GARCH, мы проверили PACF остатков из модели экспоненциального сглаживания. На графике ниже мы решили использовать GARCH (1,1). Эта последовательность моделей превзошла базовую модель с точки зрения RMSE.

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

Мы решили искать минимальный и максимальный пороги прогнозируемого коэффициента изменения цены. Ниже минимального порога коэффициента изменения цены — сигнал «на продажу», выше максимального порога сигнал «покупка», а в промежутке между диапазонами текущее состояние должно сохраняться. Мы изучили различные пороговые значения, чтобы найти оптимальный диапазон для нескольких проверочных наборов (разнообразных, медвежьих, бычьих) и сравнили доходность в эти периоды с доходностью по принципу «купи и держи». Мы наблюдали удивительную и странную картину прогнозируемого коэффициента изменения цены, которая не позволяла обеспечить хороший выбор диапазона. Кажется, что предсказания модели экспоненциального сглаживания имеют плавный характер с изменением в очень небольшом диапазоне. Кроме того, наша модель демонстрирует странное поведение при наблюдении за Change Ratio — останавливаясь на колеблющихся постоянных значениях. Эту закономерность можно увидеть на рисунках ниже.

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

Часть 2. Классификация с простой маркировкой

Часть 3. Классификация с маркировкой тенденций

Этот проект является нашим последним проектом в группе Israel Tech Challenge — Data Science 21 октября.