본문 바로가기
경제 금융 포털사이트 경제 금융 포털사이트

FRED 미국채 10년물 데이터 파이썬으로 수집하는 방법|DGS10 실습

금알남 읽는 시간 약 13분 조회 1
ai thumbnail infographic FRED 미국채 10년물 데이터 파이썬으로 수집하는 방법|DGS10 실습 1789198594

미국 국채 10년물 금리를 파이썬에서 바로 가져오는 가장 기본적인 방법을 정리한 글입니다. DGS10 코드의 의미부터 CSV 저장까지 한 번에 확인할 수 있습니다. FRED 데이터를 처음 다루신다면 이 글의 pandas-datareader 예제부터 실행해보시면 됩니다. API 키를 사용하는 방법도 함께 정리했습니다. 미국 금리 데이터를 직접 분석하고 싶다면 DGS10 수집부터 시작해보세요. 데이터 정리와 그래프 작성 과정까지 포함되어 있습니다.

미국 주식이나 채권, 환율을 공부하다 보면 자주 등장하는 숫자가 있습니다.

바로 미국 국채 10년물 금리입니다.

문제는 금리를 한 번 확인하는 것과 데이터를 지속적으로 분석하는 것은 전혀 다르다는 점입니다. 매번 금융 사이트에 접속해 숫자를 확인하는 방식으로는 장기간 데이터를 비교하거나 자동으로 그래프를 만들기 어렵습니다.

이럴 때 활용하기 좋은 곳이 미국 세인트루이스 연방준비은행이 운영하는 FRED입니다.

FRED에는 금리, 물가, 고용, GDP 등 수많은 경제 시계열 데이터가 정리되어 있고 파이썬에서도 데이터를 불러올 수 있습니다.

이번 글에서는 미국 국채 10년물 금리를 나타내는 대표적인 FRED 시계열인 DGS10 데이터를 파이썬으로 가져오는 방법을 처음부터 하나씩 알아보겠습니다.

파이썬을 이제 배우기 시작한 분도 그대로 복사해서 실행할 수 있도록 가장 간단한 방법부터 API를 사용하는 방법까지 함께 정리하겠습니다.

image 13

FRED DGS10이란 무엇일까?

먼저 코드부터 이해해야 합니다.

FRED에서 DGS10은 미국 국채의 10년 만기 Constant Maturity 금리를 나타내는 시계열입니다.

공식 명칭은 미국 재무부 증권의 10년 만기 Constant Maturity 시장수익률이며, 데이터 원출처는 미국 연방준비제도이사회입니다. FRED에서는 이 데이터를 일별, Percent 단위, 계절조정하지 않은 형태로 제공하고 있습니다.

여기서 초보자가 자주 혼동하는 부분이 하나 있습니다.

DGS10GS10은 이름이 비슷하지만 데이터 빈도가 다릅니다.

DGS10의 D는 Daily, 즉 일별 데이터라고 생각하면 이해하기 쉽습니다. 반면 GS10은 월별 데이터를 확인할 때 사용됩니다.

따라서 하루 단위로 미국 10년물 금리 변화를 분석하고 싶다면 DGS10이 더 적합합니다.

예를 들어 다음과 같은 분석에 활용할 수 있습니다.

  1. 미국 10년물 국채 금리 추세 확인
  2. 금리와 S&P500 움직임 비교
  3. 금리와 달러 인덱스 비교
  4. 금리와 성장주 주가 관계 분석
  5. 장단기 금리차 계산
  6. 금리 데이터 자동 업데이트

특히 경제 데이터 분석을 공부한다면 FRED의 시계열 코드를 하나씩 익혀두는 것이 좋습니다.

미국 기준금리, 소비자물가지수, 실업률 등도 동일한 방식으로 가져올 수 있기 때문입니다.

가장 쉬운 방법은 pandas-datareader 사용하기

처음 FRED 데이터를 사용하는 사람에게는 pandas-datareader 방식이 상당히 편리합니다.

공식 pandas-datareader 문서에서도 FRED 데이터를 불러오는 기능을 제공하고 있으며, 10년 만기 미국 국채 수익률 데이터를 가져오는 예제가 안내되어 있습니다.

먼저 필요한 라이브러리를 설치합니다.

pip install pandas pandas-datareader matplotlib

설치가 끝났다면 다음 코드를 실행합니다.

import pandas as pd
from pandas_datareader import data as web

start = "2020-01-01"
end = pd.Timestamp.today()

