Parallax / Silvia AI

Methodology

Method version v1.0.0 · applies to the reading published on the front page

What we publish

One number, twice: the probability that the Federal Open Market Committee leaves its target range unchanged at its next scheduled meeting — once as implied by CME 30-Day Fed Funds futures, once as implied by Kalshi event contracts — and the difference between them in percentage points.

Parallax publishes the probability that the FOMC leaves its target range unchanged. That outcome is chosen because both methods can express it in any rate environment, which keeps a single consistent time series comparable over time. The probabilities of a cut and of a hike are shown in full in the distribution table.

We publish derived probabilities, not the underlying exchange prices. Raw prices are stored internally so that any published figure can be reconstructed, but the page shows percentages and our computed difference.

Inputs

Fed funds futures to a probability

A 30-Day Fed Funds contract settles to the arithmetic average of the daily EFFR over every calendar day of its contract month, quoted as 100 − rate. If the FOMC announces partway through the month, that average is a blend of the old rate and the new one, so the price contains the market’s expectation of the new rate. Writing N for the number of days in the month and M for the number at the old rate:

R_avg = 100 − P

R_avg = (M/N)·R_start + ((N−M)/N)·R_end

  ⇒  R_end = (N·R_avg − M·R_start) / (N − M)
  ⇒  ΔR    = R_end − R_start

The new target range takes effect the day after the announcement, so if the decision is announced on day d then M = d, not d − 1. Off-by-one here produces a plausible-looking but wrong answer, which is why we verify the closed form against a literal day-by-day average of the rate path in the test suite.

ΔRis then converted to probabilities on the assumption that all probability sits on the two adjacent quarter-point steps that bracket it — the same assumption CME’s FedWatch tool makes. With x = |ΔR| in percentage points:

0 ≤ x ≤ 0.25   P(move 25bp) = x / 0.25          P(hold) = 1 − that
0.25 < x ≤ 0.50   P(move 50bp) = (x − 0.25) / 0.25   P(move 25bp) = 1 − that

ΔR < 0 → cut          ΔR > 0 → hike

Which contract month

Normally we read the contract for the month containing the announcement. That fails when the meeting falls in the last days of a month: N − M becomes very small, and the division amplifies any error in the price without bound. On the current FOMC calendar three of the next sixteen meetings fall in that position.

For those meetings we read the followingmonth’s contract instead. Every day of that month sits at the post-meeting rate, so M = 0 and R_end = R_avg directly — no subtraction, no denominator, and no amplification at all. This is only valid when no other meeting falls in that following month, which we check rather than assume. The page states which contract was used.

Kalshi contracts to a probability

Kalshi contracts settle at one dollar or nothing, so a price is already a probability. The KXFED markets are one-sided thresholds: each asks whether the upper bound of the target range will be above a given level after the meeting. Writing S(K) for the price of the “above K” contract and U for the current upper bound, the probability of each individual outcome is a difference of adjacent contracts:

P(hold)      = S(U − 0.25) − S(U)
P(cut 25bp)  = S(U − 0.50) − S(U − 0.25)
P(hike 25bp) = S(U)        − S(U + 0.25)
P(any cut)   = 1 − S(U − 0.25)

The threshold is strict. A 25 basis point cut takes the upper bound to exactly U − 0.25, which resolves the “above U − 0.25” contract to No. Reading that boundary the other way would invert the headline number.

We use the midpoint of the bid and the ask, never the last traded price, which can be stale or off-market. A quote is not a fact of uniform quality: a 68% with a six-cent spread and no volume is a different statement from a 68% with a one-cent spread and heavy volume, so every figure carries the spread, volume and open interest that produced it, and is flagged when any of them falls below a documented floor.

When contract prices disagree with each other

Prices in the ladder should fall as the threshold rises. Occasionally they do not — typically among contracts worth almost nothing, where a one-cent difference in the ask is enough to invert two midpoints. Where the bid and ask ranges still permit a consistent set of probabilities, we take the closest consistent set (an isotonic projection) and report how far the prices moved. Where they do not — where a bid on a higher threshold exceeds the ask on a lower one — no consistent set exists, and we publish nothing for that meeting until the prices resettle.

The difference

difference (pp) = |P_kalshi − P_futures| × 100

Deliberately the plainest statistic available. We have not built a composite index, because a reader can recompute this one in their head from the two percentages printed beside it, and a number nobody can reproduce is not worth citing.

What the difference does not mean

This number is a market price, not a forecast, and the two are not the same thing. A Kalshi contract settles at one dollar or nothing, so its price states a probability outright — but that price also carries trading fees, the cost of tying up capital until the contract settles, and the preferences of the particular set of people who trade on that venue. It is what one market charges to take this side of the question today. Parallax normally publishes several venues side by side precisely so that no single one is mistaken for the answer; while only one is published, that check is missing, and this number should be read with that in mind.

The futures-implied distribution is derived by assuming all probability sits on the two adjacent 25 basis point steps around the implied average rate — the same assumption CME's FedWatch tool makes. One consequence matters when reading the distribution: whenever the implied move points in one direction, this method assigns exactly zero to every outcome in the opposite direction. That zero is a property of the method, not a statement by the futures market, so a difference measured against it should not be read as disagreement.

When we publish nothing

A wrong number costs more than a missing one, so the page shows an explicit unavailable state rather than a guess whenever:

Unavailable states are recorded as well as displayed. “We could not compute this at this time” is itself a fact, and it is the audit trail for every gap in the published history.

Known limitations

Reproducibility

Every input is stored with its source, its own timestamp, the time we retrieved it, and a reference to the exact raw payload it came from. Every published probability records the method version that produced it and points back at those inputs. Changing the methodology increments the version; existing records keep theirs, so a number published today can still be reproduced after the method changes.

Meeting dates come from the Federal Reserve’s published FOMC calendar.

Corrections

If a number here is wrong, it matters more to us than to you. Write to danieljwlee87@gmail.com and we will correct it and say what changed.