Bot 開発ログ

週次報告(2025/5/23) Weekly Report 5/17 – 5/23

今週は “CI → テスト → 実戦データ回収” のループを高速で回しつつ、
並行プロジェクト(FR 系・マルチ CEX アビトラ)の設計にも着手しました。



1. 1 行サマリ

CI を完全グリーン化 → E2E スクリプト修正 → 本番ネット最小ロット運用再開 —— “測って直す” サイクルの実装に着手した1週間!


2. 日次ハイライト

日付詳細ログ
5 / 17 (土)pre-refactor-dd タグを push し GitHub Actions が発火 → Python 3.10–3.12 マトリクス + カバレッジ 65 % ゲートを初突破。
CI 緑化を受けて mainnet 用一時ブランチ を検討(緊急度低で保留)。
Slack へ成功通知をテスト送信し Webhook 動作を確認。OpenAI o3 モデル一時制限を検知し、サポートへ連絡して代替モデルへ切替。
5 / 18 (日)tests/e2e/realnet_checks.sh を新規作成(本番 API 健全性チェック用)。
ローカル実行で BYBIT_TEST_APIKEY 未定義エラーが発生 → .env 動的ロードの必要性をメモ。
FR Delta-Hedge / FR-Momentum の 6 観点整理メモを作成し Notion へ保存。
5 / 19 (月)Docker 安全停止 & Bind-mount 手順をメモ段階でまとめ始める。Cursor で multi-cex-arb ディレクトリ雛形を自動生成。
tests/e2e/realnet_checks.sh を CI に仮登録し、失敗ログ収集のみで一旦ブロック。
5 / 20 (火)📝ブログ草稿「開発記録 #235(CI 強化 Day)」を執筆。
公開 / 非公開 ラベルを導入し、API キー等を黒塗りして下書きを GitHub Draft に保存。
5 / 21 (水)MMBot本番ネット最小ロットで再起動し、MMBot.log でスプレッド・約定ログを確認。
analyze_pnl_vs_log.py に spread / notional → PnL 結合処理を統合。Slack へ PnL サイクル速報を手動送信しフォーマット確定。
ライブデータで PnL 黒字を初確認(Maker 100 % 固定ロジック)。
5 / 22 (木)E2E スクリプトを .env 読み込み対応でリファクタし、CI が再びパス。mainnet / testnet 変数抽象化 TODO をコメント追加。
Slack Webhook に失敗時アラートの Stub を push。
5 / 23 (金)E2E スクリプト用の 環境変数マップ JSON を作成し抽象化作業を開始。env.sample をリポジトリ直下へ追加し、ドキュメント ToC を更新。
GitHub Actions で両ネット切替のパラメータ渡しテストを実施(matrix 未導入)。
週報用アウトラインを整理し、本記事のドラフトを作成。

3. テーマ別進捗

3-1. コード & テスト

  • CI 品質ゲート確立 – マトリクステスト+カバレッジ門番で “赤いコミットは即 Reject”。
  • E2E real-net スクリプト – .env 読み込みに対応し、落ちる原因を一掃。
  • analyze_pnl_vs_log.py – spread / notional を PnL と結合し、因果分析が 1 コマンドに。

3-2. 戦略リサーチ

  • FR Delta-Hedge / FR-Momentum:6 観点(技術・優位性・リスク etc.)で要件整理完了。
  • マルチ CEX アビトラ:Cursor でフォルダ雛形だけ生成、共通ライブラリ化を検討開始。

3-3. インフラ & 可観測性

  • Docker:安全停止&ログ共有の手順をドキュメント化(まだメモ段階)。
  • Slack 通知:safe-halt(連続失敗 / DD オーバー)まで繋げる設計草案を作成。

3-4. メタ活動

  • GPT-o3 一時制限:Support へ連絡 → 代替フローを確保。
  • 自己スコアリング:日次で「botterスコア」を更新、改善点を即タスク化。

4. 振り返り & 気づき

4-1. 良かった点 ✅

