Timeframe: 8H (TV fills 1 bar ahead = 0 days 08:00:00 offset) Loading TV trades from: data/mlp/MLPScores_COINBASE_BTCUSD_2026-09-24_8h.csv TV trades: 69 real signal + 0 margin-call Running Python strategy strategy_mlp_scores.py on: data/mlp/COINBASE_BTCUSD, 480.csv Python trades: 64 (Pine timeCondition 2017-12-01 → 2026-09-24; 64 total after time gate) Key params: Entry threshold: -120.0 (use_entry_conf=False) Exit threshold: 270.0 (use_exit_conf=1) Trailing stop: 30.0% ================================================================================ MATCH SUMMARY ================================================================================ Total TV real trades : 69 (coverage through 2026-08-20) Total Python trades : 64 Entry + exit matched : 59 (85.5% of TV) Entry matched, exit Δ : 5 Python-only (extra) : 0 (IS: 0, OOS after 2026-08-20: 0 — OOS are expected, not bugs) TV-only (missed) : 5 ================================================================================ TV/chart entry-marker check: TV entries with exported chart marker : 69/69 Chart executable markers in TV window : 74 (6 not present in TV trade list) First chart executable markers missing from TV: 2017-12-09 16:00:00 2019-02-20 08:00:00 2019-09-04 00:00:00 2022-02-02 00:00:00 2022-03-01 16:00:00 Python cumulative P&L (0.5%/side comm): 33,480.4% TV completed-trade cumulative P&L: 13,405.9% Excluded 1 open TV trade(s) from this completed-trade comparison. → ⚠️ trade paths differ (Python 64 vs TV 69); cumulative totals are NOT comparable. See per-trade table / unmatched section below. Python gross (no commission, reference): 63,585.0% ──────────────────────────────────────────────────────────────────────────────── FULLY MATCHED (59 trades) ──────────────────────────────────────────────────────────────────────────────── # Py Entry TV Entry Py Exit TV Exit Py P&L% TV P&L% Δ P&L% ------------------------------------------------------------------------------ 3 2018-12-20 2018-12-20 2019-05-11 2019-05-11 84.2% 84.2% +0.0% 4 2019-05-12 2019-05-12 2019-05-12 2019-05-13 0.6% 0.6% +0.0% 5 2019-05-13 2019-05-14 2019-05-15 2019-05-15 0.1% 0.1% +0.0% 6 2019-05-17 2019-05-17 2019-05-28 2019-05-28 18.3% 18.2% +0.0% 9 2019-08-04 2019-08-04 2019-09-24 2019-09-25 -21.0% -21.0% -0.0% 10 2020-01-07 2020-01-07 2020-02-11 2020-02-11 30.2% 30.2% -0.0% 11 2020-02-12 2020-02-12 2020-03-07 2020-03-07 -13.3% -13.3% -0.0% 12 2020-03-24 2020-03-24 2020-05-01 2020-05-01 31.4% 31.3% +0.0% 13 2020-05-01 2020-05-02 2020-07-30 2020-07-31 24.6% 24.6% +0.0% 14 2020-07-31 2020-07-31 2020-08-02 2020-08-03 -1.7% -1.7% +0.0% 15 2020-08-18 2020-08-19 2020-09-02 2020-09-02 -2.8% -2.9% +0.0% 16 2020-09-17 2020-09-17 2020-09-17 2020-09-17 -1.4% -1.4% +0.0% 17 2020-09-30 2020-09-30 2020-10-24 2020-10-24 21.4% 21.4% -0.0% 18 2020-10-25 2020-10-25 2020-11-22 2020-11-22 41.5% 41.5% -0.0% 19 2020-12-03 2020-12-03 2020-12-16 2020-12-16 4.8% 4.8% +0.0% 20 2020-12-20 2020-12-20 2020-12-20 2020-12-20 0.0% 0.0% +0.0% 21 2020-12-20 2020-12-21 2021-01-09 2021-01-09 71.3% 71.3% -0.0% 22 2021-01-20 2021-01-20 2021-02-03 2021-02-04 4.5% 4.5% -0.0% 23 2021-02-05 2021-02-06 2021-02-11 2021-02-11 15.7% 15.6% +0.1% 26 2021-07-27 2021-07-27 2021-09-02 2021-09-03 31.3% 31.3% -0.0% 27 2021-09-05 2021-09-05 2021-09-06 2021-09-07 4.6% 4.6% -0.0% 28 2021-09-16 2021-09-16 2021-10-06 2021-10-06 5.4% 5.4% -0.0% 29 2021-10-08 2021-10-08 2021-10-17 2021-10-17 9.7% 9.7% -0.0% 30 2021-10-18 2021-10-18 2021-10-22 2021-10-22 1.2% 1.2% -0.0% 31 2021-11-10 2021-11-10 2021-11-10 2021-11-10 1.9% 1.9% -0.0% 32 2022-01-13 2022-01-13 2022-03-30 2022-03-30 8.1% 8.1% -0.0% 35 2023-01-10 2023-01-10 2023-01-15 2023-01-15 19.5% 19.5% -0.0% 36 2023-01-16 2023-01-16 2023-01-22 2023-01-22 7.5% 7.5% -0.0% 37 2023-01-25 2023-01-26 2023-03-17 2023-03-18 17.9% 17.9% -0.0% 38 2023-03-19 2023-03-20 2023-03-24 2023-03-24 -0.1% -0.1% +0.0% 39 2023-03-25 2023-03-25 2023-04-14 2023-04-14 10.7% 10.7% +0.0% 40 2023-04-15 2023-04-15 2023-04-29 2023-04-29 -4.5% -4.5% -0.0% 41 2023-05-04 2023-05-04 2023-05-30 2023-05-30 -5.1% -5.1% -0.0% 42 2023-06-22 2023-06-22 2023-07-15 2023-07-15 -0.3% -0.3% +0.0% 43 2023-08-09 2023-08-10 2023-08-10 2023-08-10 -1.3% -1.3% -0.0% 44 2023-08-30 2023-08-31 2023-11-11 2023-11-11 34.4% 34.4% -0.0% 45 2023-11-16 2023-11-16 2023-12-23 2023-12-23 19.0% 19.1% -0.0% 46 2023-12-25 2023-12-25 2024-01-12 2024-01-12 1.7% 1.7% -0.0% 47 2024-01-28 2024-01-28 2024-02-14 2024-02-15 21.5% 21.5% +0.0% 48 2024-02-15 2024-02-15 2024-03-13 2024-03-13 38.5% 38.5% -0.0% 49 2024-03-15 2024-03-15 2024-03-27 2024-03-28 0.9% 0.9% +0.0% 50 2024-04-08 2024-04-08 2024-04-10 2024-04-10 -2.9% -2.9% +0.0% 51 2024-05-16 2024-05-17 2024-06-07 2024-06-07 7.8% 7.8% -0.0% 52 2024-07-11 2024-07-11 2024-07-18 2024-07-18 11.5% 11.5% +0.0% 53 2024-07-24 2024-07-24 2024-07-30 2024-07-30 -0.8% -0.8% +0.0% 54 2024-08-14 2024-08-14 2024-08-25 2024-08-25 6.4% 6.4% +0.0% 55 2024-08-27 2024-08-27 2024-08-27 2024-08-27 -2.9% -2.9% +0.0% 56 2024-09-19 2024-09-19 2024-10-16 2024-10-16 5.0% 5.0% +0.0% 57 2024-10-18 2024-10-18 2024-11-13 2024-11-13 26.0% 26.0% +0.0% 58 2024-11-15 2024-11-15 2024-12-07 2024-12-07 11.8% 11.8% -0.0% 59 2024-12-08 2024-12-08 2024-12-18 2024-12-18 3.7% 3.6% +0.0% 60 2025-01-03 2025-01-03 2025-01-19 2025-01-19 6.7% 6.7% -0.0% 61 2025-04-14 2025-04-14 2025-04-24 2025-04-25 10.7% 10.7% +0.0% 62 2025-04-28 2025-04-28 2025-05-24 2025-05-24 14.9% 14.9% -0.0% 63 2025-05-26 2025-05-26 2025-08-13 2025-08-13 8.8% 8.8% -0.0% 64 2025-08-14 2025-08-15 2025-09-19 2025-09-19 -2.2% -2.2% -0.0% 65 2025-09-30 2025-10-01 2025-10-28 2025-10-28 -0.5% -0.5% +0.0% 66 2026-01-15 2026-01-15 2026-01-15 2026-01-15 -0.9% -0.9% +0.0% 67 2026-04-07 2026-04-07 2026-04-15 2026-04-15 6.6% 6.6% +0.0% ──────────────────────────────────────────────────────────────────────────────── EXIT-MISMATCHED (same entry, different exit) — 5 trades ──────────────────────────────────────────────────────────────────────────────── TV#1: Python exit 2017-12-18 / TV exit 2017-12-10 (Δ -184h) Python P&L +77.5% / TV P&L +33.8% Python exit bar score: -514.1 → SCORE_CROSSUNDER_MISMATCH TV and Python exited on different score-crossunder events. If score parity passes, this is usually downstream of an earlier lifecycle/export mismatch. bar time score mlp_score entry exit -------------------------------------------------------------------- 3203 2017-12-16 16:00:00 -200.46 -200.46 . . 3204 2017-12-17 00:00:00 560.11 560.11 . . 3205 2017-12-17 08:00:00 615.05 615.05 . . 3206 2017-12-17 16:00:00 237.60 237.60 . . 3207 2017-12-18 00:00:00 -514.13 -514.13 . X <<< 3208 2017-12-18 08:00:00 -398.42 -398.42 . . 3209 2017-12-18 16:00:00 -456.55 -456.55 . . 3210 2017-12-19 00:00:00 -285.16 -285.16 . . 3211 2017-12-19 08:00:00 -560.50 -560.50 . . TV#7: Python exit 2019-07-10 / TV exit 2019-07-01 (Δ -216h) Python P&L +46.2% / TV P&L +25.0% Python exit bar score: -425.3 → SCORE_CROSSUNDER_MISMATCH TV and Python exited on different score-crossunder events. If score parity passes, this is usually downstream of an earlier lifecycle/export mismatch. bar time score mlp_score entry exit -------------------------------------------------------------------- 4911 2019-07-09 08:00:00 -446.09 -446.09 . . 4912 2019-07-09 16:00:00 309.44 309.44 . . 4913 2019-07-10 00:00:00 286.84 286.84 . . 4914 2019-07-10 08:00:00 -329.14 -329.14 . . 4915 2019-07-10 16:00:00 -425.26 -425.26 . X <<< 4916 2019-07-11 00:00:00 -830.97 -830.97 . . 4917 2019-07-11 08:00:00 -741.40 -741.40 . . 4918 2019-07-11 16:00:00 -660.42 -660.42 . . 4919 2019-07-12 00:00:00 -818.49 -818.49 . . TV#24: Python exit 2021-05-17 / TV exit 2021-02-28 (Δ -1856h) Python P&L -6.8% / TV P&L -10.4% Trailing stop 30% active → TRAILING_STOP Python exit bar score: -909.1 Python trail_high uses bar high (same as Pine); stop triggered at close. Residual timing difference is intrinsic. bar time score mlp_score entry exit -------------------------------------------------------------------- 6940 2021-05-15 16:00:00 -890.98 -890.98 . . 6941 2021-05-16 00:00:00 -911.84 -911.84 . . 6942 2021-05-16 08:00:00 -901.78 -901.78 . . 6943 2021-05-16 16:00:00 -870.68 -870.68 . . 6944 2021-05-17 00:00:00 -909.14 -909.14 . X <<< 6945 2021-05-17 08:00:00 -906.87 -906.87 . . 6946 2021-05-17 16:00:00 -900.85 -900.85 . . 6947 2021-05-18 00:00:00 -873.32 -873.32 . . 6948 2021-05-18 08:00:00 -903.16 -903.16 . . TV#33: Python exit 2022-11-09 / TV exit 2022-09-07 (Δ -1520h) Python P&L -31.0% / TV P&L -24.2% Trailing stop 30% active → TRAILING_STOP Python exit bar score: -883.5 Python trail_high uses bar high (same as Pine); stop triggered at close. Residual timing difference is intrinsic. bar time score mlp_score entry exit -------------------------------------------------------------------- 8564 2022-11-08 00:00:00 -840.69 -840.69 . . 8565 2022-11-08 08:00:00 -870.79 -870.79 . . 8566 2022-11-08 16:00:00 -901.34 -901.34 . . 8567 2022-11-09 00:00:00 -917.50 -917.50 . . 8568 2022-11-09 08:00:00 -883.55 -883.55 . X <<< 8569 2022-11-09 16:00:00 -871.60 -871.60 . . 8570 2022-11-10 00:00:00 -903.15 -903.15 . . 8571 2022-11-10 08:00:00 -894.86 -894.86 . . 8572 2022-11-10 16:00:00 -909.40 -909.40 . . TV#68: Python exit 2026-08-19 / TV exit 2026-06-05 (Δ -1800h) Python P&L -11.9% / TV P&L -23.2% Python exit bar score: -287.2 → SCORE_CROSSUNDER_MISMATCH TV and Python exited on different score-crossunder events. If score parity passes, this is usually downstream of an earlier lifecycle/export mismatch. bar time score mlp_score entry exit -------------------------------------------------------------------- 12702 2026-08-18 08:00:00 -820.14 -820.14 . . 12703 2026-08-18 16:00:00 -66.60 -66.60 . . 12704 2026-08-19 00:00:00 325.37 325.37 . . 12705 2026-08-19 08:00:00 -367.45 -367.45 . . 12706 2026-08-19 16:00:00 -287.16 -287.16 . X <<< 12707 2026-08-20 00:00:00 -249.78 -249.78 . . 12708 2026-08-20 08:00:00 1.08 1.08 . . 12709 2026-08-20 16:00:00 181.15 181.15 . . 12710 2026-08-21 00:00:00 -81.60 -81.60 . . ──────────────────────────────────────────────────────────────────────────────── TV-ONLY (5 trades — TV fires, Python does not) ──────────────────────────────────────────────────────────────────────────────── TV#2 Entry 2017-12-12 Exit 2017-12-18 P&L +8.1% Python DID fire crossunder here (state diverged earlier?) TV#8 Entry 2019-07-10 Exit 2019-07-11 P&L -3.1% Python DID fire crossunder here (state diverged earlier?) TV#25 Entry 2021-03-12 Exit 2021-04-23 P&L -16.8% Python DID fire crossunder here (state diverged earlier?) TV#34 Entry 2022-10-05 Exit 2022-11-10 P&L -22.2% Python DID fire crossunder here (state diverged earlier?) TV#69 Entry 2026-08-19 Exit 2026-08-20 P&L +0.1% Python DID fire crossunder here (state diverged earlier?) ================================================================================ DIAGNOSTIC RECOMMENDATIONS ================================================================================ [UNMATCHED TRADES] 0 Python-only IS trades and 5 TV-only trades remain. → Do not treat this run as trade-list parity. First confirm the chart export covers the full TV trade-list range and that the Strategy Tester export was generated from the same symbol, timeframe, preset, and script revision. [TV/CHART EXPORT MISMATCH] 0 TV entries lack a matching chart entry marker; 6 chart executable markers are absent from the TV trade list. → The exported Data Window and Strategy Tester files do not describe the same Pine lifecycle, or the Strategy Tester export is from a different preset/script revision. Re-export both from the same chart state before interpreting Python lifecycle differences. [3 SCORE_CROSSUNDER_MISMATCH exits] TV/Python exits landed on different score-crossunder events. → First check score parity. If it passes, treat these as downstream lifecycle/export-state effects from an earlier unmatched entry or exit, not as score-computation drift. → Use --exit-detail flag to see score context on exit bars. [2 TRAILING_STOP exits] Trailing stop 30% active. → Python trail_high uses bar high (same as Pine); timing difference from close-evaluation vs intrabar evaluation in Pine. Not a bug — intrinsic fill difference. → Use --exit-detail flag to see score context on exit bars. Tip: run with --verbose for score context tables on all divergent trades. activation_scores: run tools/diagnose_tv_parity.py for per-component breakdown. MLP: run tools/check_mlp_parity.py before interpreting trade-list differences. ================================================================================