# September 24 trade-export reconciliation

**Follow-up:** [Known-issue audit and reconciliation](mlp_execution_parity_followup_2026_09_24.md)
corrects the 1D aggregate comparison and identifies the 8H stop-setting mismatch.

The five new trade lists are usable and preserved with their matching chart files
under `results/mlp_observation/execution_parity_20260924/inputs/`. Chart structure
passes with the previously documented historical gap/warm-up warnings. The five
winning-model score checks already passed on the same chart hashes.

Three diagnostic-tool issues were corrected before interpreting the trades:
accept the new `Return %` header, parse numeric chart times as Unix seconds, and
stop treating `TRAIN_END` as the strategy's execution end. The comparison now
excludes the unconfirmed last candle and uses available closed history by default;
`--end-date` can specify a chart execution end explicitly. This changes diagnostics,
not trading logic. Nine focused tests pass, plus all five real-file CLI runs.

## Exact trade timing

Matching allows zero extra tolerance after shifting TradingView fills back one
bar to their Python decision bars. End dates are the available closed chart data;
the Pine source default permits execution beyond the February model-fit cutoff,
and the supplied lists contain later trades.

| TF | TV trades | Python trades | Exact entry + exit | Same entry, different exit | Python only | TV only |
|---|---:|---:|---:|---:|---:|---:|
| 4H | 65 | 65 | 65 | 0 | 0 | 0 |
| 6H | 56 | 59 | 53 | 1 | 5 | 2 |
| 8H | 69 | 64 | 59 | 5 | 0 | 5 |
| 12H | 145 | 148 | 142 | 2 | 4 | 1 |
| 1D | 154 | 154 | 154 | 0 | 0 | 0 |

4H and 1D have exact timing parity for completed trades. This is not a claim of
identical fills or P&L. The diagnostic reports approximately 1772.7% versus
1773.2% cumulative P&L for 4H, and initially reported 6160.3% versus 6472.0% for 1D. The follow-up found that
the latter TV number included an open trade; the corrected completed-trade TV
value is 6138.98%, a 0.347% relative difference explained largely by fills.
These closed-trade diagnostic totals are not the canonical research window metrics.

## BTC 6H comes first

The first TV-only entry fills **2019-05-03 06:00 UTC**. Its expected signal bar,
2019-05-03 00:00, has no exported chart entry marker. Another is 2021-10-01 00:00
(signal September 30 at 18:00). Conversely, five chart executable entry markers
are absent from the TV list: 2019-06-27 00:00, 2019-08-20 00:00, 2020-05-29 00:00,
2021-10-18 06:00 and 2024-10-30 00:00. A shared entry also exits September 27,
2024 in Python versus October 31 in TradingView (822-hour difference).

These are substantial lifecycle differences, not Unix/ISO formatting or ordinary
rounding. The chart's own marker/list disagreement means the pair does not yet
establish consistent execution provenance. It does not by itself prove user error,
stale export, or a particular simulation bug. The first divergence must be traced
before downstream differences are assigned a cause. Current TradingView layout
inputs and script identity have not been independently inspected in this session.

## Recommended order

1. **Diagnose the first BTC6H divergence**, starting with May 3, 2019. Inspect the
   chart's score/entry condition, strategy settings and script revision against the
   exported trade. Reconcile chart markers with the broker-emulator trade list
   before changing Python to match a contradictory pair. Do not request another
   undirected full re-export or weaken matching tolerances.
2. **Resolve remaining 6H exits/state**, then repeat the three frozen research
   policies only if that work changes the simulator. If code changes, preserve
   the current observation seals and explicitly version the replacement experiment.
3. **Resolve 8H, then 12H**, using their first divergence rather than aggregate P&L.
   Reconcile the 1D fill/accounting residual separately; timing already matches.
4. **Continue frozen observation as provisional research**, starting September25.
   Do not promote hybrid9090 or treat its historical eligibility as deployment
   readiness until the 6H execution baseline is reconciled. No new threshold search
   is justified while this mismatch remains.

No weights, winner, Pine, configuration or frozen bundle changed; all 941 protected
hashes verify. The diagnostic files are saved locally. The tool exits successfully
when it produces a report even if trades mismatch: exit code zero is not parity.
Use the counts in `summary.json` and the complete per-timeframe logs as evidence.