観点具体的成果なぜ良かったか
品質ゲートの常時稼働CI が 3.10-3.12 すべて緑化し、カバレッジ
65 % 未満コミットを自動 Reject
「割れ窓」を根本から封じ、レビュー前に壊れたコードが残らない 状態を実現。今後の開発スピードが加速する土台が整った。
実戦データ回収の再開本番ネット最小ロットで稼働 → ログと PnL を 1 サイクル粒度 で取得機能テストだけでは見えない レイテンシ/スリッページ/ポジション解消タイミング が数字で可視化でき、次のチューニング指標が明確に。
分析パイプラインの“一枚岩化”analyze_pnl_vs_log.pyspread / notional → PnL 結合を統合CSV 手作業や複数スクリプト連携が不要になり、「走らせたその場でグラフ化」までワンショット。検証→修正サイクルがより短く。
Slack 通知フォーマット確定成功/失敗/PnL 報告のテンプレを用意人間の確認コスト をさらに削減。特に失敗時アラートは、深夜稼働の安全網として必須。
戦略リサーチが“構想止まり”で終わらずFR Delta-Hedge/Momentumを 6 観点で定義し、
ディレクトリ雛形+ロードマップに着手
アイデア段階から「実装工程に落とすまで」を同週で行った点が◎。同時並行開発に向けたフットワークが上がった。

4-2. 課題・改善したい点 ⚠️

課題影響対応アクション
オブザーバビリティが部分的PnL は見えるが、
スプレッド変動・板深度・レイテンシ をリアルタイム対比できない
- MMBot.log への 時刻一致キー 追加
- Prometheus or TUI で多軸可視化
- Slack へ 要約スナップショット を自動添付
adaptive_s_entry 未着手スプレッド最適化が静的値のまま → 利益天井が頭打ち- まずバックテストで “感度 1 パラメータ版” を生成
- live モードは パラメータを env 変更だけで切替 できる設計に
E2E ワークフローの二重化が道半ばmainnet / testnet の変数抽象化が手作業 → 誤設定リスク- matrix 戦略で “ネット×ブランチ” パターンを自動生成
- 成功/失敗ログをタグで分離し混在を防ぐ
Docker 停止・再起動手順がドキュメント止まり人手運用箇所が残り、サーバ再構築時の再現性が 100 % ではない- make restart-bot 的ワンコマンド化
- 停止前に ポジ残高&オーダー 自動チェックを組み込み

4-3. 学び & 次に活かすヒント

  1. 「CI 緑化 → 実戦→ PnL 検証」の距離を最短にすることで、
    仮説検証スループット が劇的に向上する。
    来週: adaptive_s_entry を実装し、1 日 1 仮説 を実戦データで潰すリズムを死守。
  2. ログの“粒度”より“照合キー”が重要
    spread・depth・latency を同じタイムスタンプで揃えるだけで
    可観測性グラフ の読解力が一気に高まる。
  3. 通知は「人間の行動トリガー」にならないと意味がない
    失敗アラートには 原因のサマリ+次の手順リンク を添付すべし。
  4. 戦略メモは同日中に“コードの骨格”へ
    仕様書きっぱなしは熱が冷める。ディレクトリと README 雛形を置くと “放置罪悪感” が働き、実装率が上がる。

総括
品質ゲート実戦検証 の2輪が回り始めたことで、
“やるべき改善が自動でリスト化される” フローが完成寸前。
来週は オブザーバビリティ拡張adaptive_s_entry の実装で、
「数字で即座に方針が変えられる」状態を完成させる。


5. 今後 の TODO(優先度順)

  1. E2E real-net ワークフロー:変数抽象化を完了し、GitHub Actions へ再組込。
  2. PNL サイクル自動集計 & TUI / Slack 通知 をリリース。
  3. adaptive_s_entry(スプレッド自動最適化)プロトタイプ → A/B テスト計画。
  4. safe-halt 連携:連続失敗 / 想定外 DD で自動停止&通知。
  5. 共通ライブラリ設計:MM / FR / アービトラを同一抽象レイヤへ統合する設計ドラフト。
