[PASS] check 1, NEG: mean final balance with exactly 1% risk $68.74 vs analytic $68.72 (4 standard errors $0.30) [PASS] check 1, NEG: engine and reference give the same final balance on 2000 of 2000 years (2000) [PASS] check 1, ZERO: mean final balance with exactly 1% risk $100.18 vs analytic $100.00 (4 standard errors $0.44) [PASS] check 1, ZERO: engine and reference give the same final balance on 2000 of 2000 years (2000) [PASS] check 1, SMALL: mean final balance with exactly 1% risk $145.78 vs analytic $145.49 (4 standard errors $0.64) [PASS] check 1, SMALL: engine and reference give the same final balance on 2000 of 2000 years (2000) [PASS] check 1, GOOD: mean final balance with exactly 1% risk $308.25 vs analytic $307.76 (4 standard errors $1.37) [PASS] check 1, GOOD: engine and reference give the same final balance on 2000 of 2000 years (2000) [PASS] check 2, F1-P1 NEG at 0.5% risk: pass 19.071% vs published 19.071%, breach 78.691% vs 78.691%, median 63 vs 63 days [PASS] check 2, F1-P1 ZERO at 0.5% risk: pass 47.230% vs published 47.230%, breach 48.580% vs 48.580%, median 69 vs 69 days [PASS] check 2, F1-P1 SMALL at 0.5% risk: pass 77.039% vs published 77.039%, breach 20.630% vs 20.630%, median 63 vs 63 days [PASS] check 2, F1-P1 GOOD at 0.5% risk: pass 98.118% vs published 98.118%, breach 1.867% vs 1.867%, median 38 vs 38 days [PASS] check 2, F1-P2 NEG at 0.5% risk: pass 40.295% vs published 40.295%, breach 59.509% vs 59.509%, median 25 vs 25 days [PASS] check 2, F1-P2 ZERO at 0.5% risk: pass 64.469% vs published 64.469%, breach 35.238% vs 35.238%, median 28 vs 28 days [PASS] check 2, F1-P2 SMALL at 0.5% risk: pass 84.459% vs published 84.459%, breach 15.408% vs 15.408%, median 25 vs 25 days [PASS] check 2, F1-P2 GOOD at 0.5% risk: pass 98.313% vs published 98.313%, breach 1.687% vs 1.687%, median 17 vs 17 days pc_core.js sha256 9155e85b40ff83ac64589654ba29143627131c78741183234de176a79bafabe8, prop_core.js sha256 904eeb6c10364a6307f4f23bc7c92f66dea85a19e63116b093f39dbc7181aa49 [PASS] check 3, challenge: +$100 every day for 40 days: phase 1 in 4 days, phase 2 in 4 (minimum days), funded on day 9, $2,400 paid in 3 payouts (days 18, 28, 38), $160 unpaid [PASS] check 3, challenge: -$100 every day for 20 days, buying again: 4 attempts, each breached on its 5th day at the $4,500 floor [PASS] check 3, challenge: the same with one attempt [PASS] check 3, challenge: daily limit: -$100, -$100, -$50 on day 1 (a $250 day), then flat days: breach on day 1, the second attempt still in phase 1 at the end [PASS] check 3, challenge: pass, funded breach after 5 losing days, buy again, pass again, funded 9 days at the end: no payout, $720 unpaid [PASS] check 3, challenge: funded balance back at exactly $5,000 on its 10th day: no payout [PASS] check 3, challenge: a $500 loss on every first trade: 12 attempts in 12 days, then no more [PASS] check 3, challenge: phase 2 not yet passed at the end of the year (3 of its 4 minimum days) [PASS] check 3, challenge: phase 1 passed on the last day of the year [PASS] check 3, $100 account at 1% (min $1): win, win, loss = $101.992275 (engine 101.99227499999999, reference 101.99227499999999) [PASS] check 3, $100 account with a $10 minimum: a win to $115, then 11 losses of $10 to $5, below the minimum: stopped after 12 trades (engine $5, 12 trades; reference $5) [PASS] check 3, $100 gold account: +$1, -$2, +$3 = $102 (engine 10200 cents) [PASS] check 3, $100 gold account: after -$92 the $8 left is below the $9 margin of 0.01 lot at $4,500: stopped (engine 800 cents, 1 trade) [PASS] check 3, $100 gold account: a $120 loss stops at $0, never below; commission $0.07 a trade: +$1, +$1 = $101.86 (engine 0, 10186 cents) [PASS] check 3, scalp long: buy at the ask $1,000.30; the entry second's own high is ignored; the bid high $1,005.29 is 1 cent short; $1,005.30 at 7 s fills +$5.00; worst point -$0.80 (engine 500/-80, reference 500/-80) [PASS] check 3, scalp long: no ticks from 33 s to 40 s, so the 40-second exit is the last bid before it, $1,001.50: +$1.20; the jump at 45 s is after the exit (engine 120, reference 120) [PASS] check 3, scalp long: a tick at exactly 40 s still counts, the next second does not: +$3.70 (engine 370, reference 370) [PASS] check 3, scalp short: sell at the bid $1,000.00; the ask low $995.20 at 10 s is 20 cents short; $995.00 at 20 s fills +$5.00 (engine 500, reference 500) [PASS] check 3, scalp short: closed at the ask $1,002.30 after 40 s: -$2.30, worst point -$2.60 (engine -230/-260, reference -230/-260) [PASS] check 3, scalp long with no tick after the entry second: closed at that second's last bid, -$0.25; the mid moved up from $1,000.15 to $1,000.20 (engine -25/1, reference -25/1) [PASS] check 3, the side of the move: an unchanged mid gives no side (a coin flip), a lower mid gives down [PASS] check 3, skill: s = 1 always takes the side of the move (up, then down); s = 0 goes up 188 times of 400; with no move, s = 1 goes up 209 times of 400 [PASS] check 3, London 08:00-17:00 on the server clock: 10:00-19:00, and 11:00-20:00 in the weeks when only the US is on summer time (24 March, 27 October) [PASS] check 3, the engine's time-zone rules and the runtime's time-zone database agree on London 08:00 and 17:00 every day of 2026 (0 differences) [PASS] check 4, the reference's random generator gives the same 100,000 draws as the engine's for 4 seeds [PASS] check 4, Part 1 NEG, 3,000 simulated years: engine and reference agree on every number [PASS] check 4, Part 1 ZERO, 3,000 simulated years: engine and reference agree on every number [PASS] check 4, Part 1 SMALL, 3,000 simulated years: engine and reference agree on every number [PASS] check 4, Part 1 GOOD, 3,000 simulated years: engine and reference agree on every number [PASS] check 4, trading days: engine 148, reference 148, the same windows and parts [PASS] check 4, every possible entry of the tick file (4350847): long and short results, +$5 exits, worst points and the side of the move agree (0 differences) [PASS] check 4, the expected result of a trade with a random and with the right side agree [PASS] check 4, Part 2 skill 0%, 150 simulated periods: engine and reference agree on every number [PASS] check 4, Part 2 skill 10%, 150 simulated periods: engine and reference agree on every number [PASS] check 4, Part 2 skill 20%, 150 simulated periods: engine and reference agree on every number [PASS] check 4, Part 2 skill 30%, 150 simulated periods: engine and reference agree on every number code: sa_lib.js bccabbd31ae39e28, sa_ref.js 4334d5ffdcd5f405, sa_run.js 53d0f5442c5ac479, sa_selftest.js db2e15f7d7d47c77; 17 s PASSED