Parameters, response columns and types are generated from the SQL catalog and
render under Endpoints → Rates in the sidebar. This page carries what a schema
cannot: how each rate is quoted, and which vertices are B3’s extrapolation.
Overview
Four functions over two B3 files Silo ingests daily. Nothing is interpolated, rolled or spliced; the one derived column iscontract_month.
future_curve(p_root, p_trade_date)— every outright DI1 contract on one session, nearest maturity first. Default: the newest session held.future_series(p_ticker, p_from, p_to)— one contract through time. The same contracts are inpanelasid_typefuture(settlement_rate,settlement_price,open_interest), next to tickers and funds.curve(p_curve, p_trade_date)— one reference curve on one session, every vertex. Default:PRE, the newest session held.curve_history(p_curve, p_tenor_days, p_from, p_to)— one of B3’s fixed vertices through time.
DI1 futures
The source is B3’s Price Report (BVBG.086.01), one row per session and
outright DI1 contract, from 2018-01-02; B3’s older reports are empty.
- DI1 is quoted in rate.
settlement_rateand theopen_px/low_px/high_px/avg_px/close_pxcolumns are % a.a. on 252 business days, so the low rate is the high price.settlement_priceis the PU: R$ per contract, 100,000 at maturity. contract_monthis the first day of the month the ticker names, read with B3’s month letters (FJanuary,GFebruary,HMarch,JApril,KMay,MJune,NJuly,QAugust,USeptember,VOctober,XNovember,ZDecember). The contract matures on that month’s first business day. The business days to maturity are not stored and not computed here.- Nothing is made continuous.
future_seriesfollows one contract from listing to expiry. For a constant maturity, read B3’s own curve below.
Reference curves
The source is B3’s reference-rate file (TaxaSwap.txt), every vertex of three
curves, from 2008-01-02. Read rate_basis before comparing two curves.
B3 defines implied inflation as
(1 + PRE) / (1 + DPL) − 1 at the same tenor.
It carries an inflation risk premium: market pricing, not an expectation.
DPL’s shortest vertices lean on the current month’s IPCA projection.
Fixed and moving vertices
B3 publishes every curve on one grid:- Fixed vertices (
vertex_type = F) sit at nominal tenors, whichvertex_codecarries: 1, 7, 14, 21, 30, 60, 90 … 360 … 720 … 1800 … 10800 calendar days. The actualcalendar_daysis a day or two longer when the nominal date is not a business day. The 30-day vertex was 30 days on 2008-01-02 and 31 on 2026-09-25. - Moving vertices (
M) sit at the maturities of B3’s contracts.
curve_history serves a fixed vertex by its nominal tenor (p_tenor_days). Any
other tenor raises 22023 listing the fixed ones, because an interpolated tenor
is a choice of method. Read curve and interpolate in the notebook; B3’s own
method for PRE and DPL is flat-forward on 252 business days.
Freshness
coverage() has a di_futures row and a
reference_curves row. Each landed_at is its own ingest (the Price Report and
the reference-rate file log separately under the market ingest). History comes
from a backfill, so a span that starts later than the dates above was not
loaded; it is not missing at B3.
Limits
All four refuse above one 1,000-row page (22023). One session is about 50 DI1
contracts and about 300 vertices per curve. For the two histories, narrow
p_from / p_to: a daily series fits about four years per call.