機械学習による暗号通貨シグナル生成

機械学習は暗号通貨取引を根本的に変えました。かつてはテクニカル分析と手動の解釈に頼っていたものが、現在では数百万の価格ティック、オーダーブックのスナップショット、およびオンチェーンイベントからパターンを抽出できるニューラルネットワークの恩恵を受けています。このガイドでは、暗号通貨シグナルのためのML駆動の確認システムを構築する方法を探ります — Smart Money APIで信頼スコアを強化するために使用しているのと同じ技術です。

重要な洞察: MLシグナルは伝統的な指標と組み合わせたときに最も効果を発揮します。価格方向を52%の精度で予測するニューラルネットワークは無価値です。しかし、資金調達率が正でクジラのコンセンサスが強気であるときに勢いを確認するものはどうでしょうか?それは60%以上の勝率を持つシステムです。

数学的基礎

コードに飛び込む前に、数学を理解しましょう。すべてのニューラルネットワークは本質的に関数近似器です。入力特徴量(価格、出来高、資金調達率、クジラのコンセンサス)が与えられると、過去のデータにわたる予測誤差を最小化する重みを学習します。

教師あり学習のフレームワーク

ラベル付きデータから始めます: 過去の価格/シグナルのペア。

Python — データ準備
# 教師ありデータを準備する
import numpy as np
import pandas as pd
# BTCのOHLCVデータを読み込む
df = pd.read_csv('btc_5m.csv')
# 特徴量: [始値, 高値, 安値, 終値, 出来高, 資金調達率, クジラのロング比率]
features = df[['始値', '高値', '安値', '終値', '出来高', '資金調達率', 'クジラのロング']].values
# ターゲット: 次の5本のローソク足で価格が上昇したか (1) または下降したか (0)
targets = (df['終値'].shift(-5) > df['終値']).astype(int).values
# 特徴量を[0,1]に正規化する
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X = scaler.fit_transform(features)

暗号通貨のための特徴量エンジニアリング

生のOHLCVデータだけでは不十分です。以下が必要です:

鍵は 情報の非対称性 — 大多数のトレーダーが見ていないシグナルを捉えることです。私たちのSmart Money APIは、デリバティブ、オンチェーン、クジラの3つのレイヤーを組み合わせた複合特徴量を提供し、単一の指標を凌駕します。

ニューラルネットワークアーキテクチャ

分類のための多層パーセプトロン (MLP)

単純な順伝播ネットワークはバイナリ分類(買い/売り)に驚くほど効果的です:

Python — PyTorch MLP
import torch
import torch.nn as nn
class CryptoMLP(nn.Module):
def __init__(self, input_size=7):
super().__init__()
self.fc1 = nn.Linear(input_size, 128)
self.fc2 = nn.Linear(128, 64)
self.fc3 = nn.Linear(64, 32)
self.fc4 = nn.Linear(32, 1)
self.dropout = nn.Dropout(0.3)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.dropout(x)
x = torch.relu(self.fc2(x))
x = self.dropout(x)
x = torch.relu(self.fc3(x))
x = torch.sigmoid(self.fc4(x))
return x

このアーキテクチャは、7つの入力特徴量が徐々に狭くなるレイヤー(128 → 64 → 32 → 1)を流れ、ReLU活性化関数とドロップアウトによる正則化が施されています。シグモイド出力は最終レイヤーを[0,1]に圧縮し、買い確率を表します。

LSTMを用いた時系列予測

リカレントネットワークの意義

価格変動は独立ではなく、記憶を持っています。LSTM(Long Short-Term Memory)ネットワークは時間的な依存関係を学習できます:「モメンタムが上昇し、資金調達レートが3時間の負値の後に正に転じた場合、次の5分足が陽線になる確率は58%です」

Python — 暗号資産向けLSTM
class CryptoLSTM(nn.Module):
def __init__(self, input_size=7, hidden_size=64, num_layers=2):
super().__init__()
self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, dropout=0.3)
self.fc1 = nn.Linear(hidden_size, 32)
self.fc2 = nn.Linear(32, 1)
def forward(self, x):
# x shape: (batch, seq_len, features)
lstm_out, _ = self.lstm(x)
# 最終タイムステップを取得
last_hidden = lstm_out[:, -1, :]
x = torch.relu(self.fc1(last_hidden))
x = torch.sigmoid(self.fc2(x))
return x

このLSTMは60タイムステップ(5分足5時間分)のシーケンスを受け取り、次の方向を予測します。セル状態はシーケンス内のどの特徴が最も重要かを学習します。

シーケンスの準備

フラットなデータをスライディングウィンドウに変換:

