تغطية الأسواق الناشئة غير متساوية، لذا تحتاج المقارنة إلى اختبار للتغطية. تعيد Narwhal التضخم الشهري وسعر الفائدة الرئيسي ونمو الناتج المحلي الإجمالي لإندونيسيا والبرازيل، وسلاسل World Bank السنوية للدول التي لا تحتوي مساراتها الشهرية على بيانات.
طلب التضخم لسوق ناشئة واحدة
curl -s "https://api.narwhalapi.com/v1/economics/IDN/inflation" \
-H "Authorization: Bearer $NARWHAL_API_KEY"{
"country": "IDN",
"period": "2026-09",
"year_over_year": "3.28",
"month_over_month": "0.3",
"released_on": "2026-10-29",
"source": {
"publisher": "Statistics Indonesia (BPS)",
"distributor": "OECD"
}
}year_over_year وmonth_over_month نسبتان مئويتان، وperiod هو الشهر المغطى، وreleased_on هو يوم صدور الرقم. وعندما يكون مكتب الإحصاء معروفا، يذكر source الجهة الناشرة والجهة الموزعة. مسار سعر الفائدة الرئيسي له الشكل نفسه لكل دولة: أعاد GET /v1/economics/{country}/central-bank/policy-rate القيمة rate 5.75 لإندونيسيا مع instrument هو bi_rate، و13.75 للبرازيل مع instrument هو selic_target. ويأتي النمو من GET /v1/economics/{country}/gdp-growth.
اختبار الدول التي تستجيب
تختلف التغطية باختلاف الدولة والسلسلة، لذا اختبر كل زوج بدلا من افتراض اكتمال المجموعة. هذه نتائج HTTP لست أسواق ناشئة كبيرة.
| الدولة | التضخم | سعر الفائدة الرئيسي | نمو الناتج المحلي الإجمالي | البطالة |
|---|---|---|---|---|
| إندونيسيا (IDN) | 200 | 200 | 200 | 404 |
| البرازيل (BRA) | 200 | 200 | 200 | 404 |
| المكسيك (MEX) | 200 | 404 | 200 | 200 |
| الهند (IND) | 404 | 404 | 200 | 200 |
| جنوب أفريقيا (ZAF) | 404 | 404 | 200 | 200 |
| تركيا (TUR) | 404 | 404 | 404 | 404 |
يحمل الرمز 404 رمز المشكلة series_not_found. ويعني أن هذا المسار لا يحتوي على سلسلة منشورة لتلك الدولة، فاعتبره فجوة وتابع. شغّل الحلقة نفسها على أي رموز دول أخرى تحتاجها قبل تصميم الجدول، لأن تشغيلا واحدا يبين أي خلايا الشبكة يمكن ملؤها من المسارات الشهرية وأيها يحتاج إلى البديل السنوي.
قراءة النمو للدول نفسها
يعيد GET /v1/economics/{country}/gdp-growth الحقول year_over_year وquarter_over_quarter وperiod وreleased_on. تختلف تواريخ الإصدار كثيرا بين الدول، لذا اطبع released_on بجانب الرقم.
| الدولة | الفترة | على أساس سنوي | على أساس ربع سنوي | تاريخ الإصدار |
|---|---|---|---|---|
| إندونيسيا | 2026-Q2 | 5.3 | 1.3 | 2026-10-30 |
| البرازيل | 2026-Q2 | 1.9 | 0.5 | 2026-10-30 |
| المكسيك | 2026-Q2 | 1.9 | 1.4 | 2026-08-24 |
| جنوب أفريقيا | 2026-Q2 | 0.9 | -0.2 | 2026-09-08 |
تحتوي استجابة جنوب أفريقيا على year_over_year_not_seasonally_adjusted، وتحتوي استجابة الهند على not_seasonally_adjusted. اقرأ هاتين العلامتين قبل وضع دولتين في رسم بياني واحد.
سد الفجوات ببيانات World Bank السنوية
حتى عندما لا يحتوي المسار الشهري على سلسلة، قد يحتفظ الفهرس بسلسلة سنوية. يبحث GET /v1/economics/catalogue بالمعاملين q وsource. والبحث عن التضخم في المصدر wdi يعيد id_template فيه خانة {country}. استبدل الخانة برمز الدولة من ثلاثة أحرف صغيرة، مثل wdi:fp.cpi.totl.zg/ind للهند.
curl -s "https://api.narwhalapi.com/v1/economics/catalogue?source=wdi&q=inflation&limit=1" \
-H "Authorization: Bearer $NARWHAL_API_KEY"{
"results": [
{
"id_template": "wdi:fp.cpi.totl.zg/{country}",
"source": "wdi",
"title": "Inflation, consumer prices (annual %)",
"frequency": "annual",
"unit_label": "Inflation, consumer prices (annual %)"
}
]
}اقرأ المشاهدات عبر GET /v1/economics/catalogue/series/observations?id=... مع استخدام start وend كسنوات للسلسلة السنوية. تكرر كل استجابة attribution وlicence_url، فاحتفظ بهما بجانب أي رسم بياني. تركيا اختبار جيد لأن المسارات الشهرية لا تحتوي على شيء لها.
curl -s "https://api.narwhalapi.com/v1/economics/catalogue/series/observations?id=wdi:fp.cpi.totl.zg/tur&start=2024&end=2025" \
-H "Authorization: Bearer $NARWHAL_API_KEY"{
"id": "wdi:fp.cpi.totl.zg/tur",
"title": "Inflation, consumer prices (annual %), Turkiye",
"country": "TUR",
"frequency": "annual",
"unit_label": "Inflation, consumer prices (annual %)",
"attribution": "World Bank, World Development Indicators, CC BY 4.0. Values normalised by Narwhal.",
"observations": [
{
"period": "2024",
"value": "58.5064492168435"
},
{
"period": "2025",
"value": "34.8811700293777"
}
]
}وضع الدول جنبا إلى جنب
- اطلب البيانات الشهرية أولا يطلب السكربت لكل دولة التضخم وسعر الفائدة الرئيسي. ويعيد
Noneعند الحصول على 404. - الرجوع إلى السلسلة السنوية إذا غاب التضخم الشهري، يقرأ السكربت سلسلة World Bank السنوية لعام 2025 ويضع على السطر تسمية سنوي. ويعيد المحاولة مرة واحدة عند الحصول على 503.
- حساب الفارق عندما يتوفر التضخم وسعر الفائدة الرئيسي معا، يطبع سعر الفائدة الرئيسي ناقص التضخم بالنقاط المئوية.
import os import time import requests BASE = "https://api.narwhalapi.com" HEAD = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} def get(path, **params): for _ in range(2): r = requests.get(BASE + path, params=params, headers=HEAD, timeout=15) if r.status_code != 503: break time.sleep(3) if r.status_code == 404: return None r.raise_for_status() return r.json() for c in ("IDN", "BRA", "MEX", "IND", "ZAF", "TUR"): infl = get(f"/v1/economics/{c}/inflation") rate = get(f"/v1/economics/{c}/central-bank/policy-rate") if infl: line = f"{c} inflation {infl['year_over_year']}% ({infl['period']})" else: wb = get("/v1/economics/catalogue/series/observations", id=f"wdi:fp.cpi.totl.zg/{c.lower()}", start="2025", end="2025") v = wb["observations"][0] line = f"{c} inflation {float(v['value']):.2f}% (annual {v['period']}, World Bank)" if rate: line += f" | policy rate {rate['rate']}%" if infl: line += f" | gap {float(rate['rate']) - float(infl['year_over_year']):.2f}" else: line += " | no policy rate" print(line)
طبع التشغيل ما يلي.
| الدولة | التضخم | الأساس | سعر الفائدة الرئيسي | سعر الفائدة الرئيسي ناقص التضخم |
|---|---|---|---|---|
| IDN | 3.28% | شهري، 2026-09 | 5.75% | 2.47 |
| BRA | 4.58% | شهري، 2026-09 | 13.75% | 9.17 |
| MEX | 3.45% | شهري، 2026-09 | لا شيء | لا شيء |
| IND | 2.40% | سنوي، 2025 | لا شيء | لا شيء |
| ZAF | 3.21% | سنوي، 2025 | لا شيء | لا شيء |
| TUR | 34.88% | سنوي، 2025 | لا شيء | لا شيء |
لا ترتب الصفوف السنوية مع الشهرية. فمعدل التغير السنوي لشهر واحد ومعدل سنة كاملة يغطيان مدتين مختلفتين، لذا يوضع عمود Basis بجانب كل رقم.
لماذا يبدو فارق الفائدة في البرازيل أكبر بكثير منه في إندونيسيا؟
الفارق هو سعر الفائدة الرئيسي ناقص التضخم على أساس سنوي، أي 13.75 ناقص 4.58 للبرازيل و5.75 ناقص 3.28 لإندونيسيا. وهو فرق بسيط بين رقمين منشورين. وللصيغة الدقيقة التي تقسم واحدا زائد السعر على واحد زائد التضخم، راجع حساب سعر الفائدة الحقيقي.
هل يمكنني الحصول على دولة بلا سلسلة بتغيير المسار؟
لا تغطي المسارات الشهرية كل الدول. ابحث في الفهرس عن سلسلة بالمعنى نفسه، كما في مثال تركيا، واقرأ frequency الخاص بها قبل مقارنتها برقم شهري.
لماذا أعاد طلب الفهرس الرمز 503؟
قد تعيد سلسلة World Bank التي لم تُقرأ من قبل الرمز 503 مع الرمز upstream_busy. وقد نجح طلب ثان بعد ثوان قليلة للسلسلة التي اختُبرت، لذا ينتظر السكربت ويعيد المحاولة مرة واحدة. أما بحث الفهرس نفسه فاستجاب بـ 200 في كل مرة، وظهر 503 عند قراءة السلسلة.
نُشر في .