Quant review 2026-09-26: alert cooldown, plain-language alerts, M15 grade-A SELL block, 1R printed targets, panel/breach fixes

Live signals.db review (2026-09-04 → 09-25, 100 unique setups replayed on the
scans' stored candles): the stop-hunt claim is refuted (71% of stop-outs ran
≥ 1R past the stop, the same as the books' 70–72%); −25.1R of the −37.8R raw
live book were consecutive-bar re-entries the backtester's 5-bar cooldown never
takes; the cooldown view sits at the 3rd–5th percentile of the books' three-week
windows.

Delivery (book-neutral):
- telegram_bot: 5-bar alert cooldown per timeframe (_ALERT_COOLDOWN_BARS =
  backtest.cooldown_bars); setup block prints the trail first as the tested
  exit, TP1/TP2 as guides with their R, "Planned TP1 RR", and one validated-book
  line per setup class (agent_panel_base_rates.json); the informational 100-pip
  TP line is removed (owner request).
- AI block rewritten for a new trader: "AI check: the odds look better than /
  worse than / about usual", the chance "in 100" against the usual odds, one
  reason for and one against, no verdict word or confidence figure; rendered
  whenever the verdict carries a probability. agent_panel: persona prompts ban
  trading jargon (PANEL_PROMPT_VERSION v2.1-2026-09-26); the macro-source
  verdict now carries its persona's p_win (every live v2 row had
  panel_probability NULL). Dashboard and guides mirror the wording.
- telegram_bot: level-breach rescans skip the settlement-pause window (the
  20:45 M15 bar was re-logged at 22:01/22:06/22:11 every evening).

Signal (pre-registered rule-1 campaign, CUDA twin paired with gpu_backtest.py):
- M15 grade-A SELLs blocked (sell_min_quality ["A+","B"], M15 override 6):
  W2 813/+154.15R PF 1.53 vs 931/+146.14R PF 1.43, OOS +68.5 vs +60.67,
  W3 max DD 20.9 vs 19.3R. PASSED a–f.
- Printed target 1 floored at 1R in every generator (signals.tp_print_floor_rr),
  applied AFTER the min-RR and spread gates so no trade changes; mirrored in
  cuda_signal_kernels.py K2. Label-only re-pin of all four timeframes (only
  tp1/rr_planned columns move). A floor applied before the gate cost −24.6R and
  was rejected.
- FAILED: M15 min_rr_ratio 1.0 (trade-identical, −2.0R). Owner's call: M5
  tp_floor_rr 1.0 (+48.9R W2, max DD 10.1 → 15.9R), not shipped.

New pins: M5 W2 e599c8a8…, M15 W2 5b65ecf6…, M15 OOS 09b8a8e7…, H1 W3
a44fd19b…, H4 W3 f3587bae…; twin and reference MD5s equal on every window.
Base-rate table rebuilt from the new pins. Suite 558 passed.

