Базовое желание человека — знать что будет дальше. Какая завтра погода, в какое время не будет пробок, сколько будет стоить нефть и бакс. Было бы удобно провести быстрый анализ с LLM, ведь у каждого есть доступ хотя бы к одной нашумевшей нейросетке.
Тем более LLM уже может прогнозировать будущее! Ниже вы можете посмотреть результаты прогноза для разных временных рядов из статьи Large Language Models Are Zero Shot Time Series Forecasters.
Остается лишь вопрос, а можно ли лучше? Давайте разберемся!

Всем привет, я Арсений, DS в Raft. Сегодня я расскажу Вам как стать профессиональным аналитиком и предсказать куда пойдет график с помощью LLM. Ну или хотя бы попытаться им стать. Если LLM могут предсказывать следующее слово и генерировать для нас связные тексты на любой запрос, может они могут предсказать следующие несколько значений, например, курса валют. А мы бы уже заработали на этом. Или нет?..
“Это Вам не текст!”
Что вообще такое временной ряд? Это любая последовательность значений во времени. Например, температура, или график ценных бумаг. В общем все что можно измерить с в различные периоды времени. Временные ряды имеют важные показатели как тренд и сезонность.
Тренд – это общее направление изменения данных со временем. Если значения постоянно растут или падают, значит, есть тренд. Например, средняя температура Земли постепенно повышается – это восходящий тренд.
Сезонность – это регулярные колебания, которые повторяются через определенные промежутки времени. Например, зимой повышается спрос на отопление, а летом – на мороженое.
Кроме тренда и сезонности, во временных рядах могут быть случайные колебания (шум) и долгосрочные циклы. Анализ таких данных помогает прогнозировать погоду, цены, спрос на товары и многое другое.
Как же можно применить способности LLM для такого формата данных? Я просмотрел много свежих статей с топовых конференций NeuralIPS, ICLR где применяют LLM и трансформерные архитектуры для решения задач временных рядов. Более подробный обзор статей можно найти в конце, а остановился я на той статье, в которой авторы добились наиболее точных предсказаний.
Time-LLM: Time Series Forecasting by Reprogramming Large Language Models
Time-LLM – это метод, который позволяет использовать большие языковые модели (LLMs) для предсказания временных рядов без их дообучения (звучит неплохо, не тратим кучу времени и денег на видеокарты), но с перепрограммированием входных данных. В отличие от других подходов, которые требуют полной адаптации модели под данные, Time-LLM замораживает веса языковой модели (в статье GPT-2 или LLama-7B) и использует специальные преобразования входных и выходных данных, чтобы привести их в удобный для LLM формат.

Верхнеуровнево это выглядит так. Входная последовательности временного ряда разбивается на патчи с помощью настраиваемого слоя внедрения патчей (1 в архитектуре). Затем эти патчи переводятся в языковую задачу с помощью слоя перепрограммирования (2 и 3 в архитектуре). Дополнительно добавляется промпт с описанием задачи и ключевыми признаками (4 в архитектуре) для увеличения способности модели к рассуждению. На выходе модели патчи проецируются в формат временного ряда (5 в архитектуре).
Рассмотрим более детально каждый из шагов.
Патчи

При патчинге временной ряд разбивается на L/S групп временных промежутков, где L – длина последовательности, S – длина шага. Это сокращает количество токенов при подаче в следующих слой перепрограммирования, а так же дает представление о локальной семантической информации, рассматривая несколько значений сразу. Затем идет слой перепрограммирования.
Слой Перепрограммирования

Данный слой переводит входной временной ряд из набора чисел в текстовое представление, которое обычно и ожидает на вход LLM. Для описания колебания целевой переменной во временных патчах используется определенный словарный запас. Получается текст на естественным языком, например: “long up, then steady down”.
Затем этот текст передается в embedding слой и затем уже в multi-head слои замороженной LLM.
Слой перепрограммирования обучается под специальный набор данных или может быть обучен на общих данных использовать Time-LLM как zero-shot предсказатель.
Prompt-as-Prefix

