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 自動ビルド | テスト合格後のみイメージ push | 5/25 |
Prometheus + Grafana | PnL・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 | 口座残高&上限が反映 |
B | DD guard 強制停止 | UPDATE trades SET pnl=-9999; → bot 再起動 | Slack 🔥 通知+プロセス exit |
C | 0 スプレッド抑止 | TICK_THR=100 で 10 cycle 起動 | 発注 0 件・Slack に skip ログ |
D | API エラー耐性 | place_limit_order を一時的に raise Exception("mock") | ⚠️ 通知×3 → プロセス exit |
E | Slack 不達 | Webhook を 404 URL に切替 | ループ継続、ハングしない |
F | max_cycles=3 ドライラン | MAX_CYCLES=3 で起動 | DB 行 6 / Slack 3 件 / 正常終了 |
覚え書き
- DD guard / Slack 通知の文言はあとで和英併記にする
- Docker Compose 用
env.testnet
を作ると環境変数切替が楽
5. 今後実装予定の“本丸”機能
機能 | ねらい |
---|---|
動的エントリー(Adaptive Spread Entry) | 市場ボラや板厚をリアルタイム計測し、s_entry と tick_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 で網を張り、次は空中戦。」