PT
Metodologia aberta

ETFs: how each figure is built

ETFs: how each figure is built

ETFs listed on B3 are the third vertical of Dados B3, next to companies and real-estate funds. No figure here is typed by hand: each comes from a public source, with the date it became public, and what does not exist in a public source is not published.

Sources

Data Source Granularity
Registry (name, CNPJ, CVM code, status, start, auditor, custodian) CVM fund registry under Resolution 175, class "FIIM" (index fund) snapshot
Ticker, manager, registrar, shares issued B3 public listed-funds query snapshot
NAV per share, inflows, redemptions, net assets, total portfolio, shareholders FNET, the "Daily Report" the administrator files with the regulator and the exchange daily
Monthly accounts (net assets, shares outstanding, management fee expense) FNET monthly "Balance Sheet", COFI chart of accounts monthly
Portfolio CVM, portfolio composition file (CDA) for index funds monthly
Closing price and volume B3 COTAHIST, cash market, standard lot daily

The universe is the intersection: a FIIM class in operation in the CVM registry, with an acronym on the B3 list and a ticker that traded in COTAHIST. There is no hand-kept ticker list.

Premium and discount

premium = close ÷ NAV per share − 1, only on a day where both exist. Nothing is interpolated: if the administrator did not file that day's report, there is no row. Beyond ±10% the figure carries the agio_extremo flag, which usually means a stale NAV or a share that did not trade.

A day's NAV becomes public on the date the report is filed, normally the next day. The page shows the filing date. A day's report carries the whole month up to that day, so the latest document of a month always prevails over an earlier one.

Effective fee

The nominal fee in the bylaws does not exist as a structured field in any public source we found, neither at the CVM nor at B3. What exists is the booked expense: the "fund management fee expense" accounts (which include the effective and the management portions) in the monthly balance sheet.

annualised effective fee = month's expense ÷ month's average net assets × 12, where the average is taken over the daily net assets in the daily report.

Result accounts in the COFI chart accumulate over the fund's fiscal year. The month's expense is the difference between the month's balance and the previous month's; when the balance falls, a new fiscal year started and the month's balance is the expense itself (flag exercicio_novo). Without the previous month, the figure is cumulative and flagged acumulado_sem_mes_anterior. Outside 0% to 5% a year, taxa_fora_da_faixa. None of these flags ever disappears.

Returns

The fund return is the change in NAV per share, which already includes everything the portfolio receives (equity dividends, bond coupons). It is total return by construction. The "real" line deducts the IPCA accumulated in the window, edge months pro rata by days.

The price return is what the share traded at and ignores any distribution. The gap between the two lines is the premium moving. An ETF price is never used as a proxy for the fund's return.

Portfolio and overlap

Month-end positions, weight over the month's net assets. Repos, cash and payables or receivables are left out of the overlap. The overlap between two ETFs is the sum of the smaller weight of each common holding, same month.

The replicated index is not a declared field in any public source either: it is inferred from the fund name by simple rules and the page says "by name". A fund whose name does not allow the inference gets no index, not a guess.

Daily price series, adjusted series and distributions

The whole trading day. For each unit (ETF and FII) we keep, from the B3 COTAHIST file (cash market), open, high, low, close, traded value, number of trades and number of units traded. Prices are as traded. If a day's four prices do not fit together (low above the open or the close, close above the high, low of zero), that day's open, high and low are left empty and the day stays in the series with its close: nothing is corrected or made up. In the 27/10/2026 measurement over the 2010 to 2026 files, 4 FII days fell in that case (all on 08/06/2020, a subscription-rights day on which the close lies outside the day's range) and no ETF day did. The daily series is at /etfs/{TICKER}/precos and /fiis/{TICKER}/precos, as JSON or ?formato=csv.

Adjusted series (ETF). COTAHIST does not adjust the price for unit splits or reverse splits: in a 3:1 split the price falls to a third in one session and the holder has lost nothing. The event comes from the fund's B3 record (the same block that carries stock events) and adjusts only if the price confirms it: the close of the last day with the right divided by the next session's close must be compatible with the declared multiplier (the same check used for stocks). fechamento_ajustado is the close divided by the product of the confirmed events' multipliers, applied to every session up to each event's record date and anchored on the last session in the database. Open, high, low and volume are not adjusted. A declared event the price does not confirm adjusts nothing and shows in the event list as not confirmed.

An unexplained jump is flagged, not adjusted. When the close changes by more than 2.5 times (up or down) from one session to the next and no confirmed event explains it, the pair of dates and the ratio go into saltos_sem_explicacao, and any return window that crosses the jump has no number, with the reason. This also holds for FIIs, which have no unit-event table: the FII series is not adjusted.

Return with distributions reinvested. It comes from the same calculation used for stocks and FIIs: on the ex-date (first session after the record date) the distribution per unit buys more units at that day's close, factor 1 + distribution ÷ close. No tax, no costs. Distributions come from B3 (the same source as FIIs, queried by the fund's short code). B3 reports about 12 months per query, so the history accumulates with each rebuild of the database and the response states since when we hold distributions (proventos.desde).

What the source has and does not have. In the 27/10/2026 query, 24 of 228 ETFs returned some row. Among those that distribute are DIVD11, NDIV11, IWMI11, QQQI11 and XBCI11. BOVA11, IVVB11 and SMAL11 answer with no distribution at all: these funds do not distribute, and the dividends of the portfolio's stocks stay inside the unit, so the unit's change already includes the dividend and we estimate nothing. Fixed-income ETFs (IMAB11, LFTS11 and others) do not answer on that B3 endpoint; for them we hold neither distributions nor unit events, and this is stated without an estimate. Splits older than what B3 keeps for the fund may also be missing: if the price jumps and no event explains it, the jump is flagged.

What is not here

Distributions of fixed-income ETFs and distributions older than what B3 reports (about 12 months per query) are not here; the ETF's /quanto-rendeu page still counts price only. Tracking difference against B3's official index is not here either.

Sources: CVM (open data, ODbL) and B3 (COTAHIST). Not affiliated with B3 or the CVM. Not investment advice.

Numbers on this page are live. Data version 2026-11-03-codigos-de-cota-fii · page generated 2026-11-04 18:38 UTC. If this does not match /saude, you are reading a cached copy.