حيث تلبي البيانات الكلية الأسواق التنبؤية
سوق التنبؤات انتقلت من الفضول إلى البنية التحتية كالسهي أول بورصة توقعات تخضع لتنظيم CFTC في الولايات المتحدة يسمح لك بتداول العقود على نتائج مثل "هل مؤشر أسعار المستهلكين الأمريكي "هل ستزيد من 3.5% في شهر أبريل؟" الاحتياطي الفيدرالي تقديم أسواق النتائج الثنائية المماثلة على الأحداث الكلية مع وصول مفتوح عالمي. كلا المنصات السعر احتمال في الوقت الحقيقي وكلاهما حساسة تماما لنفس إصدارات البيانات الكلية التي تتحرك. الدولار الأمريكي مقابل اليابان- لا اليورو/دولار، وبقية مجمع العملات الأجنبية.
إذا كنت تستخدم بالفعل FXMacroData لتتبع تقويمات البنك المركزي ، ومراقبة مفاجآت مؤشر أسعار المستهلك ، وسحب تاريخ أسعار الفائدة السياسية ، لديك المكونات الخام لبناء ميزة منهجية في هذه الأسواق. يوضح لك هذا الدليل كيفية ربط النقاط: سحب بيانات ماكرو منظمة من FXMacrodata ، ورسمها إلى عقود سوق التنبؤ المفتوحة ، وبناء سير عمل قرار قابل للتكرار في Python.
بحلول نهاية هذا الدليل سيكون لديك برنامج برمجي بايثون الذي يحضر الإعلانات الكبرى القادمة من FXMacroData، يطابقها مع عقود السوق التنبؤ ذات الصلة على كالشي وبوليماركت، ويحسب إشارة اتجاهية من البيانات المفاجئة التاريخية للمساعدة في إبلاغ موقفك.
الشروط المسبقة
- مفتاح FXMacroData API اشترك هنا من أجل تجربة مجانية
- بايثون 3.10 أو أحدث مع
requestsتم تركيبها (pip install requests) - حساب كالسهي مع إمكانية الوصول إلى واجهة برمجة التطبيقات، أو محفظة بوليماركت للتحليل اليدوي.
- معرفة أساسية مع ما هو مؤشر سعر المستهلك الرواتب غير الزراعيةو سعر سعر السياسة القرارات هي.
الخطوة 1 سحب تقويم الإصدار القادم
أول شيء تحتاج إليه هو صورة واضحة عن ما هي الإعلانات القادمة ومتى. تعيد نقطة نهاية تقويم الإصدارات في FXMacroData جميع الأحداث الكبرى المقررة لعملة مع تواريخها وتوقيت الإعلام المتوقع.
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://fxmacrodata.com/api/v1"
def get_upcoming_releases(currency: str) -> list[dict]:
url = f"{BASE}/calendar/{currency}?api_key={API_KEY}"
resp = requests.get(url, timeout=10)
resp.raise_for_status()
return resp.json().get("data", [])
usd_calendar = get_upcoming_releases("usd")
for event in usd_calendar[:5]:
print(event["indicator"], event.get("announcement_datetime"), event.get("next_release_date"))
كل إدخال يحمل indicator القذف (مثل inflation- لا non_farm_payrolls- لا policy_rate) ، وقت الإعلان المقرر كختم زمني يونيكس، وتاريخ الإصدار المنتظر التالي. هذا هو المدخل الأساسي لتحليل عقود سوق التنبؤ المفتوحة إذا تم حل عقد على "CPI لشهر مارس 2026" فأنت بحاجة إلى تاريخ الإعلام الدقيق لقياس أفق الوقت الخاص بك بشكل صحيح.
الخطوة 2 احصل على بيانات الإعلانات التاريخية وحسب السلسلة المفاجئة
احتمالية أسعار الأسواق التنبؤية بناءً على المعلومات المتاحة. إذا كان بإمكانك حساب مؤشر مفاجأة في التاريخ الأخير لمؤشر معين كم مرة تفوز الطبعات الفعلية على الإجماع ، وبكم لديك خط أساس لتحديد موقفك. سحب آخر اثني عشر شهراً من البيانات الفعالة مقابل التنبيه من نقطة النهاية للإعلانات:
def get_announcement_history(currency: str, indicator: str, limit: int = 24) -> list[dict]:
url = f"{BASE}/announcements/{currency}/{indicator}?api_key={API_KEY}&limit={limit}"
resp = requests.get(url, timeout=10)
resp.raise_for_status()
return resp.json().get("data", [])
def compute_surprise_series(records: list[dict]) -> list[dict]:
surprises = []
for r in records:
actual = r.get("actual_value")
consensus = r.get("predicted_value")
if actual is not None and consensus is not None:
surprises.append({
"date": r["date"],
"actual": actual,
"consensus": consensus,
"surprise": actual - consensus,
"direction": "beat" if actual > consensus else "miss",
})
return surprises
cpi_history = get_announcement_history("usd", "inflation", limit=24)
cpi_surprises = compute_surprise_series(cpi_history)
beat_count = sum(1 for s in cpi_surprises if s["direction"] == "beat")
miss_count = len(cpi_surprises) - beat_count
print(f"CPI beat rate (last 24 releases): {beat_count}/{len(cpi_surprises)} = {beat_count/len(cpi_surprises):.0%}")
- ... predicted_value يحتوي هذا الموقع على إشارة توافقية مماثلة لتسعير السوق التنبؤ، لذلك ستكون سلسلة المفاجأة الخاصة بك قابلة للمقارنة مباشرة مع الاحتمال الضمني المضمن في عقد كالسيه مؤشر سعر السعر.
الخطوة 3 مؤشرات خريطة لعقود السوق التنبؤية
كل من كالشي وبوليماركت يهيئان عقودها الكبرى حول عتبات مؤشر محددة. الخريطة بسيطة بمجرد معرفة خفافيش مؤشر FXMacroData. أدناه جدول مرجعية للعقود الأكثر سيولة:
| نوع عقد السوق المتوقع | مؤشر FXMacroData slug | العملة | مستندات API |
|---|---|---|---|
| هل سيزيد مؤشر أسعار المستهلكين عن %؟ | inflation |
الدولار الأمريكي | /api-data-docs/USD/التضخم |
| هل سيزيد مؤشر سعر المستهلك من %X؟ | core_inflation |
الدولار الأمريكي | /api-data-docs/usd/core_inflation التضخم الأساسي |
| هل سيتجاوز NFP X000؟ | non_farm_payrolls |
الدولار الأمريكي | /api-data-docs/usd/غير_فلاح_الرواتب |
| هل سيقوم الاحتياطي الفيدرالي بتخفيضات أو احتفاظ على زيادة في المجلس؟ | policy_rate |
الدولار الأمريكي | /api-data-docs/usd/policy_rate (المعدل السياسي) |
| هل سيزيد نمو الناتج المحلي الإجمالي عن % X؟ | gdp_quarterly |
الدولار الأمريكي | /api-data-docs/usd/gdp_quarterly /api_data-doc/USD/GDP_quartally /api/data-dc/USD_GDP_QQT/GDP/GDP |
| هل ستقل البطالة عن نسبة %؟ | unemployment |
الدولار الأمريكي | /api-data-docs/USD/البطالة |
| هل سيقوم البنك المركزي الأوروبي بخفض أسعار الفائدة في الاجتماع القادم؟ | policy_rate |
اليورو | /api-data-docs/eur/policy_rate (المعدل السياسي) |
- ... تقويم الإصدار يظهر جميع جداول المؤشرات هذه في عرض واحد. عندما يدرج عقد كالشي تاريخ التسوية، والرجوع إلى ذلك مع next_release_date من تقويم FXMacroData للتأكد من أنها تحل على نفس الإعلان الأساسي. عدم التطابق حيث يتم حل العقد على تقدير مسبق مقابل مراجعة نهائية هي مصدر شائع لخطأ التسعير.
الخطوة 4 استفسار النقطة النهائية للتنبؤات لربط الإجماع
توفر النقطة النهائية للتنبؤات من FXMacroData قيم توافقية متطلعة إلى المستقبل مشتقة من بيانات المسح الرسمية نفس المسوحات التي يستخدمها المشاركون في سوق التنبؤ لتثبيت سوابقهم. استخدم الإجماع الحالي للإصدار القادم لمؤشر أسعار المستهلك ومقارنته مع الحد الأدنى في عقد كالشي المفتوح:
def get_predictions(currency: str, indicator: str) -> list[dict]:
url = f"{BASE}/predictions/{currency}/{indicator}?api_key={API_KEY}"
resp = requests.get(url, timeout=10)
resp.raise_for_status()
return resp.json().get("data", [])
cpi_predictions = get_predictions("usd", "inflation")
# Most recent upcoming prediction
if cpi_predictions:
next_pred = cpi_predictions[0]
for p in next_pred.get("predictions", []):
print(f"Source: {p['prediction_source_label']}")
print(f"Consensus: {p['predicted_value']}%")
print(f"For release date: {next_pred['date']}")
شكل استجابة العينة:
{
"currency": "USD",
"indicator": "inflation",
"count": 1,
"prediction_count": 1,
"data": [
{
"announcement_id": "usd_inflation_2026-05-14",
"currency": "usd",
"indicator": "inflation",
"date": "2026-05-14",
"announcement_datetime": 1747216200,
"predictions": [
{
"predicted_value": 2.8,
"prediction_type": "market_consensus",
"prediction_source": "philly_fed_spf",
"prediction_source_label": "Philadelphia Fed Survey of Professional Forecasters"
}
]
}
]
}
إذا كان عقد كالشي يسأل "هل سيبلغ مؤشر أسعار المستهلك في أبريل أعلى من 2.9%؟" وتشكل إجماع SPF 2.8%، فإن لديك الآن نقطة انطلاق مقدرية: يقول الإجماع لا مع عازل بنسبة 0.1 نقطة مئوية. ثم تخبرك سلسلة المفاجأة التاريخية من الخطوة 2 بعد ذلك بمدى تكرار فوز مؤشر الأسعار على الإجابة بأكثر من 0.1 نقاط مئوية، مما يمنحك معدل أساسي تجريبي للمقارنة مع احتمالية العقد الضمنية.
الخطوة 5 بناء إشارة القرار الكاملة
جمع المدخلات الثلاثة في وظيفة قرار واحدة. المنطق بسيط عمداً الهدف هو إشارة قابلة للإعادة، تستند إلى البيانات، وليس مربع أسود:
def prediction_market_signal(
currency: str,
indicator: str,
contract_threshold: float,
contract_direction: str, # "above" or "below"
lookback: int = 24,
) -> dict:
"""
Returns a signal dict for a prediction market contract.
contract_threshold: the numeric threshold in the contract question
(e.g. 2.9 for "Will CPI exceed 2.9%?")
contract_direction: "above" means YES if actual > threshold
"""
history = get_announcement_history(currency, indicator, limit=lookback)
surprises = compute_surprise_series(history)
predictions = get_predictions(currency, indicator)
consensus = None
release_date = None
if predictions:
latest_preds = predictions[0].get("predictions", [])
if latest_preds:
consensus = latest_preds[0]["predicted_value"]
release_date = predictions[0]["date"]
# Base rate: how often did actual exceed the threshold historically?
actuals_above = sum(1 for r in history if r.get("actual_value") is not None
and r["actual_value"] > contract_threshold)
base_rate = actuals_above / len(history) if history else None
# Surprise bias: mean surprise (positive = beat)
mean_surprise = (sum(s["surprise"] for s in surprises) / len(surprises)
if surprises else None)
# Directional signal
if consensus is not None:
buffer = consensus - contract_threshold # positive = consensus above threshold
signal = "NO" if (contract_direction == "above" and buffer > 0) else "YES"
else:
signal = "NEUTRAL"
return {
"currency": currency.upper(),
"indicator": indicator,
"contract_threshold": contract_threshold,
"contract_direction": contract_direction,
"consensus": consensus,
"release_date": release_date,
"historical_base_rate_above_threshold": base_rate,
"mean_surprise_last_n": mean_surprise,
"lookback": lookback,
"signal": signal,
}
result = prediction_market_signal(
currency="usd",
indicator="inflation",
contract_threshold=2.9,
contract_direction="above",
lookback=24,
)
import json
print(json.dumps(result, indent=2))
مثال الناتج:
{
"currency": "USD",
"indicator": "inflation",
"contract_threshold": 2.9,
"contract_direction": "above",
"consensus": 2.8,
"release_date": "2026-05-14",
"historical_base_rate_above_threshold": 0.33,
"mean_surprise_last_n": 0.04,
"lookback": 24,
"signal": "NO"
}
اقرأ هذا على النحو التالي: الإجماع هو 2.8% (أقل من عتبة 2.9%) ، ومعدل الأساس التاريخي لـ 24 إصدارًا لطباعة مؤشر أسعار المستهلك فوق 2.9% هو 33٪ ، وكان متوسط المفاجأة تحيزًا متواضعًا + 0.04 نقطة إلى الأعلى. الإشارة الخام هي لا ، ولكن مزيج من المعدل الاساسي والتحيز المفجئ يخبرك أن هذا ليس مقنعًا للغاية ضبط حجم الموقف وفقًا لذلك.
Step 6 — Extend to non-USD and cross-market contracts
أسواق التنبؤات تدرج بشكل متزايد العقود على الأحداث الكلية غير الدولار الأمريكي: قرارات البنك المركزي الأوروبي، مؤشر أسعار المملكة المتحدة، سياسة بنك اليابان، والتوظيف الأسترالي. تغطي FXMacroData كل هذه من خلال نفس هيكل النقطة النهائية تبادل رمز العملة والشريحة المؤشرة ويتطابق سير العمل.
# ECB rate decision signal
ecb_signal = prediction_market_signal(
currency="eur",
indicator="policy_rate",
contract_threshold=3.15, # "Will ECB rate fall below 3.15%?"
contract_direction="below",
lookback=12,
)
# UK inflation signal
uk_cpi_signal = prediction_market_signal(
currency="gbp",
indicator="inflation",
contract_threshold=2.5,
contract_direction="above",
lookback=18,
)
# Australian employment signal
aus_employment_signal = prediction_market_signal(
currency="aud",
indicator="employment",
contract_threshold=30.0, # thousands, "Will employment add 30K+?"
contract_direction="above",
lookback=18,
)
- ... اليورو/دولار و جنيه استرليني مقابل دولار أمريكي لوحة التحكم تظهر تاريخ أسعار السياسة واتجاه مؤشر أسعار المستهلك لكل زوج، مما يتيح لك فحص سياقي مرئي قبل الالتزام بموقف. البنك المركزي الأوروبي وقد خفضت باستمرار على مدى الاجتماعات الأربعة الأخيرة، عقد يسأل "هل سيقلل البنك المركزي الأوروبي في يونيو؟" لديه ديناميكيات مختلفة جدا من أسعار الفائدة الأساسية من واحد يسأل
الخطوة 7 مراقبة وضع COT كطبقة تأكيد
لا يتم تداول عقود كالسهي وبوليماركت على النتائج الكلية بشكل معزول الموقع المضاربة في العقود الآجلة للعملات الأجنبية غالبا ما تعكس نفس الآراء الاتجاهية. لوحة أدوات COT إذا كانت المواصفات صافية طويلة USD وشارة CPI هي لا (أقل من الحد الأدنى) ، هناك حافة مزدوجة محتملة: قد يستحق عقد السوق التنبؤ التلاشي، وقد يكون موقف العملات الأجنبية أيضا عرضة للضغط.
سحب بيانات COT برمجيا لتشمل في إطار إشارة الخاص بك:
def get_cot(currency: str) -> list[dict]:
url = f"{BASE}/cot/{currency}?api_key={API_KEY}&limit=4"
resp = requests.get(url, timeout=10)
resp.raise_for_status()
return resp.json().get("data", [])
usd_cot = get_cot("usd")
if usd_cot:
latest = usd_cot[0]
net_position = latest.get("net_position")
print(f"USD spec net position (latest week): {net_position:+,.0f} contracts")
وضع كل شيء معا
سير العمل الكامل يبدو هكذا:
- اسحب تقويم الإصدار لتحديد الإعلانات القادمة وأوقاتها المقررة.
- تاريخ الإعلان عن المباراة عقود السوق المفتوحة للتنبؤ على كالشي أو بوليماركت
- أحضر توقعات النتيجة للقيمة المتفق عليها الحالية
- إحصائي سلسلة مفاجأة تاريخية لقياس التحيز الاتجاهي ومعدل الأساس.
- تولّد إشارة الاتجاه من خلال مقارنة الإجماع مع عتبة العقد.
- طبقة اخرى تحديد موقع COT من العقود الآجلة للعملات الأجنبية كإشارة تأكيد.
- قم بتقييم موقفك بناءً على الفجوة بين الاحتمالات الضمنية في العقد وتقديرك التجريبي للسعر الأساسي.
يقدم FXMacroData مستوى ثان
announcement_datetime طوابع زمنية لكل إصدار مهمة للغاية لأسواق التنبؤ التي يتم حلها في غضون ثوان من الطباعة الرسمية. تحقق دائمًا من أن مصدر القرار المعلن في العقد (على سبيل المثال "BLS CPI لشهر مارس 2026 ، الإصدار الأول") يطابق تمامًا مؤشر FXMacroData وعلامة التحديث التي تقوم باستعلامها. يتم تخزين التقديرات المسبقة والمراجعات النهائية كنقاط بيانات منفصلة.
إبدأ
جميع النقاط النهائية المستخدمة في هذا الدليل متوفرة في تجربة مجانية لا تحتاج إلى بطاقة ائتمانية. مؤشرات الدولار الأمريكي بما في ذلك مؤشر أسعار المستهلكين، NFP، الناتج المحلي الإجمالي، البطالة، PCE الأساسية، ومعدل السياسة كلها متاحة على المستوى المجانية. المؤشرات غير الدولارية وبيانات COT تتطلب خطة مهنية.
- اشترك واحصل على مفتاح API الخاص بك. / اشترك
- تقويم الإصدار. / لوحة التحكم/ تقويم الإصدارات
- كتالوج مؤشر الدولار الأمريكي. /api-data-docs/usd
- لوحة أدوات COT. / لوحة التحكم/مربع