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
Cara Menganalisis Data Makro dengan R image
Share headline card X LinkedIn Email
Download

By Language

Quick Start Guides

Cara Menganalisis Data Makro dengan R

Sebuah panduan praktis untuk mengambil, menyiapkan, dan memvisualisasikan FXMacroData indikator seri waktu dalam R menggunakan httr2, jsonlite, dan ggplot2 dari panggilan API untuk grafik siap publikasi dalam kurang dari 50 baris kode.

Juga tersedia dalam English
Share article X LinkedIn Email

R adalah salah satu bahasa yang paling kuat untuk analisis statistik dan pemodelan keuangan dan memiliki ekosistem yang matang untuk bekerja dengan data deret waktu. httr2 Dan jsonlit Pada akhirnya Anda akan memiliki alur kerja R yang dapat digunakan kembali yang menarik data bank sentral, membangun tibble yang rapi, dan menghasilkan grafik siap publikasi semua dalam kurang dari 50 baris kode.

Apa yang Akan Anda Bangun

Sebuah skrip R yang dapat direproduksi sepenuhnya yang mengotentikasi terhadap FXMacroData REST API, mengambil kebijakan tingkat dan inflasi seri waktu untuk beberapa mata uang, bergabung dengan mereka ke dalam tibble tunggal, dan plot mereka dengan ggplot2 siap untuk dimasukkan ke dalam laporan Quarto atau R Markdown.

Persyaratan

  • R ≥ 4,2 dan RStudio (atau lingkungan R lainnya)
  • Paket berikut: httr2Aku akan pergi. jsonliteAku akan pergi. dplyrAku akan pergi. tidyrAku akan pergi. lubridateAku akan pergi. ggplot2
  • Kunci API FXMacroData daftar di /langganan untuk mendapatkan satu

Instal paket yang diperlukan sekali jika Anda belum memilikinya:

install.packages(c("httr2", "jsonlite", "dplyr", "tidyr", "lubridate", "ggplot2"))

Langkah 1 Memahami Bentuk API

Setiap titik akhir indikator FXMacroData mengikuti pola URL yang sama:

GET https://fxmacrodata.com/api/v1/announcements/{currency}/{indicator}?api_key=YOUR_API_KEY

Tanggapan adalah objek JSON dengan data array dimana setiap elemen memiliki date dan val bidang (dan opsional announcement_datetime Untuk presisi waktu rilis). Misalnya, mengambil suku bunga kebijakan Federal Reserve AS:

curl "https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2022-01-01"
{
  "data": [
    { "date": "2025-03-19", "val": 4.25, "announcement_datetime": "2025-03-19T18:00:00Z" },
    { "date": "2025-01-29", "val": 4.25, "announcement_datetime": "2025-01-29T19:00:00Z" },
    { "date": "2024-12-18", "val": 4.25, "announcement_datetime": "2024-12-18T19:00:00Z" }
  ]
}

Struktur bersih ini memetakan sempurna ke kerangka data R dengan transformasi minimal.

Langkah 2 Atur kunci API Anda

Simpan kunci API Anda dalam variabel lingkungan daripada mengkode keras dalam skrip. ~/.Renviron File:

FXMD_API_KEY=your_actual_api_key_here

Kemudian muat ulang lingkungan dan mengambil kunci di bagian atas setiap skrip:

readRenviron("~/.Renviron")
API_KEY <- Sys.getenv("FXMD_API_KEY")
if (nchar(API_KEY) == 0) stop("FXMD_API_KEY is not set in .Renviron")

Tip keamanan

Jangan pernah mengikat kunci API untuk kontrol versi. .Renviron Untukmu .gitignore Jika Anda menyimpannya di direktori proyek. untuk penyebaran yang dapat direproduksi, gunakan pengelola rahasia atau variabel lingkungan CI.

Langkah 3 Tuliskan Bantuan Mengambil Generik

Dengan httr2 Anda membangun permintaan secara deklaratif, menangani kesalahan secara eksplisit, dan mendekode JSON dalam satu pipa.

library(httr2)
library(jsonlite)
library(dplyr)
library(lubridate)

BASE_URL <- "https://fxmacrodata.com/api/v1"

