لاستخدام احتمالات السوق كمدخل، اقرأ مسار سياسة الفائدة وفق جدول واطرح التحرك المتوقع الأقدم من الأحدث. يوفر Narwhal القيمة expected_change_bps لكل اجتماع، مباشرةً وكسجل يومي.
الاستعلام الدوري عن مسار سياسة الفائدة
الإشارة هنا هي التحرك الذي يتضمنه السوق في سعر الفائدة الرئيسي للبنك المركزي. ويعيده مسار السياسة لكل اجتماع قادم. يقرأ هذا الطلب الاحتياطي الفيدرالي ويحتفظ بالاجتماع الأول.
curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/predictions/policy-paths/federal-reserve"{
"as_of": "2026-11-03T02:28:00Z",
"meetings": [
{
"event_id": "usa-fed-2026-12",
"p_cut": "0.0097",
"p_hold": "0.2534",
"p_hike": "0.7369",
"expected_change_bps": "18.6",
"cumulative_change_bps": "18.6",
"resolves_at": "2026-12-09T19:00:00Z"
}
]
}expected_change_bps هو التغير في سعر الفائدة الرئيسي في ذلك الاجتماع مرجّحًا بالاحتمالات، بنقاط الأساس. وهو تغير وليس السعر الحالي أبدًا. أما cumulative_change_bps فيجمع اجتماعات القائمة بالترتيب. وp_cut وp_hold وp_hike هي الاحتمالات الكامنة وراءه، وas_of هو وقت الأسعار. استعلم عن نقطة النهاية هذه دوريًا وخزّن كل قراءة مع as_of بصف واحد لكل اجتماع، مع الاحتفاظ بحقول الاحتمالات الأربعة والتحرك كقيم Decimal.
قراءة المسار نفسه في أيام سابقة
تعيد نقطة نهاية السجل لقطة واحدة لكل يوم. كل من start وend مطلوب، وكلاهما قيمة تاريخ ووقت، لذا يُرفض 2026-10-26 وحده ويُقبل 2026-10-26T00:00:00Z. يمكن أن تصل النافذة إلى 366 يومًا على الأكثر. يطلب هذا الطلب الفترة من 26 أكتوبر إلى 2 نوفمبر 2026، وتحتفظ الاستجابة أدناه بيومين وبالاجتماع الأول من كل يوم.
curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/predictions/policy-paths/federal-reserve/history?start=2026-10-26T00:00:00Z&end=2026-11-03T00:00:00Z"{
"meeting_dates": [
{
"event_id": "usa-fed-2026-10",
"resolves_at": "2026-10-28T18:00:00Z"
},
{
"event_id": "usa-fed-2026-12",
"resolves_at": "2026-12-09T19:00:00Z"
}
],
"days": [
{
"date": "2026-11-01",
"meetings": [
{
"event_id": "usa-fed-2026-12",
"p_cut": "0.0093",
"p_hold": "0.2766",
"p_hike": "0.7141",
"expected_change_bps": "17.9",
"cumulative_change_bps": "17.9"
}
]
},
{
"date": "2026-11-02",
"meetings": [
{
"event_id": "usa-fed-2026-12",
"p_cut": "0.0098",
"p_hold": "0.2535",
"p_hike": "0.7367",
"expected_change_bps": "18.5",
"cumulative_change_bps": "18.5"
}
]
}
]
}يحتوي days على إدخال واحد لكل تاريخ، ويضم كل إدخال الاجتماعات التي كانت لا تزال مفتوحة في ذلك التاريخ، بحقول الاحتمالات نفسها الموجودة في المسار المباشر. ويعطي meeting_dates قيمة resolves_at لكل اجتماع مرة واحدة.
حساب التغير بين قراءتين
التغير في التحرك المتوقع هو expected_change_bps الأحدث ناقص الأقدم للاجتماع نفسه. طابق القراءات عبر event_id لا عبر الموضع. في 26 أكتوبر 2026 كان الصف الأول هو اجتماع أكتوبر usa-fed-2026-10، وبحلول 2 نوفمبر 2026 كان ذلك الاجتماع قد حُسم، فصار الصف الأول هو اجتماع ديسمبر. يجري البرنامج النصي الطرح باستخدام Decimal ثم يكرره بين استعلامين مباشرين.
import json
import os
import time
import urllib.request
from decimal import Decimal
def get(path):
req = urllib.request.Request(
"https://api.narwhalapi.com" + path,
headers={"Authorization": "Bearer " + os.environ["NARWHAL_API_KEY"]},
)
with urllib.request.urlopen(req, timeout=30) as r:
return json.load(r)
def reading(meetings):
return {m["event_id"]: (Decimal(m["expected_change_bps"]), Decimal(m["cumulative_change_bps"]))
for m in meetings}
def change(before, after):
# Match meetings by event_id: the first row is a different meeting once a decision has passed.
return {e: (after[e][0] - before[e][0], after[e][1] - before[e][1])
for e in before if e in after}
path = "/v1/predictions/policy-paths/federal-reserve/history"
days = get(path + "?start=2026-10-26T00:00:00Z&end=2026-11-03T00:00:00Z")["days"]
first, last = days[0], days[-1]
print(first["date"], "->", last["date"])
for event_id, (move, cumulative) in list(change(reading(first["meetings"]),
reading(last["meetings"])).items())[:4]:
print(event_id, f"{move:+} bps at the meeting, {cumulative:+} bps cumulative")
# Polling: take a reading, wait, take another and run the same comparison.
def poll():
return reading(get("/v1/predictions/policy-paths/federal-reserve")["meetings"])
previous = poll()
time.sleep(120)
for event_id, (move, _) in list(change(previous, poll()).items())[:2]:
print(event_id, f"{move:+} bps since the last poll")
| الاجتماع | 26 أكتوبر 2026 | 2 نوفمبر 2026 | التغير في التحرك المتوقع |
|---|---|---|---|
usa-fed-2026-12 | 19.5 bps | 18.5 bps | -1.0 bps |
usa-fed-2027-01 | 7.3 bps | 6.1 bps | -1.2 bps |
طبع الاستعلامان المباشران، بينهما دقيقتان، +0.0 bps للاجتماعين معًا. التغير الصفري قراءة صالحة، ويعني أن الأسعار لم تتحرك عند المنزلة العشرية الواحدة التي يحملها الحقل. التغير السالب يعني أن التحرك المتوقع مال نحو خفض، والتغير الموجب يعني أنه مال نحو رفع. وقيمة الحقل الأقل من الصفر تعني أن السوق يتوقع خفضًا في ذلك الاجتماع.
ما يجب التحقق منه قبل استخدام الرقم
- قارن القيم الخاصة بكل اجتماع بعضها ببعض. التغير التراكمي من 26 أكتوبر إلى 2 نوفمبر لاجتماع ديسمبر هو -2.7 bps، لكن التغير الخاص بالاجتماع هو -1.0 bps. فقد حُسم اجتماع أكتوبر في هذه الأثناء وخرجت قيمته 1.7 bps من المجموع الجاري.
- يحمل
expected_change_bpsمنزلة عشرية واحدة، لذا لا يمكن أن يظهر تغير أصغر من 0.1 bps. - تحقق من
as_ofفي كل قراءة. القراءتان اللتان لهماas_ofنفسه تأتيان من فحص المنصة نفسه. - البنك المركزي الذي لا يوجد له اجتماع مسعَّر يعيد قائمة
meetingsفارغة. - هذه الأرقام أسعار سوق. لا يقول Narwhal إن كان تغيرها يتنبأ بأي شيء، ولا تدّعي هذه الصفحة ذلك.
هل يمكنني الحصول على تنبيه بدلًا من الاستعلام الدوري؟
نعم. يشرح دليل الحصول على تنبيه عند تحرك احتمالات التنبؤ هذا الخيار. يناسب الاستعلام الدوري نصًّا برمجيًا يعمل أصلًا وفق جدول، مثل النص أعلاه، ويناسب التنبيه حدًّا تريد أن يُبلَّغ بك عند بلوغه.
كيف أملأ مخزنًا بقراءات سابقة؟
استدعِ نقطة نهاية السجل بنوافذ تصل إلى 366 يومًا، وحمّل كل إدخال في days كقراءة مؤرخة بتاريخ date الخاص به. ثم أضف الاستعلامات المباشرة من مسار السياسة. يحمل المصدران حقول الاحتمالات والتحرك نفسها، فيمكن أن تمتد المقارنة عبر نقطة الوصل. اللقطات اليومية واحدة لكل تاريخ، لذا لا يوجد صف سجل لمقارنة استعلام جرى بين لقطتين.
لماذا تغيّر الاجتماع الأول بين يومين؟
يسرد المسار الاجتماعات التي لا تزال مفتوحة. وبعد أن قرر الاحتياطي الفيدرالي في 28 أكتوبر 2026، غادر اجتماع أكتوبر القائمة وانتقل اجتماع ديسمبر إلى الصف الأول. وفي استجابة السجل، يظل إدخال 28 أكتوبر يسرد اجتماع أكتوبر أولًا، بينما يبدأ إدخال 29 أكتوبر باجتماع ديسمبر.
ما البنوك المركزية التي يغطيها المسار؟
يستجيب المسار لـ federal-reserve، وتستجيب نقطة النهاية نفسها أيضًا لـ european-central-bank وbank-of-japan وbank-of-canada وreserve-bank-of-australia. راجع احتمالات قرارات الفائدة للبنوك المركزية لمعرفة كيفية قراءة اجتماع واحد بالتفصيل.
نُشر في .