GaiaEx AcademyGaiaEx Academy
Time Series Forecasting para sa Crypto Trader
DeveloperAI & ML12 min read

Time Series Forecasting para sa Crypto Trader

Pagtantiya ng galaw ng presyo gamit ang sequence models

Ibahagi ang mga Post

Pag-unawa sa Time Series Data

Ang time series ay isang sequence ng data points na naka-order ayon sa oras — stock prices sa bawat minuto, daily na Bitcoin closes, hourly na temperature readings. Ang naghihiwalay sa time series mula sa ibang data ay mahalaga ang order. Walang epekto ang pag-shuffle ng rows sa isang classification dataset; sinisira ng pag-shuffle sa isang time series ang kahulugan nito.

Tatlong properties ang nagtutukoy sa karakter ng kahit anong time series. Ang Trend ay ang long-term na direksyon — gumalaw ang presyo ng BTC mula $3,000 noong maagang 2019 papunta sa $60,000 sa huling bahagi ng 2021, isang malinaw na upward trend. Ang Seasonality ay tumutukoy sa mga umuulit na pattern sa fixed intervals — madalas makita sa crypto markets ang tumaas na volume sa panahon ng US market hours at bumabang activity sa weekends. Ang Stationarity ay ibig sabihin ang statistical properties gaya ng mean at variance ay nananatiling constant sa oras. Karamihan sa financial time series ay non-stationary — lumalayo ang presyo pataas o bumabagsak — na naglilikha ng mga hamon para sa models na ipinapalagay ang stable distributions.

Bago pakainin ang financial data sa kahit anong model, kailangan mo itong i-transform. Ang pagkuha ng log returns (ang natural log ng price ratios sa pagitan ng consecutive periods) ay nagkokonverte ng non-stationary prices papunta sa approximately stationary returns. Ang Differencing — ang pagbawas sa previous value — ay nakakamit ng katulad na epekto. Hindi optional ang mga transformation na ito; kailangan ang mga ito para gumana nang tama ang karamihan ng forecasting methods.

Decomposing a financial time series (conceptual) Trend Seasonal wiggle time → Observed = trend + seasonality + noise (returns often stabilize noise)
Pinaghahalo ng totoong prices ang mabagal na drift, umuulit na pattern, at randomness — pinapuntahan ng mga model ang bahaging gusto mong hulaan.

ARIMA: Ang Classical na Baseline

Ang ARIMA (AutoRegressive Integrated Moving Average) ang naging workhorse ng time series forecasting sa loob ng mga dekada. Pinagsasama nito ang tatlong bahagi: ginagamit ng AR(p) ang previous na p values para hulaan ang susunod, ang I(d) ay nag-difference ng series nang d beses para makamit ang stationarity, at ang MA(q) ay nag-model ng error terms mula sa past predictions.

Para sa financial data, nagsisilbi ang ARIMA bilang isang kritikal na baseline. Ang kahit anong machine learning model na hindi kayang talunin ang isang well-tuned na ARIMA sa specific na dataset mo ay nagdadagdag ng complexity nang walang halaga. Sa totoong buhay, madalas na nakakagulat na maayos ang performance ng ARIMA para sa short-horizon na forecasts ng low-frequency na data (daily o weekly candles) kung saan manageable ang signal-to-noise ratio.

# 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

Nagiging obvious ang mga limitasyon ng ARIMA sa complex na nonlinear na patterns, regime changes, at high-dimensional na feature spaces. Dito pumapasok ang deep learning.

ARIMA(p,d,q): how past values and errors feed the forecast AR(p) y uses yt-1…t-p I(d) d differences MA(q) errors εt-1…t-q ŷt+1 forecast Pick (p,d,q) with ACF/PACF, AIC, or rolling CV — then compare to ML baselines. Financial returns often set d=0 when using log-returns directly
Pinagsasama ng autoregression, integration (differencing), at moving-average shocks sa isang compact na linear forecast engine.

LSTM Networks para sa Sequence Modeling

