Live release feed
Sub-second macro releases for FX backtests
Point-in-time history
Official CPI, jobs, GDP, and central-bank events with point-in-time history.
USD 25/month 14-day free trial
Start Free Trial
Using FXMacroData with Prediction Markets: Kalshi and Polymarket article banner
Share headline card X LinkedIn Email
Download

Reference

Macro Education

Menggunakan FXMacroData dengan Pasar Prediksi: Kalshi dan Polymarket

Panduan langkah demi langkah untuk menghubungkan pengumuman makro FXMacroData, perkiraan konsensus, dan data posisi COT ke kontrak pasar prediksi di Kalshi dan Polymarket dengan kode Python yang bekerja.

Juga tersedia dalam English
Share article X LinkedIn Email

Di mana data makro memenuhi pasar prediksi

Pasar prediksi telah beralih dari rasa ingin tahu ke infrastruktur. Kalshi bursa prediksi pertama yang diatur CFTC di Amerika Serikat memungkinkan Anda untuk memperdagangkan kontrak pada hasil seperti "Will US CPI Lebih dari 3,5% pada bulan April?" atau "Apakah Federal Reserve Polymarket, yang berjalan di Polygon blockchain, menawarkan pasar hasil biner serupa pada acara makro dengan akses terbuka global. USD/JPYAku akan pergi. EUR/USD, dan sisanya dari kompleks FX.

Jika Anda sudah menggunakan FXMacroData untuk melacak kalender bank sentral, memantau kejutan CPI, dan menarik sejarah suku bunga kebijakan, Anda memiliki bahan baku untuk membangun keunggulan sistematis di pasar ini.

Tujuan
Pada akhir panduan ini Anda akan memiliki skrip Python yang mengambil pengumuman makro mendatang dari FXMacroData, mencocokkannya dengan kontrak pasar prediksi yang relevan di Kalshi dan Polymarket, dan menghitung sinyal arah dari data kejutan historis untuk membantu menginformasikan posisi Anda.

Persyaratan

  • Kunci API FXMacroData Langganan disini untuk uji coba gratis.
  • Python 3.10 atau lebih baru dengan requests dipasang (pip install requests)).
  • Akun Kalshi dengan akses API diaktifkan, atau dompet Polymarket untuk referensi silang manual.
  • Keterampilan dasar dengan apa yang CPI, Gaji non-perhutanan, dan suku bunga kebijakan keputusan adalah.

Langkah 1 Tarik kalender rilis mendatang

Hal pertama yang Anda butuhkan adalah gambaran yang jelas tentang pengumuman apa yang akan datang dan kapan. Endpoint kalender rilis FXMacroData mengembalikan semua acara makro yang dijadwalkan untuk mata uang, dengan tanggal dan waktu pengumuman yang diharapkan.

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"))

Setiap entri membawa indicator Slang (misalnya inflationAku akan pergi. non_farm_payrollsAku akan pergi. policy_ratejika kontrak diselesaikan pada "CPI untuk Maret 2026" Anda membutuhkan tanggal pengumuman yang tepat untuk mengukur cakrawala waktu Anda dengan benar.


Langkah 2 Mengambil data pengumuman historis dan menghitung seri kejutan

Prediksi pasar kemungkinan harga berdasarkan informasi yang tersedia. Jika Anda dapat menghitung indeks kejutan sejarah baru-baru ini untuk indikator tertentu seberapa sering cetakan aktual mengalahkan konsensus, dan berapa banyak Anda memiliki garis dasar untuk mengkalibrasi posisi Anda. Tarik dua belas bulan terakhir data aktual vs perkiraan dari titik akhir pengumuman:

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%}")

- Apa? predicted_value Ini adalah sinyal konsensus yang sama yang menanamkan harga pasar prediksi, sehingga seri kejutan Anda akan secara langsung sebanding dengan probabilitas implisit yang tertanam dalam kontrak Kalshi CPI.


Langkah 3 Indikator peta untuk kontrak pasar prediksi

Baik Kalshi dan Polymarket menyusun kontrak makro mereka di sekitar ambang batas indikator tertentu. Pemetaan mudah sekali Anda mengetahui slug indikator FXMacroData. Di bawah ini adalah tabel referensi untuk kontrak paling likuid:

Jenis kontrak pasar prediksi FXMacroData indikator slug Mata uang Dokumen API
Apakah IPC akan melebihi X%? inflation USD /api-data-docs/usd/inflasi
Apakah Core CPI akan melebihi X%? core_inflation USD /api-data-docs/usd/core_inflation
Apakah NFP akan melebihi X.000? non_farm_payrolls USD /api-data-docs/usd/non_farm_payrolls
Apakah Fed akan memotong / menahan / kenaikan di FOMC? policy_rate USD /api-data-docs/usd/policy_rate
Apakah pertumbuhan PDB akan melebihi X%? gdp_quarterly USD /api-data-docs/usd/GDP_quarterly
Apakah tingkat pengangguran akan turun di bawah X%? unemployment USD /api-data-docs/usd/pengangguran
Apakah ECB akan menurunkan suku bunga pada pertemuan berikutnya? policy_rate EUR /api-data-docs/eur/policy_rate

- Apa? Kalender rilis Jika kontrak Kalshi mencantumkan tanggal resolusi, rujuklah dengan next_release_date Tidak cocok dimana kontrak diselesaikan pada perkiraan awal versus revisi akhir adalah sumber yang umum dari harga yang salah.


Langkah 4 Menanyakan titik akhir prediksi untuk perekat konsensus

FXMacroData's prediksi endpoint memberikan nilai konsensus yang menatap ke depan yang berasal dari data survei resmi survei yang sama yang digunakan oleh peserta pasar prediksi untuk menanamkan riwayat mereka.

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']}")

