EMA 9/20 gold study self-test. Run 2026-10-08T16:19:53.343Z PASS step 1 done: the published 1-hour golden cross on gold was reproduced with the changed engine (gx_repro_result.txt) PASS step 2 done: the engine's own self-test passed after the change (gh_selftest_result.txt) PASS all twelve variants per timeframe are in the engine's list (24 in all) PASS hand case: EMA(2) = 10, 10, 11.3333, 13.1111 and EMA(4) = 10.5, 11.9, 11.94 where they start PASS hand case: death cross at bar 6, golden cross at bar 9, none at the first bar where both exist PASS a stop and a target touched in the same minute: the stop is taken (long from 100, stop 99, target 102) PASS the stop can be hit in the entry minute itself PASS a stop gapped through fills at the open of that minute (97, not 99) PASS a signal before a gap is executed at the first minute after the gap (minute 200, open 101) PASS swap nights: Mon 16:00 to Tue 16:00 = 1; Wed 16:00 to Thu 16:00 = 3; Fri 16:00 to Mon 10:00 = 1; a full week = 7; held only across 17:00-17:30 = 0 PASS swap rates: long -$0.56282, short +$0.39136 per ounce per night (56.282 and 39.136 points of $0.01 on 100 oz, per oz) PASS cost: $0.30 per ounce per round trip, no slippage, 3% a year for the financing scenario Real data (no results printed): PASS data: the corrected-clock gold series ends at the frozen last bar, 2026-10-07 16:57 New York - 7067434 one-minute bars, 2004-06-11 00:19 .. 2026-10-07 16:57; 20 weeks moved by +60 minutes PASS M15: bars equal a naive aggregation (close times at multiples of 15 minutes, open/high/low/close and first/last minute) - 512811 bars PASS M15: bar close times are strictly increasing and every bar closes on a multiple of 15 minutes PASS M15: the engine's EMA(9) and EMA(20) match a naive recomputation to 1e-9 - max diff 4.5e-12 PASS M15: the engine's cross signals equal the naive signals bar by bar - 24062 signals PASS M15 GX-L-N: engine = independent reference, trade by trade PASS M15 GX-L-S: engine = independent reference, trade by trade PASS M15 GX-L-T1: engine = independent reference, trade by trade PASS M15 GX-L-T2: engine = independent reference, trade by trade PASS M15 GX-L-T3: engine = independent reference, trade by trade PASS M15 GX-L-T123: engine = independent reference, trade by trade PASS M15 GX-LS-N: engine = independent reference, trade by trade PASS M15 GX-LS-S: engine = independent reference, trade by trade PASS M15 GX-LS-T1: engine = independent reference, trade by trade PASS M15 GX-LS-T2: engine = independent reference, trade by trade PASS M15 GX-LS-T3: engine = independent reference, trade by trade PASS M15 GX-LS-T123: engine = independent reference, trade by trade PASS M15: the shifted-state control with shift 0 reproduces the real signals PASS H1: bars equal a naive aggregation (close times at multiples of 60 minutes, open/high/low/close and first/last minute) - 129857 bars PASS H1: bar close times are strictly increasing and every bar closes on a multiple of 60 minutes PASS H1: the engine's EMA(9) and EMA(20) match a naive recomputation to 1e-9 - max diff 3.6e-12 PASS H1: the engine's cross signals equal the naive signals bar by bar - 5730 signals PASS H1 GX-L-N: engine = independent reference, trade by trade PASS H1 GX-L-S: engine = independent reference, trade by trade PASS H1 GX-L-T1: engine = independent reference, trade by trade PASS H1 GX-L-T2: engine = independent reference, trade by trade PASS H1 GX-L-T3: engine = independent reference, trade by trade PASS H1 GX-L-T123: engine = independent reference, trade by trade PASS H1 GX-LS-N: engine = independent reference, trade by trade PASS H1 GX-LS-S: engine = independent reference, trade by trade PASS H1 GX-LS-T1: engine = independent reference, trade by trade PASS H1 GX-LS-T2: engine = independent reference, trade by trade PASS H1 GX-LS-T3: engine = independent reference, trade by trade PASS H1 GX-LS-T123: engine = independent reference, trade by trade PASS H1: the shifted-state control with shift 0 reproduces the real signals PASS gx_run.js prepares the signals with EMA 9 and 20 on 15- and 60-minute bars of the corrected-clock data SELF-TEST PASSED: every check passed (4 s). gx_run.js may now be pointed at the data. PASSED 2026-10-08T16:19:57.610Z