Setores por bolsai 2 jul 2026 13 min de leitura

Ações de commodities e mineração na B3 em 2026: como analisar

Analisar ações de commodities e mineração na B3 em 2026 é um exercício diferente de olhar um banco ou uma varejista. São setores cíclicos, com receita atrelada ao preço internacional do minério de ferro, do aço e do câmbio, e lucro que balança forte de um trimestre para o outro. Isso quebra os múltiplos tradicionais: o P/L, sozinho, engana. Este guia explica por que EV/EBITDA e as margens operacionais são as réguas certas para o setor, e mostra como puxar a lista real do setor de mineração e siderurgia ao vivo, em Python, via API bolsai, sem depender de rankings congelados.

O que torna commodities e mineração um setor cíclico

Um setor cíclico é aquele em que a receita depende de um preço que a empresa não controla. Mineradoras e siderúrgicas vendem minério de ferro, aço, cobre, alumínio e celulose a preços cotados em dólar no mercado internacional. Quando o ciclo global de demanda sobe, margens explodem e o lucro parece barato; quando vira, o mesmo papel que parecia descontado revela que o lucro era o topo do ciclo. Por isso a análise não pode se apoiar em um único trimestre nem em um único múltiplo.

No Brasil, esse bloco reúne nomes de peso da B3. Mineradoras como VALE3, CMIN3 e BRAP4 (holding ligada à mineração), siderúrgicas e metalúrgicas como CSNA3, GGBR4, GOAU4 e USIM5, e produtoras de celulose como SUZB3 e KLBN11. São empresas exportadoras, de capital intensivo, com dívida relevante e forte exposição cambial. A combinação de preço de commodity volátil, alavancagem operacional (custos fixos altos) e alavancagem financeira (dívida em dólar) é exatamente o que produz resultados que oscilam muito mais do que a média do índice.

Três características definem a análise desses papéis. Primeiro, a receita é dada pelo mercado, não pela gestão: a empresa é tomadora de preço. Segundo, o custo é majoritariamente fixo no curto prazo, então uma variação pequena no preço de venda vira uma variação grande na margem, o famoso efeito da alavancagem operacional. Terceiro, o balanço costuma carregar dívida em moeda estrangeira, o que faz o câmbio contaminar o resultado financeiro e o lucro líquido com ganhos e perdas que não têm nada a ver com a operação de minerar ou produzir aço.

Por que o P/L engana em ações de commodities

O índice preço/lucro divide o valor de mercado pelo lucro dos últimos doze meses. Para uma empresa estável, é uma leitura razoável. Para uma cíclica, é uma armadilha conhecida, o chamado "trap" do P/L cíclico. No pico do ciclo, o lucro está inflado e o P/L parece baixíssimo, sugerindo pechincha justamente quando o risco de reversão é maior. No fundo do ciclo, o lucro despenca (ou vira prejuízo) e o P/L dispara ou fica indefinido, sugerindo "caro" bem no ponto em que a empresa pode estar barata em valor de ativos.

Some a isso os itens não operacionais. Uma mineradora com dívida em dólar registra, num trimestre de real fraco, uma perda cambial enorme que derruba o lucro líquido sem que a operação tenha piorado. No trimestre seguinte, com o real forte, acontece o oposto. O lucro líquido, base do P/L, é o número mais poluído da demonstração de resultados para esse tipo de empresa. É por isso que comparar o P/L de VALE3 com o de USIM5 num ano específico diz pouco sobre qual está mais barata de fato.

A conclusão prática não é abandonar o P/L, e sim tratá-lo como um sinal fraco no setor de commodities, sempre acompanhado de múltiplos que olham a operação e o valor da empresa inteira. O passo seguinte é entender por que o EV/EBITDA resolve boa parte desse problema.

EV/EBITDA e margens: as réguas certas para o setor

O EV/EBITDA compara o enterprise value (valor de mercado mais dívida líquida) com o EBITDA (geração operacional antes de juros, impostos, depreciação e amortização). Ele resolve duas distorções de uma vez. Ao usar o enterprise value no numerador, leva a dívida em conta, o que é essencial num setor alavancado: duas empresas com o mesmo valor de mercado mas endividamentos diferentes têm valores de negócio muito distintos. Ao usar o EBITDA no denominador, ignora a estrutura de capital, os efeitos cambiais no resultado financeiro e os itens não caixa como depreciação, focando na capacidade real de gerar caixa operacional.

