2026 年 10 月 24 日,聯準會 10 月 28 日會議維持利率不變的機率為 91.9%。依排程執行的簡短腳本會將賠率與上一次的讀數比較,變動達到門檻時輸出提醒。對於聯準會的政策路徑,請把 p_hold(利率不變的機率)與上一次執行儲存的值進行比較。
使用 API
輪詢 GET /v1/predictions/policy-paths/federal-reserve,並把上一次的讀數保存在一個 JSON 檔案中。腳本讀取回應中第一場會議的 p_hold。提醒跟隨的是該場會議維持不變的機率,所以選擇門檻時請記住這一點。
- 設定你的 API 金鑰 取得免費金鑰,並存放在環境變數
NARWHAL_API_KEY中。請求以Authorization: Bearer YOUR_KEY的形式發送至https://api.narwhalapi.com。 - 儲存輪詢腳本 使用門檻為 10 個百分點的 Python 腳本。它比較的是差值的絕對值,因此上升或下降都可能觸發輸出的提醒。
import json, os, pathlib import requests STATE = pathlib.Path("fed_hold.json") MOVE = 0.10 # alert when the chance of "no change" moves by 10 points or more path = requests.get( "https://api.narwhalapi.com/v1/predictions/policy-paths/federal-reserve", headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}, timeout=10, ).json() hold = float(path["meetings"][0]["p_hold"]) if STATE.exists(): before = json.loads(STATE.read_text())["hold"] if abs(hold - before) >= MOVE: print( f"ALERT: chance of no change moved from {before:.1%} to {hold:.1%}" ) # email or chat message here STATE.write_text(json.dumps({"hold": hold})) print(f"hold {hold:.1%}") - 在兩次執行之間保留狀態檔案 第一次執行會把讀數儲存在
fed_hold.json中;之後的執行會先讀取這個檔案,再比較賠率。每次執行都會把讀數寫回檔案,包括沒有輸出提醒的那些執行。 - 讓腳本依排程執行 讓腳本依排程執行,例如每小時或每天一次;每次執行消耗一次呼叫。程式碼只負責輸出提醒;如果希望提醒透過電子郵件或聊天訊息送達,請使用腳本中標註的位置。
要透過電子郵件或聊天接收,請把傳送訊息的程式碼放在註解標明的門檻條件內部。如果放在條件之外,即使沒有任何變動達到門檻,訊息也會被傳送。
無需程式碼
在 Zapier、Make 或 n8n 中,先加入一個排程觸發器,以及一個指向同一政策路徑的 HTTP 請求。保存 p_hold 的讀數,使工作流程再次執行時有可供比較的值。再加入一個針對新讀數與已存讀數之差的篩選器,然後為達到所選門檻的變動加上電子郵件或聊天步驟。
請把比較放在取代已存值的步驟之前。提醒需要兩個讀數:上一次執行儲存的值,以及新請求回傳的值。比較之後,無論篩選器是否發出訊息,都要儲存新的讀數供下一次執行使用。n8n 教學與 Zapier 教學是 Narwhal 教學中的無程式碼方式。
各種情況適合的方式
| 情況 | 最適合的方式 | 原因 |
|---|---|---|
| 定期查看賠率 | 依排程執行的腳本 | 賠率是即時的;每次執行消耗一次呼叫。 |
| 市場關閉或結算時的提醒 | Webhook(網路掛鉤) | Webhook 會針對預測事件傳送 prediction.event.closed 和 prediction.event.settled。 |
| 要追蹤的問題很多 | 逐一處理 /v1/predictions/events 中的事件 | 把同樣的比較套用到你關注的事件上。 |
Webhook 回報的是預測事件的關閉或結算,不會傳送賠率變動通知,所以這裡介紹的門檻提醒要使用輪詢與已儲存的讀數。關閉或結算提醒回答的,與某個結果的機率是否發生變動是不同的問題。
門檻應該設多少?
請選擇與你所關注問題相符的門檻。對於機率很高的結果,10 個百分點的變動已經很大;而波動較小的問題則需要更小的門檻。選擇時請以百分點來思考,因為比較的是機率本身的變化。在腳本中,MOVE = 0.10 表示 10 個百分點的門檻。修改時請讓這個設定維持為小數。提醒文字會把變動前後的機率格式化為百分比,所以儲存的小數與輸出的機率形式不同。上升或下降都可能達到門檻。
為什麼要與已儲存的值比較?
API 回傳的是請求時刻的賠率,而上一次的讀數保存在你的狀態檔案中。腳本需要這個已儲存的值來計算變動。第一次執行時檔案中沒有更早的讀數,所以它只儲存該值,並輸出維持不變的機率,不發出變動提醒。
比較對象是上一次執行,即使那次執行沒有觸發提醒也是如此。小於門檻的變動同樣會取代已儲存的讀數。因此,幾次較小的變動不會相對於腳本最初儲存的值累積起來。請讓定時執行的腳本始終能存取 fed_hold.json,以便讀取它儲存的基準值。如果檔案不存在,腳本會重新走第一次執行的流程,並儲存新的基準值。定時執行請使用同一個工作目錄,讓 fed_hold.json 每次都指向同一個檔案。
可以多久執行一次?
只要你的額度允許,就可以隨時執行。賠率是即時的,每天檢查一次,每月約產生 30 次呼叫。執行更頻繁則呼叫更多,每個新讀數都會與檔案中的上一個值比較。
每個帳戶也可以在 /v1/predictions/stream 開啟預測 WebSocket 串流;每個連線消耗一次呼叫。這是接收預測更新的另一種方式;這裡的輪詢腳本則在儲存狀態的工作流程中自行保留比較邏輯與門檻。
實例:門檻 10 個百分點
數字取自 2026 年 10 月 24 日。第二個讀數僅作範例。第一次執行讀取到維持不變的機率 91.9%,將其儲存並輸出 hold 91.9%。例如,假設隔天的讀數是 79.0%。用已儲存的讀數減去它,得到的變動為 12.9 個百分點。
| 步驟 | 數值或結果 |
|---|---|
| 儲存第一個讀數 | 91.9% |
| 讀取隔天的範例值 | 79.0% |
| 計算變動的絕對值 | 從 91.9% 到 79.0% 的變動是 12.9 個百分點 |
| 與門檻比較 | 12.9 個百分點超過 10 個百分點 |
變動超過了門檻,所以腳本會輸出提醒,然後把這個範例讀數儲存為下一次比較使用的值。
ALERT: chance of no change moved from 91.9% to 79.0%發布於 。