#' Fetch an indicator time series from FXMacroData
#'
#' @param currency  Three-letter currency code, e.g. "usd", "eur", "gbp"
#' @param indicator Indicator slug, e.g. "policy_rate", "inflation", "gdp"
#' @param start     Optional start date as "YYYY-MM-DD" string
#' @param end       Optional end date as "YYYY-MM-DD" string
#' @return A tibble with columns: date (Date), val (numeric), currency (chr), indicator (chr)
fetch_indicator <- function(currency, indicator, start = NULL, end = NULL) {
  req <- request(BASE_URL) |>
    req_url_path_append("announcements", currency, indicator) |>
    req_url_query(api_key = API_KEY) |>
    req_error(is_error = \(resp) resp_status(resp) >= 400)

  if (!is.null(start)) req <- req |> req_url_query(start = start)
  if (!is.null(end))   req <- req |> req_url_query(end   = end)

  resp <- req |> req_perform()
  rows <- resp |> resp_body_json(simplifyVector = TRUE)

  as_tibble(rows$data) |>
    mutate(
      date      = as_date(date),
      val       = as.numeric(val),
      currency  = toupper(currency),
      indicator = indicator
    )
}

Pilihan utama di sini: req_error() memastikan respon HTTP 4xx/5xx membuang kondisi R daripada diam-diam mengembalikan data yang buruk; resp_body_json(simplifyVector = TRUE) memaksa array tersayap langsung ke bingkai data bukan daftar; dan as_date() Dari pelumas memberi Anda yang tepat Date Kolom segera.

Langkah 4 Dapatkan beberapa mata uang dan indikator

Sekarang gunakan pembantu untuk menarik suku bunga kebijakan untuk empat mata uang G4 selama jendela tiga tahun persis jenis perbandingan multi-mata uang yang mendorong keputusan perdagangan divergensi:

currencies <- c("usd", "eur", "gbp", "jpy")
START      <- "2022-01-01"

# Pull policy rates for all four currencies and stack into one tibble
policy_rates <- purrr::map_dfr(
  currencies,
  \(ccy) fetch_indicator(ccy, "policy_rate", start = START)
)

# Quick check
dplyr::glimpse(policy_rates)
#> Rows: ~80
#> Columns: date <date>, val <dbl>, currency <chr>, indicator <chr>

Anda dapat mengambil indikator tambahan dengan mudah. misalnya, menarik inflasi utama bersama dengan suku bunga kebijakan memungkinkan Anda menghitung spread suku bunga riil, pendorong utama posisi carry trade:

inflation <- purrr::map_dfr(
  currencies,
  \(ccy) fetch_indicator(ccy, "inflation", start = START)
)

# Combine into one tidy frame
macro_data <- bind_rows(policy_rates, inflation)

Indikator yang dapat Anda dapatkan

Katalog lengkap tersedia di fxmacrodata.com/api-data-docsSeri kunci untuk analisis FX meliputi kebijakan_tingkatAku akan pergi. inflasiAku akan pergi. PDBAku akan pergi. pengangguran, dan PMISetiap seri menggunakan pola yang sama hanya mengubah mata uang dan slug indikator.

Langkah 5 Bersihkan dan Bentuk ulang Data

Untuk sebagian besar analisis Anda ingin data di lebar format satu kolom per indikator per mata uang daripada format rapi ditumpuk dikembalikan oleh API. pivot_wider() panggilan menangani ini dalam satu langkah, dan fill() menyalurkan pengamatan pengumuman bank sentral yang jarang terjadi ke grid bulanan reguler:

library(tidyr)

# Build a regular monthly date spine
date_spine <- tibble(date = seq.Date(as_date(START), Sys.Date(), by = "month"))

# Pivot to wide: one row per date, columns = currency_indicator
wide_data <- macro_data |>
  # Use year-month as join key so quarterly data aligns to month boundaries
  mutate(date = floor_date(date, "month")) |>
  pivot_wider(
    names_from  = c(currency, indicator),
    values_from = val,
    values_fn   = \(x) last(x)   # take latest reading within each month
  )

# Left-join onto the date spine and forward-fill sparse series
full_data <- date_spine |>
  left_join(wide_data, by = "date") |>
  fill(everything(), .direction = "down")

head(full_data)

Langkah 6 Menghitung Spread Tarif Nyata

Spread suku bunga riil adalah suku bunga kebijakan dikurangi inflasi spread positif berarti bank sentral berada di wilayah yang membatasi relatif terhadap pertumbuhan harga konsumen.

