価格予測ロジック詳細説明書
概要
本システムの価格予測機能は、シンプルなLSTM風の予測モデルを実装しており、リアルタイムの取引データを基に短期価格予測を行います。
1. 予測モデルの構造
1.1 SimpleLSTMPredictor クラス
class SimpleLSTMPredictor:
def __init__(self, sequence_length: int = 20):
self.sequence_length = sequence_length # 過去20データポイントを使用
self.price_history = deque(maxlen=100) # 価格履歴(最大100件)
self.volume_history = deque(maxlen=100) # 取引量履歴(最大100件)
1.2 重み係数(事前定義)
self.weights = {
'price_weight': 0.7, # 価格トレンドの重み
'volume_weight': 0.15, # 取引量の重み
'momentum_weight': 0.1, # モメンタムの重み
'volatility_weight': 0.05 # ボラティリティの重み
}
2. 特徴量の計算
2.1 価格関連特徴量
- 価格平均(price_mean): 過去20データポイントの平均価格
- 価格標準偏差(price_std): 価格のボラティリティ指標
- 価格モメンタム(price_momentum):
(最新価格 - 20期前価格) / 20期前価格
2.2 取引量関連特徴量
- 取引量平均(volume_mean): 過去の平均取引量
- 取引量比率(volume_ratio):
現在の取引量 / 平均取引量
2.3 テクニカル指標
- SMA比率(sma_ratio):
5期間移動平均 / 20期間移動平均 - RSI(相対力指数): 14期間のRSIを計算
- RSI > 70: 買われすぎ
- RSI < 30: 売られすぎ
3. 予測アルゴリズム
3.1 基本予測式
price_change = (momentum_factor + volume_factor + rsi_factor) * time_multiplier
predicted_price = base_price * (1 + price_change)
3.2 各要素の計算
モメンタムファクター
momentum_factor = price_momentum * 0.7
- 価格の変化率に最も高い重み(70%)を付与
ボリュームファクター
volume_factor = (volume_ratio - 1) * 0.15
- 通常より取引量が多い場合は価格上昇圧力
- 通常より取引量が少ない場合は価格下落圧力
RSIファクター
if RSI > 70:
rsi_factor = -0.01 # 買われすぎ → 下落予測
elif RSI < 30:
rsi_factor = 0.01 # 売られすぎ → 上昇予測
else:
rsi_factor = 0 # 中立
時間乗数
time_multiplier = sqrt(interval_minutes / 60)
- 予測期間が長いほど変動幅が大きくなる
3.3 信頼度の計算
confidence = max(0.1, 1 - volatility_factor * 10)
confidence = min(0.9, confidence)
- ボラティリティが高いほど信頼度が低下
- 信頼度は10%〜90%の範囲に制限
3.4 予測範囲(上限・下限)
uncertainty = price_std * time_multiplier
upper_bound = predicted_price + uncertainty
lower_bound = predicted_price - uncertainty
- 標準偏差を基に不確実性を計算
- 時間が長いほど予測範囲が広がる
4. 予測の実行フロー
- データ収集: リアルタイムで価格と取引量データを蓄積
- 特徴量計算: 最新20データポイントから各種指標を計算
- 予測計算: 重み付けされた各要素を組み合わせて価格変化を予測
- 信頼度評価: ボラティリティを基に予測の信頼度を算出
- 結果出力: 予測価格、信頼度、予測範囲を返却
5. 予測精度向上のための工夫
5.1 データの正規化
- 価格変化率を使用することで、異なる価格帯の通貨ペアでも適用可能
5.2 時系列性の考慮
- 最新データほど重要度が高い(dequeによる古いデータの自動削除)
5.3 市場状態の反映
- RSIによる過熱感の検出
- 取引量による市場の活発さの評価
6. 制限事項と改善余地
現在の制限
- 外部要因(ニュース、マクロ経済指標)は考慮していない
- 取引所間の相関は考慮していない
- 深層学習モデルではなく、ルールベースの予測
改善可能な点
- 実際のLSTM/GRUモデルの実装
- より多くのテクニカル指標の追加(MACD、ボリンジャーバンド等)
- センチメント分析の統合
- バックテストによるパラメータ最適化
- アンサンブル学習の導入
7. 使用例
# 予測モデルの初期化
predictor = SimpleLSTMPredictor(sequence_length=20)
# データの追加
predictor.add_data(price=160.5, volume=100.5, timestamp=datetime.now())
# 5分後の価格予測
result = predictor.predict(PredictionInterval.FIVE_MIN)
# 結果の取得
print(f"予測価格: ${result.predicted_price:.2f}")
print(f"信頼度: {result.confidence * 100:.1f}%")
print(f"予測範囲: ${result.lower_bound:.2f} - ${result.upper_bound:.2f}")
まとめ
本システムの価格予測は、従来のテクニカル分析手法とシンプルな機械学習アプローチを組み合わせたハイブリッド型です。リアルタイムデータを活用し、短期的な価格動向を予測することに特化しています。将来的には、より高度な深層学習モデルへの移行を検討していますが、現在の実装でも実用的な予測精度を実現しています。