Reference

Methodology

Ratios such as P/E, ROE and EV/EBITDA are formulas applied to facts, and every data provider picks its own formula. This page lists, for every fundamentals field Bolsix returns, the CVM account it comes from or the formula that computes it.

Facts and formulas

Facts come from the official filers only. Financial statements come from CVM's DFP (annual) and ITR (quarterly) filings; prices, share counts and distributions come from B3. Each statement line is stored exactly as filed, with a link back to the filing. Ratios are computed by Bolsix with the formulas below. Where an accounting standard defines a figure, we follow it; where it doesn't, this page says which choice we made.

Money values are in BRL, as integers. Ratios and rates are decimal fractions: an ROE of 27.7% is returned as 0.277.

DataSourceRefreshed
StatementsCVM open data: DFP (annual) and ITR (quarterly) archivesWeekly
Price-based ratiosMarket cap, P/E, P/B, P/S, EV/EBITDA and dividend yield, from the stored statements at the latest closeEvery trading day
PricesB3 COTAHIST official end-of-day quotes (not real-time)Daily
SharesB3 BVBG028 instrument file, per listed classDaily
DistributionsB3 dividends, JCP and fund distributions; FII history older than B3's 12 months from each fund's structured notices on B3's FundosNet, from 2020Daily
Corporate actionsB3 listed-issuer events (splits, reverse splits, bonuses), with CVM FRE for pre-2024 historyDaily
FundsCVM monthly structured report (informe mensal) for FIIs and FiagrosMonthly

Which filing

  • Consolidated first. When a company files consolidated statements, those are used; that is how companies report their results. A company without subsidiaries files only individual (parent-only) statements, and those are used. Banks are the exception for shareholders' figures (see Banks).
  • Latest version. Companies refile to correct a filing. Every version is kept and the latest is served.
  • Point in time. /v1/stocks/statements?as_of=YYYY-MM-DD returns only what CVM had made available by that date, so backtests don't see the future.
  • Provenance. Every statement row carries the CVM filing id, a link to the filing on CVM's RAD system, the filing version, the date CVM made it available, and a hash of the archive it was read from.

Statement fields

Returned by /v1/stocks/statements. Codes are CVM's standard chart of accounts. Where a code varies between companies, the line is matched by the label CVM requires instead.

FieldCVM accountNotes
revenue3.01Net revenue
gross_profit3.03
ebit3.05Result before financial result and taxes, as filed: CVM's LAJIR (Resolução CVM 156). Includes equity-method income and other operating income and expenses.
ebitda3.05 + D&ACVM's LAJIDA: EBIT plus depreciation, amortization and depletion, read from the cash flow statement's lines under 6.01.01. An amortization line counts when it names an operating asset (right-of-use, intangibles, a business combination's fair-value step-up) and not when it names debt costs, goodwill, present-value unwinding, prepaid expenses or taxes.
net_income3.11Consolidated net income, including minority shareholders. Some banks file it at 3.09.
net_income_parent3.11.01 (label: Atribuído a Sócios da Empresa Controladora)Attributable to the parent's shareholders. The code varies (3.11.01, 3.09.01, 3.13.01), so it is matched by label. Empty for individual-only filers, whose net income already is the parent's, and when the split is filed as 0 under a nonzero result: the share of a profit can't be nothing, so that 0 means the company left it unfilled. Where it's empty, the ratios below use net_income.
total_assets1
total_liabilities2.01 + 2.02Current plus non-current liabilities
equity2.03 (label: Patrimônio Líquido Consolidado)Total equity, including minority shareholders. Matched by label because banks file it at other codes (2.07, 2.08).
minority_interest2.03.09 (label: Participação dos Acionistas Não Controladores)The minority shareholders' share of equity. Matched by label (2.03.09, 2.07.02, 2.08.09).
cash1.01.01Cash and cash equivalents
short_term_investments1.01.02Short-term investments (Aplicações Financeiras). Empty for banks, which use the code for other lines.
total_debt2.01.04 + 2.02.01Loans, financing and debentures, including lease liabilities under IFRS 16
operating_cf6.01
investing_cf6.02
financing_cf6.03

Periods

periodMeaning
annualThe fiscal year, from the DFP.
quarterlyOne discrete quarter. ITRs state some lines year-to-date, so a quarter is the year-to-date figure minus the previous quarter's. When the previous quarter isn't available, no value is published: a year-to-date figure is never labelled as a quarter.
ttmThe last twelve months. CVM has no fourth-quarter filing, so at a quarter end it is the last fiscal year, plus this year's quarters, minus the same quarters a year earlier; at a fiscal year end it is the year itself. If any quarter the sum needs is missing, no TTM is published for that date.

On quarterly rows, flow-based ratios (P/E, P/S, EV/EBITDA, ROE, ROA, net debt/EBITDA) use the quarter's flows annualized ×4, as Brazilian quarterly releases do; margins and EPS are the quarter's own. To compare with other sources, use period=ttm.

Market data

FieldDefinition
priceThe official close of the last B3 trading session, with its session_date.
sharesThe company's ON and PN shares in B3's company registry, which includes classes that don't trade (Raízen's controllers hold 8.99bn unlisted ON shares beside 1.36bn listed PN). When no registry count is available, the listed classes' counts from B3's daily instrument file, counted once: units (such as SANB11 or KLBN11) bundle shares already counted in their ON and PN classes, and two preferred classes (PNA, PNB) carrying the same preferred total count it once. Treasury shares are not deducted.
market_capThe sum over the company's share classes of each class's price × its shares. A company with ON and PN shares is valued at both prices, not at one ticker's price for all shares; a class that doesn't trade is valued at the listed class's price, and a company listed only through units at the unit's price per share. A preferred total shared by several classes is priced at the most-traded one.

