El dominio US Treasuries cubre los títulos del Tesoro de Estados Unidos: el catálogo de subastas desde 1980, la ficha de cada título, un precio de modelo sobre la curva del Tesoro, la curva diaria y su historia, y una calculadora que convierte entre precio y rendimiento. Todas las rutas están bajo
/api/v1/treasuries y requieren el scope treasuries:read. Por ahora se consultan solo por REST: el servidor MCP todavía no tiene herramientas de Treasuries.Qué hay en el dominio
Unidades
Las tasas no vienen en la misma escala en todos los endpoints. Es el error más fácil de cometer en este dominio.
El mismo nombre de campo cambia de escala según el endpoint. Para la letra
US912797VR56, discount_rate vale 4.297802197802198 en /price y 0.0375 en /calculator?input=discount_rate&value=0.0375. Dentro de la calculadora, el cupón de notas y bonos (coupon) sigue en porcentaje: 4.625.
Los parámetros de la calculadora siguen la misma regla que su respuesta. Una tasa en value va como fracción (value=0.042 es 4,2%) y la calculadora acepta rendimientos entre -0.5 y 2.0. Un value=50 responde 422 con invalid_value.
Las diferencias de la curva (compare.points[].change) y el spread de la historia están en puntos porcentuales: "spread": 0.25 son 25 puntos básicos.
Los precios siempre son por 100 de valor nominal. currency decide la moneda de pocos campos: price en /price, y market_price, principal, accrued_amount y total en la calculadora. Los demás precios (price_usd_per_100, clean_price, dirty_price, accrued_interest) quedan siempre en dólares por 100.
Identificadores
Donde la API pide un título ({id} en la ruta o id en la calculadora) acepta tres formas, sin distinguir mayúsculas:
- ISIN de 12 caracteres:
US91282CMM00. - ISIN sin dígito verificador, 11 caracteres:
US91282CMM0. La API completa el dígito. - CUSIP de 9 caracteres:
91282CMM0.
US91282CMM01) o un texto con otra forma (abc) responde 422 con invalid_id. Para buscar por un fragmento de ISIN o CUSIP usá el parámetro q del catálogo.
Tipos de título
kind sale de las marcas del título y no de security_type. Un TIPS o un FRN tienen security_type Note o Bond, y una letra de caja tiene Bill. En /price y en la calculadora el campo equivalente es family, que vale BILL, NOTE o BOND: una letra de caja aparece como BILL.
Los STRIPS no están en el catálogo. Un CUSIP de STRIPS responde 404 con excluded_strips en la ficha, en /price y en la calculadora.
El 11 de noviembre de 2026 el catálogo tenía 5.099 títulos desde 1980, y 454 vigentes: 238 notas, 112 bonos, 53 TIPS, 44 letras y 7 FRN.
Precio de modelo, no cotización
/price no es una cotización de mercado, ni una operación ni el precio de un dealer. Es el precio que sale de valuar el título con la curva del Tesoro de un día (rate_date):
- Una letra se valúa por descuento bancario: la tasa de descuento de la curva
bill_discountinterpolada linealmente en días al vencimiento, y precio100 × (1 − d × días / 360). - Una nota o un bono se valúan descontando los cupones y el capital al
par_yieldinterpolado linealmente en días al vencimiento, con capitalización semestral y devengamiento ACT/ACT alas_of. Elpricede una nota o un bono es el precio sucio (dirty_price).
/price.
Fechas
- Las tasas existen desde el 2 de enero de 2025. Pedir la curva, un precio o una calculadora para una fecha anterior responde 422
no_rates_on_or_before, confirst_rate_date: "2025-01-02"endetails. Esa fecha está verificada parapar_yield: en las curvas de letras, mirá elfirst_rate_datedel error. - Hay una curva por día hábil de Estados Unidos. Si pedís un fin de semana o un feriado, la API usa el último día con tasas anterior y lo informa en
rate_dateyrate_age_days. Por ejemplo,/curve?date=2026-11-08(domingo) devuelve la curva del viernes 6 conrate_age_days: 2. - Sin fecha,
/curve,/curve/historyy/priceusan el último día con tasas. El catálogo, la ficha y la calculadora usan la fecha del día del servidor. /pricerechaza una fecha futura (422invalid_date). La calculadora la acepta: valúa una operación a futuro con el calendario de pagos del título.- La liquidación de la calculadora sigue el calendario de feriados de la Reserva Federal.
24hsliquida el primer día hábil posterior aas_ofyCIel mismoas_ofsi es hábil. El 11 de noviembre de 2026 es feriado (Veterans Day), así que una operación del 10 con24hsliquida el 12.
Recetas
Todas las requests llevan el token comoBearer. Ver autenticación.
Screener de títulos vigentes
Pedí el catálogo conoutstanding=true. Sin ese filtro la API lista todos los títulos desde 1980, vencidos incluidos, hasta 1.000 filas. Con limit=10000 traés los 454 vigentes en una sola request.
type=bill (letras), type=note.bond (notas y bonos), maturity_from y maturity_to (rango de vencimiento, inclusivo) y term=52-Week (plazo exacto de la subasta original). Las filas vienen ordenadas por vencimiento. Respuesta de ?type=bill&outstanding=true&limit=3, con la primera fila de tres:
/price por cada letra, nota o bono de la lista (los TIPS y FRN no se valúan). Es una request por título.
Buscar por ISIN o CUSIP
q busca un fragmento dentro del ISIN o del CUSIP, sin distinguir mayúsculas. Sirve para un buscador: con q=91282CJK aparece la nota US91282CJK80. Si ya tenés el identificador completo, pedí la ficha directo.
912797, matchea muchas letras, y como el orden es por vencimiento las primeras filas son las vencidas más antiguas. Para un buscador que muestre primero lo vigente, pedí también con outstanding=true y uní los resultados.
La curva de un día y su comparación contra otra fecha
GET /curve devuelve la curva par_yield del último día con tasas, de 1 mes a 30 años. Para letras, pedí curve=bill_discount o curve=bill_coupon_equivalent (de 4 a 52 semanas). Con date elegís el día y con compare_date sumás la curva de otra fecha y el cambio por tenor.
points y compare.points recortados a tres de los 14 tenors:
tenor_days (o tenor como etiqueta) en el eje X y rate en el Y, una serie por fecha. change es la curva principal menos la comparada, en puntos porcentuales: el 2 años subió 1,26 puntos entre el 2 de enero y el 10 de noviembre.
La tasa interpolada a N días
tenor_days agrega interpolated: la tasa interpolada linealmente en días entre los dos tenors que rodean ese plazo. Sirve para la tasa libre de riesgo a un plazo que no es un tenor publicado, por ejemplo los días al vencimiento de un título.
interpolated, el mismo bloque del ejemplo anterior: 4,4957% a 300 días, entre 4,38% a 183 días (6M) y 4,56% a 365 días (1Y). En un tenor exacto, lower y upper son el mismo punto. Por debajo del primer tenor o por encima del último, la tasa es la del extremo.
Comparar dos tenors y su spread
/curve/history con tenors y spread arma el gráfico clásico de 2 contra 10 años con la pendiente de la curva.
spread es el primer tenor menos el segundo, en puntos porcentuales. Los tenors van separados por punto y 1.5M lleva su propio punto: tenors=1.5M.2Y funciona. Para letras usá curve=bill_discount con tenors como 4W.52W.
La ficha de un título
reopenings recortado a la subasta original (son tres):
as_of ves el calendario de cupones de otra fecha. La ficha responde también títulos vencidos, TIPS y FRN, aunque esos no tengan precio.
La cotización: precio de modelo y su rendimiento
Docta Terminal muestra para cada título un precio y su rendimiento. No hay un endpoint que lo devuelva junto: es/price y después la calculadora con ese precio.
1
Pedí el precio de modelo
price_usd_per_100 y rate_date:2
Pasá ese precio a la calculadora
Encadená por precio y no por tasa: De la respuesta (recortada),
/price responde tasas en porcentaje y la calculadora las espera en fracción. Usá as_of igual a rate_date y settlement_entry=24hs. El tipo de input depende del título:- Nota o bono:
input=dirty, porque elprice_usd_per_100de una nota o un bono es el precio sucio. - Letra:
input=price, porque una letra no tiene cupón y su precio es uno solo.
yield_to_maturity es el rendimiento de la cotización, en fracción:par_yield de /price porque 24hs liquida el día hábil siguiente (acá el 12 de noviembre, por el feriado del 11) y /price valúa al as_of. Si querés el rendimiento exacto del precio de modelo, usá settlement_entry=CI, que liquida el mismo as_of. Con CI la calculadora da 0.04927972602739711, que es el par_yield 4.927972602739726 pasado a fracción.
Para la letra US912797VR56, /price dio price_usd_per_100: 96.80052503052504 y la calculadora con input=price&value=96.80052503052504&settlement_entry=24hs&as_of=2026-11-10 dio yield_to_maturity: 0.04503531599403868.
Valuar en pesos
currency=ars_ccl o currency=ars_mep convierte el precio al dólar CCL o MEP del día de la valuación, o al último publicado antes. La respuesta informa el dólar usado en fx_value y su fecha en fx_date.
currency dice en qué moneda está el precio que mandás. Con currency=ars_ccl&input=clean&value=150000 le decís que pagás 150.000 pesos por 100 dólares nominales. La API lo pasa a dólares con el CCL (clean_price: 89.3538461538463) y calcula el rendimiento de ese precio (yield_to_maturity: 0.06296599461393954). Las tasas en value no cambian con la moneda.
Para fijar el dólar en lugar de usar el del día, mandá fx_value. Solo funciona con currency=ars_ccl o ars_mep. Con usd responde 422 invalid_fx_value.
fx_value la respuesta no trae fx_date y suma overrides_applied.
Aunque el cuerpo diga "currency": "ARS", no todos los precios pasan a pesos:
principal, accrued_amount y total son montos por el nominal de face, no precios por 100. La relación entre las dos monedas es fx_value: en el ejemplo, 150000 / 1480 da 101.35135135135135, el clean_price en dólares.
Montos con face
face es el valor nominal que tenés o querés operar. La calculadora suma principal (nominal por precio limpio), accrued_amount (interés corrido) y total (lo que pagás), en la moneda de currency.
accrued_amount es 0.0 y principal es igual a total: 1.000.000 nominales de US912797VR56 al 3,75% de descuento dan total: 972291.6666666667.
Qué podés armar combinando piezas
Errores
Los errores del dominio usan el mismo sobre que el resto de la API y sumandetails, con un code estable que distingue cada caso:
type,titleystatusdependen solo del status HTTP:/errors/not-foundyResource not foundpara 404,/errors/validation-erroryValidation Errorpara 422.detailes el mensaje, en inglés. Sirve para mostrarlo o loguearlo, pero puede cambiar.details.codees lo que tu código tiene que leer. Algunos códigos suman datos endetails:isin,maturity_date,issue_date,first_rate_dateofx_used.
En
/price y en la calculadora gana el primer error que aplica, en este orden: parámetros e identificador (422), título fuera del catálogo o excluido (404), vencido (404), no emitido (404), sin tasas (422), sin dólar (422) y, en la calculadora, el precio que no converge (422). En la calculadora, los chequeos que dependen del tipo de título, como un input de letras en una nota o el rango de un rendimiento, corren después de ubicar el título en el catálogo.
Además de estos, la API responde 401 sin token válido, 403 si tu cliente no tiene el scope treasuries:read y 429 si superaste el límite de tu plan: