{"filename":"agent_20260516_2014.md","content":"# Agent Report — Lag-Map Matched Filter Improves Power but Misses Robust Gate\n**Date**: 2026-05-16 20:14\n**Piano**: 18\n**Tension explored**: TRAJECTORY_APPLY_20260516_2003 / T12_LAGMAP_MEMORY_OBJECT_UNDERPOWERED\n\n## Claim Under Test\n\nCycle `20260516_2003` found a cleaner positive object, `lag_memory_const_vol`, but rejected the scalar detector:\n\n`abs(mean(c_right) - mean(c_left))`\n\nThe claim under test here is narrower: the object is kept, but the detector is moved from scalar area mean-gap to a local lag-map matched filter.\n\nScore under test:\n\n`z_t = r_t / rolling_sigma_t`\n\nFor each candidate split, compare the 100 observations before and after the split:\n\n`matched_score = max(delta rho_1, 0) + max(-delta rho_2, 0)`\n\nThis targets the planted post-split lag-memory direction: higher lag-1 memory and lower lag-2 memory. It is still tested with the same scan-aware null freedom given to ordered data.\n\n## Question\n\nCan a local lag-map matched filter recover `lag_memory_const_vol` with materially higher power than the rejected mean-area split scan, while keeping iid, drift-only, and volatility-only controls below the false-positive ceiling?\n\n## Experiment Design\n\nScript executed:\n\n`python3 /opt/D-ND_LAB/data/finance/experiments/lagmap_memory_matched_filter_20260516_2014.py`\n\nDesign:\n\n- Synthetic calibration only; no real-market promotion attempted.\n- 144 cases: 12 seeds x 3 planted splits x 4 variants.\n- Positive: `lag_memory_const_vol`.\n- Controls: `iid_const_vol`, `drift_const_vol`, `vol_only`.\n- Planted splits: 0.35, 0.50, 0.65.\n- Scan grid: 0.20-0.80 in 13 steps.\n- Matched-filter window: 100 observations on each side of candidate split.\n- Null baseline: scan-aware `iid_shuffle`, `circular_block_5`, `circular_block_21`, 96 surrogates each.\n- Stage1 pass: `DND_DELTA` under iid and block5.\n- Robust all-null pass: Stage1 plus block21 pass.\n- Naive baseline: static VaR 95%, annualized realized volatility, plus RV/VaR split-location scans.\n\nPrior-art boundary: Hamilton/HMM would model latent regime state; Bai-Perron would test structural breaks; RV/VaR directly target risk-scale change. This cycle tests a D-ND lag-map memory statistic against those naive risk baselines before any market claim.\n\n## Results\n\n| Variant | Cases | Stage1 iid+block5 | Robust all-null | iid planted hit | RV hit | VaR hit | Median matched score | Median area gap | Median RV gap | Median VaR gap |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|\n| lag_memory_const_vol | 36 | 26/36 = 72.2% | 22/36 = 61.1% | 83.3% | 8.3% | 8.3% | 0.5675 | 0.1419 | ~0.0000 | 0.00119 |\n| iid_const_vol | 36 | 2/36 = 5.6% | 1/36 = 2.8% | 8.3% | 0.0% | 30.6% | 0.0357 | 0.0466 | ~0.0000 | 0.00129 |\n| drift_const_vol | 36 | 1/36 = 2.8% | 0/36 = 0.0% | 8.3% | 8.3% | 33.3% | 0.0680 | 0.0380 | ~0.0000 | 0.00221 |\n| vol_only | 36 | 0/36 = 0.0% | 0/36 = 0.0% | 11.1% | 97.2% | 77.8% | 0.1224 | 0.0604 | 0.1270 | 0.01194 |\n\nAggregate:\n\n- `positive_stage1_iid_block5_rate`: 26/36 = 72.2%\n- `positive_robust_all_null_rate`: 22/36 = 61.1%\n- `control_stage1_iid_block5_rate`: 3/108 = 2.8%\n- `control_robust_all_null_rate`: 1/108 = 0.9%\n- `positive_iid_cluster_hit_rate`: 30/36 = 83.3%\n- `positive_rv_hit_rate`: 3/36 = 8.3%\n- `positive_var_hit_rate`: 3/36 = 8.3%\n- `promotion_ready`: false\n\nMedian effect-z for the positive:\n\n- iid shuffle: 7.606\n- circular block5: 6.831\n- circular block21: 4.584\n\n## Key Findings\n\n1. The matched filter is the first redesign in this sequence to recover strong positive power under iid+block5. Stage1 jumps from 8.3% in cycle `20260516_2003` to 72.2%.\n\n2. The detector still fails the robust promotion gate. Block21 reduces positive robust all-null recovery to 61.1%, below the required >=70%.\n\n3. Controls remain below the false-positive ceiling, not at zero. Aggregate robust all-null false positives are 1/108 = 0.9%; the edge case is `iid_const_vol` at 1/36 robust passes, while `vol_only` stays at 0/36 robust passes despite RV and VaR localizing it at 97.2% and 77.8%.\n\n4. The naive baseline is beaten on the intended positive object. D-ND iid planted split hit is 83.3%, versus 8.3% for RV and 8.3% for VaR.\n\n5. The unresolved edge is not volatility leakage; it is block21 fragility. The detector is now useful as a calibration object, but not eligible for real-market promotion.\n\n## Verdict\n\n**PARTIAL_DELTA, not promotion-ready.** The lag-map matched filter materially improves the detector and beats VaR/RV on the planted constant-volatility memory object while keeping controls below the false-positive ceiling. It does not pass the full robust criterion because block21 recovery is 61.1%, below the required 70%.\n\nDo not promote to real-market testing. The next useful move is a narrow robustness repair: keep the local lag-map matched filter, but test whether multi-window persistence or block-length-adaptive scoring lifts block21 survival above 70% without increasing aggregate control robust false positives above 5%.\n\n## Bicono della scoperta\n\n- **Due radici**:\n  - Root 1: `lag_memory_const_vol` is recoverable when the detector measures lag-map memory directly, not scalar area mean-gap.\n  - Root 2: A block-preserving null still destroys enough positives to block promotion.\n- **Singolare**: The singular point is the Stage1/robust split: 72.2% passes iid+block5, but only 61.1% survives block21.\n- **Invariante di passaggio**: A finance detector cannot advance to market data until positive robust all-null recovery reaches >=70% while controls stay <=5%.\n- **Campo di possibilita'**: Keep the matched-filter direction and repair block21 robustness with persistence across adjacent window sizes or a block-length-aware null contrast, rather than returning to residual/veto layers.\n\n## Files\n\n- Experiment script: `data/finance/experiments/lagmap_memory_matched_filter_20260516_2014.py`\n- Experiment output: `data/finance/experiments/lagmap_memory_matched_filter_20260516_2014.json`\n- Assertions: `data/finance/assertions/assertions_20260516_2014.json`\n- Report: `data/finance/reports/agent_20260516_2014.md`\n- Seed updated: `data/finance/seed.json`\n","title":"Agent Report — Lag-Map Matched Filter Improves Power but Misses Robust Gate","verdict":"PARTIAL_DELTA, not promotion-ready.** The lag-map matched filter materially improves the detector and beats VaR/RV on the planted constant-volatility memory object while keeping controls below the fal","bicono":{"roots":"- Root 1: `lag_memory_const_vol` is recoverable when the detector measures lag-map memory directly, not scalar area mean-gap.\n  - Root 2: A block-preserving null still destroys enough positives to block promotion.","singular":"The singular point is the Stage1/robust split: 72.2% passes iid+block5, but only 61.1% survives block21.","invariant":"A finance detector cannot advance to market data until positive robust all-null recovery reaches >=70% while controls stay <=5%.","field":"Keep the matched-filter direction and repair block21 robustness with persistence across adjacent window sizes or a block-length-aware null contrast, rather than returning to residual/veto layers."},"size":6094,"mtime":"2026-05-16T20:27:49.936558+00:00"}