FX Patrol

v3
⌘K
loading…
--:--

Track Record

Does the dashboard's conviction actually predict price direction? Every bias is logged and scored against realized spot.
Hit rate
57.2%
1038W / 776L · 1814 calls · ~128 independent · 95% CI 48.0–65.0% ≈coin
Brier score
0.275
lower = better calibrated (0 perfect, 0.25 = coin-flip)
Avg move (in bias direction)
-0.42%
mean signed return per call
Reliability diagram when it says X% conviction, does it resolve in-direction X% of the time?
Perfect calibration (diagonal) This model
By asset classwhere's the real edge?
ClassCalls~Indep.Hit rate95% CIBrierAvg move
Energy 130 8 46.9% ≈coin 22.0–78.0% 0.385 -3.75%
FX Crosses 1151 80 58.5% ≈coin 48.0–69.0% 0.26 +0.25%
FX Majors 368 25 69.0% ≈coin 48.0–83.0% 0.3 +0.61%
Metals 159 13 31.4% ≈coin 13.0–58.0% 0.246 -4.83%
Other 6 2 0.0% ≈coin 0.0–66.0% 0.137 -1.81%
How to read these numbersthe part most sites leave out

Rows are not trials. A view logged daily for a week against the same move is one observation, not seven. Every interval on this page is computed on the effective sample — distinct non-overlapping 30-day windows per instrument — and correlated instruments (the seven CHF crosses are closer to one bet than seven) mean even that overstates independence. Where an interval includes 50%, the ≈coin tag says so.

Resolution rule, fixed ex-ante: a call is correct when the sign of spot at the horizon matches the published direction. Weekend rows that duplicated Friday's stale quotes (8.9% of the historical sample) are excluded, and the logger no longer runs when markets are closed.

Numbers this engine has retired. A 74.6% short-CHF hit rate once lived here: honestly counted it is 14 weekly factor observations (9 won, 5 lost) whose interval includes 50%. A 96.4% on 60-day holds was one trend episode wearing 138 rows. Neither is quoted anywhere on this site without those qualifiers, and the disciplines that killed them (effective-n, pre-registered decomposition, clone dedupe) produced everything above.

Standing risk disciplines, all measured before adopted: views under 0.55 conviction publish as leans, not calls (threshold frozen 24 Aug 2026, judged only on forward flow); metals and energy conviction is capped at 0.25 (metals lose in replay; energy conviction bands carry no information); direction changes must clear a 7-day dwell or a named trigger; the short-CHF book answers to a regime governor (currently HEALTHY: 16/20 trailing trials correct); and no single event timestamp may quietly carry the book (a 30% concentration ceiling is flagged by the self fact-check).

