Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

How Markets Price Fed Rate Odds

Fed rate odds come from futures that settle on a month's average rate. See the day count arithmetic and a full worked example from a 2025 Fed meeting.

Fed rate odds are read out of prices, not out of surveys. The instrument that carries them is the 30-day fed funds futures contract, which settles at 100 minus the average effective federal funds rate over a calendar month. One price implies one average for the whole month, so pulling out the odds on a single meeting means splitting that month into the days before a new rate takes effect and the days after, then solving for the piece you do not know. This page walks the arithmetic on a fixed historical meeting, September 2025, and writes down every assumption, so any number in it can be re-derived by hand years from now.

What a fed funds futures contract settles on

A fed funds future covers one calendar month. Final settlement is 100 minus the arithmetic average of the daily effective federal funds rate, the rate at which banks actually lend reserves to one another overnight, taken across every calendar day in the month. Weekends and holidays carry the prior business day's rate. A price of 95.74 corresponds to an average of 4.26%.

Four features of that convention do the work in everything below.

  • It prices an average over a month, never a level on a date. A decision on the 17th touches only part of the contract.
  • It prices the effective rate, which prints inside the policy target range rather than at its midpoint. A tracker anchored on the midpoint starts from a different number than one anchored on the effective rate.
  • It prices one expected value across every outcome at once. A probability is something you extract under an assumption, never something the contract quotes.
  • It averages calendar days, not trading days, so the day split below counts weekends.

How to turn one futures price into Fed rate odds

Take the September 2025 meeting. The decision was announced on Wednesday, September 17, and a new target takes effect the following day. September has 30 days: the 1st through the 17th settle at the old rate, and the 18th through the 30th settle at whatever the new one is. That 17 and 13 day split is what the whole derivation rests on.

Four assumptions, all illustrative, all written down so you can change them:

  • the effective rate running into the meeting is 4.33%
  • the September contract trades at 95.74
  • the market weighs two outcomes, no change or one cut of 25 basis points
  • no unscheduled move happens inside the month

The arithmetic then runs in four steps.

  1. The price implies the month's average: 100 minus 95.74 is 4.26%.
  2. The first 17 days are already known: 17/30 of 4.33% is 2.4537.
  3. The last 13 days supply the rest: 4.26 minus 2.4537 is 1.8063, and 1.8063 multiplied by 30/13 is 4.17%. That is the expected effective rate for the back of the month.
  4. Convert distance into odds: under the two outcomes the back of the month is a blend of 4.33% and 4.08%. The 4.17% sits 0.16 below the top of that blend, and 0.16 divided by the 0.25 gap is 0.64. Call it a 64% chance.

Change the price and the answer moves. Change the assumed step size and it moves more. Nothing in that chain is proprietary, and none of it needs a vendor's probability widget.

The rest of the front end was quoting the same expectation in different units. Here are the three shortest Treasury benchmarks across the two months around that meeting.

QueryThe short end of the Treasury curve around the September 2025 FOMC meeting
The exact SQL behind every number
SELECT date,
       round(toFloat64(yield_3_month), 2) AS yield_3m_pct,
       round(toFloat64(yield_1_year), 2) AS yield_1y_pct,
       round(toFloat64(yield_2_year), 2) AS yield_2y_pct
FROM global_markets.treasury_yields
WHERE date >= toDate('2025-08-15')
  AND date <= toDate('2025-10-15')
  AND yield_3_month IS NOT NULL
  AND yield_1_year IS NOT NULL
  AND yield_2_year IS NOT NULL
ORDER BY date
Run this yourself

The 3-month bill yielded 4.3% at the start of the window in mid-August 2025 and 4.03% at the end in mid-October, over 42 sessions. The 1-year note, which averages several meetings rather than one, read 3.93% and 3.61% at those same two ends, below the bill at both. A 1-year yield under a 3-month yield is arithmetic rather than opinion: the longer instrument averages in months the market expects to price lower.

Why two venues quote different Fed rate odds