Evidence: backtest/research/rr_and_sell_campaign_2026-09-26.md (plus the
2026-09-18 loss-anatomy and wrong-direction reports it builds on).
This commit is contained in:
Harwinder Sekhon
2026-09-26 21:06:05 -04:00
parent 266f204d35
commit 4e0a083955
16 changed files with 1695 additions and 201 deletions
+53 -69
View File
@@ -1,33 +1,33 @@
{
"schema": "agent-panel-base-rates-v1",
"generated_at": "2026-09-17T15:26:15+00:00",
"generated_at": "2026-09-27T00:45:18+00:00",
"key": "timeframe|strategy|grade|direction ('*' = any)",
"min_n_for_exact_class": 30,
"books": {
"5min": {
"file": "m5_w2.csv",
"md5": "49f8e602fc6ae769713c94ef7b257810",
"md5": "e599c8a8652f95b7fcdf5a7ef2b564f5",
"trades": 781,
"first_entry": "2024-09-06 18:00:00+00:00",
"last_entry": "2026-09-04 15:15:00+00:00"
},
"15min": {
"file": "m15_w2.csv",
"md5": "b4aa07e33e17e23774c486a6900d673b",
"trades": 931,
"md5": "5b65ecf6fad9a8da412749066fd50d36",
"trades": 813,
"first_entry": "2024-09-05 06:15:00+00:00",
"last_entry": "2026-09-04 12:45:00+00:00"
"last_entry": "2026-09-04 08:00:00+00:00"
},
"1h": {
"file": "h1_w3.csv",
"md5": "7b848c917dcb5c371ecbb9f8f7292278",
"md5": "a44fd19b4067f46e5bd98d50cc3eff92",
"trades": 253,
"first_entry": "2023-09-20 18:00:00+00:00",
"last_entry": "2026-08-21 07:00:00+00:00"
},
"4h": {
"file": "h4_w3.csv",
"md5": "186e677fbbd53cca735c94094c23ce05",
"md5": "f3587bae3c5dc3eda468ea3588b17dcb",
"trades": 114,
"first_entry": "2023-10-02 08:00:00+00:00",
"last_entry": "2026-09-01 12:00:00+00:00"
@@ -35,27 +35,27 @@
},
"classes": {
"15min|*|*|*": {
"n": 931,
"win_rate": 60.47,
"mean_r": 0.157,
"tp1_reach_rate": 52.31,
"median_bars_held": 30,
"n": 813,
"win_rate": 62.24,
"mean_r": 0.1896,
"tp1_reach_rate": 50.43,
"median_bars_held": 32,
"book": "m15_w2.csv"
},
"15min|*|*|BUY": {
"n": 635,
"win_rate": 63.31,
"mean_r": 0.2309,
"tp1_reach_rate": 53.54,
"tp1_reach_rate": 51.65,
"median_bars_held": 33,
"book": "m15_w2.csv"
},
"15min|*|*|SELL": {
"n": 296,
"win_rate": 54.39,
"mean_r": -0.0016,
"tp1_reach_rate": 49.66,
"median_bars_held": 20,
"n": 178,
"win_rate": 58.43,
"mean_r": 0.0424,
"tp1_reach_rate": 46.07,
"median_bars_held": 28,
"book": "m15_w2.csv"
},
"15min|GENERIC|A+|BUY": {
@@ -82,14 +82,6 @@
"median_bars_held": 44,
"book": "m15_w2.csv"
},
"15min|GENERIC|A|SELL": {
"n": 84,
"win_rate": 52.38,
"mean_r": -0.0288,
"tp1_reach_rate": 42.86,
"median_bars_held": 43,
"book": "m15_w2.csv"
},
"15min|GENERIC|B|BUY": {
"n": 282,
"win_rate": 62.41,
@@ -99,11 +91,11 @@
"book": "m15_w2.csv"
},
"15min|GENERIC|B|SELL": {
"n": 120,
"win_rate": 57.5,
"mean_r": 0.0242,
"tp1_reach_rate": 45.0,
"median_bars_held": 27,
"n": 161,
"win_rate": 58.39,
"mean_r": 0.0273,
"tp1_reach_rate": 45.34,
"median_bars_held": 32,
"book": "m15_w2.csv"
},
"15min|GENERIC|C|BUY": {
@@ -123,10 +115,10 @@
"book": "m15_w2.csv"
},
"15min|XAU_ATR|A+|SELL": {
"n": 13,
"win_rate": 69.23,
"mean_r": 0.4437,
"tp1_reach_rate": 61.54,
"n": 16,
"win_rate": 62.5,
"mean_r": 0.2612,
"tp1_reach_rate": 56.25,
"median_bars_held": 5,
"book": "m15_w2.csv"
},
@@ -134,23 +126,15 @@
"n": 80,
"win_rate": 56.25,
"mean_r": 0.06,
"tp1_reach_rate": 62.5,
"tp1_reach_rate": 47.5,
"median_bars_held": 10,
"book": "m15_w2.csv"
},
"15min|XAU_ATR|A|SELL": {
"n": 78,
"win_rate": 50.0,
"mean_r": -0.073,
"tp1_reach_rate": 62.82,
"median_bars_held": 6,
"book": "m15_w2.csv"
},
"1h|*|*|*": {
"n": 253,
"win_rate": 64.43,
"mean_r": 0.2768,
"tp1_reach_rate": 74.31,
"tp1_reach_rate": 54.15,
"median_bars_held": 29,
"book": "h1_w3.csv"
},
@@ -158,7 +142,7 @@
"n": 253,
"win_rate": 64.43,
"mean_r": 0.2768,
"tp1_reach_rate": 74.31,
"tp1_reach_rate": 54.15,
"median_bars_held": 29,
"book": "h1_w3.csv"
},
@@ -166,7 +150,7 @@
"n": 1,
"win_rate": 0.0,
"mean_r": -0.1689,
"tp1_reach_rate": 100.0,
"tp1_reach_rate": 0.0,
"median_bars_held": 45,
"book": "h1_w3.csv"
},
@@ -174,7 +158,7 @@
"n": 57,
"win_rate": 66.67,
"mean_r": 0.2243,
"tp1_reach_rate": 75.44,
"tp1_reach_rate": 52.63,
"median_bars_held": 45,
"book": "h1_w3.csv"
},
@@ -182,7 +166,7 @@
"n": 112,
"win_rate": 63.39,
"mean_r": 0.2432,
"tp1_reach_rate": 74.11,
"tp1_reach_rate": 51.79,
"median_bars_held": 38,
"book": "h1_w3.csv"
},
@@ -190,7 +174,7 @@
"n": 26,
"win_rate": 73.08,
"mean_r": 0.6826,
"tp1_reach_rate": 80.77,
"tp1_reach_rate": 73.08,
"median_bars_held": 29,
"book": "h1_w3.csv"
},
@@ -206,7 +190,7 @@
"n": 56,
"win_rate": 62.5,
"mean_r": 0.224,
"tp1_reach_rate": 71.43,
"tp1_reach_rate": 53.57,
"median_bars_held": 8,
"book": "h1_w3.csv"
},
@@ -214,7 +198,7 @@
"n": 114,
"win_rate": 57.89,
"mean_r": 0.1902,
"tp1_reach_rate": 67.54,
"tp1_reach_rate": 48.25,
"median_bars_held": 12,
"book": "h4_w3.csv"
},
@@ -222,7 +206,7 @@
"n": 94,
"win_rate": 61.7,
"mean_r": 0.2409,
"tp1_reach_rate": 70.21,
"tp1_reach_rate": 52.13,
"median_bars_held": 9,
"book": "h4_w3.csv"
},
@@ -230,7 +214,7 @@
"n": 20,
"win_rate": 40.0,
"mean_r": -0.0484,
"tp1_reach_rate": 55.0,
"tp1_reach_rate": 30.0,
"median_bars_held": 20,
"book": "h4_w3.csv"
},
@@ -246,7 +230,7 @@
"n": 1,
"win_rate": 0.0,
"mean_r": -0.2277,
"tp1_reach_rate": 100.0,
"tp1_reach_rate": 0.0,
"median_bars_held": 29,
"book": "h4_w3.csv"
},
@@ -254,7 +238,7 @@
"n": 39,
"win_rate": 79.49,
"mean_r": 0.4706,
"tp1_reach_rate": 82.05,
"tp1_reach_rate": 64.1,
"median_bars_held": 27,
"book": "h4_w3.csv"
},
@@ -262,7 +246,7 @@
"n": 12,
"win_rate": 25.0,
"mean_r": -0.4106,
"tp1_reach_rate": 41.67,
"tp1_reach_rate": 16.67,
"median_bars_held": 40,
"book": "h4_w3.csv"
},
@@ -270,7 +254,7 @@
"n": 5,
"win_rate": 40.0,
"mean_r": -0.3577,
"tp1_reach_rate": 60.0,
"tp1_reach_rate": 20.0,
"median_bars_held": 8,
"book": "h4_w3.csv"
},
@@ -294,7 +278,7 @@
"n": 42,
"win_rate": 47.62,
"mean_r": 0.0547,
"tp1_reach_rate": 61.9,
"tp1_reach_rate": 42.86,
"median_bars_held": 7,
"book": "h4_w3.csv"
},
@@ -302,7 +286,7 @@
"n": 5,
"win_rate": 60.0,
"mean_r": 0.5618,
"tp1_reach_rate": 80.0,
"tp1_reach_rate": 60.0,
"median_bars_held": 14,
"book": "h4_w3.csv"
},
@@ -310,7 +294,7 @@
"n": 781,
"win_rate": 52.88,
"mean_r": 0.187,
"tp1_reach_rate": 56.34,
"tp1_reach_rate": 41.23,
"median_bars_held": 34,
"book": "m5_w2.csv"
},
@@ -318,7 +302,7 @@
"n": 683,
"win_rate": 53.15,
"mean_r": 0.201,
"tp1_reach_rate": 54.61,
"tp1_reach_rate": 41.0,
"median_bars_held": 33,
"book": "m5_w2.csv"
},
@@ -326,7 +310,7 @@
"n": 98,
"win_rate": 51.02,
"mean_r": 0.0894,
"tp1_reach_rate": 68.37,
"tp1_reach_rate": 42.86,
"median_bars_held": 44,
"book": "m5_w2.csv"
},
@@ -334,7 +318,7 @@
"n": 139,
"win_rate": 61.15,
"mean_r": 0.2662,
"tp1_reach_rate": 74.82,
"tp1_reach_rate": 53.96,
"median_bars_held": 77,
"book": "m5_w2.csv"
},
@@ -342,7 +326,7 @@
"n": 153,
"win_rate": 50.98,
"mean_r": 0.2315,
"tp1_reach_rate": 72.55,
"tp1_reach_rate": 42.48,
"median_bars_held": 61,
"book": "m5_w2.csv"
},
@@ -350,7 +334,7 @@
"n": 98,
"win_rate": 51.02,
"mean_r": 0.0894,
"tp1_reach_rate": 68.37,
"tp1_reach_rate": 42.86,
"median_bars_held": 44,
"book": "m5_w2.csv"
},
@@ -358,7 +342,7 @@
"n": 21,
"win_rate": 47.62,
"mean_r": -0.0144,
"tp1_reach_rate": 57.14,
"tp1_reach_rate": 42.86,
"median_bars_held": 35,
"book": "m5_w2.csv"
},
@@ -374,7 +358,7 @@
"n": 31,
"win_rate": 54.84,
"mean_r": 0.288,
"tp1_reach_rate": 67.74,
"tp1_reach_rate": 51.61,
"median_bars_held": 12,
"book": "m5_w2.csv"
},
@@ -390,7 +374,7 @@
"n": 321,
"win_rate": 51.71,
"mean_r": 0.1621,
"tp1_reach_rate": 37.38,
"tp1_reach_rate": 34.27,
"median_bars_held": 19,
"book": "m5_w2.csv"
}