Помимо самого временного ряда, модели предоставляется промпт с описанием домена задачи, определенные инструкции и статистические показатели временного ряда. Например, как на рисунке:
-
общее описание данных: ETT – температура трансформатора электроэнергии
-
специфика домена: Когда ожидаются пики, описание сезонности.
-
инструкция: сколько значений предсказать
-
статистическое описание: минимум и максиму в пределах которых происходит колебание, общий тренд, медиана и т.д.
Общее описание пользователь может менять в зависимости от задачи. Горизонт предсказания и длина входной последовательности задаются при запуске с учетом данных, а статистические значения рассчитываются автоматически. Обратите внимание, что 5 основных задержек рассчитываются с использованием быстрого преобразования Фурье, которое в основном использует входные данные и преобразует их в график зависимости амплитуды от частоты. Частоты с наибольшими амплитудами являются наиболее важными.
Благодаря такому промпту, LLM получает контекстное представление о задаче и временном ряде, а также инструкции по предсказанию следующих значений.

В итоге, промпт и перепрограммированные данные объединяются и подаются на вход модели.
Выходной слой
Выходные патчи проецируются в числовые представления с помощью линейного слоя и возвращаются как временной ряд пользователю. Этот слой тоже обучаемый, как и слой перепрограммирования.
Технические особенности Time-LLM
-
Замороженные Слои: Модель не обучается, что снижает количество обучаемых параметров. Например, для Llama (32) обучаемы параметры составляют 6,39M, по сравнению с 50,29M для QLoRA.
-
Гиперпараметры:
-
Эпохи — 100.
-
Глубина LLM — 32 слоя.
-
Длина входа T — 512.
-
Размерность патча — 16.
-
Количество голов K — 8.
-
Оптимизатор Adam.
-
Скорость обучения от 0.001 до 0.02 s/iter.
-
Размер батча настраиваемый от 8 до 32.
-
Мои тесты с Time-LLM
Я решил проверить код статьи и запустить Time-LLM на базе новой модели LLama-3.2-3B. Она вышла относительно недавно и является первой моделью в семействе LLama с числом параметров меньше 7 миллиардов. У модели из статьи и выбранной мной отличается размерность слоя эмбеддинга, поэтому при обучении слоя перепрограммирования и выходного слоя число обучаемых параметров снижается до ≈ 4.8 млн обучаемых параметров. Это ускоряет процесс обучения и экономит память. Что касается данных, в статье лучшие результаты получились на данных ETTh1 – температуры трансформатора электроэнергии, замеряемой раз в час, поэтому я взял этот датасет. Вычисления я производил на RTX 4090 (24GB).
Обучение Time-LLM
Сперва я склонировал репозиторий. В их коде было не так просто разобраться, и пришлось поменять несколько файлов, чтобы запустить весь процесс.
В файл с моделями TimeLLM.py добавил LLama-3.2-3B.
<...>
elif configs.llm_model == 'LLAMA-3.2':
self.llama_config = LlamaConfig.from_pretrained("unsloth/Llama-3.2-3B")
self.llama_config.num_hidden_layers = configs.llm_layers
self.llama_config.output_attentions = True
self.llama_config.output_hidden_states = True
try:
self.llm_model = AutoModelForCausalLM.from_pretrained(
pretrained_model_name_or_path="unsloth/Llama-3.2-3B",
trust_remote_code=True,
local_files_only=False,
config=self.llama_config,
# load_in_4bit=True
)
except EnvironmentError: # downloads model from HF is not already done
print("Local model files not found. Attempting to download...")
self.llm_model = AutoModelForCausalLM.from_pretrained("unsloth/Llama-3.2-3B",
trust_remote_code=True,
local_files_only=False,
config=self.llama_config,
# load_in_4bit=True #deprecated
)
try:
self.tokenizer = AutoTokenizer.from_pretrained("unsloth/Llama-3.2-3B",
trust_remote_code=True,
local_files_only=True
)
except EnvironmentError: # downloads the tokenizer from HF if not already done
print("Local tokenizer files not found. Atempting to download them..")
self.tokenizer = AutoTokenizer.from_pretrained("unsloth/Llama-3.2-3B",
trust_remote_code=True,
local_files_only=False
)
В скрипту обучения TimeLLM_ETTh1.sh настроил гиперпараметры под модель Llama-3.2-3B:
-
Входные данные: 512 чисел (–seq_len), модель предсказывает 96 следующих значений (–pred_len).
-
Функция потерь: MSE
-
Метрики: MSE и MAE.
-
Эпох: 50 (ранняя остановка при 10 эпохах без улучшения валидационного лосса).
-
Размер датасета: Train / Val / Test = (8545, 2881, 2881).
-
batch_size: 16.
-
Используемые слои LLama (l–lama_layers): 28 (в статье использовали 32, т.к. модель была больше).
model_name=TimeLLM
train_epochs=50
learning_rate=0.01
llama_layers=28
master_port=29400
num_process=1
batch_size=16
d_model=256
d_ff=512
comment='TimeLLM-ETTh1'
accelerate launch --mixed_precision bf16 --num_processes $num_process --main_process_port $master_port run_main.py
--task_name long_term_forecast
--is_training 1
--root_path ./dataset/ETT-small/
--data_path ETTh1.csv
--model_id ETTh1_512_96
--model $model_name
--data ETTh1
--features M
--seq_len 512
--label_len 48
--pred_len 96
--factor 3
--enc_in 7
--dec_in 7
--c_out 7
--des 'Exp'
--itr 1
--d_model $d_model
--d_ff $d_ff
--batch_size $batch_size
--learning_rate $learning_rate
--llm_layers $llama_layers
--train_epochs $train_epochs
--model_comment $comment
Что получилось в итоге:
-
Среднее время на итерацию: ~0.57 секунд.
-
MSE (Train): 0.384
-
MSE (Test): 0.401
-
MAE (Test): 0.423
-
Эпохи: 17, из-за срабатывания ранней остановки
Как это соотносится с результатами из статьи?
В статье использовали 32 слоя против 28 и больший размер модели – 8B против 3B, и тренировали больше эпох — 100 вместо 17. Всего обучение заняло около 10 часов.
Финальные результаты в статье чуть лучше чем у меня: MSE 0.362 против 0.401. Но с учетом того, что я использовал меньше слоев и меньше времени на обучение, мой результат получился очень близким.
Результаты также оказались лучше чем в статье Time Series Forecasting with LLMs: Understanding and Enhancing Model Capabilities, где с использованием перефразирования похожей техники перефразирования временного ряда в текст авторы получили MSE 1.21 и MAE 0.48.