Para ações de commodities e mineração na B3, o EV/EBITDA é o múltiplo de comparação por excelência: é o mais usado por analistas de sell-side justamente porque permite comparar uma mineradora endividada com uma siderúrgica menos alavancada em pé de igualdade. Na API bolsai, ele vem pronto no campo ev_ebitda do endpoint /fundamentals/{ticker}, ao lado de ev_ebit (uma variante que já desconta a depreciação, útil para setores muito intensivos em capital). Para reconstruir o enterprise value manualmente, os campos market_cap e net_debt também estão disponíveis. O passo a passo de valuation com esse múltiplo, com fórmula e código, está no artigo EV/EBITDA na prática: valuation de ações com Python e API.

As margens completam a leitura. A margem EBITDA (ebit_margin mede a versão EBIT; a margem líquida vem em net_margin e a bruta em gross_margin) mostra quanto de cada real de receita sobra como resultado operacional. Em setores cíclicos, a margem é o termômetro mais honesto do momento do ciclo: margens muito acima da média histórica da empresa sinalizam pico de preço da commodity, um alerta de que o resultado atual pode não se repetir. Margens comprimidas, ao contrário, podem indicar fundo de ciclo. Acompanhar a margem ao longo do tempo importa mais que o número de um trimestre isolado.

Há ainda o endividamento, que num setor cíclico é questão de sobrevivência. O campo net_debt_ebitda mostra quantos anos de geração operacional seriam necessários para quitar a dívida líquida. Empresas de commodities toleram alavancagem maior no topo do ciclo, mas uma dívida líquida/EBITDA elevada combinada com preço de commodity em queda é a receita clássica de crise. O net_debt_equity e a current_ratio ajudam a dimensionar o fôlego de curto prazo. Para entender como P/L, P/VP, ROE e EV/EBITDA são calculados campo a campo, vale o guia Como construir um screener de ações em Python usando uma API de mercado.

Métrica Campo na API Por que importa em commodities
EV/EBITDA ev_ebitda Neutraliza dívida e efeitos não caixa; múltiplo padrão do setor
EV/EBIT ev_ebit Desconta depreciação pesada de ativos de capital intensivo
Margem EBIT ebit_margin Termômetro do momento do ciclo; comparar com a própria história
Dívida líq./EBITDA net_debt_ebitda Mede fôlego para atravessar o fundo do ciclo
ROIC roic Retorno sobre o capital investido, além da alavancagem

Pegue sua chave gratuita e rode os exemplos

Plano gratuito com 200 requisições por dia. Login com Google, sem cartão de crédito.

Criar conta gratuita

Descobrindo o nome exato do setor

Antes de filtrar por setor, é preciso saber a grafia exata que a API usa. Os nomes de setor seguem a classificação da CVM e são passados como texto no parâmetro sector. Como acento e pontuação variam (e uma string errada devolve resultado vazio), o caminho seguro é sempre consultar /companies/sectors primeiro. Esse endpoint devolve a lista de setores válidos com a contagem de empresas ativas em cada um, no formato:

{ "sectors": [ { "name": "Bancos", "count": ... }, { "name": "Energia Elétrica", "count": ... }, ... ], "total": ... }

Rode a chamada abaixo e procure na resposta a linha que corresponde a mineração, materiais básicos ou siderurgia e metalurgia, dependendo de como a CVM agrupa esses negócios. Copie a string exata do campo name e use-a no filtro do próximo passo. Termos como "Mineração", "Materiais Básicos" e "Siderurgia" são candidatos naturais, mas não presuma a grafia: confirme no retorno real, porque é ele que manda.

import requests

BASE = "https://api.usebolsai.com/api/v1"
API_KEY = "sua_chave_aqui"

r = requests.get(f"{BASE}/companies/sectors", params={"api_key": API_KEY})
r.raise_for_status()

# Lista todos os setores; ache o nome exato de mineração/siderurgia
for s in r.json()["sectors"]:
    print(f"{s['count']:>3}  {s['name']}")

Puxando a lista real do setor com o /screener

