Bot

開発記録#139(2025/3/24)「論文ベースのbot開発フローpart.1」

前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。

本記事では「暗号通貨のパンプ&ダンプスキームの検出」に関する論文をベースにbot開発の過程をまとめていきます。

論文要約:暗号通貨のパンプ&ダンプスキームの検出 - ノイズ処理に基づく閾値手法

概要

本論文では、Poloniex取引所に上場されているトークンのパンプ&ダンプ(Pump-and-Dump)イベントを検出するための、シンプルかつ堅牢な教師なし学習モデルが提案されています。
本モデルは、閾値ベースの基準指数加重移動平均(EWMA)、およびボラティリティ測定を組み合わせることで、流動性の低いトークンや長期間取引が行われないトークンのような特殊な条件でも効果的に異常を検出できます。


1. 背景

  • パンプ&ダンプスキームとは?
    価格を人為的に吊り上げ、その後急激に売却することで利益を得る市場操作の一種であり、株式市場では違法とされていますが、暗号通貨市場では規制が不十分なため広がっています。
  • 暗号通貨市場の特徴
    暗号通貨市場は中央集権型取引所(CEX)と分散型取引所(DEX)に分類され、特にDEXでは匿名性や非中央集権的な仕組みが悪用されやすいです。

2. パンプ&ダンプのプロセス

  1. 蓄積フェーズ
    • 少数の組織的な投資家がターゲットとなるトークンを密かに購入する段階。
  2. パンプフェーズ
    • Telegram、Discord、RedditなどのSNSを用いて投資家の「FOMO(機会損失の恐怖)」を煽り、短期間で価格が急上昇します。
  3. ダンプフェーズ
    • 価格がピークに達した際に主導者が売却し、一般投資家が損失を被る段階。

3. 提案手法:教師なし異常検出モデル

本研究では、パンプ&ダンプの検出に以下の4つのアプローチを組み合わせた手法が提案されています。

3.1 閾値ベースの異常検出

  • 価格と取引量のスパイクを識別する閾値を設け、異常を検出。
  • 移動平均ウィンドウを用いて価格や取引量の急激な変化を捉えます。
  • 固定閾値のみでは、取引が少ないトークンで誤検出が多発する問題が確認されました。

3.2 二重条件付け (Double Conditioning)

  • 取引量の急増が小規模な上昇に過ぎない場合は除外するフィルタリングを追加。
  • 具体的には、30日間の総取引量の30%以上 かつ その期間の最大取引量の60%以上 である場合にのみ異常として判定。

3.3 平均日次取引量

  • 活発な取引ペアの場合は、30日間の平均日次取引量の70%以上 かつ 最大取引量の60%以上 を満たす条件に変更。

3.4 指数加重移動平均 (EWMA)

  • 最近の取引データに重みを置いた移動平均を利用。
  • さらに、ボラティリティの測定を組み合わせ、取引量の急増とボラティリティの急上昇が同時に起きるケースを効果的に検出。

4. モデル性能と結果

  • 最も効果的だった設定は、次の条件を組み合わせたものでした:
    • 過去12時間の移動平均の90%以上の価格上昇
    • 400%以上の取引量増加
    • 20日間のEWMAとボラティリティの併用

この設定により、誤検出の最小化真のパンプ&ダンプイベントの検出が最も良好なバランスで達成されました。

モデルリコールF1スコア精度
30日間の総取引量0.650.680.71
平均日次取引量0.620.650.65
EWMA0.650.650.65
EWMA+ボラティリティ0.620.710.84

5. 結論

  • EWMAとボラティリティの組み合わせが最も効果的であり、短期的な価格変動によるノイズを除去しつつ、パンプ&ダンプイベントを正確に特定できることが確認されました。
  • 特に、取引が断続的なトークンに対して、より信頼性の高い検出が可能です。

6. 本論文の意義と活用

  • 本論文の手法は、取引所のデータを活用しつつ、手軽な閾値設定で悪意のあるパンプ&ダンプイベントを検出できる点で有用です。
  • TelegramなどのSNSデータを活用することで、将来的にはリアルタイム監視の可能性も示唆しています。

パンプ&ダンプ検出機能を備えた仮想通貨自動取引Botの設計アプローチ

本論文の知見を活用して、仮想通貨の自動取引Botを設計する際には、以下の点を考慮したアプローチが効果的です。


1. 概要と目標

目標

  • パンプ&ダンプ(P&D)イベントを自動的に検出し、適切な対応を行う自動取引Botを設計する
  • Botの役割としては以下の2点
    • リスク回避モード:P&Dイベントの兆候が検出された場合、ポジションをクローズし損失を回避
    • 逆張りモード:P&Dイベント後の急落に対するリバウンドを狙う
  • 主要な機能として以下を実装
    • データ収集
    • 異常検出(P&D検出)
    • トレード執行
    • リスク管理