Integrity signalsrecomputed live on every load
Overdue resolutions right now 0 the easiest way to fake a track record is to sit on losers past their due date and quietly drop them; this counter is recomputed from the database on every page load, and anything above zero is a problem you should ask about
Published-book replay -0.45% (-0.61% net of costs) every published view held until the engine changed it, marked to market over 66 trading days; Sharpe -0.72 ±1.95 — not statistically significant at this sample size, and it says so here rather than waiting for you to work that out
Engine version e681fee495b9 a hash of the decision code, stamped on every published snapshot, so any change to how these numbers are produced is visible as a break in the series
By pair trust this engine where? ignore it where?
PairCallsW / LHit rateBrierAvg move
EURCHF 67 64 / 3
95.5%
0.303 +0.82%
AUDUSD 55 48 / 7
87.3%
0.466 +1.21%
EURUSD 30 25 / 5
83.3%
0.301 +0.65%
AUDCHF 62 50 / 12
80.6%
0.335 +1.03%
CHFJPY 61 48 / 13
78.7%
0.285 +0.97%
GBPCHF 60 47 / 13
78.3%
0.203 +0.47%
USDCAD 67 52 / 15
77.6%
0.199 +0.71%
NZDCHF 59 45 / 14
76.3%
0.258 +1.24%
NZDUSD 59 44 / 15
74.6%
0.2 +1.01%
CADCHF 58 43 / 15
74.1%
0.242 +0.80%
CADJPY 48 35 / 13
72.9%
0.24 +0.42%
NZDCAD 62 40 / 22
64.5%
0.272 +0.29%
AUDCAD 57 35 / 22
61.4%
0.355 +0.09%
EURNZD 58 35 / 23
60.3%
0.32 +0.21%
EURGBP 60 36 / 24
60.0%
0.233 -0.11%
USDJPY 61 36 / 25
59.0%
0.281 +0.74%
USDCHF 65 37 / 28
56.9%
0.377 -0.16%
EURCAD 62 35 / 27
56.5%
0.275 +0.18%
GBPCAD 58 32 / 26
55.2%
0.214 +0.27%
NZDJPY 55 28 / 27
50.9%
0.246 -0.13%
WTI 65 33 / 32
50.8%
0.329 -3.01%
BRENT 65 28 / 37
43.1%
0.441 -4.50%
AUDNZD 60 24 / 36
40.0%
0.25 -0.21%
GBPUSD 31 12 / 19
38.7%
0.282 -0.15%
EURAUD 56 21 / 35
37.5%
0.234 -0.12%
PLATINUM 41 12 / 29
29.3%
0.131 -5.82%
GBPNZD 49 13 / 36
26.5%
0.227 -0.44%
XAGUSD 53 14 / 39
26.4%
0.359 -7.24%
PALLADIUM 43 10 / 33
23.3%
0.189 -3.90%
GBPAUD 53 12 / 41
22.6%
0.232 -0.38%
GBPJPY 51 11 / 40
21.6%
0.229 -0.47%
XAUUSD 22 thin 14 / 8
63.6%
0.301 +0.99%
AUDJPY 29 thin 11 / 18
37.9%
0.207 -0.46%
EURJPY 26 thin 8 / 18
30.8%
0.23 -0.37%
DXY 6 low n 0 / 6
0.0%
0.137 -1.81%

Ranked by confidence first, then hit rate. Green/red colouring only applies once a pair has ≥30 resolved calls — everything below that is rendered muted because it's statistical noise. A "low n" badge means fewer than 10 calls; "thin" means 10–29. Don't act on muted rows until they earn a real sample.

Recent resolved callslast 25
ResolvedPairCallConvictionMoveResult
PLATINUM SHORT 0.20 -4.09% ✗ wrong
AUDUSD LONG 0.18 +1.61% ✓ correct
EURCAD LONG 0.40 -0.34% ✗ wrong
PALLADIUM SHORT 0.36 -1.86% ✗ wrong
USDCAD SHORT 0.58 +0.75% ✓ correct
EURNZD SHORT 0.19 -1.51% ✗ wrong
NZDJPY LONG 0.56 +0.88% ✓ correct
CADJPY SHORT 0.59 -2.75% ✗ wrong
GBPCHF LONG 0.63 +1.13% ✓ correct
NZDUSD LONG 0.67 -1.05% ✗ wrong
CHFJPY SHORT 0.46 -1.12% ✗ wrong
GBPCAD LONG 0.38 -0.46% ✗ wrong
EURGBP LONG 0.57 +0.12% ✓ correct
XAGUSD SHORT 0.69 -10.37% ✗ wrong
GBPNZD LONG 0.42 +1.40% ✓ correct
EURCHF LONG 0.39 +1.25% ✓ correct
EURAUD LONG 0.30 -1.16% ✗ wrong
USDJPY SHORT 0.41 -1.98% ✗ wrong
USDCHF LONG 0.15 +0.83% ✓ correct
GBPAUD LONG 0.54 -1.28% ✗ wrong
GBPJPY LONG 0.48 +2.28% ✓ correct
WTI LONG 0.74 +13.69% ✓ correct
BRENT LONG 0.26 +13.74% ✓ correct
CADCHF LONG 0.62 +1.59% ✓ correct
AUDCHF LONG 0.42 +2.44% ✓ correct

Note: FX, metals and energy are scored (long = price up). US yields are excluded — "long a yield" is directionally ambiguous. Neutral biases aren't scored.