Bentuk respons sampel:

{
  "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"
        }
      ]
    }
  ]
}

Jika kontrak Kalshi bertanya "Apakah April CPI cetak di atas 2,9%?" dan konsensus SPF adalah 2,8%, Anda sekarang memiliki titik awal yang dikuantifikasi: konsensus mengatakan tidak dengan buffer 0,1 poin persentase. Seri kejutan historis Anda dari Langkah 2 kemudian memberi tahu Anda berapa sering CPI telah mengalahkan konsensus lebih dari 0,1 poin persen, memberi Anda tingkat dasar empiris untuk membandingkan dengan kemungkinan tersirat kontrak.


Langkah 5 Membangun sinyal keputusan penuh

Mengumpulkan tiga input ke dalam fungsi keputusan tunggal. Logika ini sengaja sederhana tujuannya adalah sinyal yang dapat direproduksi, berbasis data, bukan kotak hitam:

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))

Contoh output:

{
  "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"
}

Baca ini sebagai: konsensus adalah 2,8% (di bawah ambang 2,9%), rasio dasar historis rilis 24 untuk cetak CPI di atas 2,9% adalah 33%, dan kejutan rata-rata telah menjadi bias ke atas +0,04 ppt. Sinyal mentah adalah NO, tetapi kombinasi rasio basis dan bias kejutan memberi tahu Anda ini bukan ukuran posisi yang sangat kuat menyesuaikan sesuai.


Langkah 6 Perluasan ke kontrak non-USD dan lintas pasar

Pasar prediksi semakin daftar kontrak pada non-USD peristiwa makro: keputusan ECB, UK CPI, kebijakan Bank of Japan, dan pekerjaan Australia.

# 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,
)

- Apa? EUR/USD Dan GBP/USD Dashboard menampilkan riwayat suku bunga kebijakan dan tren CPI untuk setiap pasangan, memberi Anda pemeriksaan konteks visual sebelum berkomitmen untuk posisi. ECB telah secara konsisten memotong selama empat pertemuan terakhir, kontrak bertanya "Apakah ECB akan memotong pada bulan Juni?" memiliki dinamika dasar yang sangat berbeda dari satu bertanya "Bukankah ECB akan menaikkan?"


Langkah 7 Memantau posisi COT sebagai lapisan konfirmasi

Kontrak Kalshi dan Polymarket pada hasil makro tidak diperdagangkan secara terpisah posisi spekulatif dalam berjangka FX sering mencerminkan pandangan arah yang sama. Panel COT Jika spesifikasi sangat panjang USD dan sinyal CPI NO (di bawah ambang), ada potensi double edge: kontrak pasar prediksi mungkin layak memudar, dan posisi FX juga mungkin rentan terhadap penyempitan.

Tarik data COT secara programmatic untuk memasukkan ke dalam kerangka sinyal Anda:

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")

Menggabungkan semuanya

Alur kerja lengkap terlihat seperti ini:

  1. Tarik Kalender rilis untuk mengidentifikasi pengumuman mendatang dan jadwal waktu mereka.
  2. Tanggal pengumuman pertandingan adalah kontrak pasar prediksi terbuka di Kalshi atau Polymarket.
  3. Ambil itu. Prediksi titik akhir untuk nilai konsensus saat ini.
  4. Menghitung seri kejutan sejarah untuk mengukur bias arah dan tingkat dasar.
  5. Menghasilkan sinyal arah dengan membandingkan konsensus dengan ambang kontrak.
  6. Opsional lapisan di Posisi COT dari FX berjangka sebagai sinyal konfirmasi.
  7. Ukur posisi Anda berdasarkan kesenjangan antara kemungkinan tersirat dalam kontrak dan perkiraan tingkat dasar empiris Anda.
Catatan penting tentang waktu resolusi
FXMacroData menyediakan tingkat kedua announcement_datetime time stamp untuk setiap rilis sangat penting untuk pasar prediksi yang diselesaikan dalam hitungan detik dari cetakan resmi. Selalu verifikasi bahwa sumber resolusi kontrak yang dinyatakan (misalnya "BLS CPI untuk Maret 2026, rilis pertama") persis sesuai dengan indikator FXMacroData dan bendera revisi yang Anda kueri. Perkiraan awal dan revisi akhir disimpan sebagai titik data terpisah.

Mulailah

Semua titik akhir yang digunakan dalam panduan ini tersedia dalam uji coba gratis tidak memerlukan kartu kredit. Indikator USD termasuk CPI, NFP, PDB, pengangguran, PCE inti, dan tingkat kebijakan semuanya dapat diakses pada tingkat gratis. Indikator non-USD dan data COT memerlukan rencana Profesional.

Blogroll

AI Answer-Ready

Key Facts

Page
FXmacrodata Prediction Markets Kalshi Polymarket
Section
Articles
Canonical URL
https://fxmacrodata.com/id/articles/fxmacrodata-prediction-markets-kalshi-polymarket
Source
FXMacroData editorial and official publisher references
Last Updated
2026-06-15 11:36 UTC

Provenance And Trust

Cite the canonical URL and source field above. Where available, this page maps to official publisher releases and timestamped updates.

Quick Q&A

What is this page about? This page explains FXmacrodata Prediction Markets Kalshi Polymarket with directly usable context for trading, research, and API workflows.

What source should be cited? Use the canonical URL and the listed source field; cite official publisher references when available.

How fresh is this content? The last updated value above reflects the page metadata or latest available data timestamp.

Can this be used in AI assistants? Yes. This section is intentionally structured for retrieval and citation in chat assistants.

Prompt Packs

Use these in ChatGPT, Claude, Gemini, Mistral, Perplexity, or Grok for consistent source-aware outputs.