優化策略配重、設定波動率目標,並自動化下單調倉。
管理系統讀取所有策略的回測結果,找出讓投組動能最大化的配重,再化成每個策略的下單金額。Reconciler 隨後讓交易所實際持倉持續對齊這些金額。
strategy.py ──► state.json ──────────┐
(cron) stats.json ├──► reconciler.py ──► exchange
manager.py ──► portfolio_config.json ┘
對每個策略跑一次回測,這會在策略資料夾裡寫入 stats.json(含每日報酬)。
python3 strategies/my_strategy/strategy.py
沒有 stats.json 的策略會被 manager 跳過。
執行投組優化器。它讀取所有 stats.json,找出讓合併後股權曲線 slope/std 最大的配重。
python3 manager/manager.py --target-vol 0.30
--target-vol 0.30 設定年化波動率目標(30%)。Manager 計算 leverage = target_vol / portfolio_vol 並存入 portfolio_config.json。
確認 manager/portfolio_config.json,裡面有每個策略的下單金額(amounts,實盤倉位的計算基準)、交易所路由,以及優化器算出的配重與槓桿。
{
"amounts": {
"btc_ti_24h": 6000,
"btc_ti_24h_short": 4000
},
"exchanges": {
"btc_ti_24h": "bingx",
"btc_ti_24h_short": "bingx"
},
"weights": {
"btc_ti_24h": 0.60,
"btc_ti_24h_short": 0.40
},
"leverage": 2.62
}
倉位以金額制計算:target = amount × position。絕對不要手改這個檔案——金額請在工作區「下單設定」頁設定(或請 agent 代勞),優化器配重也只透過 manager.py --apply 寫入。
啟動 reconciler。它每 5 秒輪詢一次,只要策略訊號、下單金額或下單開關有變動就對帳一次,另外每 5 分鐘再保底對帳一輪。
bash manager/start_reconciler.sh
串接交易所時,agent 會把 get_positions() 和 place_order() 接上該交易所的下單函式庫——這一步不用你自己動手。
Manager 在過去 N 天(預設 365 天)的投組股權曲線上,最大化 slope / std。Slope 是對累積報酬做線性回歸得到的斜率——曲線越陡峭得分越高。除以 std 則懲罰波動,讓優化器自然偏好穩定上升的策略組合。
找到最佳配重後,manager 計算投組年化波動率並推導槓桿係數:leverage = target_vol / ann_vol。這讓所有倉位等比放大,無論底層策略波動多大,投組的實際風險都貼近你設定的目標。