Com o nome do setor em mãos, o endpoint /screener devolve o setor inteiro numa única chamada, já com os múltiplos calculados. Ele aceita filtros por qualquer campo de fundamentos usando os sufixos _gt (maior que), _gte, _lt (menor que), _lte e _eq, além de sector, sort, order, limit (até 500) e offset. Para o setor de commodities, a ordenação natural é por ev_ebitda crescente, do múltiplo mais baixo para o mais alto. O /screener é um recurso do plano Pro.

O ponto central deste guia: não existe ranking fixo do setor. O que vale hoje muda amanhã, porque preço, dívida e resultado se movem. Em vez de decorar uma lista, você roda a consulta e recebe a fotografia atual. Substitua SETOR_EXATO pela string que veio de /companies/sectors:

import requests

BASE = "https://api.usebolsai.com/api/v1"
API_KEY = "sua_chave_aqui"

params = {
    "api_key": API_KEY,
    "sector": "SETOR_EXATO",   # ex.: string vinda de /companies/sectors
    "ev_ebitda_gt": 0,           # exclui EV/EBITDA negativo ou nulo
    "sort": "ev_ebitda",
    "order": "asc",
    "limit": 30,
}

r = requests.get(f"{BASE}/screener", params=params)
r.raise_for_status()

for row in r.json()["data"]:
    print(row["ticker"], row.get("ev_ebitda"), row.get("roe"))

A resposta é um objeto com uma lista data e os campos count, total, offset e limit para paginação. Cada item traz o ticker, o sector e os indicadores. Trate os valores como ilustrativos ao ler a saída; os números reais chegam quando você roda a chamada com sua chave. A resposta terá o formato:

TICKER ev_ebitda roe XXXX3 4.x 1x.x% YYYY4 5.x 9.x% ZZZZ11 6.x 1x.x% ...

Para um filtro mais exigente, combine múltiplos: adicione net_debt_ebitda_lt para descartar empresas sobre-endividadas, ebit_margin_gt para exigir um piso de margem operacional e roic_gt para garantir retorno sobre o capital investido. O importante é que você define a tese em código e deixa a API aplicar sobre o setor inteiro, sem varrer papel por papel.

Alternativa gratuita: uma lista curada de fundamentos

Quem está no plano gratuito não usa o /screener, mas ainda consegue montar a análise setorial de forma manual. O plano gratuito dá 200 requisições por dia no endpoint /fundamentals/{ticker}, e o setor de mineração e siderurgia na B3 tem poucas dezenas de papéis líquidos. Basta manter uma lista curada dos tickers do setor e fazer uma chamada por papel. Este é o exemplo executável de referência do artigo, rodando sobre um endpoint real:

import requests

BASE = "https://api.usebolsai.com/api/v1"
API_KEY = "sua_chave_aqui"

# Lista curada de mineração/siderurgia/celulose na B3
TICKERS = [
    "VALE3", "CMIN3", "BRAP4",
    "CSNA3", "GGBR4", "GOAU4", "USIM5",
    "SUZB3", "KLBN11",
]

def get_fundamentals(ticker):
    """Busca fundamentos de um ticker. Devolve dict ou None."""
    r = requests.get(
        f"{BASE}/fundamentals/{ticker}",
        params={"api_key": API_KEY},
        timeout=10,
    )
    if r.status_code == 200:
        return r.json()
    return None

rows = [d for t in TICKERS if (d := get_fundamentals(t))]

# Ordena pelo EV/EBITDA disponível, do menor para o maior
com_ev = [r for r in rows if r.get("ev_ebitda") and r["ev_ebitda"] > 0]
com_ev.sort(key=lambda r: r["ev_ebitda"])

for r in com_ev:
    print(
        f"{r['ticker']:6}  "
        f"EV/EBITDA={r['ev_ebitda']:>5.2f}  "
        f"ebit_margin={r.get('ebit_margin')}  "
        f"div_liq/EBITDA={r.get('net_debt_ebitda')}"
    )

O tratamento de None não é cosmético. Empresas em fundo de ciclo podem ter EBITDA baixo ou lucro negativo, e alguns múltiplos vêm nulos quando a divisão perde sentido econômico. Filtrar ev_ebitda > 0 e usar r.get(...) em vez de acesso direto evita que um único papel derrube o script inteiro. A saída, novamente, é ilustrativa: os números reais só aparecem com a sua chave. Para transformar esse esqueleto num screener completo, com filtros combinados, ordenação e exportação para CSV, siga o guia de screener em Python.