df = web.DataReader(
    "DGS10",
    "fred",
    start,
    end
)

print(df.tail())

코드를 하나씩 보면 어렵지 않습니다.

DGS10은 가져올 경제지표의 FRED 코드이고 fred는 데이터 제공처를 지정하는 부분입니다.

startend는 원하는 데이터 기간입니다.

예를 들어 2020년 이후 데이터만 분석하고 싶다면 시작 날짜를 2020-01-01로 설정하면 됩니다.

정상적으로 실행됐다면 다음과 같은 구조의 데이터프레임을 확인할 수 있습니다.

            DGS10
DATE
2026-XX-XX    X.XX
2026-XX-XX    X.XX
2026-XX-XX    X.XX

실제 값은 데이터를 조회하는 시점에 따라 달라집니다.

여기서 중요한 것은 숫자 자체보다 데이터가 날짜 + 금리 구조로 정리되어 들어왔다는 점입니다.

이 상태가 되면 pandas를 활용해 거의 모든 분석을 시작할 수 있습니다.

결측값 정리부터 CSV 저장과 그래프까지

경제 데이터에는 종종 값이 없는 날짜가 존재합니다.

미국 금융시장이 쉬는 공휴일이나 데이터가 발표되지 않는 날 등이 있기 때문입니다. FRED의 DGS10 데이터에서도 특정 날짜에 관측값이 없는 경우를 확인할 수 있습니다.

따라서 분석 전에 결측값을 확인하는 습관이 필요합니다.

print(df.isna().sum())

결측값을 제거하려면 다음 코드를 사용할 수 있습니다.

df = df.dropna()

컬럼 이름도 분석하기 쉽게 바꿔보겠습니다.

df = df.rename(
    columns={"DGS10": "US10Y"}
)

이제 데이터를 확인합니다.

print(df.head())
print(df.tail())

수집한 데이터를 엑셀이나 다른 분석 프로그램에서도 사용하고 싶다면 CSV 파일로 저장할 수 있습니다.

df.to_csv(
    "fred_dgs10.csv",
    encoding="utf-8-sig"
)

그러면 현재 파이썬 작업 폴더에 fred_dgs10.csv 파일이 생성됩니다.

데이터를 가져왔다면 그래프로 확인해보는 것도 좋습니다.

import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))

plt.plot(
    df.index,
    df["US10Y"]
)

plt.title("US 10-Year Treasury Yield")
plt.xlabel("Date")
plt.ylabel("Yield (%)")
plt.grid(True)

plt.show()

이 몇 줄만으로 장기간 미국 국채 10년물 금리 흐름을 직접 확인할 수 있습니다.

여기서 한 단계 더 나아가 이동평균선을 추가할 수도 있습니다.

df["MA20"] = (
    df["US10Y"]
    .rolling(20)
    .mean()
)

그리고 기존 금리와 이동평균을 함께 출력합니다.

plt.figure(figsize=(12, 6))

plt.plot(
    df.index,
    df["US10Y"],
    label="US10Y"
)

plt.plot(
    df.index,
    df["MA20"],
    label="20 Day MA"
)

plt.legend()
plt.grid(True)
plt.show()

이렇게 하면 단순히 데이터를 받아오는 단계를 넘어 데이터 분석으로 연결할 수 있습니다.

FRED API 키를 이용해 수집하는 방법

FRED 데이터를 조금 더 체계적으로 활용하거나 여러 경제지표를 자동으로 관리하려면 공식 FRED API를 알아두는 것이 좋습니다.

FRED API의 series/observations 기능은 특정 경제 시계열의 관측값을 가져오기 위해 제공됩니다. 공식 문서상 API 요청에는 API Key가 필요하며 JSON 등의 형식으로 결과를 받을 수 있습니다.

파이썬에서는 fredapi라는 라이브러리를 활용하는 방법도 있습니다.

먼저 설치합니다.

pip install fredapi

이후 코드는 다음과 같이 작성할 수 있습니다.

from fredapi import Fred

fred = Fred(
    api_key="YOUR_FRED_API_KEY"
)

data = fred.get_series(
    "DGS10",
    observation_start="2020-01-01"
)

print(data.tail())

fredapi는 FRED 데이터를 pandas Series 또는 DataFrame 형태로 활용할 수 있도록 도와주는 파이썬 라이브러리입니다.

다만 실제 프로젝트에서는 API Key를 코드에 그대로 작성하는 방식을 권하지 않습니다.