Python — LSTMシーケンス作成
def create_sequences(data, seq_len=60):
X, y = [], []
for i in range(len(data) - seq_len):
X.append(data[i:i+seq_len])
y.append(data[i+seq_len, -1]) # 次のターゲット
return np.array(X), np.array(y)
X, y = create_sequences(X)
# X.shape: (n_samples, 60, 7)

学習と評価

トレイン・テスト分割戦略

時系列データでは、 シャッフル厳禁。将来のデータリークは精度を過大評価します。

Python — 適切な時系列分割
# 分割: 70% トレイン, 20% バリデーション, 10% テスト
n = len(X)
train_idx = int(n * 0.7)
val_idx = int(n * 0.9)
X_train, y_train = X[:train_idx], y[:train_idx]
X_val, y_val = X[train_idx:val_idx], y[train_idx:val_idx]
X_test, y_test = X[val_idx:], y[val_idx:]

学習ループ

バイナリクロスエントロピー損失とAdamオプティマイザを使用:

Python — 学習
model = CryptoLSTM()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
loss_fn = nn.BCELoss()
for epoch in range(100):
model.train()
optimizer.zero_grad()
preds = model(X_train_tensor)
loss = loss_fn(preds, y_train_tensor)
loss.backward()
optimizer.step()
model.eval()
with torch.no_grad():
val_preds = model(X_val_tensor)
val_loss = loss_fn(val_preds, y_val_tensor)
print(f"Epoch {epoch}: train={loss:.4f}, val={val_loss:.4f}")

Smart Money APIとの統合

私たちのMLモデルは従来の指標を置き換えるものではなく、それらを強化します。Smart Money APIとの連携方法:

Python — アンサンブルスコアリング
def compute_confirmation_score(symbol, direction):
# 1. デリバティブスコア取得(資金調達レート、LSR)
deriv_score = get_derivatives_score(symbol, direction)
# 2. オンチェーンスコア取得(MVRV、SOPR、取引所フロー)
onchain_score = get_onchain_score(symbol)
# 3. クジラスコア取得(コンセンサス方向、pnl)
whale_score = get_whale_score(symbol, direction)
# 4. 特徴量でMLモデルを実行
features = [deriv_score, onchain_score, whale_score, volatility, volume_trend]
ml_signal = lstm_model.predict(features)
# 5. 加重アンサンブル
composite = (deriv_score * 0.35 + onchain_score * 0.25 + whale_score * 0.25 + ml_signal * 0.15)
return {
"composite": composite,
"confidence": classify_confidence(composite),
"components": {"deriv": deriv_score, "onchain": onchain_score, "whale": whale_score, "ml": ml_signal}
}

ベストプラクティス

1. 過学習を避ける

2. クラスの不均衡に対処

「上昇」日が「下降」日より多い場合、モデルはより頻繁に上昇を予測します。重み付き損失を使用:

Python — 重み付きBCE
# ケースの60%が上昇の場合、下降ケースの重みを大きく設定
pos_weight = (len(y_train) - y_train.sum()) / y_train.sum()
loss_fn = nn.BCEWithLogitsLoss(pos_weight=torch.tensor(pos_weight))

3. 特徴量の正規化

ニューラルネットワークは特徴量のスケールに敏感です。入力特徴量は常に[0,1]または[-1,1]に正規化。スケーラーはトレーニングデータのみで再調整し、検証/テストに適用

4. ウォークフォワード検証

単一のテストセットの代わりにスライディングウィンドウを使用: 1年分のデータでトレーニングし、翌月でテスト。その後13ヶ月で再トレーニングし14ヶ月目でテストなど。これによりライブ取引条件をシミュレート

5. 実環境のパフォーマンスを監視

バックテストの精度はライブ精度とは異なります。モデルをデプロイし、実際の取引結果を追跡し、新しいデータで毎月再トレーニング。 シャープレシオ勝率 を実際の指標として使用(F1スコアではなく)

高度なテクニック

アテンション機構

Transformerベースのモデル(Attention Is All You Needなど)は、ネットワークがシーケンス内の最も重要な時点に「注目」できるようにします。暗号資産では、最近のボラティリティスパイクを古いデータよりも重視できます

アンサンブル手法

複数のアーキテクチャ(MLP、LSTM、XGBoost)をトレーニングし予測を平均化。アンサンブルモデルは通常、単一モデルより2-5%精度が向上

強化学習

価格方向の予測ではなく、累積PnLを最大化するエージェントをトレーニング。エージェントは信頼度と市場状況に基づいてポジションサイズを学習。これは暗号資産取引AIの最先端技術です

Smart Money APIでMLを活用

当社の複合スコアリングシステムは、デリバティブインテリジェンス、オンチェーン分析、クジラ追跡を統合 — 全てMLモデルの追加特徴量として統合可能。LSTM入力特徴量に追加すれば精度が3-5%向上

無料APIキーを取得 →