تُرجع البيانات التاريخية لأسعار الفائدة الأساسية بترتيب يبدأ بالأقدم، لذا يمكنك رصد التغييرات بمقارنة القراءات المتتالية. قارن rate عندما يكون السعر قيمة مفردة، أو كلا الحدين عندما يكون نطاقًا.
نفّذ ذلك باستخدام واجهة API
- اضبط مفتاح API الخاص بك اضبط متغير البيئة
NARWHAL_API_KEYفي البيئة التي ستشغّل Python. ثبّت مكتبةrequestsلذلك المفسر. بعد بدء الوصول العام، تتاح طلبات أسعار الفائدة الرئيسية ببيانات مباشرة على جميع الخطط، بما فيها Free. يستهلك كل طلب وحدة استخدام واحدة، بما في ذلك كل صفحة من السجل التاريخي. - اقرأ السعر الحالي اطلب
/v1/economics/USA/central-bank/policy-rateو/v1/economics/CAN/central-bank/policy-rate. تستخدم رموز البلدان ISO3 بالأحرف الكبيرة. تتضمن استجابة USA الحقولrate_type: "range"وlower_boundوupper_bound. وتتضمن استجابة كنداrate_type: "point"وrateوqualifier. القيم سلاسل نصية لأعداد عشرية بالنسبة المئوية سنويًا. يطبع السكربت الكامل كلتا الاستجابتين لتتمكن من فحص بنيتيهما. - اقرأ السجل التاريخي وتنقّل بين صفحاته اطلب
/v1/economics/{country}/central-bank/policy-rate/historyمعstart=2024-01-01. اقرأ الملاحظات بترتيب إعادتها، ثم مررnext_cursorبوصفهcursorحتى تصبح قيمته null. احتفظ بالقيمة السابقة عند الانتقال بين الصفحات. يستخدم السكربتparams=لترميز قيم الاستعلام. يثبت المؤشر المنشورات لمدة 24 ساعة؛ ويعيد المؤشر المنتهي الصلاحية 409. - قارن القيم المتتالية لكل ملاحظة ذات قيمة واحدة، قارن
rateبالقيمة الواحدة السابقة. وللنطاق، قارن الزوجlower_boundوupper_bound. حوّل السلاسل النصية إلى أعداد عشرية قبل المقارنة. تحدد الملاحظة الأولى خط الأساس، لذلك لا تستطيع الدالة بيان ما إذا كانت تلك الملاحظة قد تغيرت عن قيمة تسبق النطاق الزمني للسجل المطلوب. - اختر التاريخ المُعاد اطبع
effective_onعند وجوده؛ وإلا فاطبعobserved_on. تحتوي كل استجابة على حقل واحد فقط من هذين الحقلين. يصف الحقل الاختياريannounced_onتاريخ الإعلان. احتفظ بالأداة المُعادة وشكل السعر عند تخزين الملاحظات، لأن السجل التاريخي قد يحتوي على أسعار ذات قيمة واحدة ونطاقات. وتحافظ دالة المقارنة على هذا التمييز في قيمها. - شغّل السكربت يوميًا احفظ المثال الكامل باسم
track_rates.pyفي مجلدك الرئيسي. شغّله مرة واحدة بعد ضبط مفتاحك، ثم جدول تشغيله يوميًا باستخدام0 0 * * * /usr/bin/env python3 "$HOME/track_rates.py". اضبط بيئة التشغيل المجدول بمفتاح API ومتغير PATH يتيح العثور على المفسر المثبتة فيهrequests. يطبع السكربت الملاحظات المتغيرة فقط بعد معاينتي الاستجابتين الحاليتين.import json import os from decimal import Decimal import requests BASE_URL = "https://api.narwhalapi.com" START = "2024-01-01" HEADERS = { "Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}" } def get_json(path, params=None): response = requests.get( BASE_URL + path, headers=HEADERS, params=params, timeout=10, ) response.raise_for_status() return response.json() def rate_value(observation): if observation["rate_type"] == "point": return Decimal(observation["rate"]) if observation["rate_type"] == "range": return ( Decimal(observation["lower_bound"]), Decimal(observation["upper_bound"]), ) raise ValueError("Unexpected rate_type") def changes(country): path = f"/v1/economics/{country}/central-bank/policy-rate/history" params = {"start": START} previous = None result = [] while True: page = get_json(path, params=params) for observation in page["observations"]: current = rate_value(observation) if previous is not None and current != previous: date = ( observation["effective_on"] if "effective_on" in observation else observation["observed_on"] ) result.append((date, previous, current)) previous = current cursor = page["next_cursor"] if cursor is None: return result params = {"start": START, "cursor": cursor} if __name__ == "__main__": for country in ("USA", "CAN"): current = get_json( f"/v1/economics/{country}/central-bank/policy-rate" ) print(json.dumps(current, indent=2)) for date, old, new in changes(country): print(country, date, old, new)
تعيد الدالة changes(country) قائمة من الصفوف المرتبة التي تحتوي على التاريخ والقيمة القديمة والقيمة الجديدة. القيمة الواحدة عدد عشري؛ والنطاق زوج من الأعداد العشرية بترتيب الحد الأدنى ثم الحد الأعلى. وتعني القائمة الفارغة أنه لم يُعثر على تغيرات في القيمة بين الملاحظات المُعادة.
يتضمن مثال USA المحفوظ نطاقًا من 3.50 إلى 3.75 بالمئة، ساريًا منذ 11 ديسمبر 2025. تمثل الدالة ذلك النطاق بالشكل (Decimal("3.50"), Decimal("3.75")). ولا تدرج الملاحظة في نتائجها إلا إذا اختلفت القيمة المُعادة السابقة. لا يوفر المثال المحفوظ قيمة سابقة، لذلك لا يمكنه تحديد حجم التغير أو اتجاهه.
معنى التاريخ بحسب البنك
| البنك | صفوف السجل التاريخي | كيفية قراءة التاريخ |
|---|---|---|
| الاحتياطي الفيدرالي | تواريخ تغير السعر منذ 25 يونيو 2003 | effective_on هو تاريخ سريان السعر. |
| بنك الاحتياطي الأسترالي | صفوف تواريخ التغير منذ 23 يناير 1990 | effective_on هو تاريخ سريان السعر. |
| البنك الوطني التشيكي | صفوف تواريخ التغير منذ 8 ديسمبر 1995 | effective_on هو تاريخ سريان السعر. |
| بنك كندا | ملاحظات منذ 21 أبريل 2009 | observed_on هو تاريخ تسجيل المصدر للقيمة. |
| بنك نيجارا ماليزيا | ملاحظات منذ 2004 | observed_on هو تاريخ تسجيل المصدر للقيمة. |
| البنك المركزي السويدي | صفوف يومية منذ 1 يونيو 1994 | observed_on هو تاريخ الملاحظة لدى المصدر. |
| البنك المركزي النرويجي | صفوف أيام العمل منذ 1 يناير 1991 | استخدم حقل التاريخ المُعاد لكل ملاحظة. |
| Banco Central do Brasil | صفوف الأيام التقويمية منذ 5 مارس 1999 | لا تُقدَّم التواريخ التي لم يحن سريانها بعد. |
قد تكرر السويد والنرويج والبرازيل السعر نفسه في صفوف متتالية. لا تحتسب تغيرًا إلا عندما تختلف القيمة. تستخدم الولايات المتحدة وأستراليا والتشيك صفوف تواريخ التغير. وبالنسبة إلى كندا وماليزيا، قد يكون تاريخ الملاحظة لاحقًا للقرار، لذلك لا يحدد التغير المرصود تاريخ القرار.
كم مرة ينبغي أن أجري الفحص؟
لا يتغير السعر إلا عند صدور القرارات، لذلك يكفي فحص يومي. يتطلب كل فحص للسعر الحالي استدعاءً واحدًا لكل بلد، إضافة إلى استدعاء واحد لكل صفحة من السجل التاريخي تطلبها. يقرأ المثال الأسعار الحالية والسجل التاريخي لكلا البلدين؛ وهذه طلبات منفصلة.
إذا كنت تخزن النتائج السابقة، فقارن الملاحظات الجديدة بآخر قيمة مخزنة. احتفظ بخط الأساس هذا عند تضييق النطاق الزمني للسجل التاريخي، وإلا فلن تكون للملاحظة الأولى المُعادة قيمة سابقة للمقارنة.
هل يعني غياب تاريخ أن السعر لم يتغير؟
يعني غياب تاريخ عدم وجود ملاحظة مُعادة من المصدر لذلك التاريخ. لا تختلق Narwhal بيانات للأيام المفقودة. يعيد الطلب مع date=YYYY-MM-DD أحدث ملاحظة من المصدر في التاريخ المطلوب أو قبله؛ وبدون date، يستخدم اليوم الحالي بحسب UTC.
لا تحل الأسعار ذات تواريخ السريان المستقبلية محل السعر الحالي قبل موعدها. احتفظ بالتاريخ المُعاد مع القيمة عند تسجيل تغير. استخدم توثيق سعر الفائدة الرئيسي للاطلاع على عقد الاستجابة وأخطاء API عند فشل طلب.
نُشر في .
الخطوات التالية
- مرجع APIتوثيق API لأسعار الفائدة الأساسية
- تغطية أسعار فائدة البنوك المركزية
- أدلة إرشاديةقارن أسعار الفائدة الأساسية بين البلدان
أنشئ مفتاحًا مجانيًا واستدعِ واجهة API من شيفرتك. احصل على مفتاح API مجاني
