
Прогнозування часових рядів для крипто-трейдерів
Прогнозування рухів ціни за допомогою секвенційних моделей
Розуміння даних часового ряду
Часовий ряд — це послідовність точок даних, впорядкованих за часом: ціни акцій щохвилини, денні закриття Bitcoin, погодинні показники температури. Що відрізняє часовий ряд від інших типів даних — порядок має значення. Перемішування рядків у наборі даних для класифікації нешкідливе; перемішування часового ряду руйнує його зміст.
Три властивості визначають характер будь-якого часового ряду. Тренд (trend) — це довгостроковий напрямок: ціна BTC рухалась від $3000 на початку 2019 до $60 000 наприкінці 2021 — очевидний тренд зростання. Сезонність (seasonality) означає патерни, що повторюються з фіксованими інтервалами — крипто-ринки часто бачать зростання обсягу під час торгових годин США і знижену активність на вихідних. Стаціонарність (stationarity) означає, що статистичні властивості, такі як середнє й дисперсія, залишаються постійними в часі. Більшість фінансових часових рядів нестаціонарні — ціни дрейфують вгору чи обвалюються — що створює труднощі для моделей, які припускають стабільні розподіли.
Перед тим як подавати фінансові дані в будь-яку модель, їх потрібно трансформувати. Взяття логарифмічної дохідності (log returns) (натурального логарифма співвідношень цін між послідовними періодами) перетворює нестаціонарні ціни у приблизно стаціонарну дохідність. Диференціювання — віднімання попереднього значення — дає подібний ефект. Ці трансформації не опціональні; вони є передумовою для правильної роботи більшості методів прогнозування.
ARIMA: класичний базовий рівень
ARIMA (авторегресія-інтеграція-ковзна середня) десятиліттями була робочою конякою прогнозування часових рядів. Вона поєднує три компоненти: AR(p) використовує попередні p значень для прогнозування наступного, I(d) диференціює ряд d разів для досягнення стаціонарності, а MA(q) моделює члени похибки з минулих прогнозів.
Для фінансових даних ARIMA слугує критичним базовим рівнем. Будь-яка модель машинного навчання, яка не може перевершити добре налаштований ARIMA на вашому конкретному наборі даних, додає складність без цінності. На практиці ARIMA часто показує на диво хорошу роботу для короткострокових прогнозів низькочастотних даних (денні чи тижневі свічки), де відношення сигнал/шум керовне.
# ARIMA baseline for BTC daily returns
from statsmodels.tsa.arima.model import ARIMA
import pandas as pd
returns = prices.pct_change().dropna()
model = ARIMA(returns, order=(2, 0, 1)) # AR(2), no differencing (returns already stationary), MA(1)
fitted = model.fit()
forecast = fitted.forecast(steps=5)
print(f"AIC: {fitted.aic:.2f}") # Lower AIC = better model
Обмеження ARIMA стають очевидними при складних нелінійних патернах, зміні режимів і просторах ознак високої розмірності. Саме тут на сцену виходить глибоке навчання.
Мережі LSTM для моделювання послідовностей
Long Short-Term Memory (LSTM) — це тип рекурентної нейронної мережі, спроєктований для навчання далекодіючих залежностей у послідовних даних. На відміну від звичайних RNN, які страждають від зникаючих градієнтів і забувають інформацію вже через кілька кроків часу, LSTM використовують механізм ворот — ворота забування (forget gate), ворота входу (input gate) та ворота виходу (output gate) — щоб вибірково зберігати чи відкидати інформацію протягом сотень кроків.
Для фінансових часових рядів LSTM пропонують дві переваги над ARIMA: вони можуть моделювати нелінійні залежності (динаміка ціни рідко лінійна), і вони можуть одночасно включати кілька вхідних ознак — не лише минулі ціни, а й обсяг, волатильність, ставки фінансування, дисбаланс книги ордерів та будь-який інший сигнал, який ви вважаєте прогностично цінним.
Підготовка даних для LSTM вимагає ретельного вікнування (windowing). Ви створюєте вхідні послідовності фіксованої довжини (наприклад, 60 кроків часу), поєднані з цільовим значенням (наступна ціна чи дохідність). Нормалізація критична — масштабуйте ознаки до [0, 1] або стандартизуйте до нульового середнього й одиничної дисперсії. Але тут криється пастка: ви повинні підганяти скейлер лише на тренувальних даних і трансформувати валідаційні та тестові дані, використовуючи ті самі параметри. Підганяння на повному наборі даних призводить до витоку майбутньої інформації.
Ніколи не нормалізуйте, використовуючи статистику, обчислену з усього набору даних. Підганяйте скейлер лише на тренувальному наборі, потім застосовуйте його до валідаційного і тестового наборів. Ця єдина помилка спричиняє більше упередження заглядання в майбутнє (look-ahead bias), ніж будь-яка інша помилка підготовки даних.
# LSTM data preparation with proper normalization
import numpy as np
from sklearn.preprocessing import MinMaxScaler
def create_sequences(data, window=60):
X, y = [], []
for i in range(window, len(data)):
X.append(data[i - window:i])
y.append(data[i, 0]) # Predict next close
return np.array(X), np.array(y)
# Fit scaler on training data ONLY
scaler = MinMaxScaler()
train_scaled = scaler.fit_transform(train_data)
test_scaled = scaler.transform(test_data) # Transform, don't fit
X_train, y_train = create_sequences(train_scaled)
X_test, y_test = create_sequences(test_scaled)Механізми уваги і Temporal Fusion Transformers
Той самий механізм самоуваги (self-attention), що зробив революцію в обробці природної мови, виявився не менш потужним для часових рядів. Замість обробки послідовностей крок за кроком, як LSTM, увага дозволяє моделі дивитись на всі кроки часу одночасно, вивчаючи, які історичні моменти найбільш релевантні для прогнозування майбутнього.
Temporal Fusion Transformer (TFT), представлений Google Research у 2021 році, побудований спеціально для мультигоризонтного прогнозування часових рядів. Він поєднує кілька інновацій:
- Мережі вибору змінних (variable selection networks) — Автоматично вивчають, які вхідні ознаки найважливіші, забезпечуючи вбудовану інтерпретованість. Ви можете побачити, чи модель більше покладається на ціновий імпульс, обсяг чи ставки фінансування.
- Ворітні залишкові мережі (gated residual networks) — Пригнічують нерелевантні входи і дозволяють моделі обробляти складні нелінійні взаємодії ознак.
- Багатоголова увага в часі — Визначає, які історичні кроки часу найбільш інформативні для кожного горизонту прогнозування.
- Квантильні виходи — Створюють інтервали прогнозу (10-й, 50-й, 90-й перцентилі) замість точкових оцінок, надаючи вам міру невизначеності — необхідну для управління ризиком у торгівлі.
На практиці TFT перевершили LSTM і традиційні моделі на бенчмарках, включно з прогнозуванням попиту на електроенергію, прогнозуванням роздрібних продажів і моделюванням фінансової волатильності. Для крипто-ринків, доступних через платформи як GaiaEx, здатність TFT обробляти гетерогенні входи — статичні метадані (тип активу, дата листингу), відомі майбутні значення (день тижня, час дня) та спостережувані змінні в часі ознаки (ціна, обсяг, ончейн-метрики) — робить його особливо придатним.
Практичний приклад: прогнозування напрямку ціни BTC
Будьмо чесними щодо того, що досяжне. Прогнозування точної ціни Bitcoin на завтра практично неможливе. Гіпотеза ефективного ринку (EMH) стверджує, що ціни вже відображають усю доступну інформацію, роблячи стабільне прогнозування дурним заняттям. У крипті слабка форма EMH є дискусійною — ринки менш ефективні, ніж акції — але співвідношення шуму до сигналу залишається жорстким.
Більш реалістична мета — точність напрямку (directional accuracy): закриється BTC вище чи нижче, ніж відкрився? Ця задача бінарної класифікації більш розв'язна, і навіть скромні покращення понад 50% точності (скажімо, стабільні 53–55%) можуть бути дуже прибутковими за належного розміру позиції та управління ризиком.
Практичний пайплайн виглядає так:
- Ознаки: 60-періодна дохідність, RSI, гістограма MACD, ширина смуг Боллінджера, коефіцієнт обсягу (поточний проти 20-періодного середнього), ставка фінансування з перпетуальних фʼючерсів, домінування BTC, і зміна відкритого інтересу.
- Модель: двошаровий LSTM з 128 прихованими одиницями, dropout 0,3, за яким слідує повнозвʼязний шар з сигмоїдною активацією для бінарної класифікації.
- Розбиття: тренування на 2020–2023, валідація на січень–червень 2024, тестування на липень–грудень 2024. Ніколи не перемішуйте — завжди розбивайте хронологічно.
- Оцінка: точність напрямку, точність/повнота (precision/recall) на прогнозах зростання проти падіння, і — найважливіше — симульований P&L, за умови фіксованого розміру позиції на кожен сигнал.
Якщо ваша модель досягає 54% точності напрямку на позавибірковому тестовому наборі з профіт-фактором понад 1,2, у вас є щось варте подальшого дослідження. Якщо вона показує 65% точності, ви майже точно перенавчили модель. Реальні переваги на фінансових ринках невеликі, і будь-хто, хто стверджує інакше, продає вам щось інше.
Метрики оцінки та ансамблеві підходи
Вибір правильної метрики визначає, чи оптимізуєте ви правильну річ. MAE (середня абсолютна похибка) повідомляє середню величину ваших похибок прогнозу в тих самих одиницях, що і ваші дані — інтуїтивно, але не карає диспропорційно за великі похибки. RMSE (корінь із середньоквадратичної похибки) підносить похибки до квадрата перед усередненням, суворо караючи за викиди — доречно, коли одна катастрофічна помилка прогнозу важливіша, ніж багато малих. Точність напрямку вимірює відсоток разів, коли ваша модель правильно прогнозує, чи піде ціна вгору чи вниз — часто найрелевантніша метрика для торгових сигналів.
Ансамблеві методи поєднують прогнози кількох моделей для зниження дисперсії й підвищення стійкості. Поширені підходи включають:
- Просте усереднення — Усереднення прогнозів LSTM, Transformer та ARIMA. Якщо кожна модель захоплює різні аспекти сигналу, ансамбль перевершує будь-яку окрему модель.
- Стекінг — Тренування метамоделі (наприклад, дерева з градієнтним бустингом) для вивчення оптимальної комбінації прогнозів базових моделей.
- Перемикання з урахуванням режиму — Використання детектора режиму волатильності для вибору, якій моделі довіряти. LSTM може відзначатись у трендових ринках, тоді як модель повернення до середнього перевершує в діапазонних умовах.
Незалежно від обраного підходу, памʼятайте, що розрив між дослідженням і виробництвом величезний. Модель, що прогнозує напрямок BTC з точністю 55% у Jupyter-ноутбуці, повинна пережити латентність, сліпедж і транзакційні витрати при виконанні наживо через платформу як GaiaEx. Будуйте свій пайплайн оцінки, щоб симулювати ці реальності з першого дня — а не як додумку в кінці.


