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

次のステップ、**実際の稼働チェック(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ごとの集計レポートにも進められます。

次回は、既存のBotに新しい戦略(ブレイクアウト戦略や機械学習モデル)を追加する方法を紹介します。
-
-
開発記録#165(2025/4/2)「論文ベースのbot開発フローpart.27 新戦略の追加」
続きを見る
👇ラジオで話したこと
実際の稼働チェック(1日〜1週間後のパフォーマンス分析)
タイトル:本番稼働後のリアルな姿──Botパフォーマンスを徹底検証する方法
【オープニング】
こんにちは、よだかです。
今日のテーマは「実際の稼働チェック」。
Botを本番環境にデプロイした後、いよいよ運用が始まったわけですが──
じゃあ、実際にBotは期待通りに動いているのか?
これを冷静に検証していくフェーズに入ります。
今日は初心者の方にもわかるように、チェックの目的から指標の見方、分析スクリプトの使い方まで丁寧に解説していきます。
【セクション1|なぜ稼働後のチェックが必要なのか】
まず大前提。
Botの運用は「動かして終わり」ではありません。
運用初期は、特に以下の2つの視点で状態を見ます:
- ✅1日後チェック:初期稼働の安定性確認
- ✅1週間後チェック:中期的な戦略有効性の確認
たとえば、
「エラー連発でBotが止まってないか?」
「思ったより勝率が低くないか?」
「P&D検出の精度が落ちてないか?」
こういったリスクを早期に炙り出すことが目的です。
【セクション2|見るべき指標はこれ】
Botの稼働状況を評価するため、主に以下の指標を見ていきます。
📊評価指標一覧
指標 | 説明 | データ取得元 |
---|---|---|
総トレード数 | どれだけ取引したか | live_trade_log.csvやDB |
勝率 | 取引のうち何%が利益だったか | pnl > 0 の割合 |
損益(PnL) | トータルでいくら儲けたか・損したか | pnlの合計 |
最大ドローダウン | 残高がどれだけ減ったか | balanceのピーク差 |
P&D検出精度 | パンプ&ダンプを正しく検出できたか | 検出ログ+実データ |
エラー頻度 | 異常動作やAPIエラーの件数 | Slack通知ログなど |
これらをバランスよくチェックすることで、見た目の成績だけでなく「内側の健全性」も評価できます。
【セクション3|実際にチェックする方法】
さて、ここから実践。
Pythonスクリプトを使って、実際にデータを読み込み、分析します。
🧪分析スクリプト(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日以内
と1週間以内
のデータを分けて見る- 総トレード数、勝率、PnL、最大ドローダウンをそれぞれ出力
これだけでかなり有用なレポートが作れます。
【セクション4|出力例と読み取り方】
例えば、こんな結果が出たとしましょう。
✅ 1日以内のデータ
- 総トレード数:12回
- 勝率:66.67%
- 合計損益:+128ドル
- 最大ドローダウン:42.5ドル
✅ 1週間以内のデータ
- 総トレード数:87回
- 勝率:59.77%
- 合計損益:+1080.5ドル
- 最大ドローダウン:156.3ドル
このデータをもとに、次のアクションを考えます。
📌問題があれば対応するポイント
問題 | 改善アクション例 |
---|---|
勝率が50%を下回る | エントリー条件を再検討(RSI/ATRなど) |
ドローダウンが大きい | 損切り設定を強化(動的ストップロス) |
トレード数が少ない | スケジューラや検出感度の見直し |
P&D検出誤差が高い | モデルの再学習・フィルター強化 |
これが、**「運用改善ループ」**です。
【ラストセクション|まとめと次のステップ】
Bot運用で勝つためには、
「分析 → 改善 → 再運用」
このサイクルを止めずに回し続けることが本当に大事です。
ここまでできたら、次はさらに発展した取り組みが待っています。
🔜次の発展ステップ
- 定期レポートの自動化(cron + Slack連携)
- 複数Botの比較ダッシュボード化(Grafana拡張)
- 戦略ごとのパフォーマンスランキング作成
そして──次回からはいよいよ、
「既存Botに新しい戦略を追加する方法」
たとえばブレイクアウト戦略や、機械学習を使ったモデル組み込みに進みます。
運用からさらに「攻め」に転じるフェーズです。
今回は「1つのBotの中で新しい戦略を取り込む方法」を紹介しました。
次回はさらに視点を広げて、「複数Botを並行運用する設計」にステップアップしていきます!
それでは今日はこのへんで。
よだかでした。