/v1/stocks/prices is split-adjusted by default (adjust=split): every bar before a split, reverse split or bonus is divided by the event's ratio, applied on the date the price actually re-based. adjust=total_return also reinvests dividends, JCP and returns of capital, and adjust=raw returns prices as traded.

Ratio fields

Returned by /v1/stocks/fundamentals. Price-dependent values (market cap, P/E, P/B, P/S, EV, dividend yield) are priced only on each series' latest period; older rows carry the ratios their statements support.

A unit ticker (KLBN11, TAEE11) is a bundle of the company's shares, and its price and dividends are per unit, so its eps and book_value are too: the per-share value times the shares in the unit, as the company states them in its CVM registration form (KLBN11: 1 ON + 4 PN, five). Both are empty for a unit whose composition CVM doesn't list. Ratios are the company's and read the same for every ticker.

FieldFormulaNotes
epsnet_income_parent ÷ sharesEarnings per share on the parent's shareholders, as IAS 33 / CPC 41 define it. Per unit for a unit ticker (see below)
pe_ratiomarket_cap ÷ net_income_parentNegative when the company lost money: a real value, not an error
book_value(equity − minority_interest) ÷ sharesEquity per share, owners' share. Per unit for a unit ticker (see below)
pb_ratiomarket_cap ÷ (equity − minority_interest)Empty when that equity is zero or negative
ps_ratiomarket_cap ÷ revenue
roenet_income_parent ÷ (equity − minority_interest)Period-end equity, not the average over the period
roanet_income ÷ total_assetsConsolidated: every asset, every owner
net_marginnet_income ÷ revenueConsolidated
gross_margingross_profit ÷ revenue
net_debttotal_debt − cash − short_term_investmentsEvery liquid treasury is netted out
enterprise_valuemarket_cap + net_debt
ev_ebitdaenterprise_value ÷ ebitda
net_debt_ebitdanet_debt ÷ ebitdaEmpty when EBITDA is zero or negative
dividend_yielddistributions in the last 365 days ÷ priceSee below
roe_flagWhy roe is empty: unbalanced_balance_sheet or negative_equity
  • Unbalanced balance sheet. If assets differ from liabilities plus equity by more than 1% of assets, the equity line is not trusted: P/B, ROE and book value are left empty and roe_flag is unbalanced_balance_sheet.
  • Negative or zero equity. P/B and ROE are left empty and roe_flag is negative_equity. Dividing a loss by negative equity would show a misleadingly positive ROE.
  • Failed accounting checks. Statement rows that fail an accounting identity check are held back for review, not served.

