Our track record, in full.

Every forecast is scored against the reference rate that followed it, and against the simplest rival of all: assuming the rate will not move.

Next fix forecasts scored41580across 42 pairs
Landed inside the 80% range81%target is 80%
Pairs beating no change1 of 42next fix horizon
Scored throughFriday 6 Novemberrefreshed each working day

The live rate is the edge.

The ECB fixes at 14:15 CET. We refresh six times each working day from live market rates, so today's number already contains the move the market has made since yesterday's fix. Measured against 59 real fixes (Monday 17 August to Thursday 5 November), this is how much of the no change error is left at each refresh, averaged over the 27 currencies where the live feed matches the ECB fix.

By late morning most of tomorrow's headline is already known.

Not anchored, because the live feed and the ECB rate disagree: CNY. Those stay on the fix.

Error of the live rate nowcast relative to assuming no change, by refresh time
RefreshError leftCutLive scored
16:30 UTC, after the fix82% of no change18% less error90% left, 27% inside range (26)
21:30 UTC78% of no change22% less error73% left, 31% inside range (26)
05:30 UTC60% of no change40% less errornot yet
07:30 UTC49% of no change51% less errornot yet
09:30 UTC39% of no change61% less errornot yet
11:30 UTC26% of no change74% less error5% left, 82% inside range (38)

"Live scored" counts every nowcast we published since launch, scored against the fix that followed: 90 so far.

What we tested, and what survived.

Nineteen years of daily ECB fixes for 29 currencies, every method walk forward, chosen on 2019 to 2023 and judged on the last three years. Only what beat the market's own price out of sample is in the model.

In the modelLive rate anchoringA live rate before the 14:15 CET fix cuts the error on that fix by 40% at 05:30 UTC and 64% at 11:30 UTC, measured against real fixes. The single biggest gain, so the site refreshes six times a day.
In the modelCrawl drift, gatedA 250 day drift that only switches on when its t statistic is strong. Cuts the lira's error 7% at one day and 28% at five, and is zero for every floating currency.
In the modelVolatility that remembersA GARCH style daily volatility reverting to its long run level, calibrated by conformal prediction so the 80% range holds 8 times in 10 whatever the distribution does. 1 to 3% tighter than a fixed window.
In the modelEvent daysThe fix after an FOMC decision moves 1.7× a normal day, after US payrolls 1.4×, after an ECB decision 1.1×, the FOMC day itself 0.75×. Ranges are sized for it; without this they held only 64% of the time on those days.
Tested, outLagged returns and the dollar factorYesterday's move, the dollar's move against the majors, one to five lags, ridge regressions: at one to five days none beats no change out of sample, on any of 28 currencies. Even coefficients picked with hindsight gain under half a percent.
Tested, outCatch up after big dollar daysAsian managed currencies do give back 3 to 8 bp the day after a large dollar move, but against daily moves of 20 to 40 bp that is under 1% of error and it did not hold up out of sample.
Tested, outMean reversion to 20 and 60 day averagesAdds noise at one day and nothing at five.
Tested, outProjecting weak feeds from the majorsUsing the live euro, pound and yen to infer a currency's move is worse than that currency's own live quote in every case we measured.
Tested, outA global volatility factorScaling each currency's volatility by the majors' volatility made the ranges slightly worse; each currency's own history already carries it.

Next fix

PairForecastsAvg missNo change guessInside rangeVerdict
EURUSD to EUREuro9900.002840.0028380%Ties
GBPUSD to GBPBritish pound9900.002590.0025980%Ties
JPYUSD to JPYJapanese yen9900.6440.64482%Ties
INRUSD to INRIndian rupee9900.1410.14179%Ties
AUDUSD to AUDAustralian dollar9900.006730.0067381%Ties
CADUSD to CADCanadian dollar9900.003450.0034582%Ties
CHFUSD to CHFSwiss franc9900.002950.0029581%Ties
GBPGBP to INRMoney route9900.3800.38080%Ties
EUREUR to INRMoney route9900.3070.30781%Ties
AUDAUD to INRMoney route9900.2510.25181%Ties
CADCAD to INRMoney route9900.1740.17481%Ties
EUREUR to GBPMoney route9900.001760.0017680%Ties
GBPGBP to EURMoney route9900.002390.0023980%Ties
EUREUR to USDEuro9900.003460.0034680%Ties
GBPGBP to USDBritish pound9900.004290.0042980%Ties
JPYJPY to USDJapanese yen9900.00002950.000029582%Ties
INRINR to USDIndian rupee9900.0000180.00001879%Ties
AUDAUD to USDAustralian dollar9900.002980.0029881%Ties
CADCAD to USDCanadian dollar9900.001830.0018382%Ties
CHFCHF to USDSwiss franc9900.004030.0040381%Ties
CNYUSD to CNYChinese yuan9900.009340.0093682%Ties
SGDUSD to SGDSingapore dollar9900.002690.0026980%Ties
HKDUSD to HKDHong Kong dollar9900.002650.0026582%Ties
KRWUSD to KRWSouth Korean won9906.0126.01379%Ties
NZDUSD to NZDNew Zealand dollar9900.007690.0076981%Ties
THBUSD to THBThai baht9900.1300.13080%Ties
IDRUSD to IDRIndonesian rupiah99047.147.181%Ties
MYRUSD to MYRMalaysian ringgit9900.010960.0109680%Ties
PHPUSD to PHPPhilippine peso9900.1570.15781%Ties
SEKUSD to SEKSwedish krona9900.049270.0492781%Ties
NOKUSD to NOKNorwegian krone9900.052140.0521482%Ties
DKKUSD to DKKDanish krone9900.021130.0211380%Ties
PLNUSD to PLNPolish zloty9900.017310.0173180%Ties
CZKUSD to CZKCzech koruna9900.0870.08780%Ties
HUFUSD to HUFHungarian forint9901.8951.89579%Ties
RONUSD to RONRomanian leu9900.015070.0150780%Ties
TRYUSD to TRYTurkish lira9900.0470.05082%Beats it
ISKUSD to ISKIcelandic krona9900.4920.49281%Ties
MXNUSD to MXNMexican peso9900.0940.09481%Ties
BRLUSD to BRLBrazilian real9900.030560.0305581%Ties
ZARUSD to ZARSouth African rand9900.1050.10581%Ties
ILSUSD to ILSIsraeli shekel9900.016960.0169680%Ties

