jgrusewski
e140392f86
feat(audit): per-regime val WR instrumentation (T/R/V buckets)
Adds 6 output slots to compute_backtest_metrics_kernel — per-bucket
(win_rate, trade_count) for the {Trending, Ranging, Volatile} regime
split — so the val backtest surfaces whether the long-running ~46%
aggregate WR hides regime-conditional edge. Trades are bucketed at
trade-OPEN by feature[40] (ADX-norm) per the structural thresholds
(T:ADX>0.4, R:ADX<0.2, V:otherwise), mirroring
gpu_walk_forward.rs::classify_regime_from_features. Block tree-reduce
only per feedback_no_atomicadd. Observability-only emission via new
HEALTH_DIAG[N]: val_regime [wr_T=... n_T=... wr_R=... n_R=... wr_V=...
n_V=...] line; thresholds remain kernel constants per
feedback_isv_for_adaptive_bounds (no controller consumer yet).
Implementation atomic (kernel + launcher + WindowMetrics + HEALTH_DIAG
emit + 3 GPU oracle tests + audit doc):
- backtest_metrics_kernel.cu: per-thread per-regime trade counters,
2-slot boundary buffer extension carrying open-bar regime through
block stitch, output stride 13 → 19, shmem 5 → 11 reduction tiles
- gpu_backtest_evaluator.rs: WindowMetrics +6 fields, metrics_buf
size 13 → 19, launcher passes features_buf + feature_dim, consume
populates per-regime fields
- metrics.rs: val_regime HEALTH_DIAG line in consume_validation_loss
- regime_wr_oracle_tests.rs (NEW): 1 CPU sanity + 3 GPU oracle tests
(bit-exact match ε=1e-5 vs CPU oracle on stratified 30/40/30 batch)
Validation: cargo check --workspace clean; 17/17 gpu_backtest_evaluator
unit tests pass; 1+3/4 regime WR tests pass on local RTX 3050 Ti
(1.89s); audit_sp18_consumers.sh --check exit 0.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 13:38:48 +02:00
..
2026-05-06 15:05:34 +02:00
2026-03-02 15:41:23 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-04-11 11:54:09 +02:00
2026-03-29 21:32:04 +02:00
2026-03-15 12:00:13 +01:00
2026-05-08 03:30:44 +02:00
2026-03-13 10:30:51 +01:00
2026-03-15 12:00:13 +01:00
2026-03-13 10:18:35 +01:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-03-15 12:00:13 +01:00
2026-04-11 11:54:09 +02:00
2026-03-13 10:18:35 +01:00
2026-03-19 10:02:26 +01:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-03-19 10:02:26 +01:00
2026-04-28 18:54:00 +02:00
2026-04-27 17:52:23 +02:00
2026-03-13 10:18:35 +01:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-19 10:02:26 +01:00
2026-03-19 08:55:55 +01:00
2026-03-15 12:00:13 +01:00
2026-03-19 10:02:26 +01:00
2026-04-24 01:55:14 +02:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-04-01 01:13:19 +02:00
2026-03-25 09:45:54 +01:00
2026-04-28 18:54:00 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-03-13 10:18:35 +01:00
2026-03-31 01:30:33 +02:00
2026-03-31 01:30:33 +02:00
2026-04-24 01:55:14 +02:00
2026-04-28 18:54:00 +02:00
2026-04-11 11:54:09 +02:00
2026-03-19 10:02:26 +01:00
2026-04-28 18:54:00 +02:00
2026-04-11 11:54:09 +02:00
2026-03-16 21:01:28 +01:00
2026-03-16 21:01:28 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-13 10:18:35 +01:00
2026-04-11 15:21:21 +02:00
2026-03-31 10:56:20 +02:00
2026-04-28 18:54:00 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-03-25 09:45:54 +01:00
2026-03-29 21:32:04 +02:00
2026-03-13 10:18:35 +01:00
2026-03-15 12:00:13 +01:00
2026-03-31 01:30:33 +02:00
2026-04-20 15:29:05 +02:00
2026-03-13 10:18:35 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-04-23 11:36:34 +02:00
2026-05-06 23:39:45 +02:00
2026-05-05 10:46:20 +02:00
2026-03-25 09:45:54 +01:00
2026-03-19 10:02:26 +01:00
2026-03-31 10:56:20 +02:00
2026-03-13 10:18:35 +01:00
2026-03-31 01:30:33 +02:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-15 12:00:13 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 10:02:26 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 10:02:26 +01:00
2026-03-13 10:18:35 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 08:59:52 +01:00
2026-03-20 15:41:42 +01:00
2026-03-19 10:02:26 +01:00
2026-03-18 00:53:47 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 10:02:26 +01:00
2026-04-01 01:13:19 +02:00
2026-03-15 12:00:13 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-04-28 09:10:31 +02:00
2026-03-15 12:00:13 +01:00
2026-04-28 09:23:32 +02:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-04-20 15:29:05 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-03-19 10:02:26 +01:00
2026-03-19 08:59:52 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 10:02:26 +01:00
2026-04-11 15:21:21 +02:00
2026-03-19 10:02:26 +01:00
2026-03-19 10:02:26 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-19 10:02:26 +01:00
2026-04-23 08:44:05 +02:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-04-23 08:44:05 +02:00
2026-04-02 14:21:45 +02:00
2026-03-13 10:18:35 +01:00
2026-04-11 11:54:09 +02:00
2026-03-19 08:59:52 +01:00
2026-03-15 12:00:13 +01:00
2026-03-13 10:18:35 +01:00
2026-03-15 12:00:13 +01:00
2026-03-19 10:02:26 +01:00
2026-03-19 10:02:26 +01:00
2026-03-19 10:02:26 +01:00
2026-04-11 11:54:09 +02:00
2026-03-13 10:18:35 +01:00
2026-04-28 18:54:00 +02:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 10:02:26 +01:00
2026-03-15 12:00:13 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 08:55:55 +01:00
2026-03-13 10:18:35 +01:00
2026-05-09 13:38:48 +02:00
2026-03-15 12:00:13 +01:00
2026-04-11 11:54:09 +02:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 10:02:26 +01:00
2026-05-03 09:52:33 +02:00
2026-03-19 10:02:26 +01:00
2026-05-05 10:52:13 +02:00
2026-05-03 11:34:21 +02:00
2026-05-04 11:51:30 +02:00
2026-05-04 19:32:18 +02:00
2026-05-05 14:45:47 +02:00
2026-05-05 14:09:48 +02:00
2026-05-09 10:43:11 +02:00
2026-05-07 23:36:07 +02:00
2026-05-08 23:02:35 +02:00
2026-05-09 01:36:52 +02:00
2026-05-09 11:05:03 +02:00
2026-05-09 02:09:25 +02:00
2026-05-09 11:25:50 +02:00
2026-05-09 01:47:48 +02:00
2026-03-19 10:02:26 +01:00
2026-03-21 09:14:53 +01:00
2026-04-10 18:52:21 +02:00
2026-03-19 08:59:52 +01:00
2026-03-19 10:02:26 +01:00
2026-03-15 12:00:13 +01:00
2026-03-19 08:44:50 +01:00
2026-03-19 10:02:26 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-19 10:02:26 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 08:44:50 +01:00
2026-03-15 12:00:13 +01:00
2026-03-19 10:02:26 +01:00
2026-03-19 10:02:26 +01:00
2026-03-19 08:44:50 +01:00
2026-03-19 08:59:52 +01:00
2026-03-16 16:11:48 +01:00
2026-03-14 11:35:15 +01:00
2026-04-11 15:21:21 +02:00
2026-04-11 11:54:09 +02:00
2026-03-13 10:18:35 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-04-04 10:02:37 +02:00
2026-04-11 11:54:09 +02:00
2026-04-11 11:54:09 +02:00
2026-03-15 12:00:13 +01:00
2026-03-15 12:00:13 +01:00
2026-03-13 10:18:35 +01:00
2026-03-19 10:02:26 +01:00