前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。
本記事では「暗号通貨のパンプ&ダンプスキームの検出」に関する論文をベースにbot開発の過程をまとめていきます。
Detecting Crypto Pump-and-Dump Schemes: A Thresholding-Based Approach to Handling Market Noisehttps://t.co/ctCJEV1MBs
— よだか(夜鷹/yodaka) (@yodakablog) March 22, 2025

Yodaka
次のステップ、**実際の稼働チェック(1日〜1週間後のパフォーマンス分析)**について、以下のように進めていきます。
✅ 目的:運用後のBotが期待通りに動いているかを定量的に評価
期間 | チェックタイミング | チェック目的 |
---|---|---|
1日後 | 初期稼働の安定性確認 | 各モジュールの動作確認、異常の早期発見 |
1週間後 | 中期的な戦略の有効性確認 | 勝率、利益率、エラー頻度、P&D精度などの検証 |
📊 評価対象の指標と取得方法
指標 | 説明 | データ取得元 |
---|---|---|
総トレード数 | 1日/週あたりの取引回数 | live_trade_log.csv or DB |
勝率 | PnLがプラスの割合 | pnl > 0 の比率 |
損益 (PnL) | 合計利益・損失 | pnl 列の合計 |
最大ドローダウン | 残高減少の最大幅 | balance 列のピーク差 |
P&D検出精度 | 誤検出率/未検出率 | 検出ログ + 実データ照合 |
エラー頻度 | API失敗、異常動作件数 | Slack通知ログ or ログファイル |
🧪 分析スクリプト例(daily_weekly_report.py)
import pandas as pd def load_trades(path): return pd.read_csv(path, parse_dates=["timestamp"]) def analyze(df): total = len(df) wins = df[df["pnl"] > 0] pnl_total = df["pnl"].sum() win_rate = len(wins) / total * 100 if total > 0 else 0 max_dd = (df["balance"].cummax() - df["balance"]).max() print(f"🔍 総トレード数: {total}") print(f"📈 勝率: {win_rate:.2f}%") print(f"💰 合計損益 (PnL): {pnl_total}") print(f"📉 最大ドローダウン: {max_dd}") def main(): df = load_trades("./results/live_trade_log.csv") print("✅ 1日以内のデータ:") analyze(df[df["timestamp"] > df["timestamp"].max() - pd.Timedelta("1d")]) print("\n✅ 1週間以内のデータ:") analyze(df[df["timestamp"] > df["timestamp"].max() - pd.Timedelta("7d")]) if __name__ == "__main__": main()
📈 出力例
✅ 1日以内のデータ: 🔍 総トレード数: 12 📈 勝率: 66.67% 💰 合計損益 (PnL): 128.0 📉 最大ドローダウン: 42.5 ✅ 1週間以内のデータ: 🔍 総トレード数: 87 📈 勝率: 59.77% 💰 合計損益 (PnL): 1080.5 📉 最大ドローダウン: 156.3
📌 評価後のアクション例
問題があれば… | 対応案 |
---|---|
勝率が50%を下回る | エントリー条件を再評価(RSI/ATR調整) |
ドローダウンが大きい | 損切りロジックの強化(動的SL) |
トレード数が少ない | スケジューラや検出感度を緩める |
P&D検出誤差が高い | モデル再学習 or 精度フィルター導入 |
🔜 次のステップ候補
- 定期レポートの自動化(cron + Slack連携)
- 複数Botの同時比較ダッシュボード化(Grafana拡張)
- 戦略ごとのパフォーマンスランキング機能
このまま、レポートのSlack自動通知機能や、Botごとの集計レポートにも進められます。

Yodaka
次回は、既存のBotに新しい戦略(ブレイクアウト戦略や機械学習モデル)を追加する方法を紹介します。
関連
-
-
開発記録#165(2025/4/2)「論文ベースのbot開発フローpart.27」
続きを見る