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
Bagaimana Kami Memvalidasi Keakuratan Makro Data Sebelum Melayani image
Share headline card X LinkedIn Email
Download

Builders

Engineering

Bagaimana Kami Memvalidasi Keakuratan Makro Data Sebelum Melayani

Sebuah tampilan di dalam pipa validasi data multi-tahap yang memastikan setiap indikator makro yang dilayani oleh FXMacroData akurat, tepat waktu, dan konsisten dari pemeriksaan asupan awal dan skema hingga penyaringan outlier, rekonsiliasi lintas sumber, dan aturan integritas hari kerja.

Juga tersedia dalam English
Share article X LinkedIn Email
Data Terstruktur: Artikel Pemimpin pahlawan.

Teknik

Data makro hanya berguna seperti itu tepatBerikut adalah bagaimana setiap titik data yang dilayani oleh FXMacroData melewati pipa validasi lima tahap sebelum mencapai aplikasi Anda.

Ketika bank sentral merilis keputusan kebijakan suku bunga atau biro statistik menerbitkan cetak inflasi baru, pengumuman mentah sering datang dengan kebisingan: artefak pengkodean, halaman parsial, bidang yang hilang, atau revisi yang bertentangan dengan bulan sebelumnya.

Di FXMacroData kami memperlakukan kualitas data sebagai perhatian produk kelas satu. Setiap indikator dari setiap mata uang melalui pipa validasi deterministik sebelum ditulis ke Firestore dan terpapar melalui API. Pos ini berjalan melalui pipa lapisan oleh lapisan dari saat pembawa mengunduh respon mentah hingga saat nilai menjadi dapat ditanyakan di titik akhir seperti /v1/announcements/{currency}/{indicator}.

Pernyataan dari pipa

Saluran Pipa Sekilas

① Ingest ② Schema Check ③ Range & Outlier Filter ④ Cross-Source Reconciliation ⑤ Business-Day Integrity

Tahap 1: INGEST

Tahap 1 Pengambilan: Pengambil Sumber Terstruktur

Validasi dimulai sebelum nilai tunggal diekstraksi. Setiap mata uang memiliki kelas pemanggil khusus yang menargetkan sumber utama resmi situs web bank sentral, biro statistik nasional, atau portal data pemerintah. Kami sengaja menghindari agregator sekunder di jalur pengambilan: keterlambatan mereka, persyaratan lisensi, dan revisi diam sesekali memperkenalkan ketidakpastian yang tidak dapat kita kendalikan.

Fetchers adalah kelas Python asinkron yang menerapkan async with Pada saat masuk mereka membuka aiohttp.ClientSession dengan realistis. User-Agent dan waktu yang terkontrol; pada keluar mereka menutup bersih terlepas dari apakah fetch berhasil atau diangkat. di dalam setiap fetcher, parsing ketat: HTML dianalisis dengan lxml atau BeautifulSoup menggunakan pemilih elemen yang tepat daripada regex fallbacks terhadap markup mentah, dan API JSON diakses melalui tombol aksesor yang diketik yang segera muncul jika sebuah bidang tidak ada atau diganti nama di hulu.

Kotak kode yang disorot

Kontrak pembawa kunci output yang diperlukan

{
    "date": "2026-03-31",          # ISO-8601 string tanggal
    "val": 3.5,                    # mengambang  tidak pernah string
    "announcement_datetime": "..." # UTC ISO-8601 jika tersedia
}

Kontrak output ditegakkan di perbatasan pembawa: catatan yang hilang date atau val dibuang sebelum mencapai tahap berikutnya. announcement_datetime adalah opsional pada saat dicerna tetapi diperlukan untuk titik akhir publikasi yang mengekspos waktu acara kepada pengguna API.


Tahap 2: Pemeriksaan SCHEMA

Tahap 2 Pemeriksaan Skema: Validasi Jenis dan Kejelasan

Output raw fetcher diserahkan ke validator skema yang menerapkan empat pemeriksaan pada setiap catatan:

Format tanggal

Parse sebagai tanggal ISO-8601. string yang tidak dapat diparse, tanggal masa depan di luar jendela waktu dua hari, dan tanggal sebelum 1960 semua ditolak.

Jenis nilai

val harus memaksa Python terbatas float. NaNAku akan pergi. Inf, dan string non-nomer (misalnya "n/a", string kosong) ditolak daripada dipaksa menjadi nol.

Deteksi duplikat

Jika dua rekaman berbagi yang sama (currency, indicator, date) kunci, pipa menyimpan yang terakhir ditelan dan mencatat tabrakan.

Pasangan mata uangindikator

Setiap catatan divalidasi terhadap katalog indikator yang diterbitkan. unemployment untuk mata uang yang tidak mengekspos indikator tersebut menimbulkan kesalahan dan menghentikan batch.

Kegagalan skema muncul sebagai entri Cloud Logging terstruktur yang ditandai dengan severity=ERRORAku akan pergi. stage=schema_check, dan nama pembawa yang berasal. Ini membuat cross-runing berbeda langsung di konsol GCP.


Tahap 3: Filter luar