An event contract states the probability outright. A market on whether the target range is lower after a given meeting trades between 0 and 100, and its price is the odds, before costs. Event contract prices as probabilities covers that translation. Options carry the same content in a third wrapper. A call's delta approximates the risk-neutral probability that the underlying finishes above the strike, so one chain quotes a whole distribution instead of a single number. Below is a chain on TLT, the long-dated Treasury ETF, observed on Monday, September 15, 2025 and expiring that Friday, September 19, straddling the decision.

QueryTLT call deltas read as implied probabilities: chain of Sep 15, 2025, expiring Sep 19
The exact SQL behind every number
SELECT round(toFloat64(strike_price), 0) AS strike,
       round(avg(delta) * 100, 1) AS implied_prob_above_pct,
       round(avg(implied_volatility) * 100, 1) AS implied_vol_pct,
       sum(volume) AS contract_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'TLT'
  AND date = toDate('2025-09-15')
  AND expiration_date = toDate('2025-09-19')
  AND delta > 0
  AND iv_converged = 1
  AND volume > 0
  AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.06
GROUP BY strike
ORDER BY strike
Run this yourself

Read it left to right. At the $85 strike the average delta was 97.8%, the market's approximate odds of finishing above that price four days later. At $95 the same measure read 1.4%. The curve between them, across 9 strikes, is the distribution, and average implied volatility on the chain ran 28.7% at the low strike.

Four things keep numbers from different venues out of alignment.

  • Settlement. The futures contract settles on a month of effective rates. An event contract settles on the target range announced on one date. An option settles on a price. Different questions admit different answers.
  • The spread. A binary quoted 62 bid and 66 ask brackets two probabilities. The 64% midpoint is a convention, and the entire four-point band sits inside the cost of trading it.
  • Expected value is not a probability. A 90% chance of one 25 basis point cut, and a 70% chance of 25 sitting alongside a 10% chance of 50, both average 22.5 basis points of easing. One futures price covers two very different worlds.
  • Fees and margin. The same view expressed on a futures exchange and on an event venue carries different costs, and quotes sit apart by roughly that much.

Chaining meetings into a rate path

One contract gives one month's average. Stack them and a path appears: the October contract's implied average, minus the portion fixed by whatever September settled at, gives the expected rate after the October meeting, and the step repeats down the strip. Each rung inherits the assumption made on the rung below it, and small errors compound as you walk out.

The Treasury curve encodes that path in its own unit. A 1-year yield is approximately the average overnight rate expected over the next year, plus a premium for holding duration. The gap between the 1-year and the 3-month is the chained path compressed into a single number.

QueryFront-end Treasury yields by month, January 2024 to June 2026
The exact SQL behind every number
SELECT toStartOfMonth(date) AS month,
       round(avg(toFloat64(yield_3_month)), 2) AS yield_3m_pct,
       round(avg(toFloat64(yield_1_year)), 2) AS yield_1y_pct,
       round(avg(toFloat64(yield_2_year)), 2) AS yield_2y_pct,
       round((avg(toFloat64(yield_1_year)) - avg(toFloat64(yield_3_month))) * 100, 0) AS path_spread_bps
FROM global_markets.treasury_yields
WHERE date >= toDate('2024-01-01')
  AND date <= toDate('2026-06-30')
  AND yield_3_month IS NOT NULL
  AND yield_1_year IS NOT NULL
  AND yield_2_year IS NOT NULL
GROUP BY month
ORDER BY month
Run this yourself

Averaged by month over the 30 months from January 2024 to June 2026, the 3-month bill ran 5.45% in the first month of the panel and 3.81% in the last. The 1-year minus 3-month spread printed -66 basis points at the start and 10 at the end. A negative reading there is a market pricing an average overnight rate below today's over the coming year. The 2-year column carries the same expectation over a longer horizon. The 2s10s spread reads the curve at that end, and the 2026 Treasury curve walks the whole series through the first half of this year.

Is a Fed decision already priced in?

That question has a measurable answer. Below is the move in the two shortest benchmarks over the five sessions ending on each 2025 decision day.