優先度タスク目的・ゴール具体アクション完了判定
A-1E2E real-net ワークフローの“二重化”完了本番 vs テストの切替ミスをゼロにし、CI から即デプロイできる状態に- tests/e2e/realnet_checks.sh  ┗ ネット種別・キーを matrix-strategy で渡す- env.sampleenv.testnet / env.mainnet に分割し、CI が自動注入- 成功ログは artifacts/<net>/pass、失敗ログは artifacts/<net>/fail に保存GitHub Actions が mainnet / testnet 両パターンで緑 かつ アーティファクトがネット別に自動仕分け されている
A-2PNL サイクル自動集計+TUI & Slack 通知データ取得から可視化まで 1 分以内で完結し、人間の確認負荷を最小化- analyze_pnl_vs_log.py をモジュール化 → pnl_tui.py 作成(rich or textual)- Slack: /report pnl --last 1h コマンドで直近 Cycles を返す Bot コマンドを追加TUI でライブ PnL が更新 & Slack コマンドが JSON レスポンス < 3 秒
A-3adaptive_s_entry プロトタイプ & A/B テスト設計スプレッド条件を自動最適化し推測コストを削減- 過去 3 日の実データ→ 分位点ごとに PnL/FillRate を計算- ε-greedy アルゴで次サイクルのスプレッド閾値を決定- Feature Flag (ADAPTIVE_ENTRY=on/off) を env で切替- mainnet は “off” でスタート→ A/B*テストネットで ADAPTIVE=on が PnL Δ > +5 % を示したら mainnet へ昇格
B-1safe-halt(連続失敗 / 想定外 DD)実装想定外損失を防ぎ、24 h 無人運用の安全網を構築- failure_counter を Redis / SQLite に追加- 連続失敗 ≥ N & DD ≥ X で graceful exit → Slack ALERT- exit 時に 取引所ポジション/注文残 を即キャンセルテストネットで意図的に N 失敗を起こし、Bot が自動停止&通知
B-2共通ライブラリ設計 (MM / FR / Arb)複数 Bot を 1 リポで並行開発し、重複コードを排除- core/Exchanges, PositionManager, RiskGuard 抽象層を定義- 既存 MMBot を移植 → テスト通過後 FR Bot スケルトンを生成- docs: “Strategy adds X linesのみで実装” ガイドを書くMMBot が新 core/ 上で動き CI 緑FR スケルトンのユニットテスト通過
C-1オブザーバビリティ拡張(板深度・レイテンシ)戦略改善サイクルの決定打を“勘”から“数字”へ- WS 受信時刻 ⇆ 注文 Fill 時刻のラグを ms 単位で記録- 板深度 5 枚の連続スナップを depth.csv へストリーム- Grafana or matplotlib quick-plot で相関を可視化深度・レイテンシ指標が PnL と同タイムスタンプで並列保存
C-2Docker 安全停止 & 再起動ワンコマンド化手順属人化を排除、再現性 100 %- scripts/restart.sh:  ① open orders/positions check  ② kill -SIGINT  ③ healthcheck passで起動完了- make restart-bot ターゲットを追加任意時点で make restart-bot → 予期せぬポジ残無し

優先度の考え方

  • A レベル:来週中に完了しないと実戦 PDCA 速度が落ちるもの
  • B レベル:安全性・拡張性を高める大粒タスク。A が終わり次第すぐ着手
  • C レベル:効果は高いが A/B を阻害しない範囲で並行進行

週末セルフチェック用

  1. A-1, A-2, A-3 が Done → PnL/ログ指標が Slack に自動飛んでいるか?
  2. safe-halt がテストネットで発火 → 通知まで到達したか?
  3. core/ 移行後も MM テストが全緑か?

このリストをベースに “毎朝 1 タスク完了” 目標で進めれば、
次回週報で MMBot 収益フェーズ への移行が具体的数字で示せるはずです。


6. おわりに

品質ゲート × 実戦データ」の歯車が噛み合ったことで、
“測って直す → また測る” という 高速 PDCA がようやく実現しはじめました。

来週は 可観測性の仕上げadaptive_s_entry の実装で、
いよいよ “収益ブースト検証” フェーズに踏み込みます。

次回の自分へ ⚒️
1 日 1 ループでデプロイまで回せ。数字で語れ。焦らず、でも止まらず。

それでは、また来週の開発ログでお会いしましょう。

-Bot, 開発ログ