# Fed Rate Probability API - FOMC Rate Cut & Hike Odds (`ichigowa/fed-rate-probability`) Actor

FOMC rate-change probabilities per upcoming meeting, FedWatch-style: implied rates from 30-Day Fed Funds futures (ZQ) plus Polymarket fed markets as a cross-check. Clean JSON: p\_cut/p\_hold/p\_hike per meeting. Unofficial, not affiliated with CME.

- **URL**: https://apify.com/ichigowa/fed-rate-probability.md
- **Developed by:** [kyle herman](https://apify.com/ichigowa) (community)
- **Categories:** Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 probability rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Fed Rate Probability API — FOMC Rate Cut / Hike Odds (FedWatch Alternative)

Get **FOMC meeting rate-change probabilities as clean JSON** — a **FedWatch API alternative** that computes rate cut / hold / hike odds for upcoming Federal Reserve meetings from **30-Day Fed Funds futures (ZQ)** prices, cross-checked against **Polymarket** fed-rate prediction markets.

If you've searched for a *fedwatch api*, *fed rate probability api*, or *fomc rate cut odds api*, this actor gives you exactly that: per-meeting probabilities (`p_cut_25`, `p_hold`, `p_hike_25`), implied rates in basis points, and the current effective fed funds rate (EFFR), on demand.

> **Unofficial. Not affiliated with CME Group, CME FedWatch, the Federal Reserve, Yahoo, or Polymarket.**

### What you get

One dataset row per upcoming FOMC meeting per source:

```json
{
  "meeting_date": "2026-09-16",
  "meeting_label": "Will there be no change in Fed interest rates after the September 2026 meeting?",
  "source": "polymarket",
  "p_cut_25": null,
  "p_hold": 0.455,
  "p_hike_25": null,
  "implied_rate_bps": null,
  "contract_symbol": null,
  "market_slug": "will-there-be-no-change-in-fed-interest-rates-after-the-september-2026-meeting-615",
  "current_effr": 3.63,
  "computed_at": "2026-09-03T03:03:04.650695+00:00",
  "tentative": false
}
```

Real rows from a test run (Sep 2026, EFFR 3.63%, target 3.50–3.75%):

| meeting | source | p\_cut\_25 | p\_hold | p\_hike\_25 |
|---|---|---|---|---|
| September 2026 FOMC | polymarket | 0.0055 | — | — |
| September 2026 FOMC | polymarket | — | 0.455 | — |
| September 2026 FOMC | polymarket | — | — | 0.535 |

`source: "futures"` rows additionally carry `implied_rate_bps` and `contract_symbol` (e.g. `ZQV26.CBT`).

### Methodology (honest version)

- **Futures (FedWatch-style):** Monthly ZQ contracts settle at `100 − average daily EFFR` for the month, so implied rate = `100 − price`. For a meeting month with `N` days and a meeting ending on day `d`, we solve the post-meeting rate from `avg = (d/N)·r_before + ((N−d)/N)·r_after`, where `r_before` comes from the prior clean-month contract (or current EFFR). The gap between post- and pre-meeting implied rates, divided by 25 bps, gives the probability of a single 25 bp move (clamped to \[0, 1]); the remainder is `p_hold`. This is a simplification of CME's methodology: it assumes at most one ±25 bp move per meeting and ignores multi-step move trees.
- **Polymarket:** highest-volume open markets whose question/slug mention "fed" + "rate" are classified as cut / hold / hike and their Yes-price is emitted as the probability. These are real-money prediction market odds — a great sanity check on futures-derived numbers.
- **EFFR & target range:** pulled live from the NY Fed public API; falls back to the `current_target_range` input if unreachable.
- **FOMC dates:** 2026 dates use the official calendar; 2027 dates are approximations and marked `tentative: true`.
- Yahoo Finance is rate-limit-prone; the actor rotates hosts/user-agents with exponential backoff, and if futures data is unavailable it still succeeds with Polymarket rows only (a warning is logged).

### Input

| field | type | default | description |
|---|---|---|---|
| `meetings_ahead` | integer | `4` | How many upcoming FOMC meetings to compute |
| `include_polymarket` | boolean | `true` | Emit Polymarket cross-check rows |
| `current_target_range` | string | `""` | e.g. `"3.75-4.00"`; empty = auto from NY Fed |

Default input `{}` works out of the box.

### Use cases

- Rate-decision dashboards and trading models needing **FOMC rate cut odds as JSON**
- Newsletters / bots posting **fed rate probabilities** before each meeting
- Cross-checking CME FedWatch against prediction-market pricing
- Backtesting: `computed_at` timestamps let you snapshot odds over time

### Pricing

Pay-per-event: one small charge per probability row pushed (`probability-row`).

### Disclaimer

Data is informational only, not investment advice. Probabilities are model outputs from third-party market prices and may differ from CME FedWatch. Unofficial; not affiliated with CME Group.

# Actor input Schema

## `meetings_ahead` (type: `integer`):

How many upcoming FOMC meetings to compute probabilities for.

## `include_polymarket` (type: `boolean`):

Also emit probability rows sourced from Polymarket fed-rate prediction markets.

## `current_target_range` (type: `string`):

Fed funds target range like '3.75-4.00'. Leave empty to auto-detect from the NY Fed EFFR API.

## Actor input object example

```json
{
  "meetings_ahead": 4,
  "include_polymarket": true,
  "current_target_range": ""
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("ichigowa/fed-rate-probability").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("ichigowa/fed-rate-probability").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call ichigowa/fed-rate-probability --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ichigowa/fed-rate-probability"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MImz1ig4Y8kjWqGeX/builds/AHRzzPsaEVBu1BdsQ/openapi.json