QueryFive-session move in short Treasury yields into each 2025 FOMC decision day
The exact SQL behind every number
WITH d AS (
    SELECT date,
           toFloat64(yield_3_month) AS m3,
           toFloat64(yield_1_year) AS y1,
           lagInFrame(toFloat64(yield_3_month), 5) OVER (ORDER BY date ROWS BETWEEN 5 PRECEDING AND CURRENT ROW) AS m3_five_before,
           lagInFrame(toFloat64(yield_1_year), 5) OVER (ORDER BY date ROWS BETWEEN 5 PRECEDING AND CURRENT ROW) AS y1_five_before
    FROM global_markets.treasury_yields
    WHERE date >= toDate('2024-11-01')
      AND date <= toDate('2025-12-31')
      AND yield_3_month IS NOT NULL
      AND yield_1_year IS NOT NULL
)
SELECT concat(formatDateTime(date, '%b'), ' ', toString(toDayOfMonth(date))) AS meeting,
       round((m3 - m3_five_before) * 100, 1) AS m3_change_bps,
       round((y1 - y1_five_before) * 100, 1) AS y1_change_bps
FROM d
WHERE date IN (toDate('2025-01-29'), toDate('2025-03-19'), toDate('2025-05-07'),
               toDate('2025-06-18'), toDate('2025-07-30'), toDate('2025-09-17'),
               toDate('2025-10-29'), toDate('2025-12-10'))
ORDER BY date
Run this yourself

Into Jan 29 the 1-year note moved -3 basis points over that week, and into Dec 10 it moved 1 across the 8 decision days in the panel. Set each figure against the 25 basis point size of one policy step. Where a week's move is a small fraction of a step, the outcome was priced before the week opened; where it is a large share of one, the week carried something the strip had not already averaged in. The macro picture entering the second half of 2026 tracks the same front end at the current edge.

Where the arithmetic breaks down

  • Some months hold no meeting at all, and those contracts price only the carry-over rate. Others hold two, which turns the split into a three-way weighting.
  • The derivation assumes the rate changes only on scheduled dates. Unscheduled moves happen. The March 2020 crash carried two of them inside three weeks.
  • The probability step divides by an assumed 25 basis points. Once a 50 basis point outcome sits in the distribution with real weight, one number cannot describe the shape.
  • Liquidity thins along the strip, and contracts a year or more out quote wider, which makes the far end of the implied path a softer number than the near end.
  • The Treasury version mixes in a term premium that nobody observes directly, leaving the curve path an estimate with an unobservable term inside it. That same front end doubles as a place to hold cash: where to park idle cash looks at it from the saver's side.

Fed rate odds FAQ

How do fed funds futures imply the odds of a rate cut?

100 minus the price gives the average effective rate the contract implies for its month. Weight the days before a new rate takes effect at the current rate, solve for the rate the remaining days have to carry, then divide the distance from the current rate by the size of one policy step. The September 2025 walk-through above lands at 64% from an assumed price of 95.74.

Why do Fed probability trackers disagree with each other?

They start from different conventions. One anchors on the effective rate, another on the target midpoint. A binary event market quotes its probability net of a bid-ask spread, and an options chain answers a question about prices rather than about the target range.

Can a futures price give the odds of a 50 basis point move?

Not on its own. A futures price is a single expected value, and many distributions share one expected value. A 90% chance of a 25 basis point cut, and a 70% chance of 25 paired with a 10% chance of 50, both average 22.5 basis points. Separating them takes a second instrument.

How far out can a market-implied Fed path be read?

Fed funds futures list months well beyond a year, though quotes thin as you go out, which makes the far end of the strip a wider estimate. The Treasury curve carries the long horizon more reliably, at the cost of a term premium mixed into the yield.

Does a high implied probability mean the move will happen?

No. It is a price, an expected value under an assumption about which outcomes are on the table, and it is revised as data arrives. It describes what the market is paying today, and nothing about what the committee will decide.


Every panel above is a stored query over the same historical records. Open the SQL under any of them and run the derivation over a different meeting on the Strasmore terminal.

#fed#fed funds futures#rate odds#macro#prediction markets