환경변수에 저장하는 편이 안전합니다.

import os
from fredapi import Fred

api_key = os.getenv(
    "FRED_API_KEY"
)

fred = Fred(
    api_key=api_key
)

data = fred.get_series(
    "DGS10"
)

API 키를 GitHub 같은 공개 저장소에 올리지 않는 것도 중요합니다.

FRED 공식 안내에서도 API 요청을 위해 개인 API Key를 사용하도록 규정하고 있습니다.

그렇다면 처음부터 API 방식으로 시작해야 할까요?

꼭 그렇지는 않습니다.

단순히 데이터를 가져와 분석해보는 것이 목적이라면 pandas-datareader부터 시작해도 충분합니다.

반면 여러 지표를 정기적으로 업데이트하거나 데이터 수집 프로그램을 만들 계획이라면 FRED API 구조를 익혀두는 것이 좋습니다.

자주 막히는 부분과 다음 단계

처음 FRED 데이터를 수집하면 몇 가지 부분에서 자주 막힙니다.

첫 번째는 DGS10과 GS10을 혼동하는 경우입니다.

일별 미국 국채 10년물 금리가 필요하다면 DGS10인지 먼저 확인하는 것이 좋습니다.

두 번째는 결측값입니다.

그래프나 수익률 계산 과정에서 오류가 발생한다면 df.isna().sum()으로 결측값부터 확인해보세요.

세 번째는 날짜 데이터입니다.

FRED 데이터를 가져오면 일반적으로 날짜가 인덱스로 들어옵니다.

필요한 경우 다음과 같이 일반 컬럼으로 변경할 수도 있습니다.

df = df.reset_index()

네 번째는 최신 데이터가 아직 없는 경우입니다.

경제지표는 해당 데이터의 발표 일정이나 시장 휴장일 등의 영향을 받을 수 있기 때문에 달력상의 모든 날짜에 값이 존재한다고 생각해서는 안 됩니다.

마지막으로 가장 중요한 부분은 데이터의 의미를 알고 사용하는 것입니다.

미국 국채 10년물 금리는 주식시장뿐 아니라 채권, 환율, 부동산, 기업가치 평가 등 여러 금융시장 분석에서 참고되는 지표입니다.

하지만 금리가 올랐다는 이유만으로 주가가 반드시 하락하고, 금리가 내렸다는 이유만으로 주가가 반드시 상승하는 식으로 해석하면 곤란합니다.

경제 데이터는 하나의 지표만 보는 것보다 다른 지표와 함께 비교할 때 훨씬 의미가 커집니다.

이번 글에서 만든 DGS10 데이터 수집 코드를 기준으로 앞으로 다음과 같은 데이터를 하나씩 추가해볼 수 있습니다.

  • 미국 기준금리
  • 미국 소비자물가지수 CPI
  • 미국 실업률
  • 2년물 미국 국채 금리
  • 10년물과 2년물 금리차
  • S&P500 지수
  • 달러 관련 지표

결국 파이썬 경제 데이터 분석의 시작은 복잡한 모델을 만드는 것이 아닙니다.

신뢰할 수 있는 데이터를 정확하게 가져오고, 날짜와 결측값을 정리한 뒤 반복해서 사용할 수 있는 형태로 만드는 것이 먼저입니다.

FRED의 DGS10 데이터를 직접 불러오는 것부터 시작하면 미국 금리 데이터를 수작업으로 확인하는 단계를 넘어 자신만의 경제 데이터 분석 환경을 만드는 기반을 마련할 수 있습니다.

처음이라면 오늘은 욕심내서 많은 지표를 가져오기보다 DGS10 하나만 정상적으로 수집하고 CSV로 저장해보는 것부터 시작해보세요.

그 코드가 정상적으로 작동한다면 다음 경제지표를 추가하는 것은 훨씬 쉬워집니다.

참고 자료

  • FRED DGS10 공식 데이터: 미국 연방준비제도이사회 원자료를 FRED를 통해 제공하며 단위는 Percent, 빈도는 Daily입니다.
  • FRED API 공식 문서: 경제 시계열 관측값 조회 방법과 API 파라미터를 확인할 수 있습니다.
  • FRED API Key 공식 안내: API Key 발급 및 사용 조건을 확인할 수 있습니다.
  • pandas-datareader 공식 문서: FRED 경제 데이터 호출 예제를 확인할 수 있습니다.

금알남

금알남
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.