关于 byma
byma 是通过 BYMA 公共 API 获取阿根廷市场数据的命令行技能,无需 API 认证。它涵盖证券面板、历史价格和债券资料。
主要功能
- 01获取股票、CEDEAR 和债券面板
- 02查询回购及期权数据
- 03获取日、周、月 OHLCV 历史数据
- 04查询债券技术资料
适用场景
- 01查看 BYMA 各类证券的价格和交易字段
- 02获取股票代码或指数的历史价格
- 03查询债券到期日、摊还安排和发行方
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gauss314/ skills --skill byma安装后在 Claude Code 中输入/byma确认已加载。
附带文件references/REFERENCE.mdscripts/fetch_byma.py
详细介绍
BYMA — 阿根廷证券交易所
用于从 BYMA 提取市场数据的技能,
通过其公开市场数据 API(open.bymadata.com.ar)——无需 API
密钥,无需身份验证。
BYMA 是阿根廷的主要证券交易所(Merval 的继任者),交易品种包括:
- 领先股票(MERVAL 的 20 个成分股)。
- CEDEARs(约 1143 个唯一品种 × 2 种结算方式)。
- 主权公共债券 + LECAPs + BONCAPs(约 104 个唯一品种 × 6 种变体)。
- 企业可转让债务(ON)(约 2117 项)。
- SENEBI ON(双边交易板块,约 3160 项)。
- 回购交易(133 项,格式为
DOLAR-DDMM-U-CT-USD)。 - 期权(约 429 项,包含行权价、未平仓量和到期日)。
- 指数:S&P MERVAL(
M)、BURCAP(G)。 - 所有工具的日线/周线/月线 OHLCV 历史数据。
- 债券技术信息表(还本方式、阶梯式利息、ISIN、适用法律、发行方)。
⚠️ 法律声明
- BYMA 的公开 API 没有官方文档。端点可能随时变更,恕不另行通知。
- 请遵守 BYMA 的使用条款。每秒请求次数不得超过 1 次。
- 数据存在延迟(阿根廷市场通常约 15 分钟)。
- 如需大量商业用途,请联系 BYMA 获取官方许可。
🔒 SSL 证书说明
BYMA 使用的 SSL 证书,其 CA 中间证书未包含在 Python 标准的
certifi 证书包中。这会导致:
SSLError: CERTIFICATE_VERIFY_FAILED
脚本使用 verify=False——连接仍通过 TLS 加密,但会跳过证书链验证。这是 BYMA 公共库(pyhomebroker、bymadata 等)的标准做法。
如果你不想使用 verify=False,可以将 BYMA 的中间证书安装到系统信任存储区。
脚本
| 脚本 | 描述 |
|---|---|
| fetch_byma.py | 主脚本:所有可用端点 |
快速使用
# ── PANELES (POST) ────────────────────────────────────────────────────
# Panel lideres: 20 acciones MERVAL x 2 settlements (40 items)
py scripts/fetch_byma.py panel leading-equity
py scripts/fetch_byma.py panel leading-equity --t0 # solo CI (T+0)
py scripts/fetch_byma.py panel leading-equity --t1 # solo 24hs (T+1)
# Panel CEDEARs (~2000 items, lista directa)
py scripts/fetch_byma.py panel cedears
# Panel bonos publicos (1018 items, paginado a 189 por defecto)
py scripts/fetch_byma.py panel public-bonds
py scripts/fetch_byma.py panel public-bonds --all # trae los 1018 en una llamada
# Panel ON corporativas (~2117 items, lista directa)
py scripts/fetch_byma.py panel on
# Panel cauciones (~133 items)
py scripts/fetch_byma.py panel cauciones
# Panel SENEBI ON (3160 items, paginado)
py scripts/fetch_byma.py panel senebi-on
py scripts/fetch_byma.py panel senebi-on --all # trae los 3160 en una llamada
# Panel opciones (~429 items, con strike, OI, vencimiento)
py scripts/fetch_byma.py panel options
# ── HISTORICOS OHLCV (GET) ────────────────────────────────────────────
# Historico de un instrumento — formato simbolo: "TICKER 24HS"
py scripts/fetch_byma.py historico "GGAL 24HS"
py scripts/fetch_byma.py historico "ALUA 24HS"
py scripts/fetch_byma.py historico "AAPL 24HS" # CEDEAR ARS
py scripts/fetch_byma.py historico "AAPLD 24HS" # CEDEAR USD
py scripts/fetch_byma.py historico "AL30 24HS" # Bono ARS
py scripts/fetch_byma.py historico "AL30D 24HS" # Bono USD
py scripts/fetch_byma.py historico "AL30C 24HS" # Bono CCL
py scripts/fetch_byma.py historico "GD30 24HS"
py scripts/fetch_byma.py historico "TZX26 24HS" # BONCAP
py scripts/fetch_byma.py historico "TY30P 24HS" # BONCAP
# Con rango de fechas (default: ultimos 30 dias)
py scripts/fetch_byma.py historico "GGAL 24HS" --desde 2024-05-15 --hasta 2026-06-05
# Resolutions: D (diario), W (semanal), M (mensual)
py scripts/fetch_byma.py historico "GGAL 24HS" --resolution W
py scripts/fetch_byma.py historico "GGAL 24HS" --resolution M
# ── INDICES ────────────────────────────────────────────────────────────
# Historico del S&P MERVAL
py scripts/fetch_byma.py indice M
py scripts/fetch_byma.py indice M --desde 2025-01-01 --hasta 2026-06-05
# Historico del BURCAP
py scripts/fetch_byma.py indice G
# ── FICHA TECNICA DE BONOS ─────────────────────────────────────────────
# Ficha tecnica completa: forma de amortizacion, intereses, ISIN, ley, emisor
py scripts/fetch_byma.py bond-info AE38 # Bono soberano USD 2038 step-up
py scripts/fetch_byma.py bond-info AL30 # Bono soberano USD 2030 ley local
py scripts/fetch_byma.py bond-info GD30 # Bono soberano USD 2030 ley NY
py scripts/fetch_byma.py bond-info AE38C # Variante CCL (misma ficha)
py scripts/fetch_byma.py bond-info AE38D # Variante USD MEP (misma ficha)
py scripts/fetch_byma.py bond-info BPOA7 # BOPREAL Serie 1 A
py scripts/fetch_byma.py bond-info TY30P # BONCAP
py scripts/fetch_byma.py bond-info TZX26 # BONCAP CER
py scripts/fetch_byma.py bond-info S237Q # LECAP
py scripts/fetch_byma.py bond-info SBC1C # ON corporativa
# ── COMBINADO ──────────────────────────────────────────────────────────
# Snapshot de todos los paneles + MERVAL + BURCAP
py scripts/fetch_byma.py all
# ── OUTPUT ─────────────────────────────────────────────────────────────
# Guardar a archivo JSON
py scripts/fetch_byma.py panel leading-equity -o leading.json
py scripts/fetch_byma.py all -o snapshot_byma.json
# Modo silencioso (solo JSON, sin logs)
py scripts/fetch_byma.py panel cauciones -q
可用端点
| 模式 | 数据 | 端点 |
|---|---|---|
panel leading-equity | MERVAL 前 20 只股票 × 2 种结算方式(40 项) | POST /leading-equity |
panel cedears | CEDEARs(约 2000 项) | POST /cedears |
panel public-bonds | 主权债券 + LECAPs/BONCAPs(约 1018 项) | POST /public-bonds |
panel on | 企业 ON(约 2117 项) | POST /negociable-obligations |
panel cauciones | 回购交易(约 133 项) | POST /cauciones |
panel senebi-on | SENEBI ON(约 3160 项,分页) | POST /senebi-obligaciones-negociables |
panel options | 期权(约 429 项) | POST /options |
historico <SYM> | 某工具的日线/周线/月线 OHLCV | GET /chart/historical-series/history?symbol={...} |
indice <COD> | 指数的 OHLCV(M=MERVAL,G=BURCAP) | GET /chart/index-historical-series/history?symbol={...} |
bond-info <TICKER> | 债券/LECAP/BONCAP/ON 技术信息表(还本方式、利息、ISIN、发行方) | POST /bnown/fichatecnica/especies/general |
all | 所有交易板块和指数的快照 | (组合) |
已验证的公开端点共 10 个 ✅(8 个 POST + 2 个历史数据 GET)。
基础 URL
https://open.bymadata.com.ar/vanoms-be-core/rest/api/bymadata/free
代码惯例
历史数据:格式为 TICKER 24HS
⚠️ 所有历史数据请求都必须带后缀 24HS(前面有空格)。
不带后缀会返回 HTTP 400。后缀 CI 也会返回 400(不支持)。
48HS 会返回 200,但数据点为 0。
| 类型 | 示例 |
|---|---|
| 股票 | GGAL 24HS、ALUA 24HS、YPFD 24HS |
| CEDEAR ARS | AAPL 24HS、MSFT 24HS |
| CEDEAR USD | AAPLD 24HS、MSFTD 24HS |
| ARS 主权债券 | AL30 24HS、GD30 24HS、AE38 24HS |
| USD MEP 主权债券 | AL30D 24HS、GD30D 24HS |
| CCL 主权债券 | AL30C 24HS、GD30C 24HS |
| LECAP/BONCAP | TY30P 24HS、TZX26 24HS |
债券:按货币区分的后缀约定
| 后缀 | 变体 | 示例 |
|---|---|---|
| (无) | ARS — 以比索计价 | AL30 |
C | CCL(Contado con Liquidacion / EXT) | AL30C |
D | USD MEP | AL30D |
X、Y、Z | 其他变体(盘中、替代结算等) | AL30X |
已知指数
| 代码 | 指数 |
|---|---|
M | S&P MERVAL |
G | BURCAP |
其他代码(A、B、V 等)也可接受,但会返回全为零的序列——可能是已弃用的指数。
POST 面板中的常用筛选条件
| 筛选条件 | 描述 |
|---|---|
T0=true | 仅包含 settlementType=1(CI / 即时结算) |
T1=true | 仅包含 settlementType=2(24 小时) |
T2=true | 仅包含 settlementType=3(48 小时 — 几乎没有数据) |
page_size=5000 | 一次调用获取整个数据集(建议用于 public-bonds 和 senebi-on) |
⚠️ API 会忽略 page 参数(页码)——
始终返回第 1 页。解决方法:使用较大的 page_size 或 --all 标志。
技术注意事项
panel 返回的数据(全部)
每个条目都包含:
| 字段 | 类型 | 描述 |
|---|---|---|
symbol | string | BYMA 代码。 |
settlementType | string | "1"(CI)或 "2"(24 小时)。 |
securityType | string | CS(普通股)、CD(CEDEAR)、GO(政府债券)、CORP(ON)、QS(Caucion)、OPT(期权)。 |
denominationCcy | string | ARS、USD、EXT。 |
market | string | BYMA 或 SENEBI。 |
trade | float | 最新成交价。 |
closingPrice | float | 当日收盘价。 |
settlementPrice | float | 结算价。 |
openingPrice、tradingHighPrice、tradingLowPrice | float | 当日 OHL。 |
previousClosingPrice、previousSettlementPrice | float | 前一日收盘价/结算价。 |
imbalance | float | 相对前一日的变动百分比(小数:-0.0098 = -0.98%)。 |
volume、tradeVolume | float | 名义成交量。 |
volumeAmount | float | 以货币计的实际金额。 |
vwap | float | 成交量加权平均价。 |
bidPrice、offerPrice | float | 最优买价/卖价(非交易时段为 0)。 |
quantityBid、quantityOffer | float | 买价/卖价数量。 |
numberOfOrders | int | 当日订单总数。 |
openInterest | float | 未平仓量(期权/Caucion 中为实际值;股票中为 0)。 |
tickDirection | int | -1 / 0 / +1(下跌 / 不变 / 上涨)。 |
tradeHour | string | 最新成交时间。 |
债券/ON/Caucion/期权中的额外字段
| 字段 | 描述 |
|---|---|
maturityDate | 到期日(ISO YYYY-MM-DD)。 |
daysToMaturity | 距到期日的天数。 |
underlyingSymbol | 标的代码(仅适用于 Caucion 和期权)。 |
optionType | CALL 或 PUT(仅适用于期权)。 |
historico 和 indice 返回的数据
{
"s": "ok",
"t": [unix_seconds, ...],
"o": [opens, ...],
"h": [highs, ...],
"l": [lows, ...],
"c": [closes, ...],
"v": [volumes, ...]
}
| 字段 | 描述 |
|---|---|
s | 状态:"ok"、"no_data"、"error"。 |
t[] | Unix UTC 秒级时间戳(不是毫秒)。 |
o[]、h[]、l[]、c[] | 按索引对齐的 OHLC。 |
v[] | 成交量(指数中通常为 0)。 |
bond-info 返回的数据
返回 {content, data, empty, upgrade},其中 data[0](如果存在)
包含债券的技术资料。对于股票、期权和不存在的 ticker:
data: [] 且 empty: true。
data[0] 的字段:
| 字段 | 类型 | 描述 |
|---|---|---|
ley | string | 适用司法管辖区:Nacional、Extranjera、Nueva York、Inglaterra。对于区分 AL30(本地法律)和 GD30(纽约州法律)至关重要。 |
formaAmortizacion | string | 纯文本,包含摊还计划(期数、频率、日期、百分比)。对于到期一次还本:"Al vencimiento"。 |
interes | string | 纯文本,包含利息计提方案。对于阶梯利率,描述各利率区间。对于 CER,描述通胀调整。 |
denominacionMinima | int | 最低发行面额。 |
fechaEmision | string | YYYY-MM-DD HH:MM:SS.f。 |
fechaVencimiento | string | YYYY-MM-DD HH:MM:SS.f。 |
fechaDevenganIntereses | string | 开始计息日期(通常为空)。 |
codigoIsin | string | 该工具的 ISIN。 |
tipoEspecie | string | Titulos Publicos、Obligaciones Negociables、Letras del Tesoro。 |
tipoObligacion | string | 监管分类:Valores Publicos Nacionales、Provinciales、Corporativos。 |
tipoGarantia | string | Comun 等。 |
default | string | 违约状态(正常履约时为空)。 |
montoNominal | int | 已发行名义总额。 |
montoResidual | int | 当前剩余金额(摊还后)。 |
denominacion | string | 债券的完整官方名称。 |
insType | string | BOND。 |
paisLey | string | 适用法律所属国家。 |
moneda | string | Dolares、Pesos、Pesos Ajustables por CER、Dolar Linked。 |
emisor | string | Gobierno Nacional、Provincia de Buenos Aires、YPF S.A. 等。 |
dict 和 list 面板的区别
| 面板 | 响应类型 | 结构 |
|---|---|---|
leading-equity、public-bonds、senebi-on | dict | {content: {page_number, page_count, page_size, total_elements_count}, data: [...], empty, upgrade} |
cedears、on、cauciones、options | list | 直接返回 [item, item, ...] |
其他标志
| 标志 | 描述 |
|---|---|
--all | 强制设置 page_size=5000,通过一次调用获取全部数据 |
--t0 | 仅获取 settlementType=1(CI) |
--t1 | 仅获取 settlementType=2(24hs) |
--page N | 页码(API 会忽略 — 请使用 --all) |
--page-size N | 每页条目数(默认:200) |
--desde YYYY-MM-DD | 起始日期(历史数据) |
--hasta YYYY-MM-DD | 截止日期(历史数据) |
--resolution X | D、W、M(默认:D) |
-o archivo.json | 将输出保存到文件 |
-q / --quiet | 静默模式(仅输出 JSON) |
速率限制
未记录速率限制。建议:
- 请求间隔至少为 0.3 秒。
all模式会自动使用time.sleep(0.3)。
错误处理
| 状态码 | 常见原因 |
|---|---|
| 400 | 无效符号(缺少 24HS、未知 ticker) |
| 401 | 端点不存在(BYMA 使用通用的 401,而不是 404) |
| 415 | Content-Type 错误(POST 必须使用 application/json) |
| 500 | BYMA 内部错误 |
日期转换
from datetime import datetime, timezone
# Unix seconds -> datetime
dt = datetime.fromtimestamp(ts, tz=timezone.utc)
# datetime -> Unix seconds
ts = int(datetime(2026, 6, 5, tzinfo=timezone.utc).timestamp())
Skill 结构
skills/byma/
├── SKILL.md # Este archivo (guia rapida)
├── references/
│ └── REFERENCE.md # Documentacion completa de todos los endpoints
└── scripts/
└── fetch_byma.py # Script principal
详细文档: 请参阅 references/REFERENCE.md, 了解每个端点的完整文档、JSON 架构、settlementType/securityType 代码、 SSL 证书处理、分页和技术注意事项。