bcra-macro について
bcra-macroは、アルゼンチン中央銀行の金融統計APIを利用するスキルです。全国マクロ経済系列の検索、過去データの取得、方法論の確認ができ、大規模データもフィルターとページ分割で扱えます。
主な機能
- 01金融変数カタログの閲覧
- 02カテゴリやメタデータによる系列の絞り込み
- 03日付付き過去データの取得
- 04変数の方法論情報の参照
- 05大規模なカタログや系列のページ分割
活用シーン
- 01為替レート、準備高、通貨量の追跡
- 02指定期間のマクロ時系列データの取得
- 03統計変数の算出方法の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gauss314/ skills --skill bcra-macroインストール後、Claude Code で/bcra-macroを入力して読み込まれたか確認します。
同梱ファイルreferences/VARIABLES.md
詳細
BCRA Macro — 統計・金融 API v4.0
BCRA の公式 API で、全国のマクロ経済変数(州別ではありません)を照会できます。
ベース URL: https://api.bcra.gob.ar
全カタログ: 1220 系列 → ./references/VARIABLES.md に全国の系列を 638 件掲載しています。
エンドポイント
| # | エンドポイント | 用途 |
|---|---|---|
| 1 | GET /estadisticas/v4.0/Monetarias | 変数カタログ(ページネーション対応) |
| 2 | GET /estadisticas/v4.0/Monetarias/{IdVariable} | 変数の時系列データ(ページネーション対応) |
| 3 | GET /estadisticas/v4.0/Metodologia | 方法論のインデックス(ページネーション対応) |
| 4 | GET /estadisticas/v4.0/Metodologia/{IdVariable} | 変数の方法論情報 |
認証: 不要です。CORS: 開放されています。エンコーディング: 一部のテキストは ISO-8859-1 です。
1. 変数カタログ
GET /estadisticas/v4.0/Monetarias
メタデータ(idVariable、descripcion、categoria、tipoSerie、periodicidad、unidadExpresion、moneda、primerFechaInformada、ultFechaInformado、ultValorInformado)を含む全件の一覧を返します。
使用可能なフィルター(クエリパラメーター)
| パラメーター | 型 | 説明 |
|---|---|---|
IdVariable | int | ID が完全一致する項目で絞り込みます |
Categoria | string | アクセント記号を除いた部分一致検索("depositos"、"prestamos") |
Periodicidad | string | D は日次、M は月次、T は四半期ごと |
Moneda | string | PES、DOL、ML、ME、MEyML |
TipoSerie | string | Stock、Flujo、Tasa など |
UnidadExpresion | string | 自由形式のテキスト |
Limit | int | デフォルトは 1000、最大 3000 |
Offset | int | ページネーション(開始位置に加算) |
最小限の例
import requests, pandas as pd
r = requests.get("https://api.bcra.gob.ar/estadisticas/v4.0/Monetarias", params={"Limit": 3000})
df = pd.DataFrame(r.json()["results"])
2. 変数の時系列データ
GET /estadisticas/v4.0/Monetarias/{IdVariable}
{idVariable, detalle: [{fecha, valor}]} を返します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
IdVariable | int (path) | はい | 変数の ID |
Desde | string | いいえ | YYYY-MM-DD |
Hasta | string | いいえ | YYYY-MM-DD |
Limit | int | いいえ | デフォルトは 1000、最大 3000 |
Offset | int | いいえ | ページネーション |
r = requests.get("https://api.bcra.gob.ar/estadisticas/v4.0/Monetarias/1",
params={"Desde": "2020-01-01", "Hasta": "2025-12-31"})
df = pd.DataFrame(r.json()["results"][0]["detalle"])
df["fecha"] = pd.to_datetime(df["fecha"])
df = df.set_index("fecha").sort_index()
3. 方法論
GET /estadisticas/v4.0/Metodologia # índice paginado
GET /estadisticas/v4.0/Metodologia/{idVar} # ficha completa
r = requests.get("https://api.bcra.gob.ar/estadisticas/v4.0/Metodologia/1")
print(r.json()["results"][0]["detalle"])
4. ページネーション:3000 件の上限を超える方法
API が 1 回の呼び出しで返すのは最大 3000 行です。最も長い日次系列(国際準備高、ID 1)は、1996 年以降の約 9000 件の観測値があります。方法は 2 つあります。
方法 A — Offset によるページネーション(最も簡単)
レスポンスが空になるまで、Offset += Limit を加算しながら繰り返します。
import requests, pandas as pd
def get_serie(id_variable, limit=3000):
url = f"https://api.bcra.gob.ar/estadisticas/v4.0/Monetarias/{id_variable}"
offset, partes = 0, []
while True:
r = requests.get(url, params={"Limit": limit, "Offset": offset}).json()
det = r["results"][0]["detalle"]
if not det:
break
partes.append(pd.DataFrame(det))
offset += limit
df = pd.concat(partes).drop_duplicates("fecha").sort_values("fecha")
df["fecha"] = pd.to_datetime(df["fecha"])
return df.set_index("fecha")
reservas = get_serie(1) # ~9000 observaciones desde 1996
方法 B — 日付範囲で分割(長い系列ではより高速)
全期間を複数の期間(例:年単位)に分割し、それぞれを Desde/Hasta で指定して取得します。系列が 50,000 件を超える場合や、非常に古いデータをまとめて取得したい場合は、こちらが推奨されます。
import requests, pandas as pd
from datetime import date
def get_serie_por_chunks(id_variable, desde, hasta, ventana_dias=365):
url = f"https://api.bcra.gob.ar/estadisticas/v4.0/Monetarias/{id_variable}"
partes, d = [], pd.to_datetime(desde)
fin = pd.to_datetime(hasta)
while d <= fin:
h = min(d + pd.Timedelta(days=ventana_dias - 1), fin)
r = requests.get(url, params={"Desde": d.strftime("%Y-%m-%d"),
"Hasta": h.strftime("%Y-%m-%d"),
"Limit": 3000}).json()
partes.append(pd.DataFrame(r["results"][0]["detalle"]))
d = h + pd.Timedelta(days=1)
df = pd.concat(partes).drop_duplicates("fecha").sort_values("fecha")
df["fecha"] = pd.to_datetime(df["fecha"])
return df.set_index("fecha")
base = get_serie_por_chunks(15, "1996-01-01", date.today().isoformat())
方法 C — カタログのページネーション(全変数の一覧を再取得する場合)
def catalogo_completo(limit=3000):
url = "https://api.bcra.gob.ar/estadisticas/v4.0/Monetarias"
offset, todo = 0, []
while True:
r = requests.get(url, params={"Limit": limit, "Offset": offset}).json()
batch = r["results"]
todo += batch
if len(batch) < limit:
break
offset += limit
return pd.DataFrame(todo)
基本ルール
- レスポンスに
totalは含まれません → 常にlen(batch) < limitまたはdetalle == []を確認してください。 - 小分けに何度も呼び出すより、大きなリクエストを 1 回送る(Limit=3000)ほうが効率的です。
- API に公開レート制限はありませんが、節度を守ってください。大量に繰り返し取得する場合は、呼び出しの間に
time.sleep(0.2)を追加してください。
全国変数(よく使われる ID)
完全な一覧は VARIABLES.md(全国系列 638 件)をご覧ください。特によく参照される 30 件は次のとおりです。
| ID | 説明 | 期間 |
|---|---|---|
| 1 | 国際準備高(百万 USD) | D |
| 4 | 小売為替レート($/USD) | D |
| 5 | 基準卸売為替レート($/USD) | D |
| 7 | 民間銀行 BADLAR 金利(% TNA) | D |
| 8 | 民間銀行 TM20 金利(% TNA) | D |
| 11 | BAIBAR 金利(% TNA) | D |
| 12 | 30 日預金金利(% TNA) | D |
| 13 | 当座預金貸越金利(% TNA) | D |
| 14 | 個人ローン金利(% TNA) | D |
| 15 | マネタリーベース(百万 $) | D |
| 16 | 通貨流通高(百万 $) | D |
| 17 | 民間保有の紙幣・硬貨(百万 $) | D |
| 18 | 金融機関預金(百万 $) | D |
| 19 | 民間部門向け貸出(百万 $) | D |
| 26 | 金融政策金利(% TNA) | D |
| 27 | CPI 月次変動率(%) | M |
| 28 | CPI 前年比変動率(%) | M |
| 29 | REM - 今後 12 か月のインフレ率中央値(%) | M |
| 30 | CER(指数、基準 2.2.02=1) | D |
| 31 | UVA($) | D |
| 32 | UVI($) | D |
| 40 | ICL - 賃貸契約指数($) | D |
| 1187 | 為替バンド - 下限($/USD) | D |
| 1188 | 為替バンド - 上限($/USD) | D |
| 1189 | ペソ定期預金金利(% TNA) | D |
| 1197 | 延滞利息金利 TIM(% TNA) | D |
| 1232 | M1(百万 $) | D |
| 1233 | M2(百万 $) | D |
| 1234 | M3(百万 $) | D |
ヒント: API のリファクタリングにより ID が変更されることがあります。変数の現在の ID を確認するには、カタログのエンドポイントを使用してください。
カタログに含まれるカテゴリ
| カテゴリ | 全国の件数 | 説明 |
|---|---|---|
| 主要変数 | 35 | 主要なマクロ指標(金利、為替レート、準備高、マネタリーベース、CER、UVA、CPI) |
| 日次金融レポート | 33 | IMD の日次系列(対外項目、M1/M2/M3、BCRA 貸出) |
| Series.xlsm | 154 | マネタリーベースと準備高の変動要因 |
| 預金金利 | 10 | 通貨と期間別の預金金利 |
| 保有者の種類と使途別貸出 | 74 | 使途別貸出(住宅ローン、自動車ローン、個人ローン) |
| 保有者の種類別貸出 | 120 | 通貨別の国内公的・民間部門向け貸出 |
| 保有者の種類別預金 | 212 | 通貨と期間別の国内公的・民間部門預金 |
除外対象(地方・自治体系列 582 件): ID 322 以降は州(ブエノスアイレス、コルドバ、サンタフェなど)別に細分化されており、全国集計を含まずに「州政府」または「自治体」に言及する項目も除外されています。
通貨コード
| コード | 意味 |
|---|---|
ML | 自国通貨(アルゼンチン・ペソ) |
ME | 外貨(米ドル) |
MEyML | 自国通貨と外貨の合計 |
USD | 米ドル(換算なし) |
系列の種類
月末残高 · 残高 · 金利 · 日次フロー · 為替レート · 変動率 · 比率 · 指数 · 計算単位 · マージン · 金額
技術上の注意事項
- 認証不要 — キーやトークンは必要ありません。
- ページネーション上限: 1 回の呼び出しにつき 3000 件。
- エンコーディング: レスポンスに拡張文字(ISO-8859-1)が含まれる場合があります —
response.encodingまたはpd.read_json(..., encoding="utf-8")を使用してください。 - 日付形式: ISO 8601(
YYYY-MM-DD)。 - SLA: ベストエフォートであり、正式な保証はありません。