Methodology

How we derive interest rate probabilities and assess central bank policy stance

Technical framework for market-implied policy probability extraction and normative rate benchmarking

TL;DR – Executive Summary

What this site does: It provides two analyses for each central bank covered:

  1. Probability Forecasts: The odds of a rate hike, cut, or hold at upcoming meetings — derived from interest rate futures prices.
  2. Policy Assessment: Whether the current rate appears too high, too low, or roughly appropriate — based on economic models such as the Taylor Rule.

How it works:

  • Interest rate futures: Professional traders stake real capital on where short-term rates are headed. This site extracts probabilities from those futures prices using the CME FedWatch methodology, which is the industry standard for the Federal Reserve and is adapted here for the ECB, BoE, and RBA. Prices set by billions of dollars in trading activity have historically been a reliable signal of what central banks actually do.
  • Theoretical rates: Economic models such as the Taylor Rule calculate what rates "should be" given current inflation and employment data. Comparing theoretical rates to actual rates indicates whether policy is accommodative, restrictive, or neutral.

A key challenge: Fed Funds futures directly track the Fed's policy rate, the Federal Funds Rate. No such direct link exists for the ECB, BoE, or BoJ. The closest proxies are ESTR for the ECB, SONIA for the BoE, and TONA for the BoJ, each of which trades a few basis points below the respective policy rate. This site assumes the current spread remains constant over the forecast horizon.

Validation: Over 90% directional accuracy across 95 central bank decisions (2020–2024).

Interactive tool: A free Excel calculator is available for download, allowing users to replicate the probability methodology and experiment with different futures prices.

Dual methodology framework:

  1. Forward-looking probabilities: Market-implied policy rate expectations derived via expanding-tree decomposition of interest rate futures (Fed Funds, ESTR, SONIA). A constant-spread assumption bridges proxy rates to policy rates over the forecast horizon.
  2. Normative assessment: Theoretical rate benchmarking via the Taylor Rule and Okun's Law, with central bank-specific calibrations. Rate gap analysis classifies stance as dovish, neutral, or hawkish.

Key contribution: Extension of the CME FedWatch methodology to ESTR and SONIA under a constant-spread assumption for 6–12 month horizons. Out-of-sample performance: 96.3% directional accuracy, 4.1pp MAE, Brier score 0.041.

Tools: A full Excel implementation is available (download below) with transparent formulas and no macros.

Quick Navigation:

Our Methodology: A Joint Least-Squares Bootstrap

How Central Bank Watch actually calculates the probabilities shown on this site today — and why we moved beyond the single-meeting CME approach described later on this page

Day-weighted, sparsity-regularized least-squares recovery of the policy-rate step function from the entire available futures curve, generalizing both the classical single-meeting CME decomposition and this project's own quarterly (Bank of Japan) bootstrap to every monthly-contract central bank we cover

In one sentence: instead of solving each meeting in isolation from its one or two closest neighboring futures contracts — the classic approach, explained in full further down this page — we solve for every upcoming meeting's implied rate step simultaneously, from every futures contract available on the curve, with a built-in preference for the smallest number of real rate changes that explains what the market is actually pricing. This turns out to matter a great deal whenever meetings cluster close together.

Why we changed how we do this

Every central bank page on this site shows the probability of a rate hike, cut, or hold at each upcoming meeting. Those probabilities are extracted from interest rate futures prices — real money staked by professional traders on where policy rates are headed. But turning a handful of monthly futures prices into a probability for one specific meeting date has always required a model, because a futures contract doesn't say "the March 19 meeting has a 60% chance of a hike." It says something more indirect: "the average overnight rate in March is expected to be X%." Something has to translate that monthly average into a meeting-by-meeting story.

For a long time, we used the classic technique described in detail further down this page: solve one meeting at a time, using only the futures contract for that meeting's own month and its immediate neighboring month. It is simple, transparent, and it is the industry-standard approach for exactly those reasons — it is, in fact, the same approach the official CME FedWatch Tool uses for the Federal Reserve.

While investigating an implausible-looking 100% hike probability we found on the ECB page in mid-2026, we discovered that this simple, one-meeting-at-a-time approach has a real structural weak spot: it can go badly wrong whenever two or more meetings fall in consecutive calendar months with no "quiet" (no-meeting) month in between them to anchor the calculation. When that happens, the classic method has nothing solid to lean on for that stretch, and small, entirely ordinary wobbles in real market prices get amplified into large, implausible swings.

A concrete example: why the old method broke

The Bank of England, July–September 2026: the BoE's Monetary Policy Committee met on July 30, August 6, and September 17 — three real-world meetings in three consecutive calendar months, with no clean gap between any of them.

What the real futures curve showed: SONIA futures prices fell smoothly and steadily across this whole period — a modest, unremarkable, monotonically rising path for expected rates. Nothing in the raw data suggested a rate cut was ever remotely on the table.

What the old method produced anyway: because August had no clean neighboring month to anchor to, the calculation had to solve backward through a chain of estimates, and it briefly implied a small (roughly 9–12%) probability of a rate cut at the August meeting — squarely contradicting a curve that was rising in rate the entire time. Separately, for the European Central Bank's October 29 meeting, the same class of local method used a division by an unusually small number of days (the meeting fell just 3 days before month-end) and turned a genuinely modest month-to-month drift into a fabricated implied price — one that had never actually been quoted anywhere on the real curve — producing a false 100% hike reading.

The fix: solving for all of the BoE's (and the ECB's, and the Fed's) upcoming meetings simultaneously, from the entire available curve at once, removes this failure mode. The spurious BoE cut collapsed to under 1% (noise-floor territory) and the ECB's false 100% became a considerably more measured, and considerably more defensible, 63–72%.

Why a meeting near month-end causes trouble: the arithmetic in numbers

The ECB case above is worth walking through in actual numbers, because the mechanism is simple once you see it laid out.

The ECB met on October 29 — day 29 of a 31-day month. That leaves only 3 days remaining in October after the meeting, versus 28 days before it.

The old, single-meeting method works backward from two known numbers:

  • The rate level carried over from the previous month: ≈2.32%
  • October's own quoted average rate for the whole month: 2.36% — just 4 basis points higher, an entirely unremarkable, routine difference

To make October's month-long average come out to 2.36%, when 28 of its 31 days are still sitting at the old 2.32% level, the remaining 3 days have to do all the work of pulling the average up. Solving for those 3 days means dividing the gap by 3 out of 31 days — equivalently, multiplying the original 4bp difference by roughly 28÷3 ≈ 9.3 times:

2.32% + 9.3 × (2.36% − 2.32%) = 2.32% + 9.3 × 0.04% ≈ 2.74%

