Skip to content

Commit 9265c69

Browse files
committed
Deploy Binance hourly XGB margin pack
1 parent 496b47a commit 9265c69

13 files changed

Lines changed: 2349 additions & 213 deletions

bestxgb.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# Best Binance Hourly XGB Portfolio Pack
2+
3+
Last updated: 2026-05-04
4+
5+
## Current Frontier
6+
7+
The current deployed frontier is the aggressive correlation-packed variant:
8+
9+
- Label: `h12_short_corr168_08_aggr2777_dd1998_20260504`
10+
- Eval window: 2026-01-04 to 2026-05-04, about 120 days
11+
- Market: Binance spot hourly data, top 36 symbols by recent dollar volume
12+
- Side: short-only
13+
- Horizon: 12 hours
14+
- Positions: 2 active positions, 4 pending entry watchers
15+
- Selection: `first_trigger`
16+
- Correlation packing: 168 hourly bars, min 48 return observations, max signed correlation 0.8
17+
- Entry allocator: concentrated, max single position fraction 0.8, min second position fraction 0.2
18+
- Leverage: 2.55x gross
19+
- Drawdown entry scaler: start 4.5%, full 15%, floor 32%
20+
- Fee/slippage realism: 10 bps fee, 5 bps fill buffer, 10 bps force-close slippage, 6.25% margin APR, decision lag 2
21+
22+
## Current Result
23+
24+
- Monthly return: 27.77%
25+
- Total return: 165.39%
26+
- Max drawdown: 19.98%
27+
- Sortino: 4.85
28+
- Exits: 260
29+
- Selection score: 870.80
30+
31+
Artifacts:
32+
33+
- CSV: `analysis/binance_hourly_aggressive_sweep_20260504.csv`
34+
- HTML review: `analysis/binance_hourly_aggressive_sweep_20260504.html`
35+
- JSON summary: `analysis/binance_hourly_aggressive_sweep_20260504.json`
36+
37+
Deployed live runner:
38+
39+
- Supervisor program: `binance-hourly-xgb-margin-pack`
40+
- Launch: `deployments/binance-hourly-xgb-margin-pack/launch.sh`
41+
- Runner: `scripts/binance_hourly_xgb_margin_trader.py`
42+
- Current plan artifact: `analysis/binance_hourly_xgb_margin_plan_latest.json`
43+
44+
Live verification on 2026-05-04:
45+
46+
- Binance writer audit passes with one `xgb_hourly_pack` writer and the old Binance trading daemons stopped.
47+
- Existing margin coverage is `6/6` covered.
48+
- First live cycle selected `FILUSDT` and `TONUSDT`; both entries filled `0`, were canceled, and post-cycle coverage stayed `6/6` covered.
49+
- The runner now has a post-cycle settle wait before coverage re-audit to handle transient Binance margin asset state after canceled borrow-style orders.
50+
51+
## Previous Frontier
52+
53+
This is the best corrected Binance hourly XGB result found so far after adding
54+
direct trailing pairwise correlation gating on top of the short-mode candidate
55+
ranking and concentrated allocator leverage fixes.
56+
57+
- Eval window: 2026-01-02 to 2026-05-02, about 120 days
58+
- Market: Binance spot hourly data, top 36 symbols by recent dollar volume
59+
- Side: short-only
60+
- Horizon: 12 hours
61+
- Positions: 2 active positions, 2 pending entry watchers
62+
- Selection: `first_trigger`
63+
- Correlation packing: 168 hourly bars, min 48 return observations, max signed correlation 0.8
64+
- Entry allocator: concentrated, max single position fraction 0.8, min second position fraction 0.2
65+
- Leverage: 2.55x gross
66+
- Drawdown entry scaler: start 4.5%, full 15%, floor 32%
67+
- Fee/slippage realism: 10 bps fee, 5 bps fill buffer, 10 bps force-close slippage, 6.25% margin APR, decision lag 2
68+
69+
## Result
70+
71+
- Monthly return: 27.95%
72+
- Total return: 168.01%
73+
- Max drawdown: 29.66%
74+
- Sortino: 4.09
75+
- Exits: 246
76+
- Selection score: 852.54
77+
78+
Artifacts:
79+
80+
- CSV: `analysis/binance_hourly_twopos_h12_short_corr168_08_2795_20260504.csv`
81+
- HTML review: `analysis/binance_hourly_twopos_h12_short_corr168_08_2795_20260504.html`
82+
- Trace JSON: `analysis/binance_hourly_twopos_h12_short_corr168_08_2795_20260504.json`
83+
84+
Previous frontier:
85+
86+
- `analysis/binance_hourly_twopos_h12_short_diversified_27pct_20260503.csv`
87+
- Monthly return 27.18%, total return 161.22%, max drawdown 31.46%, Sortino 3.89, 248 exits.
88+
89+
## Caveats
90+
91+
The current aggressive variant is deployed, but it is still a one-sided short
92+
strategy. Keep the rollout small and watch live fill quality, borrow behavior,
93+
exit coverage, and regime drift closely. The previous `27.95%/mo` row crossed
94+
the monthly PnL target but was not deployed because its max drawdown was still
95+
near 30% and writer isolation had not yet been cleaned up.
96+
97+
## 2026-05-04 Deploy Path
98+
99+
- Added `scripts/binance_hourly_xgb_margin_trader.py` as the dedicated
100+
one-cycle inference/deploy runner for this candidate.
101+
- Dry-run on refreshed data through `2026-05-04T05:00:00Z` selected `0`
102+
candidates at `2026-05-04T03:00:00Z`; the same was true with live account
103+
state disabled, so no live order was sent.
104+
- Live execution is intentionally blocked unless writer isolation is clean,
105+
data is fresh, exit coverage passes, and `ALLOW_BINANCE_XGB_LIVE_TRADING=1`
106+
is set.
107+
- For short entries, the live path places `SELL`/`AUTO_BORROW_REPAY`, watches
108+
fills, places matching `BUY`/`AUTO_REPAY` exits for filled quantity, and
109+
cancels unfilled entries by default.
110+
- Current machine is now deploy-clean for Binance: the old trading daemons are
111+
stopped and the process audit allows exactly one `xgb_hourly_pack` writer.
112+
113+
## 2026-05-04 Notes
114+
115+
- Pulled upstream XGB research work through `496b47ac`, including `xgbbest.md`,
116+
`xgbnew/` correlation-packing work, BitBankGo-style worksteal allocation
117+
probes, and a torch hourly level optimizer.
118+
- Direct correlation gating worked better than the earlier PC2 bucket heuristic
119+
when used alone. The best 36-symbol row at `corr_window=168`,
120+
`corr_max_signed=0.8`, and `2.55x` reached 27.95% monthly with 29.66% DD.
121+
- Combining direct correlation with the old PC buckets over-pruned the edge.
122+
A hard `corr_max_signed=0.4` row went negative; `0.8` was the useful setting.
123+
- Expanding the exact same shape to 60 symbols failed badly
124+
(`-20%/mo`, DD above 75%). More pairs need learned/rolling symbol filters
125+
before they are useful.
126+
- The pulled long-only 48h hourly level optimizer was refuted as-is on Binance:
127+
BTCUSDT, ETHUSDT, and SOLUSDT all compounded near -100% in the smoke run.
128+
This direction still needs side-aware long/short choice and portfolio-level
129+
risk controls before it is worth comparing to the XGB pack.
130+
131+
## Next Ideas
132+
133+
- Reduce one-sided short risk with long/short hedging that does not destroy the
134+
short edge.
135+
- Keep improving correlation-aware packing: try soft penalties instead of hard
136+
skips, and train a rolling symbol filter for the 60-symbol universe.
137+
- Expand beyond 36 symbols and let the selector opportunistically trade more
138+
pairs while constraining liquidity.
139+
- Combine hourly and daily context: train hourly execution levels against
140+
24-48 hour forecast windows, then fit buy/sell levels that maximize realized
141+
simulator PnL.
142+
- Explore fast retrain/test-time adaptation over 1-2 day windows as part of the
143+
simulated algorithm, not as offline leakage.

0 commit comments

Comments
 (0)