Ang Long Short-Term Memory (LSTM) networks ay isang uri ng recurrent neural network na dinisenyo para matuto ng long-range dependencies sa sequential data. Kaiba sa vanilla RNNs, na nagdadanas ng vanishing gradients at nakakalimot ng information pagkatapos ng ilang time steps lang, gumagamit ang LSTMs ng gating mechanism — forget gate, input gate, at output gate — para selectively na panatilihin o itapon ang information sa daan-daang steps.

Para sa financial time series, nag-alok ang LSTMs ng dalawang advantage sa ARIMA: puwede nilang i-model ang nonlinear relationships (bihirang linear ang price dynamics), at puwede nilang isama ang maraming input features nang sabay-sabay — hindi lang past prices, pero volume, volatility, funding rates, order book imbalance, at kahit anong signal na naniniwala kang may predictive information.

Nangangailangan ang paghahanda ng data para sa LSTM ng maingat na windowing. Gumagawa ka ng input sequences ng fixed length (halimbawa, 60 time steps) na ipapares sa target value (ang susunod na price o return). Kritikal ang Normalization — i-scale ang features papunta sa [0, 1] o i-standardize papunta sa zero mean at unit variance. Pero ito ang trap: dapat mo i-fit ang scaler sa training data lang at i-transform ang validation at test data gamit ang parehong parameters. Ang pag-fit sa buong dataset ay nagtatagas ng future information.

Kailanman huwag mag-normalize gamit ang statistics na kinalkula mula sa buong dataset. I-fit ang scaler mo sa training set lang, tapos i-apply ito sa validation at test sets. Ang solong pagkakamaling ito ay nag-cause ng mas maraming look-ahead bias kaysa sa kahit anong ibang data preparation error.

# 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)

Attention Mechanisms at Temporal Fusion Transformers

Ang parehong self-attention mechanism na nagrebolusyon sa natural language processing ay napatunayang kasing-makapangyarihan para sa time series. Sa halip na iproseso ang sequences step-by-step gaya ng isang LSTM, pinapayagan ng attention ang model na tumingin sa lahat ng time steps nang sabay-sabay, natututuhan kung aling historical moments ang pinaka-relevant para hulaan ang future.

Ang Temporal Fusion Transformer (TFT), na ipinakilala ng Google Research noong 2021, ay purpose-built para sa multi-horizon na time series forecasting. Pinagsasama nito ang ilang innovations:

  • Variable selection networks — Automatic na natutuhan kung aling input features ang pinakamahalaga, nagbibigay ng built-in na interpretability. Puwede mong makita kung mas umaasa ang model sa price momentum, volume, o funding rates.
  • Gated residual networks — Pinipigilan ang irrelevant na inputs at pinapayagan ang model na hawakan ang complex na nonlinear feature interactions.
  • Multi-head attention over time — Ini-identify kung aling historical time steps ang pinaka-informative para sa bawat prediction horizon.
  • Quantile outputs — Nagbunga ng prediction intervals (10th, 50th, 90th percentiles) sa halip na point estimates, nagbibigay sa iyo ng sukatan ng uncertainty — mahalaga para sa risk management sa trading.

Sa totoong buhay, na-outperform ng TFTs ang LSTMs at traditional models sa mga benchmark kasama ang electricity demand forecasting, retail sales prediction, at financial volatility modeling. Para sa crypto markets na accessible sa mga platform gaya ng GaiaEx, ang kakayahan ng TFT na iproseso ang heterogeneous na inputs — static metadata (asset type, listing date), known future values (day of week, time of day), at observed time-varying features (price, volume, on-chain metrics) — ay ginagawa itong particularly na bagay.

Practical na Halimbawa: Paghula sa Direksyon ng Presyo ng BTC

