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.
@@ -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
+ [![PyPI](https://img.shields.io/pypi/v/cme-fedwatch)](https://pypi.org/project/cme-fedwatch/)
38
+ [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](#)
39
+ [![License: MIT](https://img.shields.io/badge/license-MIT-lightgrey)](#)
40
+ [![Data](https://img.shields.io/badge/data-CME%20%2B%20FRED-orange)](#)
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
+ [![PyPI](https://img.shields.io/pypi/v/cme-fedwatch)](https://pypi.org/project/cme-fedwatch/)
12
+ [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](#)
13
+ [![License: MIT](https://img.shields.io/badge/license-MIT-lightgrey)](#)
14
+ [![Data](https://img.shields.io/badge/data-CME%20%2B%20FRED-orange)](#)
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