mcpField
B
bcra-macro

bcra-macro

github.com/gauss314数据与数据库252272 次安装20 周前更新
代码仓库

关于 bcra-macro

bcra-macro 是查询阿根廷央行货币统计 API 的技能,适用于分析人员和开发者。它支持浏览全国宏观经济序列、获取历史数据并查看方法说明,还可筛选和分页处理大型数据集。

主要功能

  1. 01浏览货币变量目录
  2. 02按类别和元数据筛选序列
  3. 03获取带日期的历史观测值
  4. 04查询变量的方法说明
  5. 05对大型目录和序列分页

适用场景

  1. 01跟踪汇率、储备或货币总量
  2. 02获取指定日期范围的宏观时间序列
  3. 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,用于查询全国宏观经济变量(非省级变量)。
Base URL: https://api.bcra.gob.ar
总目录: 1220 个序列 → ./references/VARIABLES.md 中的 638 个全国序列。

端点

#Endpoint用途
1GET /estadisticas/v4.0/Monetarias变量目录(分页)
2GET /estadisticas/v4.0/Monetarias/{IdVariable}变量历史序列(分页)
3GET /estadisticas/v4.0/Metodologia方法论索引(分页)
4GET /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)。

可用筛选条件(查询参数)
参数类型描述
IdVariableint按精确 ID 筛选
Categoriastring部分匹配搜索,无重音符号("depositos"、"prestamos")
PeriodicidadstringD 每日,M 每月,T 每季度
MonedastringPES、DOL、ML、ME、MEyML
TipoSeriestringStock、Flujo、Tasa 等
UnidadExpresionstring自由文本
Limitint默认值为 1000,最大 3000
Offsetint分页(增加偏移量)
最简示例
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}]}。

参数类型必填描述
IdVariableint (path)是变量的 ID
Desdestring否YYYY-MM-DD
Hastastring否YYYY-MM-DD
Limitint否默认值为 1000,最大 3000
Offsetint否分页
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 每次调用最多返回 3000 行,而最长的每日序列(国际储备,ID 1)自 1996 年以来有 ~9000 条观测值。有两种策略。

策略 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 == []。
  • 一次进行大批量调用(Limit=3000)比多次小批量调用更高效。
  • API 未公开实施速率限制,但请注意礼貌:批量循环调用时,在请求之间添加 time.sleep(0.2)。

全国变量(最常用 ID)

完整列表见 VARIABLES.md(638 个全国序列)。以下为查询次数最多的 30 个:

ID描述Per.
1国际储备(百万 USD)D
4零售汇率($/USD)D
5参考批发汇率($/USD)D
7私营银行 BADLAR 利率(% TNA)D
8私营银行 TM20 利率(% TNA)D
11BAIBAR 利率(% TNA)D
1230 天存款利率(% TNA)D
13活期账户透支利率(% TNA)D
14个人贷款利率(% TNA)D
15货币基础(百万 $)D
16货币流通量(百万 $)D
17公众持有的纸币和硬币(百万 $)D
18金融机构存款(百万 $)D
19私营部门贷款(百万 $)D
26货币政策利率(% TNA)D
27IPC 月变化率(%)M
28IPC 同比变化率(%)M
29REM - 未来 12 个月通胀率中位数(%)M
30CER(指数,基期 2.2.02=1)D
31UVA($)D
32UVI($)D
40ICL - 租赁合同指数($)D
1187汇率区间 - 下限($/USD)D
1188汇率区间 - 上限($/USD)D
1189比索定期存款利率(% TNA)D
1197TIM 逾期利息利率(% TNA)D
1232M1(百万 $)D
1233M2(百万 $)D
1234M3(百万 $)D

提示: API 重构时 ID 可能会变更。要确认变量当前的 ID,请使用目录端点。

目录中的类别

类别全国数量描述
主要变量35核心宏观指标(利率、汇率、储备、货币基础、CER、UVA、IPC)
每日货币报告33IMD 每日序列(境外项目、M1/M2/M3、BCRA 信贷)
Series.xlsm154货币基础和储备变动系数
存款利率10按币种和期限细分的存款利率
按持有人类型和用途划分的贷款74按用途划分的贷款(抵押贷款、汽车贷款、个人贷款)
按持有人类型划分的贷款120按币种划分的全国公共部门/私营部门贷款
按持有人类型划分的存款212按币种和期限划分的全国公共部门/私营部门存款

已排除(582 个省级/市级序列): ID 322+ 按省份细分(布宜诺斯艾利斯、科尔多瓦、圣菲等);此外还排除了未汇总为全国数据、但提及“省级政府”或“市级政府”的项目。

货币代码

代码含义
ML本币(阿根廷比索)
ME外币(美元)
MEyML本币 + 外币汇总
USD美元(未转换)

序列类型

月末余额 · 余额 · 利率 · 每日流量 · 汇率 · 变化率 · 比率 · 指数 · 计价单位 · 利差 · 金额


技术注意事项

  • 无需身份验证 — 无需 key 或 token。
  • **分页上限:**每次调用 3000 条记录。
  • **编码:**响应可能包含扩展字符(ISO-8859-1)——使用 response.encoding 或 pd.read_json(..., encoding="utf-8")。
  • **日期格式:**ISO 8601(YYYY-MM-DD)。
  • **SLA:**尽力而为,不作正式保证。

实用链接

评论

支持 Markdown