Как далеко вы должны оглянуться назад, чтобы предсказать следующие 5 минут?

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

Картинка может помочь представить вещи в перспективе; и если у вас хватит терпения, к концу статьи вы увидите реальные результаты. Я буду краток.

Давайте рассмотрим следующую 30-минутную временную шкалу. Прошлое представлено диапазоном 1–25, а будущее интервалом 25–30. Мы находимся на 25-й минуте и хотим предсказать какое-то значение на 30-й минуте. Существует множество стратегий: прямые, рекурсивные, гибридные, с несколькими выходами.

Но меня не так уж интересуют таксономия или технический анализ (или, по крайней мере, не определения линий тренда — не то чтобы я не согласен, просто у меня другой фокус).

Какие практические варианты у нас есть и какие различия мы отмечаем?

Мы будем использовать модель, обеспечивающую множественный выход. Эта модель последовательности может за один раз предсказать набор значений: для 26, 27, 28, 29, 30. Кроме того, вы можете выбрать, как далеко назад вы будете вводить данные в модель: последние 5 минут, последние 25 и т. д. И это это та часть, с которой мы собираемся поэкспериментировать.

Используя данные о биткойнах из моего предыдущего поста, я пролью свет на этот вопрос. И на этот раз я буду использовать AWS, а не GCP. Мне нравится модель AWS DeepAR по нескольким причинам:

  • Прозрачность (не модель черного ящика) — доступна бумага
  • Гибкость в том, как далеко назад и вперед вы можете пойти. Например, вы можете указать последние 30 минут или последние 5 минут, чтобы предсказать следующие 5 минут или следующие 10 минут.
  • Ввод данных в предварительно построенную модель позволяет нам быстро просмотреть результаты.
  • Низкая стоимость экспериментов

Чтобы быть последовательными, у нас будут одни и те же 6 функций для всех моделей (на основе сделок и рыночных ордеров). Кроме того, данные будут пересчитываться с интервалом в 1 минуту. Экземпляр/машина, используемая для обучения, — ml.m5.24xlarge для всех моделей.

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

Вот ранжирование некоторых опробованных моделей на основе RMSE на тестовых данных:

  1. 25-минутная история — 104,52
  2. 60-минутная история — 113,89
  3. 5-минутная история — 254,95
  4. История за 4 минуты — 311,08

Теперь давайте подробнее рассмотрим 18 июля 2019 года, потому что это был довольно нестабильный день в мире биткойнов.

Поскольку диаграмма станет беспорядочной, я буду отображать результаты только для 3 моделей.

Это реальный ценовой тренд.

Далее добавим один за другим каждый слой.

Начнем с 25-минутной модели истории.

Далее мы добавляем 5-минутную модель истории.

Наконец, давайте добавим 4-минутную модель истории.

Один из вопросов, на который мы хотели ответить, касался изменения тренда: можем ли мы его предсказать? Давайте рассмотрим самый большой восходящий и нисходящий тренды.

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

Восходящий тренд немного более очевиден.

Учитывая, что мы рассматриваем один день, не так просто сделать вывод, больше ли это шума или больше сигнала. И это не торговый совет.

Наконец, несколько замечаний по порядку:

  • Встроенную модель намного проще попробовать, но я все еще чувствую, что без настройки гиперпараметров (которая, хотя и доступна, я не пробовал) результат будет довольно неустойчивым. Кроме того, предварительная обработка данных, особенно для вывода, немного сложна (если вы используете dynamic_feat, вам нужно предоставить больше данных: длина (цель) + предсказание_длина)
  • Я был впечатлен Sagemaker — он дает вам все, что вам нужно для начала работы.
  • Учитывая наши интервалы, 25-минутная история даст вам лучший RMSE при попытке предсказать на 5 минут вперед.

В итоге 18 июля 2019 года был нестабильным днем, но я все еще чувствую, что эта модель с несколькими шагами/выходами не полностью отражает изменение тренда.

У меня есть еще одна идея, которую я хочу попробовать, если у меня будет время. Быть в курсе.