Five sessions out

PairForecastsAvg missNo change guessInside rangeVerdict
EURUSD to EUREuro9860.006250.0062579%Ties
GBPUSD to GBPBritish pound9860.005720.0057279%Ties
JPYUSD to JPYJapanese yen9861.4571.45781%Ties
INRUSD to INRIndian rupee9860.3340.33479%Ties
AUDUSD to AUDAustralian dollar9860.014360.0143678%Ties
CADUSD to CADCanadian dollar9860.008000.0080078%Ties
CHFUSD to CHFSwiss franc9860.006720.0067278%Ties
GBPGBP to INRMoney route9860.8280.82678%Ties
EUREUR to INRMoney route9860.6800.67878%Ties
AUDAUD to INRMoney route9860.5590.55978%Ties
CADCAD to INRMoney route9860.4120.41278%Ties
EUREUR to GBPMoney route9860.003810.0038181%Ties
GBPGBP to EURMoney route9860.005170.0051781%Ties
EUREUR to USDEuro9860.007680.0076879%Ties
GBPGBP to USDBritish pound9860.009520.0095179%Ties
JPYJPY to USDJapanese yen9860.00006650.000066481%Ties
INRINR to USDIndian rupee9860.0000430.00004379%Ties
AUDAUD to USDAustralian dollar9860.006350.0063578%Ties
CADCAD to USDCanadian dollar9860.004230.0042378%Ties
CHFCHF to USDSwiss franc9860.009250.0092478%Ties
CNYUSD to CNYChinese yuan9860.021520.0216982%Ties
SGDUSD to SGDSingapore dollar9860.005890.0059080%Ties
HKDUSD to HKDHong Kong dollar9860.005870.0058781%Ties
KRWUSD to KRWSouth Korean won98613.10713.10679%Ties
NZDUSD to NZDNew Zealand dollar9860.017240.0172477%Ties
THBUSD to THBThai baht9860.2930.29382%Ties
IDRUSD to IDRIndonesian rupiah986101.7101.681%Ties
MYRUSD to MYRMalaysian ringgit9860.028780.0287580%Ties
PHPUSD to PHPPhilippine peso9860.3540.35379%Ties
SEKUSD to SEKSwedish krona9860.106880.1068779%Ties
NOKUSD to NOKNorwegian krone9860.114890.1148879%Ties
DKKUSD to DKKDanish krone9860.046680.0466879%Ties
PLNUSD to PLNPolish zloty9860.036400.0363278%Ties
CZKUSD to CZKCzech koruna9860.1910.19179%Ties
HUFUSD to HUFHungarian forint9864.0704.06580%Ties
RONUSD to RONRomanian leu9860.034100.0340879%Ties
TRYUSD to TRYTurkish lira9860.1290.17986%Beats it
ISKUSD to ISKIcelandic krona9861.0351.03580%Ties
MXNUSD to MXNMexican peso9860.2020.20282%Ties
BRLUSD to BRLBrazilian real9860.066310.0663080%Ties
ZARUSD to ZARSouth African rand9860.2240.22480%Ties
ILSUSD to ILSIsraeli shekel9860.038070.0381081%Ties

How we score it.

Walk forward testing: each forecast only sees reference rates published before its own date. Nothing is tuned on the period it is scored on.

Average miss is the mean absolute gap between the forecast and the reference rate that followed. The no change guess simply repeats the latest rate.

These tables score the daily model alone, from fix to fix, before any live anchoring. On daily data the market's own price is almost unbeatable, so nearly every pair ties it and only crawling currencies beat it; the 80% band is sized by a volatility model and calibrated on real recent misses. Beating no change takes an error at least 1% smaller, and up to 6% larger counts as a tie.

Live forecast archive

If the numbers get worse, they get worse here first.