Skip to main content
Federal Reserve

CME FedWatch Tracker

Unofficial CME FedWatch — FOMC rate-change probabilities in one line of Python.

The only open-source FedWatch that actually works out of the box. No data prep, no API keys, no Selenium.

PyPI Python License: MIT Data

Installation · Quick Start · CLI · API Reference · How It Works


Why This Project?

The CME FedWatch Tool is the gold standard for gauging market expectations of Fed rate changes. But accessing the data programmatically is painful:

Existing approach Problem
CME Website Manual, no API, embedded in QuikStrike iframe
pyfedwatch You must supply your own futures data — the library doesn't fetch anything
Selenium scrapers Slow (~60s), fragile, requires browser + driver
CME DataMine API Paid, enterprise-only

This project solves all of that. One pip install, zero config:

from cme_fedwatch import get_probabilities

data = get_probabilities("next")
print(data)
{
    "effr": 3.64,
    "current_target": "3.50%-3.75%",
    "meetings": [{
        "date": "2026-04-29",
        "contract": "ZQJ6",
        "probabilities": {
            "3.50%-3.75%": 84.0,  # No change
            "3.75%-4.00%": 16.0   # 25bp hike
        }
    }]
}

Data sources — all official, all free:

  • Settlement prices from CME Group
  • EFFR & target rate from FRED (Federal Reserve Bank of St. Louis)
  • FOMC schedule from the Federal Reserve

Installation

pip install cme-fedwatch

Requires Python 3.9+. Single dependency: curl_cffi.


Quick Start

from cme_fedwatch import get_probabilities, get_history

# Next FOMC meeting
get_probabilities("next")

# All upcoming meetings
get_probabilities()

# Specific meeting
get_probabilities("2026-10-28")

# How expectations changed over recent business days.
# Note: CME's free settlement feed only retains the last ~5 business days,
# so longer lookbacks (1w/1m/3m/6m/1y) appear only when data is available.
get_history("next", days=10)

CLI

# Default: next meeting probabilities
$ cme-fedwatch

EFFR: 3.64%  Target: 3.50%-3.75%

     Meeting  Contract     3.50%-3.75%     3.75%-4.00%
------------------------------------------------------
  2026-04-29      ZQJ6           84.0%           16.0%
# All upcoming meetings
$ cme-fedwatch all

EFFR: 3.64%  Target: 3.50%-3.75%

     Meeting  Contract     3.25%-3.50%     3.50%-3.75%     3.75%-4.00%
----------------------------------------------------------------------
  2026-04-29      ZQJ6            0.0%           84.0%           16.0%
  2026-06-17      ZQM6            0.0%           95.7%            4.3%
  2026-07-29      ZQN6            0.0%           98.0%            2.0%
  2026-09-16      ZQU6            0.0%           88.0%           12.0%
  2026-10-28      ZQV6            0.0%           38.0%           62.0%
  2026-12-09      ZQZ6            8.1%           91.9%            0.0%
  ...
# Historical: how expectations evolved over recent business days
$ cme-fedwatch history --days 5

EFFR: 3.62%  Target: 3.50%-3.75%
Meeting: 2026-06-17  Contract: ZQM6

                 3.25%-3.50%     3.50%-3.75%     3.75%-4.00%
------------------------------------------------------------
  2026-06-01            2.6%           97.4%            0.0%
  2026-06-02            0.0%           97.9%            2.1%
  2026-06-03            0.0%          100.0%            0.0%
  2026-06-04            2.1%           97.9%            0.0%
  2026-06-05            0.0%           97.9%            2.1%

Lookback:
          1d            0.0%           97.9%            2.1%

Only the 1d lookback appears above. CME's free settlement feed serves roughly the last 5 business days, so older snapshots (1w/1m/3m/6m/1y) are shown only when settlement data for that date is still available.

All CLI Options

Command Description
cme-fedwatch Next meeting probabilities
cme-fedwatch all All upcoming meetings
cme-fedwatch next Explicit next meeting
cme-fedwatch history Probability changes over time
cme-fedwatch history --days 20 Last 20 business days
cme-fedwatch --meeting 2026-10-28 Specific meeting
cme-fedwatch --json JSON output
cme-fedwatch --csv CSV output
cme-fedwatch --rate 4.33 Override EFFR

API Reference

get_probabilities(meeting=None, trade_date=None, current_rate=None)

Get rate-change probabilities for FOMC meetings.