Даже с урезанной конфигурацией Time-LLM работает эффективно и показывает точность на уровне оригинального эксперимента. Однако это трудно назвать быстрым и универсальным решением, поскольку заняло очень много времени на перепрограммирование, а также решение тяжело обобщается, т.к. всю настройку я производил только для одного набора данных, непосредственно ETTh1.
А можно ли проще?
Как стало понятно из предыдущего вывода, даже обучение не всей модели, а лишь ее части — процесс небыстрый. Поэтому да здравствует сила промптинга! Я решил исследовать способности модели к zero‑shot предсказанию временных рядов. Следующее решение имеет некоторые преимущества по сравнению с Time‑LLM:
-
Модели во много раз больше тех, что были в статье и в моем эксперименте (На
-
Подробные промпты и системные инструкции
-
Гораздо более быстрый ответ без затрат времени на обучение.
На это решение меня подтолкнула еще Time Series Forecasting with LLMs: Understanding and Enhancing Model Capabilities. Авторы исследуют как модель анализирует временные ряды представленные в числовом виде и с небольшим промптом с дополнительной информацией, а затем использует метод, где перефращирует временной ряд в словесное описание, по типу “Значение снизилось с X_i до X_i+1, и выросло от X_i+1 до X_i+2”. Эксперименты показали, что GPT-3.5, GPT-4-turbo-preview, Gemini-Pro-1.0 и Llama-2-13B показывают лучшие результаты на данных с четко выраженными трендами и сезонностью, но сталкиваются с трудностями на данных с несколькими периодами или отсутствием ярко выраженных паттернов. На некоторых датасетах авторам удалось достичь лучших результатов чем классическим моделями предсказания временных рядов, однако это все еще не SOTA решение.
Я решил провести свой эксперимент, в котором подаю модели временные данные без изменений, пользовательский промпт с описанием задача, а также системный промпт. Я так же провел много экспериментов с версиями промптов и форматом данных, в том числе с преобразованием данных в текстовый вариант, как описано выше. Однако результаты были на том же уровне, что и при обычном прогоне с прямой подачей промпта и чисел. Сравнивать буду o3-mini и новые модели от DeepSeek, чатовую V3 и reasoning модель R1. Данные пока оставлю те же — ETTh1. Системный промпт задает модели роль аналитика временных рядов, пользовательский вводит в контекст конкретных данных. На вход все так же даю последовательность 512 температурных значений, ожидая получит 96 предсказаний. Для усреднения делаю прогон 10 раз и беру медиану.
Системный промпт:
"You are a highly skilled time series forecasting assistant with expertise in financial market analysis. Your role is to provide precise and context-aware predictions based solely on the numerical patterns in historical data trends. Assume you are an analyst at Vanguard Total Bond Market, specializing in interpreting financial and operational time series data. Always emulate the behavior of an advanced time series prediction model, considering statistical methods, trend analysis, seasonality, and plausible ranges. When responding, output only a list of predicted numbers in the format [value1, value2, ...] with no additional text or explanation."
Пользовательский промпт:
"The Electricity Transformer Temperature (ETT) dataset contains time-series data with "oil temperature" as the target value and 6 power load features. Given this context, simulate the next {pred_len} (exactly this amount) values with 16 digits based on the trend in input_sequence using your best analytical skills. Output only a list of numbers, formatted as [value1, value2, ...], with values separated by commas. Provide values that are plausible and within the range of the existing data. Never start your answer with "I'm sorry" or "I can't" etc.n input_sequence:n{input_sequence}"
На рисунке ниже видно, что результаты медианного предсказания намного хуже, чем при предыдущем способе с перепрограммированием модели – MSE: 2.095, MAE: 1.048. Однако среди 10 предсказаний есть очень успешные, и рисунке видно, что для одного из 10 предсказаний o3-mini заметила сезонность в данных и продолжила ее, с небольшой разницей в пиковых точках с метриками MSE: 0.479 и MAE: 0.498. Среди этих 10 предсказаний был еще один хороший результат с MSE: 0.658 и MAE: 0.566. Это конечно сравнимо с результатами полученными при дообучении LLama-3.2-3B которое я делал выше, и это очень круто.
Без дообучения буквально за один промпт получил предикт, который получался со сложным дообучением модели. Однако это один из редких случаев, когда модель так четко сгенерировала ответ. Способность есть но нет детерминации.

Что касается DeepSeek моделей, то V3 показал результат, похожий по качеству на o3-mini. Опять таки, это одно предсказание, но неплохо для zero-shot, неправда ли?
Результаты DeepSeek V3 сравнимы со статьей Time Series Forecasting with LLMs: Understanding and Enhancing Model Capabilities, где получили похожие результаты на тех же данных (на GPT-4-Turbo: MSE=1.2, MAE=0.49).
В отличие от V3, DeepSeek R1 — умная модель с reasoning’м — выдал откровенную чушь, хоть в своем рассуждении он и пытается найти сезонность и тренд, но в итоге сводит все к тому, что будет просто прибавлять малое значение, увеличивая каждое следующее значение, по типу арифметической прогрессии.

Как это можно применить?
Ладно, температура масляного трансформатора в энергосистемах не так интересна простому обывателю и он не сталкивается с ней в реальной жизни. Может можно применить LLM для спекулятивного заработка? Для данных решил взять что-нибудь более прикладное и интересное.
Например график хайповой криптовалюты $TRUMP. Я сам слежу за криптой и сделал на этой монетке 3х, продав перед инаугурацией Трампа. Сейчас курс обрушился, монета стоит на месте как и весь рынок. Однако не мог же 47 президент США просто всех заскамить? Я верю в то что монетка отрастет, давайте посмотрим, какие прогнозы дают LLM на базе графика монеты.
Итак в качестве данных попробуем часовой график $TRUMP. По имеющейся последовательности значений input_sequence (монета вышла 19 января 2025 года, поэтому input_sequence
будет не такой большой) будем предсказывать pred_length=96
часов или на 4 дня вперед, вдруг мы сможем предугадать неожиданный рост. Используем промпт пользователя с дополнительной информацией о графике, а так же системный промпт с указанием роли. Сравнивать я буду две свежие reasoning модели, делая по 10 обращений к O3-mini и DeepSeek R1. Для сбалансированного ответа я беру медиану предсказанных значений.
Системный промпт:
"You are a highly skilled time series forecasting assistant with expertise in financial market analysis. Your role is to provide precise and context-aware predictions based solely on the numerical patterns in historical data trends. Assume you are an analyst at Vanguard Total Bond Market, specializing in interpreting financial and operational time series data. Always emulate the behavior of an advanced time series prediction model, considering statistical methods, trend analysis, seasonality, and plausible ranges. When responding, output only a list of predicted numbers in the format [value1, value2, ...] with no additional text or explanation."
Пользовательский промпт:
"""TRUMP Coin is a memecoin associated with political branding and speculative trading, often experiencing high volatility.nGiven this context, simulate the next {pred_len} (exactly this amount) values based on the trend in the input_sequence using your best analytical skills. Output only a list of numbers, formatted as [value1, value2, ...], with values separated by commas. Never start your answer with "I'm sorry" or "I can't" etc.n input_sequence:n{input_sequence}nn**labels:** (Hidden)"""

Результаты не вселяют надежды.
Может LLM сможет лучше проанализировать что-то с чем она явно познакомилась во время своего обучения, а именно Bitcoin? Поскольку на момент cut-off знаний в ноябре 2023 o3-mini точно знала об этой фундаментальной криптовалюте.
Системный промпт оставим тот же, только меняется само описание крипто валюты в промпте пользователя. Так же возьмем дневной график на 365 значений, попытаемся предсказать следующие 56 дневных закрытий. Видно что обе модели не делают сильных отклонений и стараются просто продолжить линию опираясь на последнее значение ряда. Модель не может заметить никакой трендовой зависимости и технический анализ можно считать провальным.

Заглянем в будущее
Можно еще посмотреть на случаи предсказание без сравнения с уже имеющимися данными, а просто от текущей даты спрогнозировать следующие pred_len
значений.
Ради интереса для TRUMP взял 672 часа (или 28 дней) а для BTC взял 56 дней (или же примерно 2 месяца)

Временные Ряды ПРОТИВ ЛЛМ
Подытожу. Несмотря на бесконечный поток новых моделей и комментарии к релизам про скорый AGI и замену всех и всего ИИ, постепенно вау эффект от LLM снижается. Если раньше при простом запросе мы удивлялись: «Ого, оно умеет в написание кода» (это был бойлерплейт код) XD, то теперь наши аппетиты и запросы растут, и зачастую, подавая моделям сложные запросы, мы видим, что как говорил классик «Ваши ожидания — Ваши проблемы».
Вы скажете почему у меня были ожидания, что ЛЛМ будут хороши на абсолютно не своем домене – временных рядах? Я отвечу – я такой же ленивый человек как и все и хочу решать сложные задачи пассивного заработка щелчком пальцев. Пока не вышло. Однако безусловно можно отметить прогресс Time-LLM. Авторы статьи молодцы, что это действительно рабочий подход, а не очередной папирус, но подход слишком трудозатратный. Пока рано говорить о применении ЛЛМ именно как next-time-series-value-prediction, но как о хорошем анализаторе текстовых данных касающихся рынков, активов и прочего безусловно. А дальше уже решение за вами. Ну а пока используем классические методы предсказания временных рядов и откупаем биток! Всем до встречи.
Мои эксперменты и скрипты с описанием можете найти у меня в репозитории.
P.S.
Поскольку результаты с промптингом получались не столь удачные, у меня возникали различные гипотезы, как можно было бы улучшить результаты.
Гипотеза 1. Добавить в промпт примеры того же графика, но за другой промежуток времени.
Это своего рода попытка few-shot’а модели, аля смотри как было, давай попробуй так же. Данные я добавлял в пользовательский промпт вот так:
Дополнение промпта:
"""
I will give you an example of the same graphic from the past. Pay attention to the following example.
You can analyze the fluctuations of the price and how the price changed by comparing the two sequences:
price_before: {closing_example}
price_after: {closing_prices_next}
"""
Предсказания производились для трех таймфреймов — день, часы, минуты
-
День: –time_period 60 –pred_len 30
-
Часы: –time_period 256 –pred_len 48
-
Минуты: –time_period 256 –pred_len 60
По результатам вышло, что особо улучшения нельзя получить. Разве, что в минутном таймфрейме получилось что-то более адекватное, но все равно далеко от правды.

Гипотеза 2. Добавить в промпт информации про техники работы с временными рядами.
Данный подход призван стриггерить модель вспомнить методы работы с временными рядами, которые она запомнила в процессе претрейна. Пользовательский промпт расширяется описанием техник характерных для временных данных. Включает в себя скользящее среднее, полосы Боллинджера, Фурье и Вейвлет анализ, часто применяющийся для анализа сигналов, а также классические методы по типу ARIMA.
Дополнение промпта
"""
### Time Series Analysis Techniques:
To simulate the next {args.pred_len} values accurately, consider key forecasting methods:
- Moving Averages (SMA, EMA, WMA): Identify trends while preserving price movement amplitude.
- Bollinger Bands & Volatility Models: Capture rapid price swings and sudden trend reversals.
- Fourier & Wavelet Analysis: Detect periodic patterns and high-frequency fluctuations.
- Autoregressive Models (ARIMA, GARCH): Model trend shifts and price momentum.
### Simulation Guidelines:
- Pay special attention to all values in input_sequence—each point carries meaningful trend information.
- Keep up with the amplitude of previous fluctuations; maintain the scale of peaks and drops. MAKE STEEP UPWARDS AND DOWNS.
- Ensure high volatility representation by incorporating sharp reversals and momentum-driven shifts.
- Avoid excessive smoothing—Bitcoin is known for sudden price spikes and breakdowns.
Now, simulate the next {args.pred_len} values while following these characteristics.
"""

Гипотеза 3. Использовать временные данные с более ярко выраженной сезонностью.
Как видно из эксперимента с ETT в некоторых генерациях удается довольно хорошо предсказать данные. Это может быть связано с тем, что данные имеют характерны колебания в течение дня, ночью спрос падает, днем растет. Модель видит эту закономерность и продолжает ее.
Данные с ярко выраженной сезонностью — график цен на природный газ. Сезонность графика связана с периодами заполнения газовых хранилищ, а также покупкой его зимой для отопления.
Я использовал только месячные значения, чтобы лучше можно было проследить сезонность. В качестве входных данных – цена за последние 9 лет по месяцам, а в качестве выходных – 4 года по месяцам и сравниваю с лейблами. Меняется пользовательский промпт для газа, системный остается такой же как во всех экспериментах.
Пользовательский промпт
"""Given the historical price movement of Natural Gas (NATGAS/USD), this asset follows strong seasonal cycles and is heavily influenced by supply-demand factors, weather conditions, and energy policies.
**Key Considerations for Natural Gas Trends:**
1. Winter Demand: Prices typically spike in winter (October–March) due to heating needs.
2. Summer Demand: Power plant usage increases for cooling, affecting demand but to a lesser extent.
3. Storage Reports: Weekly US Energy Information Administration (EIA) storage reports create strong fluctuations.
4. Weather Forecasts: Extreme cold or heat can cause sudden price spikes due to unexpected demand.
5. Production & Exports: LNG (Liquefied Natural Gas) exports, geopolitical conflicts, and supply chain disruptions also impact prices.
**Output Requirements:**
Simulate the next {pred_len} values while accounting for seasonal cycles, volatility, and macroeconomic sentiment.
Output only a list of numbers formatted as [value1, value2, ...], separated by commas.
input_sequence:
{input_sequence}
"""

Гипотеза 4. Подавать входную последовательность в текстовом формате.
Это частый прием, который я заметил в статьях, в том числе в Time Series Forecasting with LLMs: Understanding and Enhancing Model Capabilities. Во входной последовательности явно прописывается движение цены, например: “Цена упала с X_{i} до X_{i+1}”. Данный эксперимент тоже не увенчался успехом.
Все гипотезы не оправдали себя и значительного улучшения получить не удалось.
Кого интересует эта тема ниже прикрепляю ссылки на 2 статьи, которые мне особенно приглянулись.
P.P.S.
Кого интересует эта тема еще прикреплю ссылки на 2 статьи, которые мне понравились в процессе ресерча.
SOCIODOJO: BUILDING LIFELONG ANALYTICAL AGENTS WITH REAL-WORLD TEXT AND TIME SERIES
Авторы вводят понятие задачи гиперпортфеля. Цель гиперпорфеля — максимизировать общую стоимость активов путем точного анализа поступающих данных и прогнозирования их изменений. Авторы создают систему из трех агентов: аналитика, ассистента и актуатора, которые принимают решения об “инвестициях” в различные активы, представленные временными рядами, на основе экономических, финансовых, социальных и политических данных. Например, если агент получает новость о том, что экономика одной из стран начинает расти, он может решить “инвестировать” в временной ряд, отражающий экономический показатель этой страны, ожидая, что в будущем его стоимость вырастет. Эмулируя торговлю в реальном времени они смогли достичь доходности в 11% на минутных данных.
Large Language Models Are Zero Shot Time Series Forecasters
Авторы применяют технику zero-shot для моделей GPT-3.5, GPT-4, LlaMA2-70b. Данные временного ряда преобразовывались в последовательность цифр, разделенных пробелом и запятыми.

Среди популярных датасетов были Darts, Monash и Informer, содержащие данные о потреблении тех или иных продуктов и тд.
Так же применялись параметры alpha и beta использовались для масштабирования входных данных временных рядов, чтобы адаптировать их для обработки языковыми моделями. Эти параметры применялись для управления масштабом и сдвигом значений временных рядов. Параметр alpha контролирует минимальный уровень сдвига данных, а beta отвечает за регулирование пределов значений временных рядов, чтобы данные лучше вписывались в контекст модели. Это позволило моделям, таким как GPT-3 и GPT-4, работать с данными, имеющими разные порядки величин, без потери точности в прогнозировании.
Модели проявили хорошие результаты в особенности на синтетических данных (графики функций):

Автор: parseny