질문이나 문제가 있나요? GitHub Discussions에 남겨 주세요.

Frankfurter의 CSV 엔드포인트는 DataFrame에 바로 로드되므로, 환율을 가져오는 데 한 줄이면 됩니다. 간단한 시장 환율 조회 대신 Frankfurter를 쓰는 이유는 재현성입니다. 제공 기관 하나를 고정하면 과거 데이터가 공표된 그대로 유지되므로, 오늘 실행한 백테스트가 작년에 실행한 결과와 일치합니다.

빠른 시작

read_csv에 CSV 엔드포인트를 지정하세요:

import pandas as pd

df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur,gbp")

대상 통화별로 한 행씩 담긴 date,base,quote,rate 프레임을 받습니다.

금액 환전

CSV는 환전된 총액이 아니라 환율을 제공합니다. rate 열에 금액을 곱하세요. pandas 없이 값 하나만 필요하면 requests로 단일 환율 엔드포인트를 호출하세요:

import requests

rate = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur").json()["rate"]
total = 100 * rate

공식 제공 기관 고정

기본적으로 모든 제공 기관을 종합한 환율을 받습니다. providers를 추가해 기관 하나를 고정하면 분석을 감사할 수 있는 상태로 유지할 수 있습니다. 많은 관할 지역이 외화 금액을 환산할 때 자국 중앙은행이 공표한 환율을 요구합니다.

df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur&providers=ecb")
ECB
유럽중앙은행 기준 환율. EU 부가가치세와 관세의 표준입니다.
NBP
폴란드 국립은행. 폴란드 부가가치세와 법인세는 NBP 환율로 환산합니다.
CNB
체코 국립은행 고시 환율. 체코 회계와 세무에 사용됩니다.
BCB
브라질 중앙은행 PTAX. 브라질 계약과 세무의 기준입니다.
BANXICO
멕시코 중앙은행 FIX 환율. 미국 달러 채무 결제에 사용됩니다.

모든 제공 기관을 살펴보세요. 고정한 제공 기관은 자체 공표 일정을 따르므로, 최신 환율이 종합 환율보다 하루 늦을 수 있습니다.

과거 시계열

기간에는 from을, 월별 한 행에는 group=month를 사용하세요. 날짜 열을 파싱해 인덱스로 설정한 뒤 차트를 그리거나 리샘플링하세요. 종합 환율의 과거 데이터는 새 데이터가 들어오면 조금씩 바뀔 수 있으므로, 재현이 필요한 작업에는 제공 기관을 고정하세요.

df = pd.read_csv(
    "https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd&quotes=gbp&providers=bbk&group=month",
    parse_dates=["date"],
    index_col="date",
)
df["rate"].plot()

이 쿼리는 도이치 분데스방크 아카이브에서 1949년까지의 미국 달러 대 영국 파운드 환율을 가져옵니다. 2.80달러의 케이블 페그가 수년간 유지되다가 1967년에 깨지는 모습을 볼 수 있습니다. 깊은 과거 데이터는 분데스방크의 프랑크푸르트 고시 환율에서 나옵니다. 1948년부터의 달러 대 마르크, 1949년부터 1970년까지의 대부분의 달러 교차 환율이 여기에 포함됩니다. 1999년부터는 유럽중앙은행이 이어받으므로, 현대의 연속된 시계열에는 기본 종합 환율이나 providers=ecb를 사용하세요.