spread_data <- full_data |>
  mutate(
    real_rate_usd = USD_policy_rate - USD_inflation,
    real_rate_eur = EUR_policy_rate - EUR_inflation,
    real_rate_gbp = GBP_policy_rate - GBP_inflation,
    real_rate_jpy = JPY_policy_rate - JPY_inflation,
    # EUR minus USD spread: positive = EUR relatively less restrictive
    eur_usd_spread = real_rate_eur - real_rate_usd
  )

Langkah 7 Visualisasikan dengan ggplot2

Dengan tibble rapi siap, grafik ggplot2 multi-line mengambil beberapa baris. colour estetika:

library(ggplot2)

policy_rates |>
  ggplot(aes(x = date, y = val, colour = currency)) +
  geom_step(linewidth = 0.9) +
  scale_colour_manual(
    values = c(USD = "#2563eb", EUR = "#16a34a", GBP = "#7c3aed", JPY = "#dc2626")
  ) +
  scale_y_continuous(labels = scales::label_percent(scale = 1)) +
  labs(
    title   = "G4 Central Bank Policy Rates",
    x       = NULL,
    y       = "Policy rate (%)",
    colour  = "Currency",
    caption = "Source: FXMacroData"
  ) +
  theme_minimal(base_size = 13) +
  theme(legend.position = "bottom")

Gunakan geom_step() daripada geom_line() untuk seri suku bunga kebijakan keputusan bank sentral adalah perubahan tangga diskrit dan grafik langkah mewakili itu dengan benar.

Langkah 8 Ekspor untuk Laporan

Jika Anda menyematkan bagan ini ke dalam dokumen Quarto atau R Markdown, simpan kerangka data ke CSV untuk reproduksi dan plot ke PNG resolusi tinggi untuk rendering inline:

readr::write_csv(spread_data, "macro_spread_data.csv")

ggsave(
  filename = "policy_rates.png",
  width    = 10,
  height   = 5.6,
  dpi      = 150
)

Untuk dashboard interaktif Shiny, tibble yang sama langsung masuk ke plotly::ggplotly() untuk interaktivitas tanpa gesekan.

Langkah 9 Otomatis dengan Skrip Terjadwal

Untuk menjaga analisis Anda saat ini tanpa manual re-run, membungkus logika fetch dalam standalone R skrip dan menjadwalkan dengan cronR (Linux/macOS) atau Windows Task Scheduler:

# file: refresh_macro.R — run daily at 08:00 UTC
readRenviron("~/.Renviron")
source("fetch_helpers.R")

macro_data <- purrr::map_dfr(
  tidyr::crossing(
    currency  = c("usd", "eur", "gbp", "jpy"),
    indicator = c("policy_rate", "inflation", "unemployment")
  ),
  \(row) fetch_indicator(row$currency, row$indicator, start = "2020-01-01")
)

readr::write_csv(macro_data, paste0("data/macro_", Sys.Date(), ".csv"))
message("Refresh complete: ", nrow(macro_data), " observations written.")

Pasangkan ini dengan Tanggal akhir rilis untuk memicu pembaruan hanya pada hari-hari ketika data berdampak tinggi diharapkan, menghemat panggilan API yang tidak perlu pada hari yang tenang.

Contoh kerja lengkap

Semua cuplikan di atas digabungkan menjadi satu ~ 60 baris skrip. FXMD_API_KEY di dalam .Renviron, jalankan file, dan Anda memiliki dataset makro yang dapat diperbarui siap untuk dimodelkan di R.

Ringkasan

Anda telah belajar bagaimana:

  • Otentikasi dengan aman dengan FXMacroData menggunakan variabel lingkungan
  • Bangun yang bisa digunakan kembali. fetch_indicator() - Aku akan membantu. httr2 Dan jsonlit
  • Tarik dan tumpukan seri indikator multi-mata uang dengan purrr::map_dfr()
  • Reshape, maju-isi, dan menghitung terhasil menyebar dengan Dplyr Dan Tidyr
  • Membuat grafik langkah siap publikasi dengan ggplot2
  • Mengotomatiskan pembaruan harian dengan skrip R terjadwal

Sebagai langkah selanjutnya, jelajahi PDBAku akan pergi. PMI, dan neraca perdagangan endpoints to build a fuller macro scorecard across all G10 currencies. The same fetch helper and ggplot2 workflow applies unchanged — only the indicator slug needs to change.

Blogroll

AI Answer-Ready

Key Facts

Page
How To Macro Data R Analysis
Section
Articles
Canonical URL
https://fxmacrodata.com/id/articles/how-to-macro-data-r-analysis
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 How To Macro Data R Analysis 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.