了解 BlaveClaw 工作區的每個檔案與資料夾。
workspace/
├── strategies/ # 你的策略
├── examples/ # 範例策略(參考用)
├── lib/ # 共用函式庫
├── manager/ # 投組管理系統
├── cache/ # API 資料快取(自動產生)
├── references/ # 策略撰寫與部署指南
└── AGENTS.md # Bot 行為規範
每個策略放在自己的子資料夾。Bot 依 cron 排程執行 strategy.py,並自動寫入輸出檔案。
strategies/
└── my_strategy/
├── strategy.py # 策略邏輯
├── scan.py # 參數掃描(選用)
├── stats.json # 回測結果 + 每日報酬
├── state.json # 即時倉位狀態
├── pnl.png # 資金曲線圖
└── orders.jsonl # 下單紀錄
所有共用工具都在 lib/。從這裡 import,不要在策略檔中重複實作。
| 檔案 | 用途 |
|---|---|
runner.py | 統一回測與即時執行器(Type A 與 C) |
data.py | 所有資料抓取——K 線、Alpha 指標、台股、期貨 |
execute.py | 即時狀態管理:載入/儲存/更新倉位、下單紀錄 |
pnl.py | 將每日報酬寫入 stats.json;為 manager 載入所有策略 |
portfolio.py | 彙整目標倉位、計算差值、執行 reconcile |
strategy.py | 波動率 targeting 工具:add_realized_vol、apply_vol_scaling |
analysis.py | PnL 圖表、市場狀態分析、滑點分析、隨機 B&H 基準 |
param_scan.py | 2D 參數掃描:percentile_thresholds、scan_grid、find_plateau、plot_heatmap |
validation.py | 蒙地卡羅置換檢定(mcpt)—— 驗證策略統計顯著性 |
notify.py | Telegram 發送:make_sender()、send_text()、send_photo() |
manager/ 負責多策略投組優化與訂單調倉。刪除個別策略時,不要動這個資料夾。
| 檔案 | 用途 |
|---|---|
manager.py | 讀取所有策略的 stats.json,找出讓投組 slope/std 最大的配重,並將最佳配重與槓桿寫入 portfolio_config.json。執行: python3 manager/manager.py --target-vol 0.30 |
reconciler.py | 每 5 秒輪詢一次;偵測到策略 state.json 變動後,計算目標倉位(含槓桿)並在交易所下單。執行: python3 manager/reconciler.py |
portfolio_config.json | 由 manager.py 寫入。包含配重、槓桿、目標與實際波動率。 |
leverage = target_vol / ann_volatility,使投組實際風險符合目標(例如年化 30% 波動率)。reconciler 下單時,所有倉位大小都乘上此係數。strategy.py ──► state.json ──────────┐
(cron) stats.json ├──► reconciler.py ──► exchange
manager.py ──► portfolio_config.json ┘
Reconciler 同時需要兩個來源才能算出下單金額:target = account_value × leverage × weight × position