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.
What is not here
ETF distributions (the few that pay) are not included yet; they are left for a later round. Tracking difference against B3's official index as well.