Недавно генеральный директор и президент BlueSky Capital прочитал гостевую лекцию в классе нашего директора Тима Люна по трейдингу 17 октября. Мне был любопытен результат в статье BlueSky Capital Машинное обучение в финансах: почему вы не должны использовать LSTM для прогнозирования фондового рынка. Поэтому я использовал метод и процедуру анализа, которые я изучил из книги Машинное обучение в финансах, чтобы использовать модели рекуррентной нейронной сети для анализа исторических внутридневных ценовых данных о биткойнах.

Рассмотрим одномерный прогноз на основе столбца Adj Close в наборе данных. Для каждой входной последовательности мы прогнозируем значения на 5 временных шагов в будущем.

Параметры:

  1. Исторические 1-минутные данные: с 2018–1–1 12:00:00 до 2020–10–27 00:02:00.
  2. Модели: Simple-RNN, GRU, LSTM.
  3. Количество слоев: 1
  4. Количество нейронов: 10
  5. Количество шагов (длина временного ряда): 8
  6. Количество шагов вперед (горизонт прогнозирования): 5
  7. max_epochs = 1000
    batch_size = 1000

Шаг 1. Неподвижный

Важно определить, является ли временной ряд «стационарным», поэтому я выполняю расширенный тест Дики-Полла с доверительным интервалом 99%.

Здесь были проверены на стационарность первые 200 000 образцов.

Значение p намного выше 0,1, поэтому это указывает на то, что временной ряд является нестационарным.

Шаг 2: Выбор модели

Оценка коэффициента частичной автокорреляции (PACF) была выполнена для определения количества лагов в модели временных рядов. Мы можем использовать пакет stattools для выполнения этой работы.

В результате было предложено выбрать 8 лагов для данных этого временного ряда (внутридневные исторические данные биткойнов за 1 минуту).

Другой способ выбрать лаги для модели временных рядов — нарисовать диаграмму PACF следующим образом:

Шаг 3: Формирование данных для RNN (самая важная часть!)

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

Например,

предположим, что у вас есть данные временного ряда, такие как:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15

Преобразованные данные должны выглядеть так:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

2, 3, 4, 5, 6, 7, 8, 9, 10, 11

3, 4, 5, 6, 7, 8, 9, 10, 11, 12

4, 5, 6, 7, 8, 9, 10, 11, 12, 13

5, 6, 7, 8, 9, 10, 11, 12, 13, 14

6, 7, 8, 9, 10, 11, 12, 13, 14, 15

Шаг 4: Поиск оптимальных параметров в моделях

На этом этапе для оптимизации параметров n_units(количество нейронов) и l1_reg(regularizer) для каждой из моделей была выполнена перекрестная проверка поиска по сетке с использованием обучающий набор данных. (Примечание. Никогда не включайте тестовый набор данных в перекрестную проверку поиска по сетке, чтобы избежать утечки данных.)

Вот мои выводы (после почти недели эксплуатации моего бедного ноутбука!):

Простой RNN: { ‘’1l_reg’: 0, ‘n_units: 25}

ГРУ: { ‘’1l_reg’: 0, ‘n_units: 25}

LSTM: { ‘’1l_reg’: 0, ‘n_units: 25}

Шаг 5: Обучите модели с выбранными параметрами и сделайте прогнозы

Примените подобранные модели RNN к набору данных для обучения и набору данных для тестирования отдельно.

Шаг 6: Оценка модели

Наблюдаемые и модельные результаты (обучение)

Наблюдаемая и модельная ошибка (обучение)

Наблюдаемые и модельные результаты (тестирование)

Наблюдаемая ошибка по сравнению с ошибкой модели (тестирование)

Результат, полученный BlueSky Capital, выглядит следующим образом:

Эти результаты показывают, что LSTM не может предсказать стоимость на следующий день на фондовом рынке. Фактически, лучшее предположение, которое может сделать модель, — это значение, почти идентичное цене текущего дня.

Однако, если мы немного увеличим диаграмму, Observed vs. Выходы модели (тестирование). Очевидно, что заявление BlueSky Capital неверно. Если линии предсказаний модели сместятся по горизонтали на 60*24 (1 день содержит 60*24 минуты) шагов назад, они не будут пересекаться с линией наблюдаемых цен.

Вывод:

Модели временных рядов, такие как модель, связанная с RNN, простая RNN, GRU и LSTM, сильно зависят от непрерывности представленного набора данных. Набор данных, использованный в этой статье, представлял собой 1-минутные исторические внутридневные данные, тогда как набор данных, используемый Bluesky Captial, представлял собой ежедневные исторические данные. Причина, по которой прогнозы модели Bluesky Captial были очень близки к последней цене закрытия, может заключаться в возможной ошибке переобучения.

Модели рекуррентной нейронной сети позволяют прогнозировать цены акций.

Никогда не прекращайте учиться!

Ссылка:

[1] https://www.blueskycapitalmanagement.com/machine-learning-in-finance-why-you-should-not-use-lstms-to-predict-the-stock-market/

[2] https://towardsdatascience.com/illustrated-guide-to-recurrent-neural-networks-79e5eb8049c9

[3] Диксон М., Гальперин И., Билокон П. Машинное обучение в финансах: от теории к практике. 2020, стр. 240–257.