GaiaExGaiaEx
크립토 트레이더를 위한 시계열 예측
개발자AI & ML12 min read

크립토 트레이더를 위한 시계열 예측

시퀀스 모델로 가격 움직임 예측하기

게시물 공유

시계열 데이터 이해하기

시계열(time series)은 시간 순서로 정렬된 데이터 포인트의 나열입니다 — 매분마다의 주가, 일일 비트코인 종가, 시간별 온도 측정값 등입니다. 시계열을 다른 데이터와 구분하는 것은 순서가 중요하다는 점입니다. 분류 데이터셋의 행을 뒤섞는 것은 무해하지만, 시계열을 뒤섞으면 그 의미가 파괴됩니다.

세 가지 속성이 모든 시계열의 성격을 규정합니다. 트렌드(trend)는 장기적인 방향입니다 — BTC의 가격은 2019년 초 $3,000에서 2021년 말까지 $60,000로 움직였는데, 이는 명확한 상승 트렌드입니다. 계절성(seasonality)은 고정된 간격에서 반복되는 패턴을 가리킵니다 — 크립토 시장은 흔히 미국 시장 개장 시간대에 거래량이 증가하고 주말에는 활동이 줄어드는 모습을 보입니다. 정상성(stationarity)은 평균과 분산 같은 통계적 속성이 시간이 지나도 일정하게 유지되는 것을 뜻합니다. 대부분의 금융 시계열은 비정상적(non-stationary)입니다 — 가격은 위로 표류하거나 급락합니다 — 이는 안정적인 분포를 가정하는 모델에 어려움을 만들어 냅니다.

금융 데이터를 어떤 모델에 넣기 전에, 이를 변환해야 합니다. 로그 수익률(log returns)(연속된 기간 사이 가격 비율의 자연로그)을 취하면 비정상적인 가격을 근사적으로 정상적인 수익률로 바꿀 수 있습니다. 차분(differencing) — 이전 값을 빼는 것 — 도 비슷한 효과를 냅니다. 이러한 변환은 선택이 아니라, 대부분의 예측 방법이 제대로 작동하기 위한 필수 전제조건입니다.

Decomposing a financial time series (conceptual) Trend Seasonal wiggle time → Observed = trend + seasonality + noise (returns often stabilize noise)
실제 가격은 완만한 표류, 반복 패턴, 무작위성을 섞어 놓은 것입니다 — 모델은 여러분이 예측하고자 하는 부분을 겨냅니다.

ARIMA: 고전적인 베이스라인

ARIMA(자기회귀누적이동평균, AutoRegressive Integrated Moving Average)는 수십 년간 시계열 예측의 주력 도구였습니다. 이는 세 가지 요소를 결합합니다 — 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의 한계는 복잡한 비선형 패턴, 국면 전환, 고차원 특징 공간에서 명백해집니다. 이 지점에서 딥러닝이 등장합니다.

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
자기회귀, 누적(차분), 이동평균 충격이 결합되어 하나의 간결한 선형 예측 엔진을 이룹니다.

시퀀스 모델링을 위한 LSTM 네트워크

장단기 메모리(Long Short-Term Memory, LSTM) 네트워크는 순차 데이터에서 장거리 의존성을 학습하도록 설계된 순환 신경망의 한 유형입니다. 기울기 소멸에 시달리고 단지 몇 단계 만에 정보를 잊어버리는 일반적인 RNN과 달리, LSTM은 망각 게이트(forget gate), 입력 게이트(input gate), 출력 게이트(output gate)라는 게이팅 메커니즘을 사용해 수백 단계에 걸쳐 정보를 선택적으로 유지하거나 폐기합니다.

금융 시계열에서 LSTM은 ARIMA보다 두 가지 장점을 지닙니다 — 비선형 관계를 모델링할 수 있고(가격 동역학은 선형인 경우가 거의 없습니다), 여러 입력 특징을 동시에 포함할 수 있습니다 — 과거 가격뿐 아니라 거래량, 변동성, 펀딩비, 오더북 불균형, 그리고 예측 정보를 담고 있다고 생각되는 다른 어떤 신호든 포함할 수 있습니다.

