BYMA — Bolsas y Mercados Argentinos
Skill para extraer datos de mercado de BYMA
via su API publica de market data (open.bymadata.com.ar) — sin API
key, sin autenticacion.
BYMA es la bolsa principal de Argentina (sucesora del Merval) donde se
negocian:
- Acciones lideres (panel de 20 simbolos del MERVAL).
- CEDEARs (~1143 unicos x 2 settlements).
- Bonos publicos soberanos + LECAPs + BONCAPs (~104 unicos x 6 variantes).
- Obligaciones Negociables (ON) corporativas (~2117 items).
- SENEBI ON (segmento bilateral, ~3160 items).
- Cauciones (133 items, formato
DOLAR-DDMM-U-CT-USD).
- Opciones (~429 items con strike, OI, vencimiento).
- Indices: S&P MERVAL (
M), BURCAP (G).
- Historicos OHLCV diarios/semanales/mensuales para todos los instrumentos.
- Ficha tecnica de bonos (forma de amortizacion, intereses step-up, ISIN, ley aplicable, emisor).
⚠️ Aviso Legal
- API publica de BYMA, sin documentacion oficial. Los endpoints pueden cambiar sin aviso.
- Respetar terminos de uso de BYMA. No hacer mas de 1 req/segundo.
- Los datos son delayed (~15 min tipico de mercado argentino).
- Para uso comercial intensivo, contactar BYMA para licencias oficiales.
🔒 Nota sobre certificado SSL
BYMA presenta un certificado SSL cuya CA intermedia no esta incluida en
el bundle certifi estandar de Python. Esto causa:
SSLError: CERTIFICATE_VERIFY_FAILED
El script usa verify=False — la conexion sigue siendo TLS-encriptada
pero se omite la validacion de cadena. Es el patron estandar de las
librerias publicas de BYMA (pyhomebroker, bymadata, etc.).
Si preferis no usar verify=False, podes instalar el cert intermedio de
BYMA en tu trust store del sistema.
Scripts
| Script |
Descripcion |
| fetch_byma.py |
Script principal: todos los endpoints disponibles |
Uso rapido
# ── 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
Endpoints disponibles
| Modo |
Data |
Endpoint |
panel leading-equity |
Top 20 acciones MERVAL x 2 settlements (40 items) |
POST /leading-equity |
panel cedears |
CEDEARs (~2000 items) |
POST /cedears |
panel public-bonds |
Bonos soberanos + LECAPs/BONCAPs (~1018 items) |
POST /public-bonds |
panel on |
ONs corporativas (~2117 items) |
POST /negociable-obligations |
panel cauciones |
Cauciones (~133 items) |
POST /cauciones |
panel senebi-on |
SENEBI ONs (~3160 items, paginado) |
POST /senebi-obligaciones-negociables |
panel options |
Opciones (~429 items) |
POST /options |
historico <SYM> |
OHLCV diario/semanal/mensual de un instrumento |
GET /chart/historical-series/history?symbol={...} |
indice <COD> |
OHLCV de un indice (M=MERVAL, G=BURCAP) |
GET /chart/index-historical-series/history?symbol={...} |
bond-info <TICKER> |
Ficha tecnica de bono/LECAP/BONCAP/ON (amortizacion, intereses, ISIN, emisor) |
POST /bnown/fichatecnica/especies/general |
all |
Snapshot de todos los paneles + indices |
(combinado) |
Total: 10 endpoints publicos verificados ✅ (8 POST + 2 historicos GET).
Base URL
https://open.bymadata.com.ar/vanoms-be-core/rest/api/bymadata/free
Convenciones de simbolos
Historicos: formato TICKER 24HS
⚠️ TODOS los historicos requieren el sufijo 24HS (con espacio).
Sin sufijo retorna HTTP 400. El sufijo CI tambien retorna 400 (no
soportado). 48HS retorna 200 con 0 puntos.
| Tipo |
Ejemplo |
| Accion |
GGAL 24HS, ALUA 24HS, YPFD 24HS |
| CEDEAR ARS |
AAPL 24HS, MSFT 24HS |
| CEDEAR USD |
AAPLD 24HS, MSFTD 24HS |
| Bono soberano ARS |
AL30 24HS, GD30 24HS, AE38 24HS |
| Bono soberano USD MEP |
AL30D 24HS, GD30D 24HS |
| Bono soberano CCL |
AL30C 24HS, GD30C 24HS |
| LECAP/BONCAP |
TY30P 24HS, TZX26 24HS |
Bonos: convencion de sufijos por moneda
| Sufijo |
Variante |
Ejemplo |
| (sin) |
ARS — paridad en pesos |
AL30 |
C |
CCL (Contado con Liquidacion / EXT) |
AL30C |
D |
USD MEP |
AL30D |
X, Y, Z |
otras variantes (intra-day, settlement alt.) |
AL30X |
Indices conocidos
| Codigo |
Indice |
M |
S&P MERVAL |
G |
BURCAP |
Otros codigos (A, B, V, etc.) son aceptados pero retornan series con
todos ceros — probablemente indices deprecated.
Filtros comunes en POST paneles
| Filtro |
Descripcion |
T0=true |
Solo settlementType=1 (CI / Contado Inmediato) |
T1=true |
Solo settlementType=2 (24hs) |
T2=true |
Solo settlementType=3 (48hs — practicamente vacio) |
page_size=5000 |
Trae todo el dataset en una sola llamada (recomendado para public-bonds y senebi-on) |
⚠️ El parametro page (numero de pagina) es ignorado por la API —
siempre devuelve pagina 1. Workaround: usar page_size grande o flag --all.
Consideraciones tecnicas
Datos devueltos por panel (todos)
Cada item incluye:
| Campo |
Tipo |
Descripcion |
symbol |
string |
Ticker BYMA. |
settlementType |
string |
"1" (CI) o "2" (24hs). |
securityType |
string |
CS (Common Stock), CD (CEDEAR), GO (Government Obligation), CORP (ON), QS (Caucion), OPT (Option). |
denominationCcy |
string |
ARS, USD, EXT. |
market |
string |
BYMA o SENEBI. |
trade |
float |
Ultimo precio operado. |
closingPrice |
float |
Cierre del dia. |
settlementPrice |
float |
Precio de settlement. |
openingPrice, tradingHighPrice, tradingLowPrice |
float |
OHL del dia. |
previousClosingPrice, previousSettlementPrice |
float |
Cierre / settlement anterior. |
imbalance |
float |
Variacion % vs anterior (decimal: -0.0098 = -0.98%). |
volume, tradeVolume |
float |
Volumen nominal. |
volumeAmount |
float |
Monto efectivo en moneda. |
vwap |
float |
Volume-Weighted Average Price. |
bidPrice, offerPrice |
float |
Mejor bid/offer (0 fuera de horario). |
quantityBid, quantityOffer |
float |
Cantidades de bid/offer. |
numberOfOrders |
int |
Numero total de ordenes del dia. |
openInterest |
float |
Interes abierto (real en opciones/cauciones; 0 en acciones). |
tickDirection |
int |
-1 / 0 / +1 (downtick / unchanged / uptick). |
tradeHour |
string |
Hora del ultimo trade. |
Campos extra en bonos / ONs / cauciones / opciones
| Campo |
Descripcion |
maturityDate |
Fecha de vencimiento (ISO YYYY-MM-DD). |
daysToMaturity |
Dias hasta vencimiento. |
underlyingSymbol |
Underlying (solo cauciones y opciones). |
optionType |
CALL o PUT (solo opciones). |
Datos devueltos por historico e indice
{
"s": "ok",
"t": [unix_seconds, ...],
"o": [opens, ...],
"h": [highs, ...],
"l": [lows, ...],
"c": [closes, ...],
"v": [volumes, ...]
}
| Campo |
Descripcion |
s |
Status: "ok", "no_data", "error". |
t[] |
Timestamps unix UTC SECONDS (no millis). |
o[], h[], l[], c[] |
OHLC alineados por indice. |
v[] |
Volumen (suele ser 0 en indices). |
Datos devueltos por bond-info
Devuelve {content, data, empty, upgrade} donde data[0] (cuando existe)
contiene la ficha tecnica del bono. Para acciones, opciones y tickers
inexistentes: data: [] y empty: true.
Campos del data[0]:
| Campo |
Tipo |
Descripcion |
ley |
string |
Jurisdiccion aplicable: Nacional, Extranjera, Nueva York, Inglaterra. Critico para distinguir AL30 (ley local) de GD30 (ley NY). |
formaAmortizacion |
string |
TEXTO PLANO con el cronograma de amortizacion (numero de cuotas, periodicidad, fechas, %). Para bullet: "Al vencimiento". |
interes |
string |
TEXTO PLANO con esquema de devengo de intereses. Para step-up describe cada tramo de tasa. Para CER describe el ajuste por inflacion. |
denominacionMinima |
int |
Denominacion minima de emision. |
fechaEmision |
string |
YYYY-MM-DD HH:MM:SS.f. |
fechaVencimiento |
string |
YYYY-MM-DD HH:MM:SS.f. |
fechaDevenganIntereses |
string |
Fecha inicio devengo (suele estar vacia). |
codigoIsin |
string |
ISIN del instrumento. |
tipoEspecie |
string |
Titulos Publicos, Obligaciones Negociables, Letras del Tesoro. |
tipoObligacion |
string |
Clasificacion regulatoria: Valores Publicos Nacionales, Provinciales, Corporativos. |
tipoGarantia |
string |
Comun, etc. |
default |
string |
Estado de default (vacio si esta al dia). |
montoNominal |
int |
Monto nominal total emitido. |
montoResidual |
int |
Monto residual actual (post-amortizaciones). |
denominacion |
string |
Nombre oficial completo del bono. |
insType |
string |
BOND. |
paisLey |
string |
Pais de ley aplicable. |
moneda |
string |
Dolares, Pesos, Pesos Ajustables por CER, Dolar Linked. |
emisor |
string |
Gobierno Nacional, Provincia de Buenos Aires, YPF S.A., etc. |
Diferencia entre paneles dict y list
| Panel |
Tipo response |
Estructura |
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, ...] directo |
Flags adicionales
| Flag |
Descripcion |
--all |
Forza page_size=5000 para traer todo en una sola llamada |
--t0 |
Solo settlementType=1 (CI) |
--t1 |
Solo settlementType=2 (24hs) |
--page N |
Numero de pagina (ignorado por la API — usar --all) |
--page-size N |
Items por pagina (default: 200) |
--desde YYYY-MM-DD |
Fecha desde (historicos) |
--hasta YYYY-MM-DD |
Fecha hasta (historicos) |
--resolution X |
D, W, M (default: D) |
-o archivo.json |
Guardar output a archivo |
-q / --quiet |
Modo silencioso (solo JSON) |
Rate limiting
No hay rate limiting documentado. Recomendado:
- Minimo 0.3 segundos entre requests.
- El modo
all usa time.sleep(0.3) automaticamente.
Manejo de errores
| Status |
Causas tipicas |
| 400 |
Simbolo invalido (sin 24HS, ticker desconocido) |
| 401 |
Endpoint inexistente (BYMA usa 401 generico, no 404) |
| 415 |
Content-Type erroneo (POST debe ser application/json) |
| 500 |
Error interno de BYMA |
Conversion de fechas
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())
Estructura del skill
skills/byma/
├── SKILL.md # Este archivo (guia rapida)
├── references/
│ └── REFERENCE.md # Documentacion completa de todos los endpoints
└── scripts/
└── fetch_byma.py # Script principal
Documentacion detallada: Consultar references/REFERENCE.md
para documentacion exhaustiva de cada endpoint, schemas JSON, codigos
de settlementType/securityType, manejo del cert SSL, paginacion y
consideraciones tecnicas.
1---2name: byma3description: Datos de mercado de BYMA (Bolsas y Mercados Argentinos) via API publica: paneles de acciones lideres, CEDEARs, bonos soberanos, LECAPs/BONCAPs, ONs corporativas, cauciones, opciones y SENEBI. Historicos OHLCV de instrumentos e indices (MERVAL, BURCAP). Ficha tecnica de bonos con cronograma de amortizacion. Sin API key.4license: MIT5---67# BYMA — Bolsas y Mercados Argentinos89Skill para extraer datos de mercado de [BYMA](https://www.byma.com.ar)10via su **API publica de market data** (`open.bymadata.com.ar`) — sin API11key, sin autenticacion.1213BYMA es la bolsa principal de Argentina (sucesora del Merval) donde se14negocian:1516- **Acciones lideres** (panel de 20 simbolos del MERVAL).17- **CEDEARs** (~1143 unicos x 2 settlements).18- **Bonos publicos soberanos** + LECAPs + BONCAPs (~104 unicos x 6 variantes).19- **Obligaciones Negociables (ON)** corporativas (~2117 items).20- **SENEBI ON** (segmento bilateral, ~3160 items).21- **Cauciones** (133 items, formato `DOLAR-DDMM-U-CT-USD`).22- **Opciones** (~429 items con strike, OI, vencimiento).23- **Indices**: S&P MERVAL (`M`), BURCAP (`G`).24- **Historicos OHLCV** diarios/semanales/mensuales para todos los instrumentos.25- **Ficha tecnica de bonos** (forma de amortizacion, intereses step-up, ISIN, ley aplicable, emisor).2627---2829## ⚠️ Aviso Legal3031- API publica de BYMA, sin documentacion oficial. Los endpoints **pueden cambiar sin aviso**.32- Respetar terminos de uso de BYMA. No hacer mas de 1 req/segundo.33- Los datos son **delayed** (~15 min tipico de mercado argentino).34- Para uso comercial intensivo, contactar BYMA para licencias oficiales.3536---3738## 🔒 Nota sobre certificado SSL3940BYMA presenta un certificado SSL cuya CA intermedia no esta incluida en41el bundle `certifi` estandar de Python. Esto causa:4243```44SSLError: CERTIFICATE_VERIFY_FAILED45```4647**El script usa `verify=False`** — la conexion sigue siendo TLS-encriptada48pero se omite la validacion de cadena. Es el patron estandar de las49librerias publicas de BYMA (`pyhomebroker`, `bymadata`, etc.).5051Si preferis no usar `verify=False`, podes instalar el cert intermedio de52BYMA en tu trust store del sistema.5354---5556## Scripts5758| Script | Descripcion |59|--------|-------------|60| **[fetch_byma.py](./scripts/fetch_byma.py)** | Script principal: todos los endpoints disponibles |6162---6364## Uso rapido6566```bash67# ── PANELES (POST) ────────────────────────────────────────────────────6869# Panel lideres: 20 acciones MERVAL x 2 settlements (40 items)70py scripts/fetch_byma.py panel leading-equity71py scripts/fetch_byma.py panel leading-equity --t0 # solo CI (T+0)72py scripts/fetch_byma.py panel leading-equity --t1 # solo 24hs (T+1)7374# Panel CEDEARs (~2000 items, lista directa)75py scripts/fetch_byma.py panel cedears7677# Panel bonos publicos (1018 items, paginado a 189 por defecto)78py scripts/fetch_byma.py panel public-bonds79py scripts/fetch_byma.py panel public-bonds --all # trae los 1018 en una llamada8081# Panel ON corporativas (~2117 items, lista directa)82py scripts/fetch_byma.py panel on8384# Panel cauciones (~133 items)85py scripts/fetch_byma.py panel cauciones8687# Panel SENEBI ON (3160 items, paginado)88py scripts/fetch_byma.py panel senebi-on89py scripts/fetch_byma.py panel senebi-on --all # trae los 3160 en una llamada9091# Panel opciones (~429 items, con strike, OI, vencimiento)92py scripts/fetch_byma.py panel options9394# ── HISTORICOS OHLCV (GET) ────────────────────────────────────────────9596# Historico de un instrumento — formato simbolo: "TICKER 24HS"97py scripts/fetch_byma.py historico "GGAL 24HS"98py scripts/fetch_byma.py historico "ALUA 24HS"99py scripts/fetch_byma.py historico "AAPL 24HS" # CEDEAR ARS100py scripts/fetch_byma.py historico "AAPLD 24HS" # CEDEAR USD101py scripts/fetch_byma.py historico "AL30 24HS" # Bono ARS102py scripts/fetch_byma.py historico "AL30D 24HS" # Bono USD103py scripts/fetch_byma.py historico "AL30C 24HS" # Bono CCL104py scripts/fetch_byma.py historico "GD30 24HS"105py scripts/fetch_byma.py historico "TZX26 24HS" # BONCAP106py scripts/fetch_byma.py historico "TY30P 24HS" # BONCAP107108# Con rango de fechas (default: ultimos 30 dias)109py scripts/fetch_byma.py historico "GGAL 24HS" --desde 2024-05-15 --hasta 2026-06-05110111# Resolutions: D (diario), W (semanal), M (mensual)112py scripts/fetch_byma.py historico "GGAL 24HS" --resolution W113py scripts/fetch_byma.py historico "GGAL 24HS" --resolution M114115# ── INDICES ────────────────────────────────────────────────────────────116117# Historico del S&P MERVAL118py scripts/fetch_byma.py indice M119py scripts/fetch_byma.py indice M --desde 2025-01-01 --hasta 2026-06-05120121# Historico del BURCAP122py scripts/fetch_byma.py indice G123124# ── FICHA TECNICA DE BONOS ─────────────────────────────────────────────125126# Ficha tecnica completa: forma de amortizacion, intereses, ISIN, ley, emisor127py scripts/fetch_byma.py bond-info AE38 # Bono soberano USD 2038 step-up128py scripts/fetch_byma.py bond-info AL30 # Bono soberano USD 2030 ley local129py scripts/fetch_byma.py bond-info GD30 # Bono soberano USD 2030 ley NY130py scripts/fetch_byma.py bond-info AE38C # Variante CCL (misma ficha)131py scripts/fetch_byma.py bond-info AE38D # Variante USD MEP (misma ficha)132py scripts/fetch_byma.py bond-info BPOA7 # BOPREAL Serie 1 A133py scripts/fetch_byma.py bond-info TY30P # BONCAP134py scripts/fetch_byma.py bond-info TZX26 # BONCAP CER135py scripts/fetch_byma.py bond-info S237Q # LECAP136py scripts/fetch_byma.py bond-info SBC1C # ON corporativa137138# ── COMBINADO ──────────────────────────────────────────────────────────139140# Snapshot de todos los paneles + MERVAL + BURCAP141py scripts/fetch_byma.py all142143# ── OUTPUT ─────────────────────────────────────────────────────────────144145# Guardar a archivo JSON146py scripts/fetch_byma.py panel leading-equity -o leading.json147py scripts/fetch_byma.py all -o snapshot_byma.json148149# Modo silencioso (solo JSON, sin logs)150py scripts/fetch_byma.py panel cauciones -q151```152153---154155## Endpoints disponibles156157| Modo | Data | Endpoint |158|------|------|----------|159| `panel leading-equity` | Top 20 acciones MERVAL x 2 settlements (40 items) | `POST /leading-equity` |160| `panel cedears` | CEDEARs (~2000 items) | `POST /cedears` |161| `panel public-bonds` | Bonos soberanos + LECAPs/BONCAPs (~1018 items) | `POST /public-bonds` |162| `panel on` | ONs corporativas (~2117 items) | `POST /negociable-obligations` |163| `panel cauciones` | Cauciones (~133 items) | `POST /cauciones` |164| `panel senebi-on` | SENEBI ONs (~3160 items, paginado) | `POST /senebi-obligaciones-negociables` |165| `panel options` | Opciones (~429 items) | `POST /options` |166| `historico <SYM>` | OHLCV diario/semanal/mensual de un instrumento | `GET /chart/historical-series/history?symbol={...}` |167| `indice <COD>` | OHLCV de un indice (M=MERVAL, G=BURCAP) | `GET /chart/index-historical-series/history?symbol={...}` |168| `bond-info <TICKER>` | Ficha tecnica de bono/LECAP/BONCAP/ON (amortizacion, intereses, ISIN, emisor) | `POST /bnown/fichatecnica/especies/general` |169| `all` | Snapshot de todos los paneles + indices | (combinado) |170171**Total: 10 endpoints publicos verificados ✅** (8 POST + 2 historicos GET).172173### Base URL174175```176https://open.bymadata.com.ar/vanoms-be-core/rest/api/bymadata/free177```178179---180181## Convenciones de simbolos182183### Historicos: formato `TICKER 24HS`184185⚠️ **TODOS los historicos requieren el sufijo ` 24HS`** (con espacio).186Sin sufijo retorna HTTP 400. El sufijo `CI` tambien retorna 400 (no187soportado). `48HS` retorna 200 con 0 puntos.188189| Tipo | Ejemplo |190|------|---------|191| Accion | `GGAL 24HS`, `ALUA 24HS`, `YPFD 24HS` |192| CEDEAR ARS | `AAPL 24HS`, `MSFT 24HS` |193| CEDEAR USD | `AAPLD 24HS`, `MSFTD 24HS` |194| Bono soberano ARS | `AL30 24HS`, `GD30 24HS`, `AE38 24HS` |195| Bono soberano USD MEP | `AL30D 24HS`, `GD30D 24HS` |196| Bono soberano CCL | `AL30C 24HS`, `GD30C 24HS` |197| LECAP/BONCAP | `TY30P 24HS`, `TZX26 24HS` |198199### Bonos: convencion de sufijos por moneda200201| Sufijo | Variante | Ejemplo |202|--------|----------|---------|203| (sin) | ARS — paridad en pesos | `AL30` |204| `C` | CCL (Contado con Liquidacion / EXT) | `AL30C` |205| `D` | USD MEP | `AL30D` |206| `X`, `Y`, `Z` | otras variantes (intra-day, settlement alt.) | `AL30X` |207208### Indices conocidos209210| Codigo | Indice |211|--------|--------|212| `M` | S&P MERVAL |213| `G` | BURCAP |214215Otros codigos (A, B, V, etc.) son aceptados pero retornan series con216todos ceros — probablemente indices deprecated.217218---219220## Filtros comunes en POST paneles221222| Filtro | Descripcion |223|--------|-------------|224| `T0=true` | Solo `settlementType=1` (CI / Contado Inmediato) |225| `T1=true` | Solo `settlementType=2` (24hs) |226| `T2=true` | Solo `settlementType=3` (48hs — practicamente vacio) |227| `page_size=5000` | Trae todo el dataset en una sola llamada (recomendado para `public-bonds` y `senebi-on`) |228229⚠️ El parametro `page` (numero de pagina) **es ignorado por la API** —230siempre devuelve pagina 1. Workaround: usar `page_size` grande o flag `--all`.231232---233234## Consideraciones tecnicas235236### Datos devueltos por `panel` (todos)237238Cada item incluye:239240| Campo | Tipo | Descripcion |241|-------|------|-------------|242| `symbol` | string | Ticker BYMA. |243| `settlementType` | string | `"1"` (CI) o `"2"` (24hs). |244| `securityType` | string | `CS` (Common Stock), `CD` (CEDEAR), `GO` (Government Obligation), `CORP` (ON), `QS` (Caucion), `OPT` (Option). |245| `denominationCcy` | string | `ARS`, `USD`, `EXT`. |246| `market` | string | `BYMA` o `SENEBI`. |247| `trade` | float | Ultimo precio operado. |248| `closingPrice` | float | Cierre del dia. |249| `settlementPrice` | float | Precio de settlement. |250| `openingPrice`, `tradingHighPrice`, `tradingLowPrice` | float | OHL del dia. |251| `previousClosingPrice`, `previousSettlementPrice` | float | Cierre / settlement anterior. |252| `imbalance` | float | Variacion % vs anterior (decimal: -0.0098 = -0.98%). |253| `volume`, `tradeVolume` | float | Volumen nominal. |254| `volumeAmount` | float | Monto efectivo en moneda. |255| `vwap` | float | Volume-Weighted Average Price. |256| `bidPrice`, `offerPrice` | float | Mejor bid/offer (0 fuera de horario). |257| `quantityBid`, `quantityOffer` | float | Cantidades de bid/offer. |258| `numberOfOrders` | int | Numero total de ordenes del dia. |259| `openInterest` | float | Interes abierto (real en opciones/cauciones; 0 en acciones). |260| `tickDirection` | int | -1 / 0 / +1 (downtick / unchanged / uptick). |261| `tradeHour` | string | Hora del ultimo trade. |262263### Campos extra en bonos / ONs / cauciones / opciones264265| Campo | Descripcion |266|-------|-------------|267| `maturityDate` | Fecha de vencimiento (ISO `YYYY-MM-DD`). |268| `daysToMaturity` | Dias hasta vencimiento. |269| `underlyingSymbol` | Underlying (solo cauciones y opciones). |270| `optionType` | `CALL` o `PUT` (solo opciones). |271272### Datos devueltos por `historico` e `indice`273274```json275{276 "s": "ok",277 "t": [unix_seconds, ...],278 "o": [opens, ...],279 "h": [highs, ...],280 "l": [lows, ...],281 "c": [closes, ...],282 "v": [volumes, ...]283}284```285286| Campo | Descripcion |287|-------|-------------|288| `s` | Status: `"ok"`, `"no_data"`, `"error"`. |289| `t[]` | Timestamps unix UTC SECONDS (no millis). |290| `o[]`, `h[]`, `l[]`, `c[]` | OHLC alineados por indice. |291| `v[]` | Volumen (suele ser 0 en indices). |292293### Datos devueltos por `bond-info`294295Devuelve `{content, data, empty, upgrade}` donde `data[0]` (cuando existe)296contiene la ficha tecnica del bono. Para acciones, opciones y tickers297inexistentes: `data: []` y `empty: true`.298299Campos del `data[0]`:300301| Campo | Tipo | Descripcion |302|-------|------|-------------|303| `ley` | string | Jurisdiccion aplicable: `Nacional`, `Extranjera`, `Nueva York`, `Inglaterra`. Critico para distinguir AL30 (ley local) de GD30 (ley NY). |304| `formaAmortizacion` | string | **TEXTO PLANO** con el cronograma de amortizacion (numero de cuotas, periodicidad, fechas, %). Para bullet: `"Al vencimiento"`. |305| `interes` | string | **TEXTO PLANO** con esquema de devengo de intereses. Para step-up describe cada tramo de tasa. Para CER describe el ajuste por inflacion. |306| `denominacionMinima` | int | Denominacion minima de emision. |307| `fechaEmision` | string | `YYYY-MM-DD HH:MM:SS.f`. |308| `fechaVencimiento` | string | `YYYY-MM-DD HH:MM:SS.f`. |309| `fechaDevenganIntereses` | string | Fecha inicio devengo (suele estar vacia). |310| `codigoIsin` | string | ISIN del instrumento. |311| `tipoEspecie` | string | `Titulos Publicos`, `Obligaciones Negociables`, `Letras del Tesoro`. |312| `tipoObligacion` | string | Clasificacion regulatoria: `Valores Publicos Nacionales`, `Provinciales`, `Corporativos`. |313| `tipoGarantia` | string | `Comun`, etc. |314| `default` | string | Estado de default (vacio si esta al dia). |315| `montoNominal` | int | Monto nominal total emitido. |316| `montoResidual` | int | Monto residual actual (post-amortizaciones). |317| `denominacion` | string | Nombre oficial completo del bono. |318| `insType` | string | `BOND`. |319| `paisLey` | string | Pais de ley aplicable. |320| `moneda` | string | `Dolares`, `Pesos`, `Pesos Ajustables por CER`, `Dolar Linked`. |321| `emisor` | string | `Gobierno Nacional`, `Provincia de Buenos Aires`, `YPF S.A.`, etc. |322323### Diferencia entre paneles `dict` y `list`324325| Panel | Tipo response | Estructura |326|-------|---------------|------------|327| `leading-equity`, `public-bonds`, `senebi-on` | dict | `{content: {page_number, page_count, page_size, total_elements_count}, data: [...], empty, upgrade}` |328| `cedears`, `on`, `cauciones`, `options` | list | `[item, item, ...]` directo |329330### Flags adicionales331332| Flag | Descripcion |333|------|-------------|334| `--all` | Forza `page_size=5000` para traer todo en una sola llamada |335| `--t0` | Solo settlementType=1 (CI) |336| `--t1` | Solo settlementType=2 (24hs) |337| `--page N` | Numero de pagina (ignorado por la API — usar `--all`) |338| `--page-size N` | Items por pagina (default: 200) |339| `--desde YYYY-MM-DD` | Fecha desde (historicos) |340| `--hasta YYYY-MM-DD` | Fecha hasta (historicos) |341| `--resolution X` | `D`, `W`, `M` (default: `D`) |342| `-o archivo.json` | Guardar output a archivo |343| `-q` / `--quiet` | Modo silencioso (solo JSON) |344345### Rate limiting346347No hay rate limiting documentado. Recomendado:348- Minimo **0.3 segundos** entre requests.349- El modo `all` usa `time.sleep(0.3)` automaticamente.350351### Manejo de errores352353| Status | Causas tipicas |354|--------|----------------|355| 400 | Simbolo invalido (sin `24HS`, ticker desconocido) |356| 401 | Endpoint inexistente (BYMA usa 401 generico, no 404) |357| 415 | Content-Type erroneo (POST debe ser `application/json`) |358| 500 | Error interno de BYMA |359360### Conversion de fechas361362```python363from datetime import datetime, timezone364# Unix seconds -> datetime365dt = datetime.fromtimestamp(ts, tz=timezone.utc)366# datetime -> Unix seconds367ts = int(datetime(2026, 6, 5, tzinfo=timezone.utc).timestamp())368```369370---371372## Estructura del skill373374```375skills/byma/376├── SKILL.md # Este archivo (guia rapida)377├── references/378│ └── REFERENCE.md # Documentacion completa de todos los endpoints379└── scripts/380 └── fetch_byma.py # Script principal381```382383---384385> **Documentacion detallada:** Consultar [references/REFERENCE.md](./references/REFERENCE.md)386> para documentacion exhaustiva de cada endpoint, schemas JSON, codigos387> de settlementType/securityType, manejo del cert SSL, paginacion y388> consideraciones tecnicas.