2. システム構成

技術スタック

  • Python (データ処理と機械学習モデル)
  • Rust (データストリーミングや高速処理部分)
  • Kubernetes (Botのスケーリングと運用)
  • Docker (各Botの独立した実行環境構築)
  • Bybit API (リアルタイムデータの取得と取引執行)

3. 各機能の設計

3.1 データ収集

  • データソース
    • Bybit APIを用いたリアルタイムデータ収集
    • 5分足、15分足、1時間足など複数の時間軸を用意
  • 収集データ
    • OHLCV (Open, High, Low, Close, Volume)
    • 注文板データ(Order Book)
    • テレグラムのP&Dチャネルのテキストデータ(任意)

3.2 異常検出(P&Dイベントの検出)

(1) 閾値ベースの異常検出

  • 以下の条件でパンプ&ダンプイベントの予兆を検出
    • 価格の急上昇:12時間移動平均の90%以上の価格上昇
    • 取引量の急増:400%以上のボリューム増加
  • 取引量のフィルタリング:次の2条件を導入してノイズ除去
    • 30日間の総取引量の30%以上かつ
    • 30日間の最大取引量の60%以上

(2) EWMA(指数加重移動平均)+ボラティリティの導入

  • 短期的なノイズを除去するため、20日間のEWMAとボラティリティを活用
  • 条件:
    • EWMAの70%以上かつボリュームの最大値の60%以上
    • ボラティリティの急増が同時に発生する条件を加える

3.3 トレード執行

(1) リスク回避モード

  • P&Dイベントの兆候が確認されたら:
    • 保有ポジションの自動クローズ
    • 新規ポジションの一時停止

(2) 逆張りモード

  • ダンプフェーズ後のリバウンドを狙う
  • 条件:
    • 直近30分以内に価格が60%以上急落かつ
    • ボリュームが急増している場合に逆張りエントリー

3.4 リスク管理

  • 損切り (Stop Loss) :逆張りモードでのエントリー時に3%下落で損切り
  • 利益確定 (Take Profit) :急騰後の5%以上の上昇で利益確定
  • ポジションサイジング:過去のボラティリティに応じたロットサイズ調整

4. アーキテクチャの構成

+-----------------------------------------------------+
|                     自動取引Bot                     |
+-----------------------------------------------------+
|  データ収集層  |   検出ロジック層  |   取引執行層  |
+-----------------------------------------------------+
|  OHLCV         |  P&D検出(EWMA)    |  Bybit API      |
|  Order Book     |  閾値ベース検出   |  逆張り執行      |
|  Telegram       |  ボラティリティ検出|  損切り・利益確定 |
+-----------------------------------------------------+
|                       Kubernetes                     |
+-----------------------------------------------------+
|                       Docker環境                      |
+-----------------------------------------------------+

5. 実装の流れ

ステップ1:データ収集

  • asynciowebsocketを活用してリアルタイムデータを取得
  • Poloniex、Bybit、Binanceなどの複数の取引所に対応

ステップ2:異常検出モデルの構築

  • pandasscipyを用いてEWMAを実装
  • ボラティリティ計算:標準偏差 (np.std()) を利用
  • データの蓄積とリアルタイム解析を並行処理で行う

ステップ3:トレードロジックの実装

  • Bybit APIを用いた売買注文処理
  • ccxtライブラリでマルチ取引所対応を視野に入れる

ステップ4:監視とアラート

  • P&Dイベント発生時にSlackやTelegramに通知
  • KubernetesでBotのヘルスチェックと再起動の自動化

6. 評価と改善

評価指標

  • リコール:P&Dイベントの検出率
  • 精度:ノイズの少なさ
  • 利益率:最適なエントリー&エグジットの評価

改善策

  • テレグラムのP&D告知チャネルを活用し、イベント予測の精度を向上
  • ダンプ直後のリバウンドを狙った高度な機械学習モデル(LSTMやDQN)の導入

7. まとめ

このアプローチにより、以下が実現できます:

✅ パンプ&ダンプのリスクを回避する高度なリスク管理
✅ P&Dイベント後の価格反発を狙う利益最大化の戦略
✅ KubernetesとDockerを活用した柔軟でスケーラブルなBot環境

特に、Bybit市場でのデータ活用と、Python × Rustのハイブリッド構成を活かした高速かつ堅牢なシステム構築がポイントです。

次のステップ

  • データ収集スクリプトの作成
  • P&D検出モデルのコードを作成
Yodaka

次回の記事では「リアルタイムデータ収集スクリプト」についてまとめます。

関連
開発記録#140(2025/3/24)「論文ベースのbot開発フローpart.2」

続きを見る

-Bot