LSTM을 위해 데이터를 준비하려면 신중한 윈도잉(windowing)이 필요합니다. 고정된 길이(예: 60개의 시간 단계)의 입력 시퀀스를 목표값(다음 가격이나 수익률)과 짝지어 만듭니다. 정규화(normalization)는 매우 중요합니다 — 특징을 [0, 1] 범위로 스케일링하거나 평균 0, 분산 1로 표준화합니다. 하지만 여기에 함정이 있습니다 — 스케일러는 반드시 훈련 데이터에만 맞춰야(fit) 하고, 같은 파라미터를 사용해 검증 및 테스트 데이터를 변환(transform)해야 합니다. 전체 데이터셋에 맞추면 미래 정보가 유출됩니다.

전체 데이터셋에서 계산한 통계량을 사용해 정규화하지 마십시오. 스케일러는 훈련 세트에만 맞추고, 그다음 이를 검증 및 테스트 세트에 적용하십시오. 이 단 하나의 실수가 다른 어떤 데이터 준비 오류보다 더 많은 미리보기 편향(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 Transformer

자연어처리에 혁신을 가져온 것과 같은 셀프 어텐션(self-attention) 메커니즘이 시계열에서도 동일하게 강력함이 입증되었습니다. LSTM처럼 시퀀스를 단계별로 처리하는 대신, 어텐션은 모델이 모든 시간 단계를 동시에 살펴보게 하여, 어떤 과거 순간이 미래를 예측하는 데 가장 관련이 있는지를 학습하게 합니다.

2021년 Google Research가 발표한 Temporal Fusion Transformer(TFT)는 다중 시계 시계열 예측을 위해 특별히 설계되었습니다. 이는 여러 혁신을 결합합니다.

  • 변수 선택 네트워크(Variable selection networks) — 어떤 입력 특징이 가장 중요한지 자동으로 학습하여 내재적인 해석 가능성을 제공합니다. 모델이 가격 모멘텀, 거래량, 펀딩비 중 무엇에 더 의존하는지 확인할 수 있습니다.
  • 게이트 잔차 네트워크(Gated residual networks) — 관련 없는 입력을 억제하고, 모델이 복잡한 비선형 특징 상호작용을 다룰 수 있게 합니다.
  • 시간에 대한 멀티헤드 어텐션(Multi-head attention over time) — 각 예측 시계에서 어떤 과거 시간 단계가 가장 유용한 정보를 담고 있는지 식별합니다.
  • 분위수 출력(Quantile outputs) — 단일 점 추정치 대신 예측 구간(10, 50, 90 백분위)을 산출하여, 트레이딩 리스크 관리에 필수적인 불확실성의 척도를 제공합니다.

실무에서 TFT는 전력 수요 예측, 소매 판매 예측, 금융 변동성 모델링을 포함한 벤치마크에서 LSTM과 전통적인 모델들을 앞섰습니다. GaiaEx 같은 플랫폼을 통해 접근할 수 있는 크립토 시장의 경우, 정적 메타데이터(자산 유형, 상장일), 알려진 미래 값(요일, 시간대), 관측된 시간 가변 특징(가격, 거래량, 온체인 지표) 같은 이질적인 입력을 처리하는 TFT의 능력이 특히 잘 맞아떨어집니다.

실전 예제: BTC 가격 방향 예측하기

가능한 것에 대해 솔직해집시다. 비트코인의 내일 정확한 가격을 예측하는 것은 사실상 불가능합니다. 효율적 시장 가설(EMH)은 가격이 이미 이용 가능한 모든 정보를 반영하고 있어 지속적인 예측은 헛수고라고 주장합니다. 크립토에서 약형 EMH는 논쟁의 여지가 있습니다 — 시장이 주식보다 덜 효율적입니다 — 하지만 신호 대 잡음 비율은 여전히 가혹합니다.

더 현실적인 목표는 방향성 정확도(directional accuracy)입니다 — BTC가 시가보다 높게 마감할지, 낮게 마감할지입니다. 이 이진 분류 문제는 다루기가 더 쉽고, 50%의 정확도를 넘는 작은 개선(예를 들어 꾸준히 53~55%)조차 적절한 포지션 사이징과 리스크 관리를 갖추면 매우 수익성 있을 수 있습니다.

실용적인 파이프라인은 다음과 같은 모습입니다.

  • 특징: 60기간 수익률, RSI, MACD 히스토그램, 볼린저 밴드 너비, 거래량 비율(현재 대비 20기간 평균), 무기한 선물의 펀딩비, BTC 도미넌스, 미결제약정 변화.
  • 모델: 128개 히든 유닛을 갖춘 2계층 LSTM에 0.3의 드롭아웃을 적용하고, 이진 분류를 위해 시그모이드 활성 함수를 사용하는 밀집(dense) 레이어를 뒤에 둡니다.
  • 분할: 2020~2023년으로 훈련하고, 2024년 1~6월로 검증하며, 2024년 7~12월로 테스트합니다. 절대 뒤섞지 마십시오 — 항상 시간 순서로 분할하십시오.
  • 평가: 방향성 정확도, 상승 대 하락 예측에 대한 정밀도/재현율, 그리고 가장 중요하게는 신호당 고정된 포지션 규모를 가정한 시뮬레이션 손익.

여러분의 모델이 표본 외 테스트 세트에서 54%의 방향성 정확도와 1.2 이상의 이익 인자를 달성한다면, 더 탐구할 가치가 있는 것을 발견한 것입니다. 65%의 정확도를 보인다면, 거의 확실히 과적합된 것입니다. 금융시장에서 실제 우위는 작으며, 그렇지 않다고 주장하는 사람은 다른 무언가를 팔고 있는 것입니다.

평가 지표와 앙상블 접근법

올바른 지표를 선택하는 것은 여러분이 올바른 것을 최적화하고 있는지를 결정합니다. MAE(평균절대오차)는 여러분의 예측 오차의 평균적인 크기를 데이터와 같은 단위로 알려줍니다 — 직관적이지만 큰 오차를 불균형적으로 처벌하지는 않습니다. RMSE(평균제곱근오차)는 평균을 내기 전에 오차를 제곱하여 이상치를 크게 처벌합니다 — 단 한 번의 치명적인 오예측이 여러 번의 작은 오예측보다 더 중요할 때 적합합니다. 방향성 정확도는 모델이 가격이 오를지 내릴지를 정확히 예측한 비율을 측정합니다 — 종종 트레이딩 신호에 가장 관련성 있는 지표입니다.

앙상블(ensemble) 방법은 여러 모델의 예측을 결합하여 분산을 줄이고 견고성을 개선합니다. 흔한 접근법은 다음과 같습니다.

  • 단순 평균(Simple averaging) — LSTM, 트랜스포머, ARIMA의 예측을 평균 냅니다. 각 모델이 신호의 서로 다른 측면을 포착한다면, 앙상블은 어떤 개별 모델보다도 우수합니다.
  • 스태킹(Stacking) — 메타 모델(예: 그래디언트 부스팅 트리)을 훈련시켜 기저 모델 예측들의 최적 조합을 학습하게 합니다.
  • 국면 인식 전환(Regime-aware switching) — 변동성 국면 감지기를 사용해 어떤 모델을 신뢰할지 선택합니다. LSTM은 트렌드 시장에서 뛰어날 수 있지만, 평균회귀 모델은 횡보 국면에서 더 우수할 수 있습니다.

어떤 접근법을 취하든, 연구와 프로덕션 사이의 간극이 크다는 것을 기억하십시오. Jupyter 노트북에서 55%의 정확도로 BTC 방향을 예측하는 모델은, GaiaEx 같은 플랫폼을 통해 실제로 실행될 때 지연시간, 슬리피지, 거래 비용을 견뎌내야 합니다. 여러분의 평가 파이프라인을 처음부터 이러한 현실을 시뮬레이션하도록 구축하십시오 — 뒤늦게 덧붙이는 것이 아니라.