Bot mmnot 開発ログ

🛠️開発記録#235(2025/5/20)🚀「CI・テスト体制 最終強化 Day」レポート

1. 今日やったこと

カテゴリ作業効果
CI & 品質ゲートGitHub Actions をマトリクス化(Py 3.10-3.12)
pytest --cov-fail-under=65 でカバレッジ門番を導入
どの PR でも 65 % 未満は自動 Reject。Python 全バージョンで動作保証
テスト拡充CLI のロジックを純関数化
should_enter / drawdown / dd_warn / dd_stop 追加
ユニットテスト 49→55 件、CLI カバレッジ 22 %→88 %
カバレッジ最適化I/O 依存の巨大ループ run_loop()# pragma: no cover で除外総カバレッジ 90 % 達成(無駄に遅いテストも排除)
Codecov 連携3.12 ジョブのみ coverage.xml アップロードPR で差分カバレッジが見える
pre-commit フック整備Ruff / Black をローカルでも自動実行「push したら CI でだけ落ちる」 問題を撲滅
README 更新セットアップ 10 min レシピ+CI/Codecov バッジ新規参加者が環境構築で迷わない

2. これで Bot は何ができるようになったか

効果具体例
壊れにくい基盤総カバレッジ 90 %・CI 3系テストで “踏んだ瞬間に赤く光る”
高速 PDCA サイクルCLI ロジックを純関数化 → 新しい計算式は 関数1本+テスト1本 で即検証
次フェーズ機能を“差し込める”設計動的エントリー・FR 管理などマーケット依存のアルゴを、純関数として追加→CIで安全に織り込める
デプロイ容易GHCR ビルドを足すだけで docker pull で本番更新(CI 緑をトリガに自動 push 予定)

3. 次にやること(テストネット運用ロードマップ)

ステップ目的期日(ざっくり)
A–F 安全チェックDD guard / API エラー耐性など実地検証5/21
24 h テストネット運転メモリリーク・再接続障害の検出5/22
ミニマム本番移行sub-account で 48 h 運転5/24
Docker / GHCR 自動ビルドテスト合格後のみイメージ push5/25
Prometheus + GrafanaPnL・DD を可視化5/27
動的エントリー (v0.2)ボラ/板厚に応じた s_entry 自動調整5/30
FR ポジション管理 (v0.3)Funding Rate を加味した建玉調整6/02
ポジション統合ロジック複数戦略の Net Exposure を統制6/05
Web ダッシュボード βFastAPI + WS でリアルタイム可視化6/08

4. 付録:テストネット安全チェック A–F

#チェック内容操作例合格条件
A資金上限設定(sub-account)Bybit Testnet → 資金 ≤ 100 USDT・ポジ上限 1 USDT口座残高&上限が反映
BDD guard 強制停止UPDATE trades SET pnl=-9999; → bot 再起動Slack 🔥 通知+プロセス exit
C0 スプレッド抑止TICK_THR=100 で 10 cycle 起動発注 0 件・Slack に skip ログ
DAPI エラー耐性place_limit_order を一時的に raise Exception("mock")⚠️ 通知×3 → プロセス exit
ESlack 不達Webhook を 404 URL に切替ループ継続、ハングしない
Fmax_cycles=3 ドライランMAX_CYCLES=3 で起動DB 行 6 / Slack 3 件 / 正常終了

覚え書き

  • DD guard / Slack 通知の文言はあとで和英併記にする
  • Docker Compose 用 env.testnet を作ると環境変数切替が楽

5. 今後実装予定の“本丸”機能

機能ねらい
動的エントリー(Adaptive Spread Entry)市場ボラや板厚をリアルタイム計測し、s_entrytick_thr を動的に調整。
“閑散時は浅く/活況時は深く” エントリーして手数料最適化。
FR(Funding Rate)ポジション管理資金調達料の正負を加味し、ロング・ショート許可フラグを自動切替。
日跨ぎでの負の FR コストを最小化。
ポジション統合ロジック同時に複数戦略を走らせても Net Exposure が一定内に収まるよう、共通の在庫管理レイヤーを追加。
Web ダッシュボードFastAPI + WebSocket でストリーミング板・ポジション状況・DD をリアルタイム表示。
E2E Stub テストrespx / pytest-httpx / sqlite :memory: で 1 サイクル再現。
Bybit API Breaking Change を CI で即検知。

これらが揃えば 「24/7 放置でも資金効率を自動最適化する MMbot」 に到達。
安全ネットを張った上で、ようやく 攻め の機能に着手します 💪


今日の合言葉:

「テストで地面を固め、CI で網を張り、次は空中戦。」

-Bot, mmnot, 開発ログ