
暗号資産トレーダーのための時系列予測
系列モデルで価格の動きを予測する
時系列データを理解する
時系列(time series)とは、時間順に並んだデータ点の列です——1 分ごとの株価、日次の Bitcoin の終値、1 時間ごとの気温の測定値などです。時系列がほかのデータと異なる最大の特徴は、順序に意味がある ことです。分類データセットの行を入れ替えても問題は起きませんが、時系列を入れ替えるとその意味そのものが失われます。
あらゆる時系列の性質を決める要素は 3 つあります。トレンド(trend)は長期的な方向性を指します——BTC の価格は 2019 年初めの 3,000 ドルから 2021 年末には 60,000 ドルまで上昇しており、これは明確な上昇トレンドです。季節性(seasonality)は一定間隔で繰り返されるパターンを指します——暗号資産市場では米国市場の取引時間中に出来高が増え、週末には取引が減る傾向がよく見られます。定常性(stationarity)とは、平均や分散といった統計的性質が時間を通じて一定であることを意味します。金融の時系列の多くは非定常です——価格は上昇し続けたり急落したりします——これは、安定した分布を前提とするモデルにとって課題となります。
金融データをどのモデルに入力する前にも、変換が必要です。対数リターン(log returns)(連続する期間の価格比の自然対数)を取ると、非定常な価格をほぼ定常なリターンに変換できます。差分をとる(前の値を引く)ことでも似た効果が得られます。これらの変換は任意ではなく、ほとんどの予測手法が正しく機能するための前提条件です。
ARIMA — 古典的なベースライン
ARIMA(自己回帰移動平均モデル、AutoRegressive Integrated Moving Average)は、数十年にわたり時系列予測の主力手法とされてきました。3 つの要素を組み合わせています。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 ネットワーク
LSTM(Long Short-Term Memory)ネットワークは、系列データにおける長距離の依存関係を学習するために設計された、リカレントニューラルネットワークの一種です。通常の RNN は勾配消失に悩まされ、わずか数タイムステップで情報を忘れてしまいますが、LSTM は忘却ゲート、入力ゲート、出力ゲートというゲート機構を用いて、数百ステップにわたって情報を選択的に保持・破棄します。
金融の時系列において、LSTM は ARIMA に対して 2 つの利点を持ちます。1 つは非線形の関係をモデル化できること(価格の動態が線形であることはほとんどありません)、もう 1 つは複数の入力特徴量を同時に組み込めることです——過去の価格だけでなく、出来高、ボラティリティ、ファンディングレート、オーダーブックの不均衡、その他予測に役立つと考えられるあらゆる信号を扱えます。
LSTM のためのデータ準備には、丁寧なウィンドウ化(windowing)が必要です。固定長の入力系列(例えば 60 タイムステップ)を作成し、それに対応する目的値(次の価格やリターン)と組み合わせます。正規化(normalization)も重要です。特徴量を [0, 1] にスケーリングするか、平均 0・分散 1 に標準化します。ただし、ここに落とし穴があります。スケーラーは学習データだけでフィットさせ、検証データとテストデータには同じパラメータを使って変換を適用しなければなりません。データセット全体でフィットさせると、未来の情報が漏れてしまいます。
データセット全体から計算した統計量を使って正規化してはいけません。スケーラーは学習セットだけでフィットさせ、それを検証セットとテストセットに適用してください。この単純な誤りが、他のどのデータ準備の誤りよりも多くのルックアヘッドバイアス(先読みバイアス)を引き起こします。
# 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) — 無関係な入力を抑制し、モデルが複雑な非線形の特徴量相互作用を扱えるようにします。
- 時間軸に対するマルチヘッドアテンション — 各予測ホライズンにとって、どの過去のタイムステップが最も情報量を持つかを特定します。
- 分位点出力(quantile outputs) — 点推定ではなく、予測区間(10、50、90 パーセンタイル)を出力し、不確実性の尺度を提供します。これはトレーディングにおけるリスク管理に不可欠です。
実務においては、TFT は電力需要予測、小売の販売予測、金融ボラティリティのモデリングといったベンチマークで LSTM や従来型のモデルを上回っています。GaiaEx のようなプラットフォームからアクセスできる暗号資産市場では、静的なメタデータ(アセットタイプ、上場日)、既知の未来の値(曜日、時刻)、そして観測される時間変化する特徴量(価格、出来高、オンチェーン指標)といった異種の入力を処理できる TFT の能力が、特に適しています。
実践例 — BTC の価格の方向性を予測する
ここで、何が実現可能なのかを正直に見ておきましょう。明日の Bitcoin の正確な価格を予測することは、事実上不可能です。効率的市場仮説(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 月でテスト。シャッフルは絶対に行わず、必ず時系列順に分割します。
- 評価: 方向性の精度、上昇・下降予測の precision/recall、そして最も重要な、シグナルごとに固定のポジションサイズを仮定したシミュレーション上の損益。
アウトオブサンプルのテストセットで、モデルが 54% の方向性精度とプロフィットファクター 1.2 以上を達成したなら、それはさらに検討する価値があるものです。逆に 65% の精度を示したなら、ほぼ確実に過学習しています。金融市場における本物のエッジは小さく、そうではないと主張する人は何かを売り込んでいるだけです。
評価指標とアンサンブル手法
正しい指標を選ぶことで、正しい対象を最適化できているかどうかが決まります。MAE(平均絶対誤差)は、予測誤差の平均的な大きさをデータと同じ単位で示します——直感的ですが、大きな誤差を不均衡に罰することはありません。RMSE(二乗平均平方根誤差)は平均する前に誤差を二乗するため、外れ値を大きく罰します——一度の壊滅的な誤予測が、多数の小さな誤りより重要な場合に適しています。方向性の精度は、モデルが価格の上昇・下降を正しく予測した割合を測るもので、トレーディングシグナルにとって最も関連性の高い指標であることが多いです。
アンサンブル手法は、複数のモデルの予測を組み合わせることで分散を減らし、頑健性を高めます。一般的な手法には以下があります。
- 単純平均 — LSTM、Transformer、ARIMA の予測を平均します。それぞれのモデルが信号の異なる側面を捉えている場合、アンサンブルは個々のどのモデルよりも優れた結果を出します。
- スタッキング — メタモデル(例えば勾配ブースティング木)を学習させ、複数のベースモデルの予測を最適に組み合わせる方法を学ばせます。
- レジーム認識型の切り替え — ボラティリティのレジーム検出器を使って、どのモデルを信頼するかを選びます。トレンドが出ている市場では LSTM が優れ、レンジ相場では平均回帰モデルが優れる、といった具合です。
どのアプローチを取るにしても、リサーチと本番運用の間には大きな隔たりがあることを忘れないでください。Jupyter notebook 上で 55% の精度で BTC の方向性を予測するモデルも、GaiaEx のようなプラットフォームを通じて実際に実行する際には、レイテンシ、スリッページ、取引コストに耐えなければなりません。評価パイプラインは、これらの現実を後から付け加えるのではなく、最初からシミュレートするように構築しましょう。




