How it works
RateOdds turns end-of-day interest-rate futures prices into the odds of each possible central-bank decision.
The idea
Some futures settle on the average overnight rate over a future month or quarter. Their price therefore tells you what rate the market expects for that period: a settlement price of 96.125 implies an average rate of 100 − 96.125 = 3.875%.
The Fed’s odds use CME 30-Day Fed Funds futures (ZQ). The Bank of Canada’s odds use Montréal Exchange one-month (COA) and three-month (CRA) CORRA futures.
1. An expected rate for each meeting
Each contract’s period is split into the days before and after a meeting takes effect. Days already observed use published rates, and the remaining days are solved for the rate the market expects after the meeting. Overnight rates sit a little away from the policy rate, so a recent median of that gap is removed first.
Fed: when a meeting falls late in the month, only a few days of that contract come after it, so tiny price differences would swing the answer. If the next month has no meeting, its contract gives the rate after the meeting directly, and that is used instead. A meeting is left unpriced when its futures trade too thinly.
Bank of Canada: one-month CORRA futures trade thinly, while the three-month contracts are liquid but each spans two or three meetings. So instead of solving one meeting at a time, the rate after every meeting is fitted to all the contracts at once. Thinly traded contracts count for less, and where the futures can’t separate two meetings, each move is nudged toward no change. A meeting is left unpriced when the futures pin its expected rate only to within more than half a 25 bp step.
Once a meeting is unpriced, later meetings are left unpriced too, because their odds build on it.
2. From an expected rate to odds
Central banks move in 25 bp steps. If the market expects a 10 bp cut at a meeting, that is read as a 40% chance of a 25 bp cut and a 60% chance of no change, the only mix of the two nearest steps that averages to −10 bp:
P(larger move) = (expected move − smaller step) / 25 bp
P(smaller move) = 1 − P(larger move)Meetings are combined in order, so odds for a later meeting describe the total change from today’s rate. If the next meeting is 40% cut / 60% hold and the one after expects another 20 bp cut (80% / 20%), the second meeting shows 32% for −50 bp, 56% for −25 bp and 12% for no change. This follows the approach popularised by CME FedWatch.
Limitations
- Odds are market-implied estimates, not forecasts or advice, and they change every day.
- Each meeting is limited to the two nearest 25 bp moves, so out-of-cycle or larger moves are not captured.
- Futures prices also carry risk premia, so they are not pure expectations.
- Data is end-of-day and may be delayed. Missing data is shown as missing, never as zero.
Data sources
- Paired FRED target-range limits used to derive the Fed target midpoint.Source for fred-target-range
- New York Fed effective federal funds rate benchmark.Source for nyfed-effr
- Bank of Canada CORRA benchmark through Valet.Source for boc-corra
- Bank of Canada target for the overnight rate through Valet.Source for boc-target
- Bank of Canada compounded CORRA index; stored as a positive index value.Source for boc-corra-index
- Federal Reserve official FOMC meeting calendar.Source for fomc-calendar
Model versions
fed-policy-v5 and boc-policy-v5 show every meeting’s odds as the total change from today’s rate. Each page lists the model version that produced its numbers.