pandas
Endpoint CSV serwisu Frankfurter ładuje się bezpośrednio do DataFrame, co pozwala pobrać kursy jedną linijką kodu. Powodem, dla którego warto wybrać Frankfurter zamiast losowych notowań rynkowych, jest powtarzalność: wskaż konkretne źródło, a Twój notebook pozostanie audytowalny. Kursy historyczne nie podlegają cichym korektom, więc backtest wykonany dzisiaj da identyczny wynik jak rok temu.
Szybki start
Skieruj funkcję read_csv bezpośrednio na endpoint CSV:
import pandas as pd
df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur,gbp")Otrzymujesz DataFrame date,base,quote,rate z 1 wierszem na walutę docelową.
Przeliczanie kwoty
Plik CSV zwraca kurs, a nie całkowitą przeliczoną kwotę. Pomnóż swoją kwotę przez kolumnę rate. Dla pojedynczej wartości skalarnej bez pandas odpytaj endpoint pojedynczego kursu za pomocą requests:
import requests
rate = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur").json()["rate"]
total = 100 * rateWybór oficjalnego źródła
Domyślnie otrzymujesz kurs uśredniony ze wszystkich źródeł. Dodaj parametr providers, aby przypisać konkretną instytucję, co gwarantuje pełną audytowalność analiz.
df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur&providers=ecb")ECB- Kurs referencyjny Europejskiego Banku Centralnego, standard dla podatku VAT i ceł w UE.
NBP- Narodowy Bank Polski. Polskie deklaracje VAT i CIT wymagają przeliczeń według kursu NBP.
CNB- Czeski Bank Narodowy, referencja dla czeskiej księgowości i podatków.
BCB- Banco Central do Brasil PTAX, referencja dla brazylijskich umów i podatków.
BANXICO- Kurs FIX Banco de México do regulowania zobowiązań w dolarach amerykańskich.
Zobacz wszystkie źródła. Wybrana instytucja działa według własnego harmonogramu publikacji, więc jej najnowszy kurs może być opóźniony o jeden dzień względem kursu rynkowego.
Szeregi historyczne
Użyj from dla zakresu dat oraz group=month, aby uzyskać 1 wiersz na miesiąc. Przekształć kolumnę daty, ustaw ją jako indeks i twórz wykresy. Tutaj Frankfurter pokazuje swoją wartość: długie, stabilne szeregi bez późniejszych korekt wstecznych.
df = pd.read_csv(
"https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd"es=gbp&providers=bbk&group=month",
parse_dates=["date"],
index_col="date",
)
df["rate"].plot() Pobiera to kurs dolara amerykańskiego do funta brytyjskiego aż do 1949 roku z archiwum Deutsche Bundesbank. Historyczne fixingi Bundesbanku obejmują dolara wobec marki niemieckiej od 1948 roku oraz większość innych kursów dolara od 1949 do 1970 roku. Od 1999 roku kontrolę przejmuje Europejski Bank Centralny; nowoczesne szeregi czasowe korzystają ze standardowego kursu łączonego lub providers=ecb.