cme-fedwatch 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cme_fedwatch-0.1.0/LICENSE +21 -0
- cme_fedwatch-0.1.0/PKG-INFO +273 -0
- cme_fedwatch-0.1.0/README.md +247 -0
- cme_fedwatch-0.1.0/cme_fedwatch/__init__.py +246 -0
- cme_fedwatch-0.1.0/cme_fedwatch/api.py +108 -0
- cme_fedwatch-0.1.0/cme_fedwatch/calc.py +128 -0
- cme_fedwatch-0.1.0/cme_fedwatch/cli.py +191 -0
- cme_fedwatch-0.1.0/cme_fedwatch/fomc.py +85 -0
- cme_fedwatch-0.1.0/cme_fedwatch.egg-info/PKG-INFO +273 -0
- cme_fedwatch-0.1.0/cme_fedwatch.egg-info/SOURCES.txt +14 -0
- cme_fedwatch-0.1.0/cme_fedwatch.egg-info/dependency_links.txt +1 -0
- cme_fedwatch-0.1.0/cme_fedwatch.egg-info/entry_points.txt +2 -0
- cme_fedwatch-0.1.0/cme_fedwatch.egg-info/requires.txt +1 -0
- cme_fedwatch-0.1.0/cme_fedwatch.egg-info/top_level.txt +1 -0
- cme_fedwatch-0.1.0/pyproject.toml +36 -0
- cme_fedwatch-0.1.0/setup.cfg +4 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Seongjin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cme-fedwatch
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Unofficial CME FedWatch — FOMC rate-change probabilities in one line of Python.
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/tjdwls101010/CME-FedWatch
|
|
7
|
+
Project-URL: Repository, https://github.com/tjdwls101010/CME-FedWatch
|
|
8
|
+
Project-URL: Issues, https://github.com/tjdwls101010/CME-FedWatch/issues
|
|
9
|
+
Keywords: fedwatch,fomc,federal-reserve,interest-rates,fed-funds,cme,finance
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Office/Business :: Financial
|
|
20
|
+
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
21
|
+
Requires-Python: >=3.9
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: curl_cffi>=0.6
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
<div align="center">
|
|
28
|
+
|
|
29
|
+
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Seal_of_the_United_States_Federal_Reserve_Board.svg/960px-Seal_of_the_United_States_Federal_Reserve_Board.svg.png" width="140" alt="Federal Reserve">
|
|
30
|
+
|
|
31
|
+
# CME FedWatch Tracker
|
|
32
|
+
|
|
33
|
+
**Unofficial CME FedWatch — FOMC rate-change probabilities in one line of Python.**
|
|
34
|
+
|
|
35
|
+
The only open-source FedWatch that **actually works out of the box**. No data prep, no API keys, no Selenium.
|
|
36
|
+
|
|
37
|
+
[](https://pypi.org/project/cme-fedwatch/)
|
|
38
|
+
[](#)
|
|
39
|
+
[](#)
|
|
40
|
+
[](#)
|
|
41
|
+
|
|
42
|
+
[Installation](#installation) · [Quick Start](#quick-start) · [CLI](#cli) · [API Reference](#api-reference) · [How It Works](#how-it-works)
|
|
43
|
+
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Why This Project?
|
|
49
|
+
|
|
50
|
+
The CME FedWatch Tool is the gold standard for gauging market expectations of Fed rate changes. **But accessing the data programmatically is painful:**
|
|
51
|
+
|
|
52
|
+
| Existing approach | Problem |
|
|
53
|
+
|---|---|
|
|
54
|
+
| [CME Website](https://www.cmegroup.com/markets/interest-rates/cme-fedwatch-tool.html) | Manual, no API, embedded in QuikStrike iframe |
|
|
55
|
+
| [pyfedwatch](https://github.com/ARahimiQuant/pyfedwatch) | You must supply your own futures data — the library doesn't fetch anything |
|
|
56
|
+
| Selenium scrapers | Slow (~60s), fragile, requires browser + driver |
|
|
57
|
+
| CME DataMine API | Paid, enterprise-only |
|
|
58
|
+
|
|
59
|
+
**This project solves all of that.** One `pip install`, zero config:
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
from cme_fedwatch import get_probabilities
|
|
63
|
+
|
|
64
|
+
data = get_probabilities("next")
|
|
65
|
+
print(data)
|
|
66
|
+
```
|
|
67
|
+
```python
|
|
68
|
+
{
|
|
69
|
+
"effr": 3.64,
|
|
70
|
+
"current_target": "3.50%-3.75%",
|
|
71
|
+
"meetings": [{
|
|
72
|
+
"date": "2026-04-29",
|
|
73
|
+
"contract": "ZQJ6",
|
|
74
|
+
"probabilities": {
|
|
75
|
+
"3.50%-3.75%": 84.0, # No change
|
|
76
|
+
"3.75%-4.00%": 16.0 # 25bp hike
|
|
77
|
+
}
|
|
78
|
+
}]
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Data sources — all official, all free:**
|
|
83
|
+
- Settlement prices from **CME Group**
|
|
84
|
+
- EFFR & target rate from **FRED** (Federal Reserve Bank of St. Louis)
|
|
85
|
+
- FOMC schedule from the **Federal Reserve**
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Installation
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
pip install cme-fedwatch
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Requires Python 3.9+. Single dependency: [`curl_cffi`](https://github.com/lexiforest/curl_cffi).
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Quick Start
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from cme_fedwatch import get_probabilities, get_history
|
|
103
|
+
|
|
104
|
+
# Next FOMC meeting
|
|
105
|
+
get_probabilities("next")
|
|
106
|
+
|
|
107
|
+
# All upcoming meetings
|
|
108
|
+
get_probabilities()
|
|
109
|
+
|
|
110
|
+
# Specific meeting
|
|
111
|
+
get_probabilities("2026-10-28")
|
|
112
|
+
|
|
113
|
+
# How expectations changed over the past 10 business days
|
|
114
|
+
# Includes 1d, 1w, 1m, 3m, 6m, 1y lookback comparisons
|
|
115
|
+
get_history("next", days=10)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## CLI
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Default: next meeting probabilities
|
|
124
|
+
$ cme-fedwatch
|
|
125
|
+
|
|
126
|
+
EFFR: 3.64% Target: 3.50%-3.75%
|
|
127
|
+
|
|
128
|
+
Meeting Contract 3.50%-3.75% 3.75%-4.00%
|
|
129
|
+
------------------------------------------------------
|
|
130
|
+
2026-04-29 ZQJ6 84.0% 16.0%
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# All upcoming meetings
|
|
135
|
+
$ cme-fedwatch all
|
|
136
|
+
|
|
137
|
+
EFFR: 3.64% Target: 3.50%-3.75%
|
|
138
|
+
|
|
139
|
+
Meeting Contract 3.25%-3.50% 3.50%-3.75% 3.75%-4.00%
|
|
140
|
+
----------------------------------------------------------------------
|
|
141
|
+
2026-04-29 ZQJ6 0.0% 84.0% 16.0%
|
|
142
|
+
2026-06-17 ZQM6 0.0% 95.7% 4.3%
|
|
143
|
+
2026-07-29 ZQN6 0.0% 98.0% 2.0%
|
|
144
|
+
2026-09-16 ZQU6 0.0% 88.0% 12.0%
|
|
145
|
+
2026-10-28 ZQV6 0.0% 38.0% 62.0%
|
|
146
|
+
2026-12-09 ZQZ6 8.1% 91.9% 0.0%
|
|
147
|
+
...
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Historical: how expectations evolved
|
|
152
|
+
$ cme-fedwatch history --days 5
|
|
153
|
+
|
|
154
|
+
EFFR: 3.64% Target: 3.50%-3.75%
|
|
155
|
+
Meeting: 2026-04-29 Contract: ZQJ6
|
|
156
|
+
|
|
157
|
+
3.50%-3.75% 3.75%-4.00%
|
|
158
|
+
-----------------------------------------
|
|
159
|
+
2026-03-16 97.0% 3.0%
|
|
160
|
+
2026-03-17 97.0% 3.0%
|
|
161
|
+
2026-03-18 100.0% 0.0%
|
|
162
|
+
2026-03-19 93.0% 7.0%
|
|
163
|
+
2026-03-20 84.0% 16.0%
|
|
164
|
+
|
|
165
|
+
Lookback:
|
|
166
|
+
1d 84.0% 16.0%
|
|
167
|
+
1w ... ...
|
|
168
|
+
1m ... ...
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### All CLI Options
|
|
172
|
+
|
|
173
|
+
| Command | Description |
|
|
174
|
+
|---|---|
|
|
175
|
+
| `cme-fedwatch` | Next meeting probabilities |
|
|
176
|
+
| `cme-fedwatch all` | All upcoming meetings |
|
|
177
|
+
| `cme-fedwatch next` | Explicit next meeting |
|
|
178
|
+
| `cme-fedwatch history` | Probability changes over time |
|
|
179
|
+
| `cme-fedwatch history --days 20` | Last 20 business days |
|
|
180
|
+
| `cme-fedwatch --meeting 2026-10-28` | Specific meeting |
|
|
181
|
+
| `cme-fedwatch --json` | JSON output |
|
|
182
|
+
| `cme-fedwatch --csv` | CSV output |
|
|
183
|
+
| `cme-fedwatch --rate 4.33` | Override EFFR |
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## API Reference
|
|
188
|
+
|
|
189
|
+
### `get_probabilities(meeting=None, trade_date=None, current_rate=None)`
|
|
190
|
+
|
|
191
|
+
Get rate-change probabilities for FOMC meetings.
|
|
192
|
+
|
|
193
|
+
| Parameter | Type | Description |
|
|
194
|
+
|---|---|---|
|
|
195
|
+
| `meeting` | `str` | `None` (all), `"next"`, or `"YYYY-MM-DD"` |
|
|
196
|
+
| `trade_date` | `date` | Settlement date (default: most recent) |
|
|
197
|
+
| `current_rate` | `float` | Override EFFR (default: fetched from FRED) |
|
|
198
|
+
|
|
199
|
+
**Returns** a dict with `effr`, `current_target`, and `meetings` list.
|
|
200
|
+
|
|
201
|
+
### `get_history(meeting=None, days=10, current_rate=None)`
|
|
202
|
+
|
|
203
|
+
Track how probabilities changed over time with standard lookback periods (1d, 1w, 1m, 3m, 6m, 1y).
|
|
204
|
+
|
|
205
|
+
| Parameter | Type | Description |
|
|
206
|
+
|---|---|---|
|
|
207
|
+
| `meeting` | `str` | `"next"` (default) or `"YYYY-MM-DD"` |
|
|
208
|
+
| `days` | `int` | Business days of daily history (default: 10) |
|
|
209
|
+
| `current_rate` | `float` | Override EFFR |
|
|
210
|
+
|
|
211
|
+
**Returns** a dict with `history` (daily) and `lookback` (1d/1w/1m/3m/6m/1y snapshots).
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## How It Works
|
|
216
|
+
|
|
217
|
+
### Data Pipeline
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
FRED API ──→ Current EFFR + Target Rate (official Fed data)
|
|
221
|
+
CME API ──→ 30-Day Fed Funds Futures settlements (product 305)
|
|
222
|
+
↓
|
|
223
|
+
FedWatch Calculation Engine
|
|
224
|
+
↓
|
|
225
|
+
Per-meeting rate-change probabilities
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Calculation
|
|
229
|
+
|
|
230
|
+
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:
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
implied_rate = 100 - settlement_price
|
|
234
|
+
post_meeting_rate = (implied × D - pre_rate × (d-1)) / (D-d+1)
|
|
235
|
+
expected_moves = (post_rate - pre_rate) / 0.25
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Where `d` = meeting day, `D` = days in month, `pre_rate` = previous month's implied rate.
|
|
239
|
+
|
|
240
|
+
### Accuracy
|
|
241
|
+
|
|
242
|
+
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.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Reading the Output
|
|
247
|
+
|
|
248
|
+
The column headers show possible target rate ranges. Compare them to the **current target** displayed at the top:
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
EFFR: 3.64% Target: 3.50%-3.75% ← Current rate
|
|
252
|
+
|
|
253
|
+
Meeting Contract 3.25%-3.50% 3.50%-3.75% 3.75%-4.00%
|
|
254
|
+
↑ 25bp CUT ↑ NO CHANGE ↑ 25bp HIKE
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
- **Column = current target** → probability of **no change**
|
|
258
|
+
- **Column > current target** → probability of **rate hike(s)**
|
|
259
|
+
- **Column < current target** → probability of **rate cut(s)**
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Disclaimer
|
|
264
|
+
|
|
265
|
+
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.
|
|
266
|
+
|
|
267
|
+
This tool is for **informational and educational purposes only**. It is not financial advice.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## License
|
|
272
|
+
|
|
273
|
+
MIT
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Seal_of_the_United_States_Federal_Reserve_Board.svg/960px-Seal_of_the_United_States_Federal_Reserve_Board.svg.png" width="140" alt="Federal Reserve">
|
|
4
|
+
|
|
5
|
+
# CME FedWatch Tracker
|
|
6
|
+
|
|
7
|
+
**Unofficial CME FedWatch — FOMC rate-change probabilities in one line of Python.**
|
|
8
|
+
|
|
9
|
+
The only open-source FedWatch that **actually works out of the box**. No data prep, no API keys, no Selenium.
|
|
10
|
+
|
|
11
|
+
[](https://pypi.org/project/cme-fedwatch/)
|
|
12
|
+
[](#)
|
|
13
|
+
[](#)
|
|
14
|
+
[](#)
|
|
15
|
+
|
|
16
|
+
[Installation](#installation) · [Quick Start](#quick-start) · [CLI](#cli) · [API Reference](#api-reference) · [How It Works](#how-it-works)
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Why This Project?
|
|
23
|
+
|
|
24
|
+
The CME FedWatch Tool is the gold standard for gauging market expectations of Fed rate changes. **But accessing the data programmatically is painful:**
|
|
25
|
+
|
|
26
|
+
| Existing approach | Problem |
|
|
27
|
+
|---|---|
|
|
28
|
+
| [CME Website](https://www.cmegroup.com/markets/interest-rates/cme-fedwatch-tool.html) | Manual, no API, embedded in QuikStrike iframe |
|
|
29
|
+
| [pyfedwatch](https://github.com/ARahimiQuant/pyfedwatch) | You must supply your own futures data — the library doesn't fetch anything |
|
|
30
|
+
| Selenium scrapers | Slow (~60s), fragile, requires browser + driver |
|
|
31
|
+
| CME DataMine API | Paid, enterprise-only |
|
|
32
|
+
|
|
33
|
+
**This project solves all of that.** One `pip install`, zero config:
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
from cme_fedwatch import get_probabilities
|
|
37
|
+
|
|
38
|
+
data = get_probabilities("next")
|
|
39
|
+
print(data)
|
|
40
|
+
```
|
|
41
|
+
```python
|
|
42
|
+
{
|
|
43
|
+
"effr": 3.64,
|
|
44
|
+
"current_target": "3.50%-3.75%",
|
|
45
|
+
"meetings": [{
|
|
46
|
+
"date": "2026-04-29",
|
|
47
|
+
"contract": "ZQJ6",
|
|
48
|
+
"probabilities": {
|
|
49
|
+
"3.50%-3.75%": 84.0, # No change
|
|
50
|
+
"3.75%-4.00%": 16.0 # 25bp hike
|
|
51
|
+
}
|
|
52
|
+
}]
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Data sources — all official, all free:**
|
|
57
|
+
- Settlement prices from **CME Group**
|
|
58
|
+
- EFFR & target rate from **FRED** (Federal Reserve Bank of St. Louis)
|
|
59
|
+
- FOMC schedule from the **Federal Reserve**
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Installation
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install cme-fedwatch
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Requires Python 3.9+. Single dependency: [`curl_cffi`](https://github.com/lexiforest/curl_cffi).
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Quick Start
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
from cme_fedwatch import get_probabilities, get_history
|
|
77
|
+
|
|
78
|
+
# Next FOMC meeting
|
|
79
|
+
get_probabilities("next")
|
|
80
|
+
|
|
81
|
+
# All upcoming meetings
|
|
82
|
+
get_probabilities()
|
|
83
|
+
|
|
84
|
+
# Specific meeting
|
|
85
|
+
get_probabilities("2026-10-28")
|
|
86
|
+
|
|
87
|
+
# How expectations changed over the past 10 business days
|
|
88
|
+
# Includes 1d, 1w, 1m, 3m, 6m, 1y lookback comparisons
|
|
89
|
+
get_history("next", days=10)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## CLI
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Default: next meeting probabilities
|
|
98
|
+
$ cme-fedwatch
|
|
99
|
+
|
|
100
|
+
EFFR: 3.64% Target: 3.50%-3.75%
|
|
101
|
+
|
|
102
|
+
Meeting Contract 3.50%-3.75% 3.75%-4.00%
|
|
103
|
+
------------------------------------------------------
|
|
104
|
+
2026-04-29 ZQJ6 84.0% 16.0%
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# All upcoming meetings
|
|
109
|
+
$ cme-fedwatch all
|
|
110
|
+
|
|
111
|
+
EFFR: 3.64% Target: 3.50%-3.75%
|
|
112
|
+
|
|
113
|
+
Meeting Contract 3.25%-3.50% 3.50%-3.75% 3.75%-4.00%
|
|
114
|
+
----------------------------------------------------------------------
|
|
115
|
+
2026-04-29 ZQJ6 0.0% 84.0% 16.0%
|
|
116
|
+
2026-06-17 ZQM6 0.0% 95.7% 4.3%
|
|
117
|
+
2026-07-29 ZQN6 0.0% 98.0% 2.0%
|
|
118
|
+
2026-09-16 ZQU6 0.0% 88.0% 12.0%
|
|
119
|
+
2026-10-28 ZQV6 0.0% 38.0% 62.0%
|
|
120
|
+
2026-12-09 ZQZ6 8.1% 91.9% 0.0%
|
|
121
|
+
...
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Historical: how expectations evolved
|
|
126
|
+
$ cme-fedwatch history --days 5
|
|
127
|
+
|
|
128
|
+
EFFR: 3.64% Target: 3.50%-3.75%
|
|
129
|
+
Meeting: 2026-04-29 Contract: ZQJ6
|
|
130
|
+
|
|
131
|
+
3.50%-3.75% 3.75%-4.00%
|
|
132
|
+
-----------------------------------------
|
|
133
|
+
2026-03-16 97.0% 3.0%
|
|
134
|
+
2026-03-17 97.0% 3.0%
|
|
135
|
+
2026-03-18 100.0% 0.0%
|
|
136
|
+
2026-03-19 93.0% 7.0%
|
|
137
|
+
2026-03-20 84.0% 16.0%
|
|
138
|
+
|
|
139
|
+
Lookback:
|
|
140
|
+
1d 84.0% 16.0%
|
|
141
|
+
1w ... ...
|
|
142
|
+
1m ... ...
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### All CLI Options
|
|
146
|
+
|
|
147
|
+
| Command | Description |
|
|
148
|
+
|---|---|
|
|
149
|
+
| `cme-fedwatch` | Next meeting probabilities |
|
|
150
|
+
| `cme-fedwatch all` | All upcoming meetings |
|
|
151
|
+
| `cme-fedwatch next` | Explicit next meeting |
|
|
152
|
+
| `cme-fedwatch history` | Probability changes over time |
|
|
153
|
+
| `cme-fedwatch history --days 20` | Last 20 business days |
|
|
154
|
+
| `cme-fedwatch --meeting 2026-10-28` | Specific meeting |
|
|
155
|
+
| `cme-fedwatch --json` | JSON output |
|
|
156
|
+
| `cme-fedwatch --csv` | CSV output |
|
|
157
|
+
| `cme-fedwatch --rate 4.33` | Override EFFR |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## API Reference
|
|
162
|
+
|
|
163
|
+
### `get_probabilities(meeting=None, trade_date=None, current_rate=None)`
|
|
164
|
+
|
|
165
|
+
Get rate-change probabilities for FOMC meetings.
|
|
166
|
+
|
|
167
|
+
| Parameter | Type | Description |
|
|
168
|
+
|---|---|---|
|
|
169
|
+
| `meeting` | `str` | `None` (all), `"next"`, or `"YYYY-MM-DD"` |
|
|
170
|
+
| `trade_date` | `date` | Settlement date (default: most recent) |
|
|
171
|
+
| `current_rate` | `float` | Override EFFR (default: fetched from FRED) |
|
|
172
|
+
|
|
173
|
+
**Returns** a dict with `effr`, `current_target`, and `meetings` list.
|
|
174
|
+
|
|
175
|
+
### `get_history(meeting=None, days=10, current_rate=None)`
|
|
176
|
+
|
|
177
|
+
Track how probabilities changed over time with standard lookback periods (1d, 1w, 1m, 3m, 6m, 1y).
|
|
178
|
+
|
|
179
|
+
| Parameter | Type | Description |
|
|
180
|
+
|---|---|---|
|
|
181
|
+
| `meeting` | `str` | `"next"` (default) or `"YYYY-MM-DD"` |
|
|
182
|
+
| `days` | `int` | Business days of daily history (default: 10) |
|
|
183
|
+
| `current_rate` | `float` | Override EFFR |
|
|
184
|
+
|
|
185
|
+
**Returns** a dict with `history` (daily) and `lookback` (1d/1w/1m/3m/6m/1y snapshots).
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## How It Works
|
|
190
|
+
|
|
191
|
+
### Data Pipeline
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
FRED API ──→ Current EFFR + Target Rate (official Fed data)
|
|
195
|
+
CME API ──→ 30-Day Fed Funds Futures settlements (product 305)
|
|
196
|
+
↓
|
|
197
|
+
FedWatch Calculation Engine
|
|
198
|
+
↓
|
|
199
|
+
Per-meeting rate-change probabilities
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Calculation
|
|
203
|
+
|
|
204
|
+
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:
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
implied_rate = 100 - settlement_price
|
|
208
|
+
post_meeting_rate = (implied × D - pre_rate × (d-1)) / (D-d+1)
|
|
209
|
+
expected_moves = (post_rate - pre_rate) / 0.25
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Where `d` = meeting day, `D` = days in month, `pre_rate` = previous month's implied rate.
|
|
213
|
+
|
|
214
|
+
### Accuracy
|
|
215
|
+
|
|
216
|
+
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.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Reading the Output
|
|
221
|
+
|
|
222
|
+
The column headers show possible target rate ranges. Compare them to the **current target** displayed at the top:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
EFFR: 3.64% Target: 3.50%-3.75% ← Current rate
|
|
226
|
+
|
|
227
|
+
Meeting Contract 3.25%-3.50% 3.50%-3.75% 3.75%-4.00%
|
|
228
|
+
↑ 25bp CUT ↑ NO CHANGE ↑ 25bp HIKE
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
- **Column = current target** → probability of **no change**
|
|
232
|
+
- **Column > current target** → probability of **rate hike(s)**
|
|
233
|
+
- **Column < current target** → probability of **rate cut(s)**
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Disclaimer
|
|
238
|
+
|
|
239
|
+
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.
|
|
240
|
+
|
|
241
|
+
This tool is for **informational and educational purposes only**. It is not financial advice.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## License
|
|
246
|
+
|
|
247
|
+
MIT
|