R 경제 데이터를 Narwhal API로 가져오기

R과 Narwhal API로 API 키 하나만 있으면 공휴일, 발표일, 경제 데이터, 원자재 현물 가격, 환율, 예측시장 확률을 가져올 수 있습니다. 키는 .Renviron에 보관하고, httr2로 응답을 읽고, 반환된 필드를 R 스크립트에서 사용하세요.

설정할 내용

R은 httr2로 Narwhal REST API를 호출하고 JSON 응답을 읽을 수 있습니다. 재사용 가능한 narwhal() 도우미, 여섯 가지 데이터 영역 호출, pull.R로 예약할 수 있는 스크립트를 얻게 됩니다. 도우미는 기본 URL로 https://api.narwhalapi.com을 사용하며 요청마다 경로와 쿼리 매개변수를 추가합니다. Narwhal 경제 데이터에는 CPI, 인플레이션, GDP, 수익률이 있으며, 여기서의 경제 데이터 호출은 CPI 관측값을 고릅니다.

예제는 응답 영역마다 별도의 R 객체를 둡니다. 공휴일과 발표일은 레코드 목록으로 오고, CPI 관측값, 환율, 예측시장 회의도 마찬가지입니다. 원자재 예제는 price 필드 하나를 읽습니다. 계산할 필드를 고르거나 레코드를 데이터 프레임으로 바꿀 때는 이 응답 형태를 염두에 두세요.

API 키 설정

  1. 무료 키 만들기 narwhalapi.com/signup에서 키를 만드세요. Narwhal은 데이터 API 전반에 계정 하나와 API 키 하나를 사용합니다.
  2. 키를 .Renviron에 보관하기 키를 환경 변수 이름 NARWHAL_API_KEY로 .Renviron에 넣으세요. 자리 표시자를 본인의 키로 바꾸고, 키는 pull.R에 넣지 마세요. 변수 이름은 도우미에서 Sys.getenv()에 전달하는 이름과 같아야 합니다. 환경 변수 예제의 ...는 키가 들어갈 자리 표시자입니다.
    환경 변수
    NARWHAL_API_KEY=...
  3. R 패키지 설치하기 여기 있는 명령으로 httr2와 jsonlite를 설치하세요. 요청 도우미는 httr2로 GET 요청을 보내고 JSON 본문을 읽습니다.
    패키지 설치
    install.packages(c("httr2", "jsonlite"))

코드로 데이터 가져오기

이 코드를 pull.R에 저장하세요. 도우미는 Sys.getenv()로 NARWHAL_API_KEY를 읽고, Authorization: Bearer YOUR_KEY 헤더로 키를 Bearer 토큰으로 보냅니다. 각 호출은 경로를 제공하며, 날짜 범위나 통화 선택이 필요한 호출은 쿼리 매개변수도 제공합니다. 이어지는 영역별 예제에서도 같은 도우미를 사용하세요.

R, httr2 도우미와 여섯 영역
library(httr2)

narwhal <- function(path, ...) {
  request("https://api.narwhalapi.com") |>
    req_url_path_append(path) |>
    req_url_query(...) |>
    req_auth_bearer_token(Sys.getenv("NARWHAL_API_KEY")) |>
    req_perform() |>
    resp_body_json()
}

holidays <- narwhal("v1/calendars/holidays/USA/2026")$holidays
releases <- narwhal("v1/economics/calendar", countries = "USA",
                    start_date = "2026-11-01", end_date = "2026-11-30",
                    limit = 100)$releases
cpi      <- narwhal("v1/economics/USA/cpi/observations", start = "2025-09")$observations
brent    <- as.numeric(narwhal("v1/commodities/spot/BRENT/USD")$price)
fx       <- narwhal("v1/fx/rates/USD", currencies = "EUR,IDR")$rates
fed      <- narwhal("v1/predictions/policy-paths/federal-reserve")$meetings

cpi_values <- vapply(cpi, function(row) as.numeric(row$value), numeric(1))
n <- length(cpi_values)
mom <- cpi_values[n] / cpi_values[n - 1] - 1
print(round(mom * 100, 2))   # month-on-month change in percent

도우미 안에서 req_url_path_append(path)는 기본 URL에 엔드포인트 경로를 붙이고, req_url_query(...)는 쿼리 인수를 붙입니다. req_auth_bearer_token()은 환경에서 읽은 키를 받습니다. 그다음 호출이 req_perform()과 resp_body_json()을 사용해 응답 본문을 R로 반환합니다. 각 영역 예제처럼 그 본문에서 $로 이름 붙은 필드를 읽으세요.

CPI 계산은 각 관측값의 value를 숫자로 읽습니다. 반환된 목록의 마지막 값을 바로 앞의 값으로 나누고 1을 뺀 다음, 전월 대비 변화를 퍼센트로 출력합니다. 계산 밖에서 관측값의 값을 쓸 때는 period 필드를 각 관측값과 함께 두세요.