Tahap 3 Filter Jangkauan & Outlier

Keabsahan struktural diperlukan tetapi tidak cukup. 250.0 Untuk USD CPI secara sintaksis valid tetapi jelas salah. Tahap 3 menerapkan dua pemeriksaan pelengkap untuk menangkap kesalahan semantik ini.

Batas rentang keras

Setiap indikator memiliki entri katalog yang mencakup opsional min_val Dan max_val batas yang berasal dari rentang historis yang masuk akal ditambah margin keamanan yang murah hati. -5.0 Dan 30.0 Tahun ke tahun inflasi dibatasi antara -30.0 Dan 300.0 Nilai di luar batas ini dikuarantinasikan menunggu revisi manual.

Deteksi deviasi z-score bergulir

Untuk indikator dengan setidaknya 24 bulan sejarah di Firestore, pipa menghitung rata-rata bergulir 36 bulan dan standar deviasi dan menandai setiap catatan baru yang z-score melebihi |4.0|Tidak seperti batas keras, bendera z-score tidak secara otomatis membuang catatan mereka membuat entri tinjauan dan melampirkan outlier_flag: true kolom ke dokumen Firestore sehingga pengguna API dapat secara opsional menyaring rekaman dengan tanda outlier dalam alur kerja mereka sendiri.

Mengapa 4σ bukan 3σ

Mengapa 4σ dan bukan 3σ?

Indikator makro benar-benar menunjukkan ekor lemak. Kejutan pasokan COVID-19, krisis energi 2022, dan siklus pendakian bank sentral yang cepat semuanya menghasilkan pembacaan yang jarang tetapi nyata secara statistik. Ambang 3σ akan mengasingkan data yang sah selama perubahan rezim, tepat ketika pembacaan akurat paling penting.


Tahap 4: REKONSILIASI SANGGAU

Tahap 4 Rekonsiliasi lintas sumber

Untuk subset indikator penting suku bunga kebijakan bank sentral, CPI utama, dan pengangguran pipa mempertahankan sumber sekunder untuk referensi silang terhadap. ini bukan live fallback pada saat permintaan (semua data yang dikirimkan kepada pengguna berasal secara eksklusif dari Firestore); ini adalah pemeriksaan konsistensi waktu konsumsi.

Ketika nilai primer dan sekunder untuk yang sama (currency, indicator, date) Jika nilai dasar divergen lebih dari toleransi yang dapat dikonfigurasi, peringatan akan ditimbulkan dan nilai utama akan ditahan sementara penyelidikan. 5 basis pointsUntuk CPI itu 0.1 percentage pointsToleransi sengaja sempit untuk indikator ini karena bahkan perbedaan kecil sering menunjukkan kesalahan parsing, keterlambatan pelaporan, atau konflik revisi awal vs akhir.

Desain dua kolom: primer vs sekunder

Sumber utama

  • Rilis resmi bank sentral
  • Kantor Statistik Nasional
  • Portal data pemerintah

Sumber referensi silang

  • Titik akhir resmi paralel (misalnya BIS)
  • Catatan sejarah yang ditandai revisi
  • Pemeriksaan konsistensi internal periode sebelumnya

Selain pemeriksaan silang per catatan, pipa juga berjalan Pemeriksaan kontinuitas bulan-ke-bulan: jika catatan baru mewakili perubahan lebih dari N standard deviations from the trailing 12-month average change, it is treated as a candidate revision conflict. Preliminary releases frequently differ from final revisions; the pipeline logs both values and exposes a revised flag ketika nilai tanggal diperbarui setelah publikasi pertama.


Tahap 5: INTEGRITAS HARI BISNIS

Tahap 5 Integritas Hari Kerja

Tahap validasi akhir mengatasi kendala halus namun penting: setiap announcement_datetime harus jatuh pada hari kerja yang valid di zona waktu pasar Biro statistik dan bank sentral tidak menerbitkan pengumuman pada akhir pekan atau hari libur umum jadi jika pipa menghasilkan timestamp yang mendarat pada hari Sabtu di Tokyo atau hari liburan bank di Sydney, sesuatu yang salah di hulu.

Validator memanggil. is_valid_announcement_date(currency, local_date), yang memeriksa tanggal terhadap definisi zona waktu per mata uang dan kalender liburan lengkap yang disimpan dalam basis kode. Setiap mata uang yang dilayani oleh API AUD, EUR, GBP, JPY, USD, CAD, CHF, NZD, dan semua yang lain memiliki zona waktu dan tabel liburan independen sendiri. Mata uang tidak mewarisi dari sesi FX mereka; Jumat di New York bisa menjadi Sabtu di Sydney, dan validator menangani ini dengan tepat.

Call-out gaya kode: fungsi validasi

Validasi hari kerja (disederhanakan)

def adalah_valid_announcement_date(currency: str, local_date: date) -> bool:
    tz = CURRENCY_TIMEZONE[currency]
    # Menolak akhir pekan
    if local_date.weekday() >= 5:
        kembali False
    # Menolak hari libur umum
    if local_date in _build_holiday_set(currency, local_date.year):
        kembali False
    kembali True

