Bot 開発ログ

🛠️週次報告(2025/6/6)5/31 – 6/6 の Bot 開発トピックまとめ

今週は「システム周りの細々したことをさわりつつ、必要なものだけを最小構成で取り入れた」一週間でした。

1. 今週のハイライト 🔦

日付キーワードざっくり出来事
5/31v2 基盤リファクタ.env 分離, docker-compose 再配線を完了。270 file の大掃除コミットでレガシー CI 設定・不要 GitHub files を一斉削除。
6/1再起動体制完成restart: unless-stoppedDocker 自律再起動 を組み込み、watchdog.sh を DRY-RUN/Slack 通知付きで実戦投入。cron 登録へ着手。
6/2ログ配線トラブル→解決/app/logs/MMBot.log が出ずに調査 → 空ファイル保証 & 再起動でホスト側確認 OK。logging_setup.py + volume mount 動作を確認。
6/3権限・xattr 調査
Make コマンド周りの整理
run_watchdog.sh 実行拒否を権限/xattr まわりでデバッグ。watchdog_cron.log 未生成問題を切り分け。
make build / make test / make up / make down を再編成。help ターゲットも追加して CI-like な自己ドキュメント化を実施。
6/4CI / GitHub Ops スリム化
mainnet / testnet の完全分離
Draft PR 説明テンプレ作成。e2e-real.yml をスリム化し Real API 用 E2E ワークフローの土台を push。Slack Webhook 分離も試行。
環境変数 (MMBOT_MODE) と docker-compose.{prod,test}.yml の2ファイル構成に分割。entrypoint で envsubstconfig_{env}.json 生成パスを切替。
6/5テストネット運転 & DD 発火検証
メインネット検証継続
SYMBOL=BTCUSDT / LOT=0.002 / TIMEOUT=45 … で緩めパラメータ回し、DD ガード動作を観察。直前 30s ログ取得コマンドを確認。
6/6一週間総括いまココ。改善点洗い出し & 次タスク優先度付け。

2. 技術タスクごとの進捗 🛠️

カテゴリ完了/進捗メモ
インフラ整備✅ v2 compose 配線・再起動シミュ完compose/entrypoint.sh に envsubst default, MAX_CYCLES 対応なども反映
監視 & ガード🔄 watchdog.sh 本番投入/cron 自動化途中Slack 通知・再起動カウンタ OK、warn_cnt/pnl_age 条件は今後チューニング
ログ/解析基盤✅ loguru → /logs 固定出力、analyze_pnl_vs_log.py 空ログハンドル追加時間帯集計 & グラフ生成フロー無事完走
CI / GitHub Actions🔄 Real API E2E ワークフロー雛形作成self-hosted runner 調査継続、Node バイナリ欠如エラーは再現待ち
コードベース整理✅ 巨大削除コミットで不要 GitHub Actions / docs を purgetag pre-refactor-dd で旧世代をスナップショット保存済み
運用パラメータ検証🔄 テストネットでスプレッド閾値緩和・Lot 拡大テストDD 発火 → ポジション残り問題を再確認、次フェーズで損切りロジック強化へ

3. 今週遭遇した課題 & 暫定対処 💣

  1. MMBot.log が生成されない
    → 空ファイル作成 → 再起動で volume mount 正常化を確認。
  2. watchdog cron 権限問題
    xattr / 実行権を洗浄中。run_watchdog.sh をシェル直実行して切り分け。
  3. DD 後のポジション残り
    → ガード網に穴を発見。safe_exit 前に cancel_all + close_position を必須処理として次スプリントで実装予定(済)。

4. 学び & 気づき ✨

  • 構造を固めた後は小刻み改修が効率的
    ↳ v2 基盤への一斉リファクタで痛感。大掃除→細粒度アップデートへ移行。
  • 空ログ耐性はバッチ処理の死活線
    analyze_pnl_vs_log.py の NaN 補完で “ログ無しでも壊れない” パイプラインを確保。
  • 監視レイヤは二階建てが安心
    ↳ Docker restart + watchdog cron の二段構えで “ゾンビ化” リスク大幅低減。

🔄 修正版・次週フォーカス(6/7 – 6/13)

フェーズ目的主タスク成果物 / 判定ゴール
Phase A – 実弾テスト強化
<small>6/7 – 6/9</small>
Exit 粒度最適化
防御ラインの底上げ
1. Exit 粒度テーブル実装
 - ポジ残量 × PnL で tier 分岐
2. 動的 DD / VaR トリガー
 - 直近 n 分の σ 利用
 - VaR95 → DD 閾値に反映
3. 流動性フィルタ + 時間帯制御
 - Orderbook depth / Spread 監視
 - “薄い時間” は Lot 縮小 or Pause
✅ テストネットで全ブランチ通過
✅ mainnet 0.01 BTC 実弾で ポジ残・PnL ログ が設計通りに変動
✅ Slack で DD/VaR トリガー発報 を確認
Phase B – FRベース ポジ管理
<small>6/10 – 6/11</small>
Funding Rate を軸に 在庫バランス を動的調整1. funding_rate_tracker モジュールを cron 1 min 取得
2. FR シグナル ≧ X → Long 縮小 / Short 増加 (逆も然り)
3. ポジション変化は Exit 粒度ロジック を再利用
✅ Backfill データでシミュレータ通過
✅ テストネット 12 h 回して FR ↔ ポジ管理 相関 が想定通り
Phase C – 動的エントリ最適化
<small>6/12 – 6/13</small>
Spread & FR & 流動性 3軸で エントリ ON/OFF を最適化1. adaptive_entry() 内に
 - (a) FR スコア
 - (b) 流動性スコア
 - (c) Live Volatility
 を乗算した スレッショルド S_entry′
2. しきい値は Optuna Light で 24 h 探索
✅ AB テストで Fill 率 / PnL / DD が現行比 +5% 以上
✅ Optuna study 保存 & グラフ出力

⏰ マイルストーン

  • 6/9 (日) 夜 Phase A の実弾ログ + Slack SS をAIに共有
  • 6/11 (火)  Phase B のテスト結果(pandas レポート)確定
  • 6/13 (木)  Phase C Optuna 最終パラメータ確定 → main ブランチマージ
  • 6/14 (金)  本格リリース判定会(コードフリーズ & ドキュメント凍結)

直前チェックリスト ✅

  1. safe_exit() が新 DD/VaR フラグで確実に呼ばれるか — pytest & live log で二重確認
  2. 容量対策は警告だけwatchdog.shdu -sh ./logs | awk → 1 GB 超で Slack ワーニング
  3. Make コマンドに新ターゲットmake backtest-a make run-mainnet を追加して再現性維持
  4. mainnet⇄testnet 分離確認docker compose -f docker-compose.test.yml で誤起動がないか

-Bot, 開発ログ