今週は「システム周りの細々したことをさわりつつ、必要なものだけを最小構成で取り入れた」一週間でした。
1. 今週のハイライト 🔦
日付 | キーワード | ざっくり出来事 |
---|---|---|
5/31 | v2 基盤リファクタ | .env 分離, docker-compose 再配線を完了。270 file の大掃除コミットでレガシー CI 設定・不要 GitHub files を一斉削除。 |
6/1 | 再起動体制完成 | restart: unless-stopped で Docker 自律再起動 を組み込み、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/4 | CI / GitHub Ops スリム化 mainnet / testnet の完全分離 | Draft PR 説明テンプレ作成。e2e-real.yml をスリム化し Real API 用 E2E ワークフローの土台を push。Slack Webhook 分離も試行。環境変数 ( MMBOT_MODE ) と docker-compose.{prod,test}.yml の2ファイル構成に分割。entrypoint で envsubst → config_{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 を purge | tag pre-refactor-dd で旧世代をスナップショット保存済み |
運用パラメータ検証 | 🔄 テストネットでスプレッド閾値緩和・Lot 拡大テスト | DD 発火 → ポジション残り問題を再確認、次フェーズで損切りロジック強化へ |
3. 今週遭遇した課題 & 暫定対処 💣
- MMBot.log が生成されない
→ 空ファイル作成 → 再起動で volume mount 正常化を確認。 - watchdog cron 権限問題
→xattr
/ 実行権を洗浄中。run_watchdog.sh
をシェル直実行して切り分け。 - 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 (金) 本格リリース判定会(コードフリーズ & ドキュメント凍結)
直前チェックリスト ✅
- safe_exit() が新 DD/VaR フラグで確実に呼ばれるか — pytest & live log で二重確認
- 容量対策は警告だけ:
watchdog.sh
にdu -sh ./logs | awk
→ 1 GB 超で Slack ワーニング - Make コマンドに新ターゲット:
make backtest-a
make run-mainnet
を追加して再現性維持 - mainnet⇄testnet 分離確認:
docker compose -f docker-compose.test.yml
で誤起動がないか
安定してきた。現段階でも下手くそなエントリが減っているのは良い兆候。ここから真剣に詰めていく。 https://t.co/rn0Y9ekfhI pic.twitter.com/aJzLAhox4a
— よだか(夜鷹/yodaka) (@yodakablog) June 4, 2025