KarmaStrategy J — v9

BTC Futures 3x Leverage | BB Regime + Bottom Signals + MPI Exit | Commit 3199c3d
Train (2y)
+107%
Val (1y)
+76%
Test (5m)
+10%
Full Sharpe
2.13
Val/Train
0.71

主流程 — 每根 K 棒 (next)

flowchart TD START["每根 K 棒 (1h)"] --> UPDATE["更新 pf_peak / MPI window\n計算 bottom signals\n計算 MPI exit_mult"] UPDATE --> IS_SHORT{"目前持空?"} IS_SHORT -->|是| SHORT_MGR["空單管理"] IS_SHORT -->|否| REBAL_CHECK{"距上次 rebal\n>= 24h?"} REBAL_CHECK -->|否| SKIP["跳過本棒"] REBAL_CHECK -->|是| REGIME["更新 Regime"] REGIME --> ENTER_SHORT{"BEAR regime\nMPI(12h) > 65\nprice < SMA(200)?"} ENTER_SHORT -->|是| DO_SHORT["開空 / 先平多"] ENTER_SHORT -->|否| SCALP_CHECK{"MPI scalp\nexit 觸發?"} SCALP_CHECK -->|是| CLEAR_ENTRY["清除 entry tracking"] SCALP_CHECK -->|否| LONG_SIZE["計算多頭目標倉位"] CLEAR_ENTRY --> LONG_SIZE LONG_SIZE --> APPLY_CAPS["套用 DD cap + 3x 硬上限"] APPLY_CAPS --> EXECUTE{"目標 vs 當前\n差距 > 5%?"} EXECUTE -->|是| BUY_SELL["買入 / 賣出 調整"] EXECUTE -->|否| SKIP style START fill:#1f6feb,color:#fff style SHORT_MGR fill:#da3633,color:#fff style DO_SHORT fill:#da3633,color:#fff style BUY_SELL fill:#238636,color:#fff style SKIP fill:#30363d,color:#8b949e

底部訊號偵測 — _count_signals()

flowchart LR subgraph "Level 1 (weak)" A1["ARI > 3"] B1["ob_dif > 3000"] C1["skew_d14 > 15"] D1["usdc_prem < -0.50"] end subgraph "Level 2 (strong)" A2["ARI > 5"] B2["ob_dif > 4000"] C2["skew_d14 > 25"] D2["same as L1"] end A1 & B1 & C1 & D1 --> COUNT["weak + strong = total"] A2 & B2 & C2 & D2 --> COUNT COUNT --> SIG_RESULT{"total signals"} SIG_RESULT -->|0| NEUTRAL["MPI Neutral Sizing"] SIG_RESULT -->|1-2| POS_70["0.70x"] SIG_RESULT -->|"3+ (weak)"| POS_200["2.00x"] SIG_RESULT -->|"strong >= 1"| POS_200S["2.00x"] SIG_RESULT -->|"strong >= 2"| POS_300["3.00x"] style A2 fill:#da3633,color:#fff style B2 fill:#da3633,color:#fff style C2 fill:#da3633,color:#fff style POS_300 fill:#238636,color:#fff

Regime 切換 — BB(2000h, 1.3σ)

stateDiagram-v2 [*] --> BEAR: 預設 BEAR --> BULL: price < BB_lower\nAND (strong >= 1 OR total >= 3) BULL --> BEAR: price > BB_upper\nAND MPI(48h) > 60 BULL --> BULL: 維持 BEAR --> BEAR: 維持 note right of BULL 多頭模式 MPI neutral sizing 全開 允許最大 3x 做多 end note note right of BEAR 空頭模式 MPI neutral cap = 0.30x 允許做空 end note

MPI Neutral Sizing — 無訊號時的倉位

flowchart LR MPI["MPI raw value"] --> T1{"<= 5"} T1 -->|是| S1["3.0x 🟢🟢🟢\n80% win, 100% up first"] T1 -->|否| T2{"<= 10"} T2 -->|是| S2["2.0x 🟢🟢\n76% up first"] T2 -->|否| T3{"<= 15"} T3 -->|是| S3["1.5x 🟢\n40% may dip"] T3 -->|否| T4{"<= 20"} T4 -->|是| S4["1.0x"] T4 -->|否| T5{"<= 30"} T5 -->|是| S5["0.70x"] T5 -->|否| T6{"<= 50"} T6 -->|是| S6["0.50x"] T6 -->|否| S7["0.0x 🔴\nno position"] BEAR_CAP["BEAR regime?\ncap = 0.30x"] -.-> S1 & S2 & S3 & S4 & S5 & S6 style S1 fill:#238636,color:#fff style S2 fill:#2ea043,color:#fff style S7 fill:#da3633,color:#fff

MPI 出場機制 (雙層)