Maging honest tayo sa kung ano ang achievable. Ang paghula sa eksaktong presyo ng Bitcoin bukas ay essentially imposible. Sinasabi ng efficient market hypothesis (EMH) na nakapaloob na ang lahat ng available information sa presyo, ginagawang isang fool's errand ang consistent prediction. Sa crypto, debatable ang weak form ng EMH — mas hindi efficient ang markets kaysa sa equities — pero brutal pa rin ang noise-to-signal ratio.

Isang mas realistic na layunin ang directional accuracy: magsasara ba ang BTC sa mas mataas o mas mababa kaysa sa binukasan nito? Mas tractable ang binary classification problem na ito, at kahit modest na pagpapahusay sa 50% accuracy (halimbawa, 53–55% consistently) ay puwedeng highly profitable sa proper na position sizing at risk management.

Ito ang hitsura ng isang practical na pipeline:

  • Features: 60-period returns, RSI, MACD histogram, Bollinger Band width, volume ratio (kasalukuyan vs. 20-period average), funding rate mula sa perpetual futures, BTC dominance, at open interest change.
  • Model: Two-layer LSTM na may 128 hidden units, dropout na 0.3, sinusundan ng isang dense layer na may sigmoid activation para sa binary classification.
  • Split: Mag-train sa 2020–2023, mag-validate sa Jan–Jun 2024, mag-test sa Jul–Dec 2024. Kailanman huwag mag-shuffle — palaging mag-split chronologically.
  • Evaluation: Directional accuracy, precision/recall sa up vs. down predictions, at — pinakamahalaga — simulated P&L na ipinapalagay ang fixed na position size kada signal.

Kung nakamit ng model mo ang 54% directional accuracy sa out-of-sample test set na may profit factor sa itaas ng 1.2, may isang bagay ka na sulit pang saliksikin. Kung 65% accuracy ang ipinapakita nito, malamang ay overfit na ito. Maliit ang totoong edges sa financial markets, at ang sinumang nagsasabi ng kabaligtaran ay may binebenta na iba.

Evaluation Metrics at Ensemble Approaches

Ang pagpili ng tamang metric ay tumutukoy kung tama ang bagay na iyong ginawang optimization target. Sinasabi sa iyo ng MAE (Mean Absolute Error) ang average magnitude ng prediction errors mo sa parehong units ng data mo — intuitive pero hindi nito pinaparusahan nang disproportionate ang malalaking errors. Ang RMSE (Root Mean Squared Error) ay nag-square ng errors bago mag-average, malakas na pinaparusahan ang outliers — angkop kapag ang isang catastrophic na misprediction ay mas mahalaga kaysa sa maraming maliit. Sinusukat ng Directional accuracy ang percentage ng pagkakataon na tama ang hula ng model mo kung tumaas o bumaba ang presyo — madalas na pinaka-relevant na metric para sa trading signals.

Ang Ensemble methods ay pinagsasama ang predictions mula sa maraming model para bawasan ang variance at pahusayin ang robustness. Kasama sa mga karaniwang approach:

  • Simple averaging — I-average ang predictions ng isang LSTM, isang Transformer, at isang ARIMA. Kung kumukuha ang bawat model ng ibang aspeto ng signal, mas maganda ang performance ng ensemble kaysa sa kahit anong individual na model.
  • Stacking — Mag-train ng meta-model (halimbawa, isang gradient-boosted tree) para matuto ng optimal na combination ng base model predictions.
  • Regime-aware switching — Gamitin ang isang volatility regime detector para pumili kung aling model ang pagkakatiwalaan. Puwedeng excel ang isang LSTM sa trending markets habang mas maganda ang isang mean-reversion model sa ranging conditions.

Kahit anong approach ang gamit mo, tandaan na malawak ang gap sa pagitan ng research at production. Kailangang mag-survive sa latency, slippage, at transaction costs ng isang model na naghuhula ng direksyon ng BTC nang 55% accuracy sa isang Jupyter notebook kapag na-execute nang live sa pamamagitan ng isang platform gaya ng GaiaEx. Buuin ang evaluation pipeline mo para i-simulate ang mga realidad na ito mula sa unang araw — hindi bilang isang afterthought.