How to Analyse Macro Data with R banner image

By Language

Quick Start Guides

How to Analyse Macro Data with R

R में httr2, jsonlite, और ggplot2 का उपयोग करके एपीआई कॉल से प्रकाशन-तैयार चार्ट तक 50 पंक्तियों के कोड में FXMacroData संकेतक समय श्रृंखला को लाने, साफ करने और दृश्य बनाने के लिए एक व्यावहारिक गाइड।

इसमें भी उपलब्ध है English

R सांख्यिकीय विश्लेषण और वित्तीय मॉडलिंग के लिए सबसे शक्तिशाली भाषाओं में से एक है और इसमें समय-श्रृंखला डेटा के साथ काम करने के लिए एक परिपक्व पारिस्थितिकी तंत्र है। यह गाइड आपको आधुनिक का उपयोग करके, आर में एफएक्समैक्रोडाटा संकेतक श्रृंखलाओं को लाने, साफ करने और विश्लेषण करने के बारे में सब कुछ बताता है। httr2 और ज्सोनलाइट अंत तक आपके पास एक पुनः प्रयोज्य आर वर्कफ़्लो होगा जो केंद्रीय बैंक के डेटा को खींचता है, एक साफ टिब्बल बनाता है, और प्रकाशन के लिए तैयार चार्ट सभी को 50 से कम लाइनों के कोड में उत्पन्न करता है।

आप क्या बनाएंगे

एक पूरी तरह से पुनः प्रस्तुत करने योग्य आर स्क्रिप्ट जो FXMacroData REST API के खिलाफ प्रमाणित करती है, कई मुद्राओं के लिए नीति दर और मुद्रास्फीति समय श्रृंखला प्राप्त करती है और उन्हें एक एकल टिब्बल में जोड़ती है, और उन्हें ggplot2 के साथ प्लॉट करती है जो एक क्वार्टो या आर मार्कडाउन रिपोर्ट में एम्बेड करने के लिए तैयार है।

पूर्व शर्तें

  • आर ≥ 4.2 और आरस्टूडियो (या कोई आर वातावरण)
  • निम्नलिखित पैकेजः httr2, jsonlite, dplyr, tidyr, lubridate, ggplot2
  • एक FXMacroData एपीआई कुंजी पर साइन अप करें /अपना नाम लिखें प्राप्त करना

यदि आपके पास पहले से आवश्यक पैकेज नहीं हैं तो एक बार स्थापित करें:

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

चरण 1 एपीआई आकार को समझें

प्रत्येक FXMacroData सूचक अंत बिंदु एक ही URL पैटर्न का पालन करता हैः

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

प्रतिक्रिया एक JSON ऑब्जेक्ट है जिसमें data सरणी जहां प्रत्येक तत्व एक है date और एक val क्षेत्र (और वैकल्पिक रूप से एक announcement_datetime उदाहरण के लिए, अमेरिकी फेडरल रिजर्व नीति दर को प्राप्त करनाः

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

यह स्वच्छ संरचना न्यूनतम परिवर्तन के साथ एक आर डेटा फ्रेम के लिए पूरी तरह से मैप करती है।

चरण 2 अपनी एपीआई कुंजी सेट करें

स्क्रिप्ट में हार्ड-कोडिंग के बजाय अपने एपीआई कुंजी को पर्यावरण चर में स्टोर करें. ~/.Renviron फ़ाइलः

FXMD_API_KEY=your_actual_api_key_here

फिर पर्यावरण को पुनः लोड करें और प्रत्येक स्क्रिप्ट के शीर्ष पर कुंजी प्राप्त करेंः

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

सुरक्षा टिप

संस्करण नियंत्रण के लिए एपीआई कुंजी को कभी भी प्रतिबद्ध न करें. .Renviron अपने .gitignore यदि आप इसे एक परियोजना निर्देशिका में रखते हैं. पुनः प्रयोज्य तैनाती के लिए, एक रहस्य प्रबंधक या आईसी पर्यावरण चर का उपयोग करें.

चरण 3 एक सामान्य फ़ॉरफ़ाइंड सहायक लिखें

के साथ httr2 आप अनुरोधों को घोषणात्मक रूप से बनाते हैं, स्पष्ट रूप से त्रुटियों को संभालते हैं, और एक एकल पाइपलाइन में JSON को डिकोड करते हैं। नीचे दिया गया फ़ंक्शन सभी तीन चरणों को एक पुनः प्रयोज्य सहायक में लपेटता हैः

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

यहाँ प्रमुख विकल्प हैंः req_error() HTTP 4xx/5xx प्रतिक्रियाओं को चुपचाप खराब डेटा वापस करने के बजाय एक R स्थिति फेंक सुनिश्चित करता है; resp_body_json(simplifyVector = TRUE) सूची के बजाय एक डेटा फ्रेम में सीधे नेस्टेड सरणी को मजबूर करता है; और as_date() से स्नेहक आपको उचित देता है Date तुरंत स्तंभ।

चरण 4 कई मुद्राओं और संकेतकों को प्राप्त करें

अब चार जी4 मुद्राओं के लिए नीति दरों को तीन साल की खिड़की में खींचने के लिए सहायक का उपयोग करें बहु-मुद्रा तुलना की तरह ही जो विचलन व्यापार निर्णयों को चलाता हैः

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>

आप अतिरिक्त संकेतकों को भी आसानी से प्राप्त कर सकते हैं। उदाहरण के लिए, नीतिगत दरों के साथ कुल मुद्रास्फीति खींचने से आपको वास्तविक दर स्प्रेड की गणना करने की अनुमति मिलती है, जो कैरी-ट्रेड पोजिशनिंग का एक प्रमुख चालक हैः

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

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

आपके द्वारा प्राप्त किए जा सकने वाले संकेतक

पूर्ण सूची पर उपलब्ध है fxmacrodata.com/api-data-docsविदेशी मुद्रा विश्लेषण के लिए प्रमुख श्रृंखलाओं में शामिल हैं नीति_दर, मुद्रास्फीति, जीडीपी, बेरोजगारी, और पीएमआई. हर श्रृंखला एक ही ढूँढने पैटर्न का उपयोग करता है बस मुद्रा और संकेतक स्लग बदलें.

चरण 5 डेटा को साफ करें और फिर से आकार दें

अधिकांश विश्लेषणों के लिए आप डेटा चाहते हैं चौड़ा प्रारूप एक स्तंभ प्रति संकेतक प्रति मुद्रा बजाय API द्वारा लौटाए गए स्टैक किए गए व्यवस्थित प्रारूप के। pivot_wider() कॉल एक कदम में यह संभालता है, और fill() केंद्रीय बैंक की घोषणाओं के विरल अवलोकनों को नियमित मासिक ग्रिड में आगे भरता हैः

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)