Parameter Type Description
meeting str None (all), "next", or "YYYY-MM-DD"
trade_date date Settlement date (default: most recent)
current_rate float Override EFFR (default: fetched from FRED)

Returns a dict with effr, current_target, schedule_status, and a meetings list.

schedule_status reports the health of the built-in FOMC schedule (hardcoded and finite): {"state": "ok" | "expiring" | "expired", "remaining": <int>, "last_known": "<YYYY-MM-DD>"}. The CLI prints a warning to stderr when the state is not ok, so a silently-expired schedule can't go unnoticed.

get_history(meeting=None, days=10, current_rate=None)

Track how probabilities changed over recent business days, with standard lookback periods (1d, 1w, 1m, 3m, 6m, 1y) included when data is available.

Parameter Type Description
meeting str "next" (default) or "YYYY-MM-DD"
days int Requested business days of daily history (default: 10)
current_rate float Override EFFR

Returns a dict with history (daily), lookback snapshots, and the same schedule_status health field described above.

Data availability. CME's free settlement feed only retains roughly the last 5 business days. history therefore returns at most ~5 daily rows regardless of days, and a lookback entry (1w/1m/3m/6m/1y) appears only when settlement data for that date is still served — otherwise it is omitted, never fabricated. For full historical futures data, CME DataMine (paid) is the only official source.


How It Works

Data Pipeline

FRED API ──→ Current EFFR + Target Rate (official Fed data)
CME API  ──→ 30-Day Fed Funds Futures settlements (product 305)
               ↓
         FedWatch Calculation Engine
               ↓
         Per-meeting rate-change probabilities

Calculation

For each FOMC meeting, we derive the market-implied post-meeting fed funds rate from the futures settlement price, then compute the probability of each 25bp rate outcome:

implied_rate     = 100 - settlement_price
post_meeting_rate = (implied × D - pre_rate × (d-1)) / (D-d+1)
expected_moves   = (post_rate - pre_rate) / 0.25

Where d = meeting day, D = days in month, pre_rate = previous month's implied rate.

Accuracy

Results are based on daily settlement prices (not live mid-prices), so they may differ from CME QuikStrike by a few percentage points — especially for meetings near the end of a month where the calculation is sensitive to small price differences. The directional signal (hike/cut/hold) is consistent.


Reading the Output

The column headers show possible target rate ranges. Compare them to the current target displayed at the top:

EFFR: 3.64%  Target: 3.50%-3.75%        ← Current rate

     Meeting  Contract     3.25%-3.50%     3.50%-3.75%     3.75%-4.00%
                           ↑ 25bp CUT      ↑ NO CHANGE     ↑ 25bp HIKE
  • Column = current target → probability of no change
  • Column > current target → probability of rate hike(s)
  • Column < current target → probability of rate cut(s)

Disclaimer

This project is not affiliated with CME Group, the Federal Reserve, or FRED. Data is sourced from publicly available APIs. Probabilities are calculated using an approximation of the CME FedWatch methodology and may differ from official CME QuikStrike values.

This tool is for informational and educational purposes only. It is not financial advice.


License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cme_fedwatch-0.1.3.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cme_fedwatch-0.1.3-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file cme_fedwatch-0.1.3.tar.gz.

File metadata

  • Download URL: cme_fedwatch-0.1.3.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cme_fedwatch-0.1.3.tar.gz
Algorithm Hash digest
SHA256 437ff5ea45f319dd4ba410217d259b2e241fe006f32b4e950321559a0ab17004
MD5 76abb0a1ab334542f217ab301217f747
BLAKE2b-256 17be5a488f4e5c519e9dabacaa29ecee49e938b130745a438c4e9b320a357ce8

See more details on using hashes here.

Provenance

The following attestation bundles were made for cme_fedwatch-0.1.3.tar.gz:

Publisher: publish.yml on tjdwls101010/CME-FedWatch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cme_fedwatch-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: cme_fedwatch-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cme_fedwatch-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 03d9790d457cc201105f2c00904ada99d4c4f22816354e137596d53a7e54e40a
MD5 2492d9e5f667c1ad226a97b962ff20d2
BLAKE2b-256 0dd553587d5137fb465b873f2e577d77ead3264ba04ae2c85bf164b44c5b6bb4

See more details on using hashes here.

Provenance

The following attestation bundles were made for cme_fedwatch-0.1.3-py3-none-any.whl:

Publisher: publish.yml on tjdwls101010/CME-FedWatch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page