Register-01 fields
Catalog v69 publishes a machine-readable reference atcatalog().cotahist:
source-field aliases, route applicability and all CODBDI codes in the
B3 layout revision 2.0, 2020-10-05,
plus observed codes absent from that document. Descriptions for the latter stay
null. The table below and the existing fund-subtype rules describe storage and
classification; a dated dictionary label must not replace those rules.
Existing routes expose original market, board and contract fields.
Cash and termo use contract_price, contract_expiry, contract_correction
and contract_points; option routes retain their existing strike/expiry names.
contract_points_raw preserves PTOEXE text, including leading zeros.
distribution_number is available beyond options too. Neither a code in the
dictionary nor a field in a schema proves historical observations exist.
TPMERC — market type
Exercises (012/013, ~1 print per series) and auctions (017, ~210 rows on the whole
tape) are events, not series — computing returns over them is meaningless, which
is why they live on their own endpoints instead of the quote surface.
CODBDI — board/category
The load-bearing values, validated live againstcvm_etf_registry (127 of 247
codbdi-14 tickers matched; zero codbdi-12/13 did):
This is what powers
fund_type on fund_quotas: the
ETF/FII/FIDC/FIAGRO split comes from the published board code, never from the ticker’s
shape.
ESPECI — specification
A fixed-position 10-character field packing three things:- cols 1–4 — share class:
ON,PN,PNA,PNB,PNC,PND,UNT,CI,DR*… Served asshare_classonequities, cross-checked against the ISIN class code (chars 10–11:OR/PR/PA/PB/PC) with zero disagreements on the 2026-08 tape. - cols 5–8 — rights/status flags:
ED(ex-dividend),EJ(ex-juros),EDJ,ATZ… Left insidespecas published. - cols 9–10 — listing segment:
NM(Novo Mercado),N1,N2,MA,M2,MB. Served asgovernance_segment.
The ISIN carries structure too
A Brazilian ISIN isBR + 4-char issuer + 3-char security category (chars 7–9:
ACN shares, UNT units, BDR, CTF fund quotas, IND indices) + 2-char class +
check digit. Two consequences the API uses:
- An option row’s ISIN is its underlying’s ISIN — B3’s published option→underlying
mapping.
underlying_tickeron the option endpoints joins it to the same session’s cash print (measured: 14,895 of 14,900 rows matched, 1:1). PETR-prefix options split correctly between PETR3 and PETR4 — something the ticker root can never do. - Index prints exist in COTAHIST (
INDcategory:IBOV11, plus threeSMLL11prints). They are option-settlement indices, not the official close, so they are not served as an index series: useindex_history.IBOV11printed on expiry days only through 2024, weekly in 2025 and on nearly every session since December 2025.
Supplemental code interpretations (reviewed 2026-10-07)
The 2020 layout labels remain unchanged. Catalogcotahist.supplemental_interpretations
records interpretations with source URLs and unknown validity intervals:
13 FIAGRO; 34 non-sponsored BDRs (DRN); 35 sponsored BDRs and associated
instruments (DR1/DR2/DR3, also PPLA11 UNT); 36 ETF BDRs (DRE).
These mappings are observed in the 2026-10-05 source file, not certified code-table labels.
B3’s block-trading documentation
defines M as Midpoint and Q as BBT. Source records associate 92/M and 93/Q
with market 021. The previous odd-lot interpretation of 021 was incorrect.
INDOPC 0 is interpreted as BRL/no correction index indicated using the related
Títulos Negociáveis layout,
which maps ICOATV 0 to R$; it does not explicitly define INDOPC 0.