Comparando dois papéis lado a lado

Depois de estreitar a lista, o passo natural é comparar candidatos. Como não existe um endpoint REST de comparação, o padrão é chamar /fundamentals/{ticker} para cada papel e alinhar os campos que interessam ao setor. O exemplo abaixo confronta uma mineradora e uma siderúrgica campo a campo:

import requests

BASE = "https://api.usebolsai.com/api/v1"
API_KEY = "sua_chave_aqui"

CAMPOS = ["ev_ebitda", "ev_ebit", "ebit_margin",
          "net_margin", "net_debt_ebitda", "roic"]

def snapshot(ticker):
    r = requests.get(f"{BASE}/fundamentals/{ticker}",
                     params={"api_key": API_KEY}, timeout=10)
    r.raise_for_status()
    return r.json()

a, b = snapshot("VALE3"), snapshot("GGBR4")

print(f"{'campo':<22}{'VALE3':>12}{'GGBR4':>12}")
for c in CAMPOS:
    print(f"{c:<22}{str(a.get(c)):>12}{str(b.get(c)):>12}")

A leitura correta desse quadro nunca é "o menor EV/EBITDA vence". Um múltiplo baixo pode refletir um ciclo no topo, um risco de execução ou uma dívida perigosa. A comparação serve para levantar perguntas: por que a margem de uma é o dobro da outra? A dívida líquida/EBITDA mais alta se justifica por um plano de investimento? O múltiplo menor é desconto de valor ou desconto de risco? Essas respostas exigem análise qualitativa do modelo de negócio, algo que nenhum screener entrega.

O ciclo por trás dos números: câmbio e macro

Ações de commodities não se movem no vácuo. O dólar é uma variável de primeira ordem: exportadoras faturam em moeda forte, então real fraco tende a inflar receita e margem em reais, ao mesmo tempo que encarece a dívida em dólar. Acompanhar o câmbio junto dos fundamentos ajuda a separar o que é melhora operacional do que é apenas efeito de conversão. A API entrega a série no endpoint de macro:

import requests

BASE = "https://api.usebolsai.com/api/v1"
API_KEY = "sua_chave_aqui"

# Série do dólar/real (fim de dia, atualizada 20:30 BRT)
r = requests.get(f"{BASE}/macro/usd_brl",
                 params={"api_key": API_KEY, "limit": 5})
r.raise_for_status()
print(r.json())

O endpoint /macro/{series} cobre séries como usd_brl, selic, cdi, ipca, igpm e ibovespa. Para o setor de commodities, o par dólar/real e o Ibovespa dão o pano de fundo: quando o minério e o câmbio andam juntos, o ciclo do setor tende a se refletir no índice, dado o peso das grandes exportadoras na composição da bolsa. Cruzar essa leitura macro com a série de fundamentos por meio de /fundamentals/{ticker}/history permite ver como a margem da empresa evoluiu ao longo de ciclos passados, em vez de fixar num único trimestre.

Dividendos em setores cíclicos: leia com cuidado

Mineradoras e siderúrgicas costumam pagar dividendos generosos no topo do ciclo, quando o caixa transborda. O dividend yield do momento pode parecer altíssimo justamente porque reflete uma distribuição extraordinária que não se repete. Na API bolsai o campo dividend_yield em /fundamentals/{ticker} é calculado em TTM (últimos doze meses), e o histórico detalhado de proventos vem em /dividends/{ticker}, com ex_date, payment_date, value e type (DIVIDEND, JCP ou BONIFICACAO). Para o setor, olhe a série de vários anos, não o yield pontual:

import requests

BASE = "https://api.usebolsai.com/api/v1"
API_KEY = "sua_chave_aqui"

# Histórico de proventos dos últimos 5 anos
r = requests.get(f"{BASE}/dividends/VALE3",
                 params={"api_key": API_KEY, "years": 5})
r.raise_for_status()
for d in r.json():
    print(d["ex_date"], d["type"], d["value"])

A distribuição concentrada em anos de pico e escassa nos anos de vaca magra é a assinatura de um pagador cíclico. Um yield alto sustentado por lucro operacional recorrente é diferente de um yield alto puxado por um evento único. A metodologia de cálculo do dividend yield e as armadilhas do indicador estão detalhadas no guia de screener.