flowchart TD subgraph "Layer 1: Monthly Range Exit" WIN["720h MPI window"] --> CALC["pct = (MPI - min) / (max - min)"] CALC --> CHECK75{"pct >= 75%?"} CHECK75 -->|否| HOLD["exit_mult = 1.0\n維持全倉"] CHECK75 -->|是| REDUCE["線性減倉\n75% → 1.0x\n100% → 0.0x\n(10 bands)"] end subgraph "Layer 2: Scalp Exit Target" ENTRY["記錄進場 MPI"] --> TARGET["根據 entry MPI\n設定出場目標"] TARGET --> T_LOW["MPI <= 7\ntarget=50, max 14d"] TARGET --> T_MID["MPI 8-17\ntarget=40-50, max 14d"] TARGET --> T_HIGH["MPI > 25\ntarget=50, max 28d"] T_LOW & T_MID & T_HIGH --> HIT{"MPI >= target\nOR 超時?"} HIT -->|是| EXIT_SCALP["觸發減倉"] HIT -->|否| WAIT["繼續持有"] end REDUCE --> FINAL["取兩者較低\n= 實際倉位"] EXIT_SCALP --> FINAL style REDUCE fill:#e3b341,color:#000 style EXIT_SCALP fill:#e3b341,color:#000

做空系統

flowchart TD subgraph "進場條件" COND1["BEAR regime"] --> AND COND2["MPI(12h) > 65"] --> AND COND3["Price < SMA(200)"] --> AND AND{"全部滿足"} -->|是| SHORT_ENTRY end subgraph "分批加倉 (tranches)" SHORT_ENTRY["T1: MPI > 65"] --> T2S["T2: MPI > 75"] T2S --> T3S["T3: MPI > 85"] end subgraph "倉位計算" BASE["base = 0.70x"] --> ADAPT["adaptive multiplier\n(連續獲利加碼 0.3→1.7x)"] ADAPT --> VOL["BB width 波動率調整\n(窄BB → 加碼, 寬BB → 減碼)"] VOL --> CONFIRM["確認訊號加碼"] CONFIRM --> C1S["ob_times < 0.7 → +30%"] CONFIRM --> C2S["btc_liq < -4 → +50%"] CONFIRM --> C3S["usdc_prem > 0.10 → +20%"] end subgraph "出場" EXIT1["MPI(12h) < 36"] EXIT2["Stop Loss 12%"] EXIT3["Regime 翻 BULL"] EXIT4["強底部訊號\n(strong >= 2)"] EXIT1 & EXIT2 & EXIT3 & EXIT4 --> CLOSE_SHORT["平空"] end style SHORT_ENTRY fill:#da3633,color:#fff style CLOSE_SHORT fill:#238636,color:#fff

Drawdown 保護

flowchart LR DD["當前回撤"] --> L1{"DD >= 8%?"} L1 -->|是| CAP1["cap 2.0x"] L1 -->|否| FULL["無限制"] CAP1 --> L2{"DD >= 15%?"} L2 -->|是| CAP2["cap 1.5x"] L2 -->|否| CAP1 CAP2 --> L3{"DD >= 22%?"} L3 -->|是| CAP3["cap 0.7x 🔴"] L3 -->|否| CAP2 style CAP3 fill:#da3633,color:#fff style FULL fill:#238636,color:#fff

底部覆寫 — 最高優先級

flowchart LR HOLDING_SHORT["持有空單"] --> STRONG{"strong >= 2?\n(至少2個Level 2訊號)"} STRONG -->|是| FORCE_CLOSE["強制平空\n+ Regime → BULL\n+ 允許下一棒立即做多"] STRONG -->|否| CONTINUE["繼續空單管理"] style FORCE_CLOSE fill:#238636,color:#fff

完整參數表

bb_period = 2000
Price BB 週期 (~83天)
bb_dev = 1.3
BB 標準差倍數
rebal = 24
Rebalance 間隔 (小時)
max_leverage = 3.0
雙向硬上限
neutral_pos = 0.30
固定 neutral (MPI off 時)
mpi_neutral_enabled = True
啟用 MPI neutral sizing
bear_mpi_neutral_cap = 0.30
BEAR 下 MPI neutral 上限
mpi_window = 720
MPI monthly range (30天)
mpi_exit_start = 0.75
開始減倉的 MPI percentile
sell_mpi = 60
切 BEAR 的 MPI(48h) 閾值
mpi_smooth = 48
MPI long SMA 週期
mpi_short_smooth = 12
MPI short SMA 週期
mpi_short_1/2/3 = 65/75/85
空單分批 MPI 閾值
mpi_exit_short = 36
空單 MPI 出場
short_stop_loss = 12%
空單停損
short_cooldown = 20
空單冷卻 (bars)
ari_level 1/2 = 3.0 / 5.0
ARI 底部訊號閾值
ob_dif_level 1/2 = 3000 / 4000
掛單差值底部閾值
skew_level 1/2 = 15 / 25
Skew 14d 底部閾值
usdc_prem_level = -0.50
USDC 折價底部閾值