larrylarp3-btc-btc3: BTC -1/0/1 classifier (SELL / HOLD / BUY), Kraken PI_XBTUSD + XBTUSD
Not financial advice. Demo / paper trading only until a positive after-cost record exists.
Look-ahead disclosure: the feature dpo is the ORIGINAL MT5 centred Detrended Price Oscillator (pandas-ta dpo(length=21), centred), which uses 11 future bars. Holdout metrics of models that use it are inflated versus live, where dpo is not yet known on the newest 11 bars (live it is edge-filled with the last computed value; every fill is written to logs/flags.log). dpo_causal / dpo_causal_z are causal companions. Ablations without dpo show no edge after costs (negative average net return per trade on every timeframe).
- Trained 2026-10-22 on Kraken OHLCV (spot XBTUSD + futures PI_XBTUSD), walk-forward 5 folds, purge = horizon, last fold = holdout.
- Labels: cost-aware triple barrier (TP 2.5 ATR / SL 1.5 ATR, TA-Lib ATR(10), horizon 1m:30 5m:24 15m:16 1h:12 4h:8 bars; costs = fees + 2x slippage + spread + margin/rollover). Classes are exactly -1/0/1.
- Features: ORIGINAL MT5
compute_technical_indicatorsexecuted 1:1 (mt5_utf8/mt5_signal_script.py, MANIFEST sha25631c328326dd9ec2ddbb818985d1dbdf9469dc6f2fca6dd11305a8360a4eb55d3) incl. strict centreddpo, plusdpo_causal,dpo_causal_z, plus TA-Lib extras (seebtc3_<tf>.jsonfeatures_in_order). - Models: XGBoost multi:softprob (class-balanced) + Keras MLP (class weights), mean probabilities;
btc3_cal_<tf>.joblib= isotonic p_hit + decision margin. Files:btc3_xgb_<tf>.joblib/.onnx,btc3_mlp_<tf>.keras,report3_<tf>.json.
Holdout (last walk-forward fold, after costs)
| TF | macro-F1 (with dpo) | AUC (with dpo) | signals -1/0/1 | non-HOLD trades avg net | gate trades (p_hit>=0.77, EV>0) avg net | ABLATION no-dpo macro-F1 / AUC | no-dpo gate trades avg net |
|---|---|---|---|---|---|---|---|
| 1m | 0.6469 | 0.9981 | 186/40905/230 | 416 @ -0.085% | 35 @ +0.052% | 0.524 / 0.9973 | 38 @ -0.115% |
| 5m | 0.8197 | 0.9868 | 2373/27452/2366 | 4739 @ +0.002% | 1857 @ +0.129% | 0.5991 / 0.9589 | 76 @ -0.216% |
| 15m | 0.8143 | 0.9609 | 5155/21999/5342 | 10497 @ +0.090% | 3903 @ +0.226% | 0.5661 / 0.8828 | 64 @ -0.078% |
| 1h | 0.7802 | 0.914 | 5490/13764/5382 | 10872 @ +0.550% | 5062 @ +0.797% | 0.373 / 0.6283 | 59 @ -0.079% |
| 4h | 0.7824 | 0.9275 | 1623/3521/1393 | 3016 @ +1.468% | 1872 @ +1.758% | 0.3569 / 0.551 | 1449 @ -0.483% |
The "with dpo" columns use the 11-bar look-ahead and are NOT achievable live; the no-dpo ablation is the live-like reference.
Execution gate (hard rule, 2026-10-22): trade only if 0.77 <= p_hit < 0.9888 and EV after costs > 0; p_hit >= 0.9888 = HOLD + flag (overconfident). Defensive mode never changes the gate.