Armadilhas comuns ao analisar commodities e mineração

Confundir pico de ciclo com barganha. O erro clássico: ver P/L baixo e margem alta e concluir "está barata". Em cíclicas, esse é frequentemente o sinal de topo. Compare sempre a margem atual com a média histórica da própria empresa via /fundamentals/{ticker}/history antes de decidir.

Ignorar a dívida em dólar. Duas empresas com o mesmo EV/EBITDA podem ter riscos financeiros opostos se uma carrega dívida cambial pesada e a outra não. O net_debt_ebitda e o net_debt_equity precisam entrar em todo filtro do setor, não como enfeite.

Tratar o setor como homogêneo. Minério de ferro, aço, celulose e alumínio têm ciclos próprios, dirigidos por demandas diferentes. Puxar a lista por setor via /screener é o começo, mas separar minério de aço e de celulose dentro dela evita comparar dinâmicas que não conversam.

Tomar o resultado do screener como recomendação. Passar no filtro significa "merece estudo", não "compre". O screener é pré-seleção quantitativa; a tese qualitativa (governança, custo de produção, posição na curva global de custo, riscos regulatórios e ambientais) é feita à parte, sobre os papéis que sobraram.

Perguntas frequentes

Por que usar EV/EBITDA em vez de P/L para ações de mineração?

Empresas de commodities têm lucro líquido muito volátil por causa de itens não operacionais: variação cambial sobre dívida em dólar, impairment de ativos e resultado financeiro. O P/L captura toda essa volatilidade e distorce o múltiplo de um ano para o outro. O EV/EBITDA neutraliza a estrutura de capital e os efeitos não caixa, comparando o valor do negócio inteiro com a geração operacional. Na API bolsai o campo é ev_ebitda no endpoint /fundamentals/{ticker}.

Como descubro o nome exato do setor de mineração para usar no filtro?

Os nomes de setor seguem a classificação da CVM e são passados como texto no parâmetro sector do endpoint /screener. Para não errar acento nem grafia, chame /companies/sectors, que devolve a lista de setores válidos com a contagem de empresas em cada um, e copie a string exata que aparecer para mineração ou materiais básicos antes de montar o filtro.

Consigo montar uma lista do setor de commodities no plano gratuito?

Sim, de forma manual. O plano gratuito dá 200 requisições por dia no endpoint /fundamentals/{ticker}. Como o setor de mineração e siderurgia na B3 tem poucas dezenas de papéis líquidos, dá para varrer uma lista curada de tickers com uma chamada por papel e aplicar os filtros no seu código. O endpoint /screener, que devolve o setor inteiro numa única chamada com filtros por múltiplo, é do plano Pro (R$49/mês).

Os dados da API são em tempo real?

Não. As cotações e séries macro são de fim de dia, atualizadas uma vez por dia às 20:30 BRT, depois do fechamento do pregão da B3. Empresas, demonstrações financeiras, dividendos e FIIs são atualizados semanalmente, aos sábados, e os fundamentos são recalculados após cada ingestão. Para análise fundamentalista de setores cíclicos, isso é mais que suficiente.

Leia também

Disclaimer: Este conteúdo é educacional e não constitui recomendação de investimento. Os tickers citados servem apenas para ilustrar o funcionamento técnico dos endpoints. Nenhum valor numérico específico é afirmado como o dado atual de qualquer papel: os exemplos de saída são ilustrativos e os números reais são obtidos ao rodar as chamadas com sua própria chave. Decisões de alocação envolvem risco e devem considerar perfil pessoal, horizonte e contexto macroeconômico.

por bolsai · 2 de julho de 2026 · 13 min de leitura

Comece agora

Analisar ações de commodities e mineração na B3 em 2026 não depende de decorar rankings: depende de usar as réguas certas e de puxar a fotografia atual do setor. EV/EBITDA e margens no lugar do P/L isolado, dívida líquida/EBITDA sempre no radar, e o /screener ou uma lista curada em /fundamentals para gerar a lista viva. O plano gratuito dá 200 requisições por dia, o suficiente para rodar todos os exemplos deste guia sobre os papéis de mineração, siderurgia e celulose da bolsa.

Fontes oficiais utilizadas pela bolsai: B3, CVM e Banco Central. Conheça também a integração via MCP para usar a API com Claude e outros agentes de IA.