Обсуждение статьи "Фундаментальные предобученные модели в трейдинге: прогнозирование временных рядов с TimesFM 2.5 от Google в MetaTrader 5"

 

Опубликована статья Фундаментальные предобученные модели в трейдинге: прогнозирование временных рядов с TimesFM 2.5 от Google в MetaTrader 5:

Прогнозирование временных рядов в трейдинге прошло путь от традиционных статистических моделей, таких как ARIMA, к подходам глубокого обучения, но оба варианта требуют сложной настройки и обучения. Вдохновленная достижениями NLP, модель Google TimesFM предлагает фундаментальную предобученную модель для временных рядов, способную давать сильные прогнозы даже без обучения под конкретную задачу. Для трейдеров это особенно ценно: модель можно эффективно дообучать на собственных данных с помощью легких методов вроде LoRA, снижая переобучение и одновременно адаптируясь к меняющимся рыночным условиям.

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

Google Research дала утвердительный ответ на этот вопрос с помощью TimesFM (Time Series Foundation Model), представленной в статье "Декодерная фундаментальная модель для прогнозирования временных рядов" и принятой на ICML 2024. TimesFM — это декодерный трансформер на 200 миллионов параметров, предобученный на 100 миллиардах реальных временных точек. Несмотря на то что он значительно меньше современных LLM, он демонстрирует высокое качество прогнозирования в режиме zero-shot в разных предметных областях и на разных уровнях гранулярности. Во многих случаях он достигает результатов на уровне моделей, обученных на целевых наборах данных, или превосходит их.

Это особенно полезно для алгоритмического трейдинга, поскольку модель можно дообучать на собственных финансовых данных. Используя PEFT с адаптерами LoRA, мы можем специализировать TimesFM под конкретные инструменты, сохраняя число обучаемых параметров ниже 100 тыс. Это помогает снизить переобучение на нестационарных рыночных данных.

В этой статье мы создаем полный сквозной конвейер, который:

  1. Экспортирует данные OHLCV из MetaTrader 5 для 14 инструментов (валютные пары, индексы, сырьевые товары)
  2. Формирует богатый набор ковариат, включающий фазы Луны, события экономического календаря, торговые сессии и технические признаки
  3. Дообучает TimesFM 2.5 с адаптерами LoRA на этих финансовых данных
  4. Генерирует вероятностные прогнозы с квантильными оценками (10-й, 50-й и 90-й процентили)
  5. Экспортирует прогнозы обратно в MetaTrader 5 в виде CSV-файлов
  6. Визуализирует прогнозы прямо на графике с помощью пользовательского индикатора MQL5 с доверительными полосами


Автор: Seyedsoroush Abtahiforooshani

 

Я не специалист в этой области, поэтому непонятно, как вы подаете векторы с 40+ признаками в TimesFM, который якобы является одномерным (1 признак на точку)? Это скрыто за патчами или адаптерами? Ни то, ни другое в статье не раскрывается.

Также, если я правильно понимаю, вы обучаете и прогнозируете каждый инструмент независимо. Будет ли целесообразнее подавать все признаки для всех инструментов, чтобы прогнозировать будущий горизонт каждого инструмента? Рынок - это целая система, где каждый инструмент влияет на другие.

 
Stanislav Korotky #:

Я не специалист в этой области, поэтому непонятно, как вы подаете векторы с 40+ признаками в TimesFM, который якобы является одномерным (1 признак на точку)? Это скрыто за патчами или адаптерами? Ни то, ни другое в статье не раскрывается.

Также, если я правильно понимаю, вы обучаете и прогнозируете каждый инструмент независимо. Будет ли целесообразнее подавать все признаки для всех инструментов, чтобы прогнозировать будущий горизонт каждого инструмента? Рынок - это целая система, где каждый инструмент влияет на другие.

Настоящее совместное мультиинструментальное прогнозирование - это другая модель (например, PatchTST или Moirai с перемешиванием каналов, или TFT с кросс-серийными статическими вкраплениями), а не TimesFM. В рамках ограничений TimesFM практическим компромиссом является "добавить доходности других инструментов в качестве ковариаты" и смириться с тем, что вы слабо отражаете связь.

Вы правы, что ядро TimesFM одномерное - трансформатор токенизирует патчи одной серии. 40+ функций не входят через путь патчей. Они вводятся через отдельный механизм xreg (внешние регрессоры) в TimesFM 2.5, который в статье упоминается в вызове forecast_with_covariates:

.
point, quantiles = model.forecast_with_covariates(
    inputs=[close_context],                       # одномерный ряд
    dynamic_numerical_covariates=dynamic_numerical, # 40+ функций
    static_categorical_covariates={...},
    xreg_mode="xreg + timesfm",
)


Таким образом, существует два параллельных пути:

  • Собственно TimesFM видит только близкие серии, патченные и пропущенные через трансформатор декодера, как и было задумано.
  • Путь xreg берет ковариаты и настраивает отдельный компонент регрессии (в реализации xreg в TimesFM это, по сути, линейная/ридж-модель над ковариатами, настраиваемая на контекстное окно).

Настройка xreg_mode="xreg + timesfm" объединяет эти два компонента: TimesFM прогнозирует остаток после компонента xreg, или оба прогноза комбинируются аддитивно (в зависимости от режима). Это не патч, и это не адаптеры в смысле LoRA - адаптеры здесь используются только для тонкой настройки весов трансформатора TimesFM, совершенно отдельно от того, как потребляются ковариаты.
 
Здравствуйте, я заметил, что библиотека PEFT не доступна в реализации, показанной в этой статье. совместима ли HF PEFT с этой статьей?