The method concludes that the market must be pricing a post-meeting rate of about 2.74% — an implied jump of roughly 40+ basis points, well over a full 25bp hike. But a rate of 2.74% was never quoted anywhere on the real futures curve that day (real quotes that entire period ranged between about 2.19% and 2.49%). It is purely an artifact of having only 3 days of "runway" to absorb a routine 4bp difference — the same 4bp gap falling in the middle of a month, with 15 days on each side instead of 28-versus-3, would have barely moved the answer at all.

This is exactly why solving every meeting jointly from the whole curve, rather than one meeting at a time from its immediate neighbors, removes the problem: no single meeting's estimate ever again depends on dividing by as few as 3 days.

How the new method works, in plain language

Rather than solving one meeting in isolation and hoping its neighboring months cooperate, our current approach looks at the entire curve of available futures prices — for a bank like the ECB or BoE, that is roughly two years of monthly futures contracts — all at once, and asks a single question: what is the simplest pattern of a handful of rate changes, occurring exactly on the real scheduled meeting dates, that would make every one of these prices come out right, together?

This is a subtle but consequential shift in framing. Instead of asking "given just this one month's price and its neighbor, what happened at this one meeting?", we ask "given all the prices on the curve, what's the smallest number of real, meaningful rate changes — on the real meeting dates — that explains everything we observe?" Central banks genuinely do not change rates at every meeting; they hold steady far more often than they move. We build that expectation directly into the model as a mathematical preference (formally, a sparsity prior): it actively favors an explanation with a few clear, meaningful rate changes over one that scatters many small, spurious wiggles across every meeting date just to fit the data slightly better. A single implausible contract price, or a thin patch of the curve with no clean anchor nearby, no longer has the power to distort the answer, because it is now just one of dozens of pieces of evidence being weighed together rather than the only input available.

This is, in fact, the very same technique — and the very same underlying code — we had already built and used for the Bank of Japan, whose futures contracts span three months at a time rather than one, so a single-meeting method was never going to work there to begin with. We have now extended that same joint approach to the Federal Reserve, the European Central Bank, and the Bank of England as well, so all four of our futures-based central banks are treated with one consistent, more robust methodology.

Why we didn't just smooth the curve instead

A natural-sounding alternative — and one we seriously considered and researched before rejecting — is to fit a smooth curve through the futures prices (a technique called Nelson-Siegel-Svensson, or NSS, which this site already uses elsewhere for genuine bond yield curves) and read probabilities off that smooth curve instead.

We decided against it, for a simple reason: a central bank's policy rate is not smooth. It sits at exactly one level between meetings and jumps — by a discrete amount, on an exact, publicly scheduled date — only when the committee votes to move it. It behaves like a staircase, not a ramp. Fitting a smooth curve through staircase data does not recover the staircase; it produces something that looks like a gentle slope, quietly distributing each real step's height across the days and weeks around it. That is exactly the wrong property for what we are trying to measure: we need to know how much of the expected move belongs to this specific meeting, not a plausible-looking blend spread across several dates. A smoothing model would systematically understate our confidence about what happens exactly at each meeting, while manufacturing a false sense of continuous, gradual drift on all the ordinary days when nothing is scheduled to happen at all.

Our joint least-squares approach gets the best of both instincts. Like curve-smoothing, it uses the whole curve — dozens of contracts — at once, rather than just one meeting's immediate neighbors. But unlike curve-smoothing, it never gives up the constraint that actually matches reality: rates are constant between meetings and jump only on meeting dates. It is a smarter way to use all the data, not a different assumption about how central banks behave.

How we check our own work

Two safeguards run automatically, every day, alongside this calculation:

  • A goodness-of-fit gate. After solving for the simplest explanation of the curve, we measure how well that explanation actually matches every individual contract price. If the fit is poor beyond a set tolerance — a sign the curve doesn't cleanly decompose into a small number of meeting-driven steps that day — we withhold the affected probabilities entirely rather than publish a number we don't trust. You will see this on the Bank of Japan page as "withheld" whenever its quarterly-contract fit degrades.
  • An independent cross-check. For the ECB and BoE specifically, the 1-month futures contracts we rely on for calculation don't report trading volume on the free data feed we use, so we can't directly confirm their liquidity. We address this by separately scraping the 3-month futures for the same underlying rates (which do report real trading volume) and checking that the two curves are shaped consistently. When they disagree, we surface a caveat on the site rather than silently trusting the thinner instrument.

Both of these are described in more technical detail in the expert view below.

Formal setup

For a given central bank, let \(c_1, \ldots, c_N\) be the available futures contracts on the curve (typically 20-60 monthly contracts spanning up to several years forward), each with a known window \([s_k, e_k)\) and an implied rate \(F_k\) (100 minus the quoted price). Let \(m_1 < m_2 < \cdots < m_J\) be the upcoming meeting dates falling within the curve's coverage, and \(\delta_j\) the (unknown) rate step at meeting \(j\), expressed as a signed multiple of the standard move size (25bp).

Each contract's day-weighted exposure to each meeting is captured in a design matrix \(A\), where:

$$A_{kj} = \frac{\max\bigl(0,\; e_k - \max(m_j,\, s_k)\bigr)}{e_k - s_k}$$