레코드 목록을 데이터 프레임으로 바꾸려면 dplyr::bind_rows 또는 do.call(rbind, lapply(x, as.data.frame))를 사용하세요. 여기서 x는 holidays, releases, cpi처럼 변환할 목록입니다. 변환에 해당 영역의 레코드가 전달되도록 먼저 응답 필드를 고르세요.

이 호출에서는 경로와 쿼리 인수를 분리해 둡니다. CPI에서는 경로가 USA CPI 관측값을 고르고 start가 시작 기간을 제공합니다. 환율에서는 경로가 USD를 고르고 currencies가 EUR와 IDR를 제공합니다. 두 호출 모두 도우미의 기본 URL과 Bearer 인증을 사용합니다.

매일 가져오기 예약하기

cron이나 Windows Task Scheduler로 Rscript pull.R를 하루에 한 번 실행하도록 예약하세요. cronR 패키지가 cron 줄을 대신 써 줄 수 있습니다. 필요한 요청은 도우미와 환경 변수 조회와 함께 pull.R에 두어, 예약된 명령이 같은 스크립트를 호출하게 하세요.

매일 실행하는 스크립트 명령
Rscript pull.R

날짜와 통화 선택은 스크립트에 쓴 그대로 유지됩니다. 예를 들어 발표일 호출은 2026년 11월을 요청하고, 공휴일 호출은 2026년 USA 공휴일을 요청합니다. 매일 일정은 이 요청들을 반복합니다. 예약 방법은 매일 데이터 가져오기 예약하기를 참고하세요.

R의 공휴일

holidays에서 2026년 USA 공휴일을 읽습니다. 각 레코드에는 date와 name이 있으므로 레코드를 데이터 프레임으로 바꿀 때 두 필드를 모두 남기세요. 이 호출은 경로에 국가와 연도를 사용하며 응답에서 공휴일 목록을 읽습니다.

공휴일 가져오기
response <- narwhal("v1/calendars/holidays/USA/2026")
holidays <- response$holidays
holidays

R의 발표일

releases에서 2026년 11월 USA 경제 발표일을 읽습니다. 요청에는 국가, 시작일, 종료일, 한도가 들어갑니다. 각 발표에는 at, period, topic, status가 있으므로 R에서 발표 레코드를 사용할 때 이 필드를 함께 두세요.

발표일 가져오기
response <- narwhal("v1/economics/calendar", countries = "USA",
                    start_date = "2026-11-01", end_date = "2026-11-30", limit = 100)
releases <- response$releases
releases

R의 경제 데이터

observations에서 2025년 9월을 시작 기간으로 하는 USA CPI 관측값을 읽습니다. 각 관측값에는 period와 value가 있습니다. 도우미 예제는 이 값들로 전월 대비 계산을 하므로, 관측값이나 그 결과를 보여 줄 때는 기간을 값 옆에 두세요.

CPI 관측값 읽기
response <- narwhal("v1/economics/USA/cpi/observations", start = "2025-09")
cpi <- response$observations
cpi

R의 원자재 현물 가격

price에서 USD 기준 Brent 현물 가격을 읽습니다. 이 호출은 경로에서 원자재와 통화를 고르고, 반환된 가격을 as.numeric()으로 변환합니다. 원자재 현물 코드에는 예를 들어 XAU, XAG, XPT, XPD, XCU, BRENT, WTI가 있습니다.

Brent 현물 가격 읽기
response <- narwhal("v1/commodities/spot/BRENT/USD")
brent <- as.numeric(response$price)
brent

R의 환율

USD를 기준 통화로, EUR와 IDR를 요청 통화로 해서 환율을 읽습니다. 응답 필드는 rates이고, 각 레코드에는 currency와 rate가 있습니다. 목록을 데이터 프레임으로 바꿀 때는 통화 필드를 환율과 함께 두세요.

환율 읽기
response <- narwhal("v1/fx/rates/USD", currencies = "EUR,IDR")
fx <- response$rates
fx

R의 예측시장 확률

meetings에서 Federal Reserve 정책 금리 경로 응답을 읽습니다. 각 회의에는 resolves_at, p_cut, p_hold, p_hike가 있습니다. 확률을 R로 읽어 올 때는 회의 필드를 함께 두고, 인하, 동결, 인상 필드 옆에 결정 시각도 남기세요.

정책 경로 회의 읽기
response <- narwhal("v1/predictions/policy-paths/federal-reserve")
fed <- response$meetings
fed

키는 어디에 두나요?

키는 .Renviron에 두고 스크립트에는 절대 넣지 마세요. 도우미는 Bearer 인증을 위해 Sys.getenv("NARWHAL_API_KEY")를 읽습니다. REST와 MCP가 키를 공유하므로, 어느 경로로 Narwhal에 접근하든 같은 계정과 키를 사용합니다.

price가 왜 문자열인가요?

십진수는 문자열로 반환됩니다. Brent 예제처럼 as.numeric()으로 price를 R 계산용 숫자로 바꾸세요. CPI 계산도 변화를 구하려고 값을 나누기 전에 각 관측값의 value를 변환합니다.

에 게시되었습니다.

다음 단계