चरण 6 वास्तविक दर के स्प्रेड की गणना करें

वास्तविक दर का स्प्रेड नीतिगत दर घटाकर मुद्रास्फीति है सकारात्मक स्प्रेद का अर्थ है कि केंद्रीय बैंक उपभोक्ता मूल्य वृद्धि के सापेक्ष प्रतिबंधात्मक क्षेत्र में है। EURUSD वास्तविक दर अंतर EUR/USD की दिशा के सबसे मजबूत मध्यम अवधि के भविष्यवाणियों में से एक हैंः

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
  )

चरण 7 ggplot2 के साथ दृश्य बनाएं

व्यवस्थित टिब्बल तैयार होने के साथ, ggplot2 बहु-लाइन चार्ट में कुछ पंक्तियाँ होती हैं। colour सौंदर्यशास्त्रः

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

प्रयोग करना geom_step() बजाय geom_line() नीतिगत दर श्रृंखला के लिए केंद्रीय बैंक के निर्णय अलग-अलग चरण परिवर्तन हैं और एक चरण चार्ट इसे सही ढंग से दर्शाता है।

चरण 8 रिपोर्ट के लिए निर्यात

यदि आप इस चार्ट को क्वार्टो या आर मार्कडाउन दस्तावेज़ में एम्बेड कर रहे हैं, तो पुनः प्रस्तुत करने के लिए डेटा फ्रेम को सीएसवी में और इनलाइन रेंडरिंग के लिए ग्राफ को उच्च रिज़ॉल्यूशन पीएनजी में सहेजेंः

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

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

इंटरैक्टिव चमकदार डैशबोर्ड के लिए, एक ही टिब्बल सीधे में फ़ीड करता है plotly::ggplotly() शून्य घर्षण इंटरैक्टिविटी के लिए।

चरण 9 एक अनुसूचित स्क्रिप्ट के साथ स्वचालित करें

अपने विश्लेषण को मैन्युअल री-रन के बिना चालू रखने के लिए, एक स्टैंडअलोन आर स्क्रिप्ट में फ़ेच लॉजिक को लपेटें और इसे cronR (Linux/macOS) या विंडोज कार्य शेड्यूलरः

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

इसे जोड़ें रिलीज कैलेंडर अंत बिंदु केवल उन दिनों में ताज़ा करने के लिए जब उच्च प्रभाव वाले डेटा की उम्मीद की जाती है, शांत दिनों में अनावश्यक एपीआई कॉल को बचाने के लिए।

पूर्ण कार्य उदाहरण

उपरोक्त सभी स्निपेट्स एक एकल ~60-लाइन स्क्रिप्ट में संयुक्त हैं। सेट FXMD_API_KEY अपने में .Renviron, फ़ाइल चलाएँ, और आपके पास आर में मॉडलिंग के लिए तैयार एक पूरी तरह से ताज़ा मैक्रो डेटासेट है।

सारांश

आपने सीखा है कि कैसे:

  • एक पर्यावरण चर का उपयोग करके FXMacroData के साथ सुरक्षित रूप से प्रमाणीकरण करें
  • पुनः प्रयोज्य बनाओ fetch_indicator() सहायक के साथ httr2 और ज्सोनलाइट
  • के साथ बहु मुद्रा सूचक श्रृंखला खींचें और ढेर करें purrr::map_dfr()
  • पुनः आकार, आगे भरने, और के साथ व्युत्पन्न प्रसार की गणना डप्लियर और तड़का
  • प्रकाशन के लिए तैयार चरण चार्ट तैयार करें ggplot2
  • एक अनुसूचित आर स्क्रिप्ट के साथ दैनिक ताज़ा स्वचालित करें

अगले कदम के रूप में, जीडीपी, एमपीआई, और व्यापार संतुलन सभी जी10 मुद्राओं में एक पूर्ण मैक्रो स्कोरकार्ड बनाने के लिए एंडपॉइंट्स। एक ही फ़ेच हेल्पर और ggplot2 वर्कफ़्लो अपरिवर्तित लागू होता है केवल संकेतक स्लग को बदलने की आवश्यकता होती है।

AI Answer-Ready

Key Facts

Page
How To Macro Data R Analysis
Section
Articles
Canonical URL
https://fxmacrodata.com/articles/how-to-macro-data-r-analysis
Source
FXMacroData editorial and official publisher references
Last Updated
2026-04-22 12: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 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.

Blogroll