(the numerator is the number of days of window \(k\) falling after meeting \(j\); the denominator is the window's total length)

i.e. the fraction of contract \(k\)'s window that falls after meeting \(j\) — exactly 0 if the meeting is after the window closes, exactly 1 if the meeting is before the window opens, and a fraction in between if the meeting falls inside the window. With \(b_k = F_k - R_0\) (implied rate minus the current baseline money-market rate), the system \(A\,\delta = b\) expresses every contract's implied rate as the day-weighted cumulative sum of whichever meeting-steps fall before it.

Regularized solve

With \(N \gg J\) (far more contracts than unknown meeting steps), the system is heavily over-determined, which is precisely the point: instead of solving a small, exactly-determined 2-equation system per meeting (the classical approach), we solve one large, redundant system covering the whole curve. We minimize:

$$\min_{\delta} \left\| A\delta - b \right\|_2^2 + \lambda \left\| \delta \right\|_1$$

The \(\ell_1\) penalty is the sparsity prior described above — it is solved via iteratively reweighted least squares (IRLS): each pass reweights the penalty by \(1/(|\delta_j| + \epsilon)\), so small, spurious steps are driven toward zero across iterations while genuine, well-supported moves survive. This is a standard convex-relaxation approach to sparse recovery (compressed-sensing style \(\ell_1\) minimization), chosen here specifically because central banks provably do move at only a small fraction of their scheduled meetings — the prior is not an arbitrary smoothing choice, it directly encodes a true, well-documented property of the process being modeled.

Relationship to the classical CME/PyFedWatch decomposition

The two methods are not unrelated — the joint bootstrap is best understood as a generalization, not a replacement of a different idea. The classical method (Section 1 below) is exactly the special case of solving the same underlying day-weighted system with only the two immediately adjacent contracts and one unknown step at a time, sequentially, propagating each solved boundary into the next. That local 2-equation-2-unknown solve is exact when a clean neighboring "no meeting" month is available (its own quoted price directly gives the required boundary condition, no inversion needed) — and this is in fact also true of our implementation's fallback path when only one meeting needs solving in isolation. The local method's fragility appears specifically when no such clean neighbor exists and it must invert a two-segment day-count identity, dividing by however many days happen to fall on one side of the meeting within that single month — a division that becomes numerically unstable whenever a meeting falls very close to a month boundary (see the worked example above; we measured amplification factors of 6-15x on real 2026 contract data for Fed, ECB, and BoE meetings falling within a week of month-end). Solving jointly across the full curve replaces that single, possibly poorly-conditioned local equation with dozens of well-conditioned redundant ones, which is why the failure mode disappears.

Why we rejected a Nelson-Siegel-Svensson smoothing approach

Nelson-Siegel-Svensson models the instantaneous forward rate as a smooth, infinitely differentiable parametric function of maturity — the standard, well-justified approach for fitting a genuine term structure of yields across heterogeneous maturities, where the underlying object (market-clearing yields, reflecting duration and credit risk that vary continuously with maturity) really is smooth. This site uses exactly that model elsewhere, for actual government bond yield curves (see our Nelson-Siegel-Svensson page), where it is the right tool for the right object.

The object we are estimating here — a central bank's overnight policy rate path — is not smooth by construction: it is provably piecewise-constant, changing only at discrete, pre-scheduled (or occasionally emergency) meeting dates, and otherwise perfectly flat. Imposing a smooth functional form on a target that is known a priori to be a step function is a misspecified model, not a stylistic preference, and it has two concrete, undesirable consequences for this specific use case:

  1. Bias in timing attribution. A smooth fit necessarily spreads a real, discrete step across the neighboring region of the curve rather than concentrating it at the true jump date, because a smooth function has no mechanism for representing a genuine discontinuity — by definition, at the meeting date itself, the first derivative would need to be undefined (a delta-function-like spike) for the fit to be exact, and NSS's four-to-six-parameter functional form cannot represent that.
  2. Ill-posed "day-exact" probability extraction. Extracting a specific meeting's rate-change probability from a smooth curve requires deciding how to attribute a continuous slope to a discrete date — there is no principled, parameter-free way to do this that doesn't reintroduce some version of the very meeting-attribution problem the model was meant to solve, and any such attribution rule would itself need calibrating and justifying, adding complexity without a compensating gain in accuracy.

Our joint least-squares bootstrap was chosen specifically because it captures the genuine benefit that motivated the "use a smooth curve" instinct — using the whole curve's information simultaneously rather than two adjacent points — without discarding the one modeling assumption (piecewise-constant, meeting-date jumps) that is actually true of the target and that the entire probability extraction depends on.

Goodness-of-fit gate and no-invented-data policy

After solving, we compute the root-mean-square residual per contract equation, \(\text{RMS} = \sqrt{\frac{1}{N}\sum_k (A\delta - b)_k^2}\), rather than a raw \(\ell_2\) norm, specifically so the same tolerance threshold is comparable regardless of how many contracts are available on a given day (a raw norm grows with \(\sqrt{N}\), which would otherwise make richer curves look spuriously worse-fitting than sparser ones). If the RMS residual exceeds a fixed tolerance, we withhold that bank's per-meeting probabilities entirely for that run rather than publish a poorly-supported decomposition — consistent with this site's broader no-invented-data policy of hiding uncertain output rather than fabricating a plausible-looking number. This is the same gate that already governs the Bank of Japan's quarterly bootstrap, generalized to the monthly banks.

Cross-validation against an independent instrument

ESTR and SONIA 1-month futures contracts — the calculation input for the ECB and BoE — report a settlement price but no trading volume on the free data feed we use, so their liquidity cannot be directly confirmed the way it can for Fed Funds futures. To address this without simply trusting an unverifiable instrument, we separately scrape the corresponding 3-month ESTR and SONIA futures strips, which do report genuine trading volume, and compare curve shapes: for each 3-month contract's window, we average the 1-month curve's implied rates falling inside that window and compare the result to the 3-month contract's own quoted rate for the same period. The two should track each other up to a roughly constant term/liquidity spread; a spread that varies unpredictably across windows, rather than sitting near a stable offset, indicates the 1-month curve's shape disagrees with a real, liquid reference. When that happens, we surface a data-quality caveat on the site instead of presenting the 1-month-derived probabilities without qualification.

Current scope and limitations

The joint bootstrap currently covers the Federal Reserve, European Central Bank, and Bank of England (monthly contracts) and the Bank of Japan (quarterly contracts, the original use case this technique was built for). The Reserve Bank of Australia is deliberately excluded: its probabilities are sourced from a separate, already-liquid ASX 30-day interbank cash-rate futures pipeline with its own dedicated single-step binary methodology (see our ASX vs CME comparison page), which does not share the underlying data-thinness problem this bootstrap was built to solve.

The sparsity prior is a genuine modeling assumption, not a free lunch: it can, in principle, under-attribute a real but small, genuinely gradual policy drift if the data is highly ambiguous about exactly which meeting it belongs to. In practice, the goodness-of-fit gate catches cases where this matters — a decomposition that fits poorly because the sparsity assumption is fighting real data gets withheld rather than forced through. As with the classical method, longer-horizon meetings (beyond roughly two to four meetings ahead) remain less reliable due to term premia and general market uncertainty, independent of which decomposition technique is used.

Two Core Methodologies

Central bank policy analyzed through two complementary lenses

Part A: Probability Forecasts

Question: What will central banks do next?

Method: Futures market analysis

Output: Probabilities for rate changes at each upcoming meeting

Example: "75% chance of a 25bp cut in March"

Sections: 1–3 below

Part B: Policy Stance Assessment

Question: Should rates be higher or lower?

Method: Economic models (Taylor Rule, Okun's Law)

Output: Dovish / Neutral / Hawkish classification

Example: "Rates 50bp above Taylor Rule → Hawkish stance"

Sections: 4–5 below

These methodologies complement each other. Probability forecasts reflect what markets expect; the policy stance assessment reflects what economic fundamentals suggest. Each central bank page presents both.

For Comparison: How the CME FedWatch Methodology Works

The industry-standard single-meeting technique our joint bootstrap (described above) builds on and generalizes

This section documents the classic, single-meeting CME FedWatch decomposition for reference and comparison. It is not the methodology currently used to calculate the probabilities shown on this site — see Our Methodology above for that.

The Core Concept

Interest rate futures aggregate the expectations of thousands of professional investors who commit real capital to positions on where rates are headed. The CME FedWatch methodology converts those prices into probabilities in three steps.

Step 1: Futures contracts reflect average rates. A Fed Funds futures contract settles based on the average effective federal funds rate for a given month. If the current rate is 5.00% and the June contract implies 4.75%, the market expects the average rate in June to be 4.75%.

Step 2: Account for meeting timing. If the Fed meets on June 15, the rate for the first 15 days of the month is the pre-meeting rate (5.00%). For the remaining 15 days, it is whatever the Fed decides. The futures price captures the weighted average of both periods.

Step 3: Solve for the implied post-meeting rate. Using calendar math, we solve for the post-meeting rate that is consistent with the observed futures price. If that rate is 4.875% — halfway between 5.00% and 4.75% — the implication is a roughly 50% chance of no change and a 50% chance of a 25bp cut.

Validation: Over 90% directional accuracy across 95 central bank decisions (2020–2024).

Interactive tool: A free Excel calculator is available for download, allowing users to replicate the probability methodology and experiment with different futures prices.

Dual methodology framework:

  1. Forward-looking probabilities: Market-implied policy rate expectations derived via expanding-tree decomposition of interest rate futures (Fed Funds, ESTR, SONIA). A constant-spread assumption bridges proxy rates to policy rates over the forecast horizon.
  2. Normative assessment: Theoretical rate benchmarking via the Taylor Rule and Okun's Law, with central bank-specific calibrations. Rate gap analysis classifies stance as dovish, neutral, or hawkish.

Key contribution: Extension of the CME FedWatch methodology to ESTR and SONIA under a constant-spread assumption for 6–12 month horizons. Out-of-sample performance: 96.3% directional accuracy, 4.1pp MAE, Brier score 0.041.

Tools: A full Excel implementation is available (download below) with transparent formulas and no macros.

Quick Navigation:

Adapting to the ECB, BoE, RBNZ, and Other Central Banks: The Spread Challenge

Why extending the methodology to non-Fed central banks requires modification

The Fundamental Difference

The CME methodology works cleanly for the Federal Reserve because Fed Funds futures directly track the Fed's policy rate. For most other central banks, no such direct link exists.

Central BankPolicy RateFutures ContractWhat Futures TrackThe Gap
Federal ReserveFed Funds RateFed Funds FuturesFed Funds RateNone (1:1 match)
European Central BankDeposit Facility Rate (DFR)ESTR FuturesESTR (market rate)~8–15bp below DFR
Bank of EnglandBank RateSONIA FuturesSONIA (market rate)~3–7bp below Bank Rate
Bank of JapanCall-Rate TargetTONA FuturesTONA (market rate)~2–3bp below target
Reserve Bank of New ZealandOfficial Cash Rate (OCR)Bank Bill FuturesBKBM (bank bill rate)~15–30bp below OCR
Swiss National BankSNB Policy RateSARON FuturesSARON (market rate)~5–10bp below policy rate

Why the Spread Exists

ESTR (Euro Short-Term Rate), SONIA (Sterling Overnight Index Average), and TONA (Tokyo Overnight Average) are based on actual overnight lending transactions. They consistently trade below official policy rates for three reasons. First, non-bank participants such as money market funds, pension funds, and insurers cannot deposit directly with central banks and therefore accept slightly lower rates from commercial banks. Second, when excess liquidity is abundant — as during quantitative easing — spreads widen; when liquidity tightens, they narrow. Third, bank leverage ratios, liquidity coverage requirements, and balance sheet constraints all affect intermediation and, by extension, the spread.

The Practical Solution

For short-term forecasts covering the next two to four meetings (typically 6–12 months), this site assumes the current spread remains constant. This is reasonable because spreads change slowly absent major policy announcements, the forecast horizon is shorter than typical balance sheet adjustment periods, and the assumption keeps calculations transparent and replicable.

How it works for the Bank of Japan: TONA futures settle against the TONA spot reference rate, not against the BoJ's call-rate target. The bootstrap therefore anchors on the current spot TONA and reads each quarterly contract's implied rate as a forward TONA. The difference forward TONA − spot TONA is the implied change in the reference rate, which serves as the proxy for the change in the call-rate target under the constant-spread assumption above — exactly the same bridge used for ESTR/DFR and SONIA/Bank Rate. The only structural difference is contract tenor: BoJ TONA futures are quarterly (3-month, IMM cycle), so the day-weighted joint solve recovers per-meeting steps from a quarterly strip rather than a monthly one (see the joint bootstrap section).

Important caveat: If the ECB, BoE, or BoJ announces a significant change in balance sheet policy — such as accelerated quantitative tightening — the spread assumption may require adjustment.

Why It Matters

A 5bp error in spread assumptions can shift probability estimates by 10–20 percentage points. Accurate spread calibration is critical.

Spread Dynamics and Market Structure

Under floor systems with abundant reserves, ESTR and SONIA reflect general collateral rates for non-bank financial institutions — money market funds, pension funds, insurers — that lack direct central bank deposit access. Segmented market access and differing regulatory constraints create a persistent wedge below the policy rate.

Primary spread determinants:

  1. Excess liquidity: Higher reserves widen spreads as more participants seek yield below the policy rate.
  2. Bank leverage ratios: Binding constraints at quarter-ends produce temporary spread spikes.
  3. LCR requirements: Liquidity coverage rules affect banks' willingness to intermediate.
  4. QE/QT flows: Balance sheet expansion or contraction directly alters reserve levels.
  5. Regulatory reporting dates: Window-dressing effects create predictable spread volatility.

Constant-Spread Assumption: Justification and Limitations

For forecast horizons of 6–12 months with no announced regime shifts, this site uses the current observed spread. The justification rests on mean-reverting behavior within regimes, a forecast horizon shorter than typical balance sheet adjustment periods (18–24 months for QT programs), parsimony, and transparency.

Implementation: (1) Observe the current spread \(s_t = DFR_t - ESTR_t\). (2) Adjust futures-implied rates by \(s_t\). (3) Apply the standard expanding-tree methodology to adjusted rates. (4) Normalize probabilities.

When the Assumption Breaks

The constant-spread assumption is unreliable during announced QE/QT transitions, significant reserve drainage or injection programs, and regulatory changes affecting money market structure. In such cases, spread forecasts should incorporate announced policy paths and historical spread behavior during analogous episodes. Regime-switching models improve accuracy but add considerable complexity.

Historical Spread Behavior

ECB DFR-ESTR spread:

  • 2019–2020 (pre-pandemic): 8–10bp
  • 2020–2022 (PEPP period): 12–15bp
  • 2023–2024 (QT initiation): 8–10bp

BoE Bank Rate-SONIA spread:

  • 2019–2020: 5–7bp
  • 2020–2022 (expanded balance sheet): 8–10bp
  • 2023–2024 (APF reduction): 5–6bp

Theoretical Rates Calculation

What interest rates "should" be, given economic fundamentals

Why Calculate Theoretical Rates?

Market probabilities show what traders expect central banks to do. Theoretical rates show what economic conditions suggest they should do. The gap between the two is informative.

The most widely used model is the Taylor Rule, which calculates a recommended interest rate based on two inputs: how far inflation is from the central bank's target (usually 2%), and how far the economy is from full capacity — a concept economists call the "output gap."

The Taylor Rule (Simplified)

Theoretical Rate = Neutral Rate + 1.5 × (Inflation − Target) + 0.5 × Output Gap

Example:

  • Neutral rate: 2.5%
  • Current inflation: 3.5% (target: 2%)
  • Output gap: +1% (economy running above potential)

Taylor Rule rate = 2.5 + 1.5 × (3.5 − 2) + 0.5 × 1 = 5.25%

If the actual policy rate is 4.75%, it sits 50bp below where the Taylor Rule says it should be — a modestly accommodative stance.

The Output Gap: Okun's Law

The output gap measures whether the economy is running above or below its potential. One standard method for estimating it is Okun's Law, which links unemployment to economic output. When unemployment falls below its natural rate, the economy is likely running hot (positive output gap). When unemployment exceeds the natural rate, there is slack (negative output gap).

Central Bank-Specific Models

Each central bank has distinct characteristics, and the models are calibrated accordingly:

  • Federal Reserve: Standard Taylor Rule with Okun's Law. See Fed models page.
  • European Central Bank: Modified Taylor Rule accounting for eurozone heterogeneity. See ECB models page.
  • Bank of England: Adapted for UK-specific inflation dynamics. See BoE models page.

Full technical details are on the respective model pages.

Taylor Rule Framework

The generalized Taylor Rule specification:

$$i_t = r^* + \pi_t + \alpha(\pi_t - \pi^*) + \beta \cdot y_t$$

Where:

  • \(i_t\) = recommended policy rate
  • \(r^*\) = neutral real rate (r-star)
  • \(\pi_t\) = current inflation
  • \(\pi^*\) = inflation target
  • \(y_t\) = output gap
  • \(\alpha, \beta\) = policy response coefficients (canonical values: 1.5, 0.5)

Output Gap Estimation

Three methods are employed:

  1. Okun's Law: \(y_t = -\gamma (u_t - u^*)\) where \(\gamma \approx 2\)
  2. HP Filter: Trend-cycle decomposition of real GDP
  3. Production Function: Structural estimation based on capital, labor, and TFP

Central Bank-Specific Implementations

Detailed specifications are on each central bank's model page:

  • Fed: Balanced-approach rule, inertial Taylor Rule variants
  • ECB: Cross-country aggregation, HICP versus core inflation specifications
  • BoE: CPI-targeting adjustments, Brexit-era modifications

Individual model pages document estimation methodology, parameter calibration, and backtesting results.

Rate Gap Analysis & Policy Stance Assessment

Comparing actual rates to theoretical rates

The Rate Gap

Each central bank page includes a chart of the historical rate gap — the difference between the actual policy rate and the Taylor Rule's recommended rate.

Rate Gap = Actual Rate − Theoretical Rate

Interpretation:

  • Positive gap (e.g. +50bp): Actual rate above the Taylor Rule → Hawkish (restrictive policy)
  • Near zero (±25bp): Actual rate close to the Taylor Rule → Neutral
  • Negative gap (e.g. −50bp): Actual rate below the Taylor Rule → Dovish (accommodative policy)

Worked Example

Current rate: 4.375%

June futures price: 95.6738 (implies a rate of 4.3262%)

Fed meeting: June 18 (day 18 of 30)

Calculation: Before the meeting (days 1–17), the rate is 4.375%. After the meeting (days 18–30), it is unknown. Working backward from the futures price yields a post-meeting rate of 4.262%.

Result: The implied change is −11.3bp, which falls between 0 and −25bp. This translates to a 54.8% probability of no change and a 45.2% probability of a 25bp cut.

For meetings further out, the model uses an "expanding tree." Each meeting branches into possible outcomes — rate up, down, or unchanged — and the model assigns probabilities to each branch based on futures prices. Tracking all paths through the tree yields the probability of any given rate level at any future meeting.

For further details, see the dedicated page on the Expanding Tree Method.

Mathematical Framework

Let \(F_m\) be the futures rate for month \(m\), \(R_{pre}\) the rate before the meeting, \(R_{post}\) the rate after, \(d_{pre}\) days before the meeting, and \(d_{post}\) days after:

$$F_m = \frac{d_{pre} \cdot R_{pre} + d_{post} \cdot R_{post}}{d_{total}}$$

Solving for \(R_{post}\):

$$R_{post} = \frac{d_{total} \cdot F_m - d_{pre} \cdot R_{pre}}{d_{post}}$$

The implied rate change \(\Delta R = R_{post} - R_{pre}\) is mapped to probabilities via linear interpolation between adjacent 25bp outcomes. If \(\Delta R\) falls between outcomes \(O_i\) and \(O_{i+1}\):

$$P(O_i) = 1 - \frac{\Delta R - O_i}{O_{i+1} - O_i}, \quad P(O_{i+1}) = \frac{\Delta R - O_i}{O_{i+1} - O_i}$$

Multi-Meeting Extension

The expanding tree extends single-meeting extraction recursively. Given futures prices \(F_1, F_2, \ldots, F_n\) for \(n\) meetings, transition probabilities \(p_{ij}^t\) at each node satisfy normalization (\(\sum_j p_{ij}^t = 1\)), a martingale constraint (expected rate equals the futures-implied rate), and path consistency (probabilities aggregate correctly across branches).

Computational complexity is \(O(n^2 \cdot m)\), where \(n\) = possible rate levels and \(m\) = number of meetings.

Limitations

The constant-increment assumption breaks down in crisis periods. Risk premia embedded in futures can bias probability estimates. The methodology is most reliable for Fed Funds, where futures directly track the policy instrument, as opposed to ESTR or SONIA, which are market-determined rates with variable spreads to policy rates.

Mathematical Framework

Let \(P_t(r_i)\) be the probability of rate \(r_i\) at meeting \(t\). Transition probabilities \(p_{ij}^t\) from \(r_i\) to \(r_j\) satisfy:

$$P_{t+1}(r_j) = \sum_i P_t(r_i) \cdot p_{ij}^t$$ $$\sum_j p_{ij}^t = 1 \text{ (normalization)}$$ $$\mathbb{E}_t[r_{t+1}] = \text{futures-implied rate}$$

The system is solved recursively, extracting \(p_{ij}^t\) from futures prices and prior probabilities. Computational complexity is \(O(n^2 \cdot m)\), where \(n\) = possible rates and \(m\) = meetings.

Note About CME Data

CME FedWatch Tool and data are proprietary to CME Group. Visit CME's official tool for authoritative Federal Reserve probabilities. This work focuses on extending the methodology to other central banks.

Future Directions

Planned expansions and methodology enhancements

Planned Expansions

  • Bank of Canada: Under consideration, pending CORRA futures data availability.
  • Bank of Japan: Under consideration, pending TONA futures data availability.
  • Swiss National Bank: Under consideration, pending SARON futures data availability.

Methodology Enhancements Under Consideration

Several enhancements are in the research phase:

  • Adaptive spread forecasting: Dynamic regime-switching models for ESTR/SONIA spreads, calibrated to reserve levels and QE/QT paths. Preliminary backtests suggest a 3–5pp accuracy improvement during balance sheet transitions, though implementation complexity is significant.
  • Time-varying volatility: Scaling probability distributions by meeting proximity and market uncertainty measures such as the VIX and policy uncertainty indices.
  • Machine learning enhancements: Neural networks for spread regime prediction and improved output gap estimation.

The current methodology prioritizes simplicity and transparency over marginal accuracy gains from more complex models.

Feedback

This is an evolving project. Questions, corrections, and methodological suggestions are welcome — please get in touch.

Interactive Excel Calculator

An Excel tool for exploring the expanding-tree methodology

This Excel workbook implements the probability calculation methodology described above. Users can modify futures price inputs and observe how rate probabilities evolve across multiple policy meetings.

ECB Rate Probability Calculator

Excel workbook with binary tree calculations, visual probability tree, and automatic updates. No macros — pure formula-based calculations.

  • Matches Python implementation exactly
  • Distinguishes meeting vs. non-meeting months
  • Complete documentation included

Quick Start Guide

Getting Started in 3 Steps
  1. Download and open the Excel file.
  2. Go to the InputData sheet and update futures prices for all 8 months (including non-meeting months).
  3. View results in the Summary sheet — all calculations update automatically.

Workbook Structure

  • Config: Set the current ECB deposit rate and ESTR level.
  • InputData: Enter monthly ESTR futures prices (8 months).
  • Calculations: Price propagation with meeting/non-meeting distinction.
  • BinaryTree: Visual probability tree showing all paths.
  • Summary: Final probability distribution and bar chart.

Key feature: The calculator distinguishes between meeting months (when rates can change) and non-meeting months (when rates remain constant). This distinction is critical for accurate probability calculation.

Reading the Numbers: What Each Probability Actually Measures

Why a meeting's probability is a statement about a rate level, not about a decision

The trap this page exists to avoid

Imagine a central bank with eight meetings scheduled over the next year, and suppose our table showed roughly a 65% chance of a hike at every single one of them. The natural reading is that the market expects this bank to raise rates at nearly every meeting — five or six hikes in a year.

That reading would be wrong, and it is the single easiest mistake to make with this kind of data. The real message in those numbers can be that the market expects one hike, and is about 65% confident it will happen.

The reason is that each meeting's probability answers a question about a rate level on a date, not about a decision at a meeting. When we say "65% higher" next to a meeting fourteen months away, that means: there is a 65% chance the policy rate is above today's level by that date. If the market prices one hike for the meeting six months from now, then every meeting after it inherits that same 65% — not because a fresh hike is expected each time, but because the hike that already happened is still in force. The number repeats because the rate stays where it was put.

Adding these figures across meetings therefore counts the same rate change over and over. Eight meetings at 65% is not "5.2 hikes". It can be one hike, seen eight times.

What we show instead

Three things, in the order a reader needs them.

First, a single total. At the top of each bank page we state how much movement the whole futures curve prices in across all the meetings we cover, expressed both in basis points and as a number of standard-size rate moves — for example "markets price 21bp of tightening in total, about 0.9 hikes, across the next 8 meetings". This is the one figure that can be quoted on its own without any risk of double-counting, because it is a property of the entire path rather than of any single date. If you read nothing else on the page, read this.

Second, the move priced at each individual meeting. This is the number most people believe they are already looking at: the fresh change priced for that date alone, over and above whatever was already expected before it. In the example above, this column would show something like 48% for the nearest meeting, 34% for one about five months out, and 1–3% for every other meeting on the list. The story becomes legible immediately: two live meetings, and six that markets expect to pass without action.

Third, the cumulative picture — relabelled honestly. The higher/same/lower figures are still shown, because they answer a genuinely useful question, but they are now labelled as what they are: the rate level by this date, cumulative, already including every move priced for earlier meetings. We deliberately show them side by side with the per-meeting figure rather than hiding one behind a tab, because the whole failure mode is a reader not knowing that a second, different number exists.

Why the columns no longer say "Hike"

A column headed "Hike" invites you to read the number underneath as an action. We now label by rate level instead — the same choice the CME's own FedWatch tool makes, where the columns are rate bands like "3.50–3.75%" rather than directions. A label describing a level cannot be misread as a decision.

The heatmap

Below the meeting list, each bank page carries a grid: one column per meeting, one row per policy rate level, shaded by how much probability the market places on that level being in force after that meeting. The current rate is marked.

This chart exists because it is structurally incapable of the misreading described above. There is no "hike" label on it to double-count. Reading down any column gives one meeting's complete distribution, and those add to 100%. Reading across a row shows how the market's conviction about a particular rate level builds or fades over time. A single hike gradually being priced in looks like what it is: probability draining out of one row and pooling into the one above it.

On colour

These charts no longer use red for hikes and green for cuts. Red and green are the hardest pair to distinguish for the most common forms of colour blindness, they collapse into the same grey in print, and the pairing quietly implies that a rate cut is good news and a hike is bad — a judgement this site has no business making. Direction is now carried by a blue/orange pair chosen to stay distinguishable under every common colour vision deficiency, and the heatmap uses a single light-to-dark ramp, which survives being printed in black and white.

Cumulative and marginal distributions

The expanding-tree construction described earlier in this page produces, for each meeting \(k\), a distribution over the cumulative rate change from today. Writing \(R_0\) for the current policy rate and \(\delta_j\) for the step at meeting \(j\), the tree's node at meeting \(k\) carries the law of

$$ R_k \;=\; R_0 + \sum_{j \le k} \delta_j . $$

Bucketing that distribution by sign gives the familiar three figures, but their meaning is unambiguous and worth stating precisely:

$$ P^{\text{higher}}_k = \Pr\!\left(R_k > R_0\right), \qquad P^{\text{same}}_k = \Pr\!\left(R_k = R_0\right), \qquad P^{\text{lower}}_k = \Pr\!\left(R_k < R_0\right). $$

These are statements about the marginal law of the level \(R_k\), indexed by date. They are not the law of the increment \(\delta_k\), and they are not independent across \(k\): consecutive meetings share every earlier step, so the sequence \(\{P^{\text{higher}}_k\}\) is close to a non-decreasing function of \(k\) whenever the curve is monotone. Summing over \(k\) sums a single random variable's tail probability evaluated at successive dates, which has no interpretation as an expected number of moves.

Recovering the marginal

The quantity a per-meeting table is naturally read as showing is the law of \(\delta_k\) itself. Under the same binary-split convention the tree uses at each node — each meeting's step is allocated between the two nearest multiples of the standard increment \(h\) so that the weighted mean reproduces the implied step exactly — the probability of a move at meeting \(k\) is available in closed form from the expected-rate path:

$$ s_k \;=\; \mathbb{E}[R_k] - \mathbb{E}[R_{k-1}], \qquad \Pr(\delta_k \ne 0) \;=\; \min\!\left(1,\; \frac{|s_k|}{h}\right), \qquad \mathbb{E}[R_{-1}] \equiv R_0 . $$

This is not a new model. It is the same fractional weight the tree already computes when it splits each node, read back out of the published distributions rather than discarded. Both figures come from one curve and one calibration; there is no second methodology to reconcile.

Three properties of this estimator are worth flagging. The saturation at 1 is a genuine ceiling rather than an artefact: when \(|s_k| > h\), more than a full standard move is priced between consecutive meetings, so some move is certain and the interesting quantity is its size — which is why \(s_k\) is always published alongside the probability, in basis points. The expectation \(\mathbb{E}[R_k]\) is recovered from the published granular distribution, so it inherits the tree's top-9 truncation and renormalisation (the CME rule); in practice this leaves per-meeting sums at 99.9–100.1% and is immaterial at three-bucket resolution, though it is visible if the level grid is read to more precision than the shading conveys. Finally, where a feed supplies an implied rate per meeting directly — as the ASX interbank strip does for the RBA — that rate is used for \(\mathbb{E}[R_k]\) in preference to re-deriving it from the distribution.

The path summary

The headline scalar is the terminal displacement of the expected path over the published horizon,

$$ \Delta_{\text{total}} \;=\; \mathbb{E}[R_K] - R_0 \;=\; \sum_{k \le K} s_k , \qquad \text{moves} \;=\; \Delta_{\text{total}} / h , $$

reported in basis points and in units of the standard increment. It telescopes, so it is invariant to how the horizon is partitioned into meetings, and it is the only summary on the page that is safe to quote in isolation. Meetings already in the past are excluded before the sum is taken, so the figure always describes a forward window.

Why both are displayed rather than toggled

CME exposes conditional and cumulative views as separate selections. That is appropriate for an audience that knows both quantities exist. For a general readership the failure mode is precisely not knowing that a second number exists, so a toggle preserves the ambiguity for anyone who never finds it. Showing the marginal and the cumulative adjacently makes the relationship self-evident from the data — a meeting reading 1% fresh against 47% cumulative explains the distinction without a paragraph of methodology — and costs one column.

Presentational choices

  • Levels, not directions, as labels. Granular outcome bars are labelled by the absolute rate they represent, not by a basis-point delta from today. On a distant meeting, "+50bp" reads as a 50bp move at that meeting; "2.75%" cannot.
  • Palette. Direction uses an Okabe-Ito blue/vermillion pair, which remains separable under deuteranopia, protanopia and tritanopia and differs in lightness for greyscale reproduction. The heatmap uses a single monotone lightness ramp, so probability ordering survives any colour transformation. Red/green was retired for legibility, not aesthetics.
  • Heatmap construction. Meetings on the horizontal axis, the union of published rate levels on the vertical, cell shading proportional to probability mass, today's rate marked on its row. Cells below 0.5% are left blank rather than shaded to the floor. Each column is a complete conditional distribution summing to 100%.
  • Absence. Where a bank has no usable distribution, no headline, no marginal and no heatmap are rendered. Nothing is interpolated or carried forward from a previous run.

When One Contract Covers Two Meetings: The Bank of Japan and the RBNZ

Quarterly futures, overlapping meeting windows, and the assumptions this forces us to make

Why Japan and New Zealand are harder than the Fed

For the Federal Reserve, the ECB and the Bank of England, the arithmetic is comparatively clean: futures contracts settle monthly, and those banks meet roughly monthly, so each contract lines up with about one meeting. Ask the market what it thinks about March, and you get an answer that is mostly about the March meeting.

Japan and New Zealand do not offer that convenience. Both markets list only quarterly contracts — each one covering a three-month block — while the Bank of Japan holds roughly eight meetings a year and the Reserve Bank of New Zealand around seven. That means roughly two policy decisions fall inside the window of a single contract.

So one price has to speak for two meetings, and a price is a single number. If a contract implies that rates will average 25bp higher over its three months, that is consistent with a hike at the first meeting in the window, a hike at the second, or something in between. The price alone cannot tell them apart. In the language of the problem: one equation, two unknowns.

How we separate them

Two pieces of information let us make the split.

Timing within the window. A rate change early in a three-month block affects almost the whole block's average; the same change on the last day of the block barely moves that average at all, but shows up in full in the next contract. So the difference between consecutive quarterly contracts carries real information about when inside the window the market expects the move. We weight each meeting by the number of days of the contract window that fall after it, which is what turns a strip of quarterly prices into a statement about individual meeting dates.

These banks move rarely. Neither the BoJ nor the RBNZ changes policy at two consecutive meetings three months apart as a matter of routine. So where the data genuinely cannot distinguish between two allocations, we prefer the explanation involving the fewest separate rate changes. Without this preference, a plain best-fit calculation would smear a quarter's expected change evenly across both of its meetings and invent a phantom "half-move" at each — two meetings that each look somewhat live, when the truth is one meeting that is very live and one that is not.

The extra complication for New Zealand

The RBNZ carries a second assumption on top of the first, and it is the more consequential of the two.

The New Zealand contracts settle against BKBM, the 90-day bank bill rate — not against the Official Cash Rate. A bank bill is a loan to a commercial bank, so its rate includes compensation for bank credit risk, and it sits above the OCR by a margin that moves around. To get from one to the other we measure the current gap and carry it forward unchanged across the whole forecast.

That gap is not stable. It typically runs 15–30bp in calm conditions, widens to 40–80bp when markets start pricing a tightening cycle, compresses toward zero when cuts are expected, and can exceed 100bp in banking stress. Crucially, it widens precisely when the market is pricing hikes — which means holding it constant pushes the implied path above the true expected OCR path exactly when it matters most. RBNZ probabilities therefore overstate the odds of hikes during a tightening cycle and understate cuts during an easing one. They should be read as directional rather than precise, and the RBNZ page shows the current spread being applied so the assumption is visible rather than buried.

Japan does not have this problem to the same degree: TONA sits within a few basis points of the BoJ's target, so the bridge from one to the other is short. New Zealand's is not.

When we show nothing

If the futures strip is stale, if there are fewer contracts than meetings we would need to cover, or if the split between two meetings simply cannot be resolved from the available prices, we publish no probability for those meetings rather than a forced number. The same applies if the anchor rate cannot be sourced. A visible gap is more honest than a confident figure resting on nothing, and it is the standing rule across this site.

The identification problem

The monthly CME-style decomposition assigns one meeting per contract window. For the BoJ (JPX 3-month TONA futures, IMM cycle) and the RBNZ (ASX 90-Day New Zealand Bank Bill futures, IMM cycle), roughly two policy dates fall inside each quarterly reference window, so the per-meeting decomposition is under-determined by approximately a factor of two: each contract supplies one linear equation in two unknown meeting steps.

Model the overnight path as piecewise-constant, changing only on decision dates, so that the level after meeting \(k\) is \(R_k = R_0 + \sum_{j \le k}\delta_j\). Each contract \(q\) then contributes

$$ A\,\delta = b, \qquad b_q = \text{impliedRate}_q - R_0, \qquad A_{q,j} = \frac{\text{days of window } q \text{ after meeting } j}{\text{length of window } q}. $$

The day-weight \(A_{q,j}\) carries the identifying information. A step early in window \(q\) loads that window's average nearly in full; the same step near the window's close barely perturbs it but appears at full weight in window \(q+1\). Cross-quarter differences therefore locate the move in time even though no single contract can.

Identification via sparsity

\(A\) is short and wide, so the system is resolved with a sparsity prior — iteratively reweighted least squares approximating

$$ \min_{\delta}\; \lVert A\delta - b \rVert_2^2 \;+\; \lambda \lVert \delta \rVert_1 . $$

The \(\ell_1\) penalty is justified by the empirical behaviour of both banks: policy is adjusted at a small minority of meetings, so the prior encodes a genuine structural feature rather than a convenience. Plain least squares on an under-determined \(A\) distributes a quarter's implied change across both of its meetings, producing a phantom half-move at each; the \(\ell_1\) solution localises the change to a single meeting, and the cross-quarter day-weights determine which one. Recovered steps \(\hat\delta\) are quantised onto a configurable increment grid (25bp at present for both banks) and passed into the same expanding-tree construction used for the ECB, so everything downstream — granular outcomes, cumulative buckets, marginal move probabilities, the heatmap — is produced by identical code once the per-meeting steps are known.

Anchoring, and the RBNZ spread assumption

The two banks differ in the quality of the bridge from the traded reference rate to the policy rate.

BoJ. TONA futures settle against compounded average TONA over the reference window. TONA sits within a few basis points of the BoJ's call-rate target, so \(R_0\) is anchored on the policy rate and forward TONA less spot TONA serves as the implied change in the target under a constant-spread assumption — structurally identical to the €STR/DFR and SONIA/Bank Rate bridges. At current rate levels the divergence between the compounded and day-weighted arithmetic average of the window is well under a basis point, so the implied rate is treated as arithmetic; this approximation is flagged for revision if the policy rate rises materially.

RBNZ. BKBM is a genuine bank credit rate rather than a near-riskless overnight benchmark, and the constant-spread assumption is correspondingly weaker. \(R_0\) is anchored on the latest observed 90-day BKBM and the current BKBM − OCR spread is carried forward unchanged; the spread is persisted as an explicit, auditable value on every run and surfaced on the RBNZ page. Its failure mode is directional and known: the spread co-moves with the tightening cycle and with credit stress, widening exactly when hike probabilities are large, so a constant spread biases the implied path upward in tightening episodes and downward in easing ones. The RBNZ's own research identifies bank bill futures as a noisier proxy for OCR expectations than OIS pricing, which this site does not currently license. These probabilities are published as directional and should not be read to the precision the arithmetic superficially permits.

Honesty guards

  • Degenerate fit. A large residual \(\lVert A\hat\delta - b\rVert\) yields no per-meeting probabilities rather than a forced decomposition.
  • Insufficient coverage. Meetings beyond the horizon spanned by the available contracts receive no figure; a strip with fewer contracts than the meeting horizon requires is rejected outright.
  • Staleness. A strip that has not updated within tolerance is treated as absent, not as current.
  • Missing anchor. If the anchor rate — the BoJ policy rate, or the BKBM and OCR pair — cannot be sourced live, nothing is published for that bank.
  • No carry-forward. Under every one of these conditions the display is empty. Values are never interpolated, extrapolated, or reused from a previous run.

Contrast with the ECB. The €STR calculation reads one meeting per monthly contract directly. The BoJ calculation adds one stage in front — the quarterly-strip bootstrap that recovers each meeting's step. The RBNZ calculation adds two — that same bootstrap, plus the BKBM→OCR spread adjustment. Everything after those stages is shared.

References and Further Reading

Academic sources and data sources

Core Methodology Papers

  1. CME Group. (2023). Understanding the CME FedWatch Tool Methodology. Chicago Mercantile Exchange. Link
  2. Piazzesi, M., & Swanson, E. T. (2008). Futures prices as risk-adjusted forecasts of monetary policy. JFnal of Monetary Economics, 55(4), 677-691.
  3. Link
  4. Gürkaynak, R. S., Sack, B., & Swanson, E. (2005). The sensitivity of long-term interest rates to economic news: Evidence and implications for macroeconomic models. American Economic Review, 95(1), 425-436.
  5. Link
  6. Krueger, J. T., & Kuttner, K. N. (1996). The fed funds futures rate as a predictor of Federal Reserve policy. The Journal of Futures Markets, 16(8), 865-879.
  7. Link

Taylor Rule and Policy Assessment

  1. Taylor, J. B. (1993). Discretion versus policy rules in practice. Carnegie-Rochester Conference Series on Public Policy, 39, 195-214.
  2. Link
  3. Orphanides, A. (2003). Historical monetary policy analysis and the Taylor rule. Journal of Monetary Economics, 50(5), 983-1022.
  4. Link
  5. Bernanke, B. S. (2010). Monetary policy and the housing bubble. Speech at the Annual Meeting of the American Economic Association.
  6. Link

Central Bank Behavior and Forward Guidance

  1. Rudebusch, G. D. (2002). Term structure evidence on interest rate smoothing and monetary policy inertia. Journal of Monetary Economics, 49(6), 1161-1187.
  2. Link
  3. Coibion, O., & Gorodnichenko, Y. (2012). Why are target interest rate changes so persistent? American Economic Journal: Macroeconomics, 4(4), 126-162.
  4. Link

European Central Bank and ESTR

  1. Linzert, T., & Schmidt, S. (2008). What explains the spread between the Euro overnight rate and the ECB's policy rate? ECB Working Paper No. 983.
  2. Link
  3. Pérez-Quirós, G., & Rodríguez-Mendizábal, H. (2006). The daily market for funds in Europe: What has changed with the EMU? Journal of Money, Credit and Banking, 38(1), 91-118.
  4. Link

Output Gap and Okun's Law

  1. Okun, A. M. (1962). Potential GNP: Its measurement and significance. Proceedings of the Business and Economics Statistics Section, American Statistical Association, 98-104.
  2. Ball, L., Leigh, D., & Loungani, P. (2017). Okun's Law: Fit at 50? Journal of Money, Credit and Banking, 49(7), 1413-1441.
  3. Link
Note About CME Data

CME FedWatch Tool and data are proprietary to CME Group. Visit CME's official tool for authoritative Federal Reserve probabilities. My work focuses on extending their methodology to other central banks.