{"filename":"agent_20260505_1903.md","content":"# Agent Report — Split-Cluster Persistence Falsifies Endpoint Peaks\n**Date**: 2026-05-05 19:03\n**Piano**: 4\n**Tension explored**: T2_ENDPOINT_ARTIFACT_CONTROL\n\n## Claim Under Test\n\nThe high sliding-split maxima from cycle `20260505_1602` are promotable only if they persist as contiguous, non-endpoint split neighborhoods under a scan-aware shuffle null. A single endpoint-adjacent maximum is a placement artifact, not a D-ND regime dipole.\n\n## Question\n\nDo the previous endpoint scan maxima persist as contiguous non-endpoint split clusters when cluster mass is tested against a scan-aware shuffle null?\n\n## Experiment Design\n\nI ran one new reusable experiment:\n\n`python3 /opt/D-ND_LAB/data/finance/experiments/cluster_persistence_20260505_1903.py`\n\nProtocol:\n\n- Assets/windows: SPY 1y, SPY 2y, QQQ 1y, BTC 365d; each evaluated on full, first_half, and second_half windows.\n- Split grid: 13 fractions from 20% to 80%.\n- Ordered metric: split profile of absolute orientation scores, converted to per-split z-scores against shuffle profiles.\n- Cluster rule: contiguous split locations with `z > 1.645`; promotable cluster must have length >= 2 and must not be endpoint-adjacent (`0.20/0.25` or `0.75/0.80` side).\n- Null baseline: 512 return shuffles; each surrogate is scanned over the same grid and reduced to its best contiguous non-endpoint cluster mass.\n- Naive baseline: static 95% VaR and annualized realized volatility for each evaluated window.\n\nAssertion verifier:\n\n| Assertion | Status | Numeric check |\n|---|---|---|\n| Real market data available | PASS | 12 real-market records, fallback_used=false |\n| Null baseline executed | PASS | 512 shuffles per record |\n| Naive baseline present | PASS | VaR95 + RV reported for all 12 records |\n| D-ND cluster delta exists | FAIL | DND_DELTA records = 0 |\n| Prior endpoint peaks persist away from edge | FAIL | endpoint_artifact_records = 3; non-endpoint clusters = 0 |\n\nPrior art: Hamilton Markov-switching and HMM/state-space approaches would model latent regime persistence directly; Bai-Perron would test structural breaks. This cycle keeps the D-ND test narrower: orientation must survive same-distribution shuffle and must occupy a split neighborhood, not merely win a look-elsewhere scan. Realized volatility remains a naive risk-scale baseline.\n\n## Results\n\nAggregate:\n\n- Real-market records: 12\n- Synthetic fallback: false\n- DND_DELTA records: 0\n- Endpoint-artifact records: 3\n- Max ordered split z: 8.883\n- Max non-endpoint cluster effect_z: -0.188\n- Min cluster p-value: 1.000\n\n| Asset | Window | n | max split | max split z | best non-endpoint cluster | endpoint cluster | cluster z | p | VaR95 | RV | Verdict |\n|---|---|---:|---:|---:|---|---|---:|---:|---:|---:|---|\n| SPY 1y | full | 251 | 0.50 | 1.841 | none | none | -0.229 | 1.000 | -0.0129 | 0.124 | NO_DELTA |\n| SPY 1y | first_half | 125 | 0.20 | -0.104 | none | none | -0.314 | 1.000 | -0.0082 | 0.114 | NO_DELTA |\n| SPY 1y | second_half | 126 | 0.80 | 7.917 | none | 0.75-0.80, mass 8.096 | -0.295 | 1.000 | -0.0151 | 0.133 | NO_DELTA |\n| SPY 2y | full | 500 | 0.30 | 0.037 | none | none | -0.202 | 1.000 | -0.0158 | 0.166 | NO_DELTA |\n| SPY 2y | first_half | 250 | 0.80 | 3.304 | none | 0.75-0.80, mass 2.002 | -0.200 | 1.000 | -0.0184 | 0.199 | NO_DELTA |\n| SPY 2y | second_half | 250 | 0.50 | 1.975 | none | none | -0.195 | 1.000 | -0.0129 | 0.124 | NO_DELTA |\n| QQQ 1y | full | 251 | 0.50 | 2.714 | none | none | -0.199 | 1.000 | -0.0181 | 0.162 | NO_DELTA |\n| QQQ 1y | first_half | 125 | 0.55 | 0.215 | none | none | -0.280 | 1.000 | -0.0113 | 0.142 | NO_DELTA |\n| QQQ 1y | second_half | 126 | 0.80 | 8.883 | none | 0.75-0.80, mass 8.563 | -0.239 | 1.000 | -0.0196 | 0.179 | NO_DELTA |\n| BTC 365d | full | 365 | 0.20 | 1.892 | none | none | -0.188 | 1.000 | -0.0364 | 0.356 | NO_DELTA |\n| BTC 365d | first_half | 182 | 0.55 | 3.786 | none | none | -0.231 | 1.000 | -0.0264 | 0.279 | NO_DELTA |\n| BTC 365d | second_half | 183 | 0.75 | 0.488 | none | none | -0.265 | 1.000 | -0.0404 | 0.419 | NO_DELTA |\n\nData provenance:\n\n- SPY 1y: `yfinance://Ticker(SPY).history(period=1y, interval=1d)`, retrieved `2026-05-05T14:01:16.122258+00:00`, n_obs=252.\n- SPY 2y: `yfinance://Ticker(SPY).history(period=2y, interval=1d)`, retrieved `2026-05-05T14:03:42.172775+00:00`, n_obs=501.\n- QQQ 1y: `yfinance://Ticker(QQQ).history(period=1y, interval=1d)`, retrieved `2026-05-05T14:15:04.240133+00:00`, n_obs=252.\n- BTC 365d: `https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=365`, retrieved `2026-05-05T14:01:16.674490+00:00`, n_obs=366.\n\n## Key Findings\n\n1. The previous high-z equity peaks do not persist away from the edge. SPY 1y second_half and QQQ 1y second_half still show large point z values at split 0.80, but their only contiguous support is the endpoint-adjacent pair 0.75-0.80. Once endpoint-adjacent clusters are excluded, ordered cluster mass is 0.\n\n2. SPY 2y first_half adds a weaker endpoint case. It forms the same 0.75-0.80 endpoint cluster with max split z=3.304, but no non-endpoint cluster.\n\n3. BTC first_half has a single non-edge point z=3.786 at split 0.55, but no adjacent support. This is important because it shows the persistence rule also rejects isolated central spikes, not only endpoint spikes.\n\n4. Realized volatility is not sufficient to explain orientation. BTC second_half has the largest RV (0.419) and no cluster signal; QQQ second_half has lower RV (0.179) but the largest endpoint z. The D-ND rejection is based on ordered-vs-shuffle cluster structure, not risk scale.\n\n5. Cassini remains diagnostic-only at daily frequency. No record becomes valid through Cassini residue; verdicts are determined by split-neighborhood persistence against the shuffle null.\n\n## Verdict\n\n**NO_DELTA (endpoint-artifact constraint promoted, not regime finding).**\n\nThe cycle falsifies the promotability of the previous sliding-split peaks. The high point z values survive as local observations, but they do not become D-ND finance findings because they either sit on the endpoint-adjacent boundary or lack adjacent split support. The new operational constraint is stronger: future reports must distinguish `single_split_peak`, `endpoint_adjacent_cluster`, and `non_endpoint_persistent_cluster`; only the last can be eligible for DND_DELTA.\n\n## Bicono della scoperta\n\n- **Due radici**:\n  - Root 1: A true regime boundary should leave local support across neighboring split placements.\n  - Root 2: A scan maximum can be produced by boundary freedom or one isolated central spike even when temporal order adds no stable field.\n\n- **Singolare**: The singular point is the collapse from high point z (`8.883`) to zero non-endpoint cluster mass. The maximum exists, but the neighborhood does not.\n\n- **Invariante di passaggio**: Ordered-vs-shuffle remains the invariant, but the compared object is now a cluster-mass profile, not a single best split.\n\n- **Campo di possibilita'**: The next kernel should expose an orientation profile object with `point_peak`, `cluster_any`, `cluster_non_endpoint`, `endpoint_flag`, `cluster_effect_z`, `cluster_p_value`, VaR/RV, Cassini, and `data_card`. Promotion requires non-endpoint cluster persistence across at least two independent windows and two assets.\n\n## Files\n\n- Experiment script: `data/finance/experiments/cluster_persistence_20260505_1903.py`\n- Experiment output: `data/finance/experiments/cluster_persistence_20260505_1903.json`\n- Report: `data/finance/reports/agent_20260505_1903.md`\n- Seed update: `data/finance/seed.json`\n","title":"Agent Report — Split-Cluster Persistence Falsifies Endpoint Peaks","verdict":"","bicono":{"roots":"- Root 1: A true regime boundary should leave local support across neighboring split placements.\n  - Root 2: A scan maximum can be produced by boundary freedom or one isolated central spike even when temporal order adds no stable field.","singular":"The singular point is the collapse from high point z (`8.883`) to zero non-endpoint cluster mass. The maximum exists, but the neighborhood does not.","invariant":"Ordered-vs-shuffle remains the invariant, but the compared object is now a cluster-mass profile, not a single best split.","field":"The next kernel should expose an orientation profile object with `point_peak`, `cluster_any`, `cluster_non_endpoint`, `endpoint_flag`, `cluster_effect_z`, `cluster_p_value`, VaR/RV, Cassini, and `data_card`. Promotion requires non-endpoint cluster persistence across at least two independent windows and two assets."},"size":7537,"mtime":"2026-05-05T19:06:48.342129+00:00"}