Banks

Banks file under a different chart of accounts, where the same codes mean different things: 3.05, for example, is pre-tax income, not EBIT. A filer is treated as a bank when its line 3.01 is financial intermediation revenue.

FieldCVM accountNotes
intermediation_revenue3.01Replaces revenue
financial_margin3.03Replaces gross_profit
pretax_income3.05Replaces ebit
provision_expenseslabel matchExpected credit losses (PDD). The code varies by bank, so lines are matched by label and summed without double-counting.

For banks, revenue, gross_profit, ebit, ebitda and total_debt are empty: deposits and funding are a bank's raw material, not leverage. Enterprise value, EV/EBITDA and net debt/EBITDA are empty as a result.

A bank's shareholders' figures come from its individual (standalone) statements: net_income_parent is standalone net income, and EPS, P/E, P/B, ROE and book value use standalone equity. For other companies the standalone profit equals the consolidated parent's share, but banks' consolidated filings don't split that way: Banco do Brasil's Q2'26 consolidated parent's share is R$ 2.4 bn against R$ 3.2 bn standalone, which is the accounting profit the bank reports. net_income, equity, total assets and ROA stay consolidated. Banks' headline "recurring" or "adjusted" profit is a management figure not filed with CVM.

Dividend yield

  • Counts cash dividends and JCP (juros sobre capital próprio) per share, as B3 announces them: JCP before the 15% withholding tax. Returns of capital are not counted: they hand back capital rather than pay income, though total-return prices reinvest them.
  • The window is every distribution whose record date (data com) falls in the last 365 days, divided by the last price. Amounts paid before a split, reverse split or bonus are restated per today's share.
  • A company that paid nothing in the window reads 0%. The yield is empty only while B3's distribution history for the company hasn't been fetched yet, as for a new listing.
  • Dividends and JCP are listed separately in /v1/stocks/dividends, since they are taxed differently.

Real-estate funds

FIIs and Fiagros don't file DFP or ITR. Their rows come from the monthly report each fund files with CVM, with period_type monthly.

FieldDefinition
book_valueNet asset value (NAV) per quota, from the report
pb_ratioprice ÷ NAV per quota (latest month)
market_capprice × quotas (latest month)
dividend_yieldIncome distributions in the last 365 days, per today's quota, ÷ price. Amortizations return capital and are not counted.

Why numbers differ between sources

Most sites read the same CVM filings. They differ in the choices below, so a gap usually means a different choice rather than a wrong number.

ChoiceBolsixCommon alternatives
Earnings periodTTM for comparisons; fiscal year and discrete quarters also availableLast fiscal year; one quarter annualized
Net income for EPS, P/E, ROEParent's shareholders (3.11.01)Consolidated including minority shareholders (3.11)
Equity for P/B, ROEParent's shareholders, period-endTotal equity; average equity over the period
Market capEach share class at its own priceOne ticker's price × all shares
StatementsConsolidated when filed; for banks' shareholders' figures, individual (standalone)Individual (parent-only) throughout
EBITCVM 3.05 as filed (LAJIR, Resolução CVM 156)Gross profit − selling and administrative expenses, which leaves out other operating income and expenses, impairment and equity-method income (Fundamentus)
Cash in net debtCash and equivalents plus short-term investments (1.01.01 + 1.01.02)Cash and equivalents only
Price for ratiosLast official closeLive intraday price

How we check our numbers

  • Against the filings, exactly. Stored statement lines are reconciled against the CVM archives they came from, field by field, with zero tolerance. Any difference is a defect.
  • Against other sources. For the largest listed companies, values are compared field by field with public reference sites. Gaps a documented choice explains are kept apart from gaps nothing explains; only the second kind is investigated, and CVM and B3 decide who is right. How that traffic is identified and limited is described on the accuracy page.

We don't publish a single accuracy percentage: that number depends entirely on which fields, periods and tolerances go into it. When we publish benchmark results, they will come with the full method.

Known limitations

  • Treasury shares are not deducted from share counts, so EPS and book value per share are slightly understated for companies holding their own shares.
  • For holding companies, EBIT and EBITDA include equity-method income from subsidiaries, because line 3.05 does.