Ketika tanggal yang dihitung gagal pemeriksaan ini, next_valid_announcement_date Ini memastikan bahwa titik akhir kalender rilis yang dilayani kepada konsumen API selalu berisi tanggal yang dapat digunakan langsung dalam kalender perdagangan tanpa pembersihan manual. Aturan hari kerja ini juga diberlakukan oleh suite uji CI yang gagal membangun jika ada mata uang dalam katalog yang hilang zona waktu atau data liburan.

Keakuratan kalender rilis: Tanggal acara mendatang dari titik akhir kalender rilis seperti pertemuan Fed berikutnya atau keputusan suku bunga RBA dijamin jatuh pada hari kerja yang valid di zona waktu pasar mata uang. /api/v1/kalender/{mata uang} mencerminkan jadwal yang telah divalidasi ini secara langsung.


===== MEMONITORING =======

Pemantauan dan Peringatan Berkelanjutan

Melalui pipa validasi sekali tidak cukup. pipa berjalan pada jadwal dipicu oleh Cloud Tasks dan backfill workflows dan setiap run menghasilkan telemetri terstruktur yang memberi makan lapisan pemantauan.

Tanda peringatan tahap

Kegagalan pada setiap tahap pipa mengirimkan entri Cloud Logging segera untuk triage.

Hash konten

Setiap Firestore menulis termasuk content_hash untuk mendeteksi dan mendeteksi revisi upstream yang diam.

Pemeriksaan kekeringan

Pembaca mendeteksi ketika data yang disimpan lebih dari N hari tertinggal dari kisaran yang diminta dan muncul sinyal celah daripada diam-diam mengembalikan nilai usang.

Ketika pembawa gagal mengembalikan data waktu jaringan, perubahan situs hulu, atau perubahan struktur respons pipa tidak jatuh kembali ke panggilan hulu hidup pada saat permintaan. DataUnavailableError Ini mencegah data usang atau sebagian validasi dari mencapai lapisan API, bahkan sementara.


===== REVISI Penanganan ======

Mengatasi Revisi dan Restatement

revisi data makro adalah fakta kehidupan. perkiraan PDB awal direvisi dua dan tiga kali. gaji secara signifikan direvisi kembali. pipa menangani revisi secara eksplisit daripada diam-diam menulis ulang:

  • Penyimpanan cetakan pertama: Pipeline menyimpan nilai pertama untuk suatu data. (currency, indicator, date) dengan revised: false bendera.
  • Deteksi revisi: Pada kali pengambilan berikutnya, jika nilai untuk suatu tanggal telah berubah lebih dari ambang batas revisi indikator, dokumen tersebut diperbarui dan revised: true sudah diatur.
  • Pelestarian sejarah: Nilai cetakan pertama asli disimpan dalam prior_val bidang untuk tujuan audit dan perbandingan.
  • Transparansi API: - Apa? revised medan yang terekspos dalam respon API sehingga aplikasi konsumsi dapat membedakan awal dari pembacaan akhir.

Hal ini paling penting untuk indikator seperti Non-Farm Payrolls di mana cetakan awal dan revisi berikutnya dapat berbeda dengan puluhan ribu pekerjaan sinyal yang berarti dengan sendirinya bagi pedagang FX melacak narasi lapangan kerja USD melalui Endpoint dari gaji non-pertanian.


Apa artinya ini untuk konsumen API?

Apa Maknanya Bagi Konsumen API

Hasil praktis dari pipa ini bagi siapa saja yang menanyakan API:

  • Tidak. NaN atau null nilai dalam seri catatan dengan nilai yang tidak valid dikecualikan pada Tahap 2 daripada dilewati sebagai lubang.
  • Tanggal yang bisa Anda percayai setiap tanggal dalam jawaban adalah tanggal kalender yang valid pada hari kerja untuk pasar mata uang tersebut, cocok untuk digunakan langsung dalam kalender perdagangan atau mesin backtesting.
  • Stempel waktu pengumuman pada presisi kedua jika tersedia, announcement_datetime mencerminkan detik UTC yang tepat dari rilis resmi, bukan tempat penopang tengah malam.
  • Bendera revisi yang revised lapangan memungkinkan Anda membedakan apakah Anda bekerja dengan pembacaan awal atau akhir.
  • Satuan indikator konsisten Indikator tingkat selalu dalam persentase, bukan desimal (misalnya 5.25 Tidak. 0.0525), yang cocok dengan representasi di situs web resmi bank sentral.

Pertanyaan indikator tingkat kebijakan, CPI utama, pengangguran dan jawaban yang Anda terima telah melewati lima tahap.

Menutup CTA

Jelajahi data

Setiap indikator dalam katalog telah melewati pipa ini.

Referensi API →

Blogroll

AI Answer-Ready

Key Facts

Page
Macro Data Accuracy Validation Pipeline
Section
Articles
Canonical URL
https://fxmacrodata.com/id/articles/macro-data-accuracy-validation-pipeline
Source
FXMacroData editorial and official publisher references
Last Updated
2026-06-15 11:06 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 Macro Data Accuracy Validation Pipeline 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.