Fernando Neves, Ph.D.
O mercado financeiro é fascinante, mas esconde armadilhas para quem investe guiado apenas pela intuição ou pelo otimismo irracional. Uma das frases mais célebres de Warren Buffett resume a essência do investimento inteligente: “Preço é o que você paga, valor é o que você leva”. Mas como saber se o preço que estamos pagando por uma ação hoje faz sentido matematicamente? É aqui que a mágica acontece quando unimos finanças e programação.
Neste guia completo, vamos mergulhar no universo do valuation de ações. Você entenderá por que analisar os fundamentos de um ticker é apenas o primeiro passo e por que calcular o Preço Teto (Preço Justo) é a verdadeira blindagem contra perdas. Mais do que teoria, vamos explorar como você pode usar o Python para raspar esses dados financeiros da web e alimentar uma planilha automatizada que lhe dirá, em tempo real, se uma ação está descontada (com margem de segurança positiva) ou cara demais (margem negativa).
Se você gosta de código e quer aplicar sua lógica para multiplicar patrimônio, este artigo é o seu mapa do tesouro.
1. A Armadilha de Pagar Caro: Por Que o Valuation é a Regra de Ouro?
Muitos investidores iniciantes cometem um erro clássico: encontram uma empresa incrível, com lucros crescentes, excelente gestão, margens líquidas gordas e dominância de mercado, e compram suas ações a qualquer preço. O raciocínio falho é: “Se a empresa é boa, a ação sempre vai subir”.
A realidade, no entanto, é implacável. Comprar uma empresa excelente por um preço exorbitante é um péssimo investimento. Quando o mercado precifica a perfeição, qualquer tropeço no balanço trimestral faz a cotação despencar. O valuation (avaliação de empresas) não é apenas um exercício acadêmico; é o seu escudo contra a euforia do mercado.
Analisar indicadores como P/L (Preço sobre Lucro), LPA (Lucro Por Ação), P/VP (Preço sobre Valor Patrimonial), Payout e Dividend Yield é crucial para entender a saúde passada e presente da empresa. No entanto, o mercado compra futuro. O objetivo do valuation é projetar os fluxos de caixa ou dividendos futuros e trazê-los a valor presente, definindo um limite máximo que você deve pagar.
2. O Conceito de Preço Teto e Margem de Segurança
O Preço Teto (ou Preço Justo) é o valor máximo que você aceita pagar por uma ação para garantir que o seu investimento traga a rentabilidade desejada no futuro. Ele atua como um limite de segurança emocional e matemático. Se a cotação passar desse teto, você simplesmente fecha o home broker e vai fazer outra coisa.
Associado ao Preço Teto, temos o conceito sagrado de Benjamin Graham: a Margem de Segurança. Trata-se da diferença percentual entre o Preço Teto calculado e a cotação atual no mercado.
A nossa lógica de decisão para a automação que construiremos mais à frente será estritamente binária e pragmática:
- Margem Positiva (Sinal Verde): A cotação atual está abaixo do Preço Teto. A ação está descontada. Há um “colchão” de proteção para erros de cálculo ou imprevistos de mercado. Quanto maior essa porcentagem positiva, maior o desconto e mais atrativa a compra.
- Margem Negativa (Sinal Vermelho): A cotação atual está acima do Preço Teto. A ação está sendo negociada com prêmio (está cara). Isso significa que, naquele momento, a relação risco-retorno não é favorável, e o ativo não deve ser comprado. A paciência deve reinar.
3. Os Métodos Mais Usuais de Valuation
Existem dezenas de formas de precificar um ativo. Para automatizar nossas decisões e focar em carteiras previdenciárias (focadas em renda passiva), destacam-se três métodos consagrados:
A. O Modelo de Crescimento de Gordon (Gordon Growth Model)
Pressupõe que o valor de uma empresa é a soma infinita de todos os dividendos futuros que ela pagará, trazidos a valor presente, assumindo que esses dividendos crescerão a uma taxa constante para sempre.
$$P = \frac{D_1}{k – g}$$
Onde P é o Preço Justo, D1 é o dividendo projetado, k é a sua Taxa de Desconto (retorno exigido) e g é a taxa de crescimento perpétuo. Excelente para bancos e transmissoras de energia.
B. A Fórmula de Décio Bazin
Décio Bazin estabeleceu uma regra de ouro simples e direta: uma ação só merece seu dinheiro se pagar, no mínimo, 6% de Dividend Yield ao ano.
$$\text{Preço Teto} = \frac{\text{Dividendo Médio (últimos 3 a 5 anos)}}{0,06}$$
Se a ação estiver custando menos que o resultado desta fórmula, a margem de segurança é altamente positiva.
C. A Fórmula de Benjamin Graham
O pai do Value Investing sugeriu que um investidor defensivo não deve pagar mais de 15 vezes o lucro (P/L) e 1,5 vezes o valor patrimonial (P/VP) (15 x 1,5 = 22,5).
$$V = \sqrt{22,5 \times \text{LPA} \times \text{VPA}}$$
Onde V é o Valor Intrínseco, LPA é o Lucro por Ação e VPA é o Valor Patrimonial da Ação. Ótimo para evitar empresas hipervalorizadas.
4. A Magia da Automação: Unindo Python e Planilhas
Calcular tudo isso manualmente para dezenas de tickers toda semana é um processo exaustivo. A solução perfeita é criar um pipeline de dados automatizado.
Para provar que isso não é apenas teoria, vamos colocar a mão na massa. Abaixo, compartilho um script Python de “Raspagem Resiliente”. Ao invés de depender de seletores CSS frágeis (que quebram quando o site muda de layout), este código age como um humano: ele lê a página, procura pelo nome do indicador e extrai o número associado a ele.
O Código Python (Auto-Scraper)
Python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import os
import re
# 📂 Caminho onde a planilha será salva
CAMINHO_PASTA = r"C:\Users\SuaPastaDeInvestimentos"
def buscar_dados_acoes():
# 📊 Lista de ativos para analisar
tickets = ['BBAS3.SA', 'PETR4.SA', 'VALE3.SA', 'WEGE3.SA', 'ITUB4.SA']
dados_compilados = []
# Disfarce para não ser bloqueado pelos sites financeiros
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
print("Iniciando busca refinada...\n")
for ticket in tickets:
ticket_url = ticket.replace('.SA', '').lower()
url = f"https://investidor10.com.br/acoes/{ticket_url}/"
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
# A função inteligente que procura o indicador pelo nome
def extrair_dado_preciso(nome_indicador):
celulas = soup.find_all('div', class_=re.compile(r'cell|card'))
for celula in celulas:
texto_celula = celula.get_text(separator=" ", strip=True).lower()
if nome_indicador.lower() in texto_celula:
partes = texto_celula.split(nome_indicador.lower())
if len(partes) > 1:
trecho_apos_nome = partes[1]
# Regex para capturar padrões numéricos financeiros (ex: 15,3% ou 4,15)
match = re.search(r'-?\d{1,3}(?:\.\d{3})*(?:,\d+)?%?', trecho_apos_nome)
if match:
return match.group(0)
return "N/D"
# Coletando os indicadores chave
dy = extrair_dado_preciso("Dividend Yield")
if dy == "N/D": dy = extrair_dado_preciso("DY")
pl = extrair_dado_preciso("P/L")
payout = extrair_dado_preciso("Payout")
margem_liq = extrair_dado_preciso("Margem Líquida")
lpa = extrair_dado_preciso("LPA")
p_vp = extrair_dado_preciso("P/VP")
dados_compilados.append({
'Ticket': ticket,
'Dividend Yield (12m)': dy,
'P/L': pl,
'Payout': payout,
'Margem Líquida': margem_liq,
'LPA': lpa,
'P/VP': p_vp
})
print(f"[{ticket}] Processado.")
except Exception as e:
print(f"Erro ao processar {ticket}: {e}")
# Transformando em tabela e salvando em Excel
if dados_compilados:
df = pd.DataFrame(dados_compilados)
if not os.path.exists(CAMINHO_PASTA):
os.makedirs(CAMINHO_PASTA)
caminho_completo = os.path.join(CAMINHO_PASTA, 'relatorio_acoes.xlsx')
df.to_excel(caminho_completo, index=False, engine='openpyxl')
print(f"\nArquivo salvo em: {caminho_completo}")
if __name__ == "__main__":
buscar_dados_acoes()
Dissecando o Código: Como ele funciona?
Para os entusiastas da programação, o funcionamento deste robô pode ser dividido em quatro etapas lógicas:
- O Disfarce (Headers): Sites como o Investidor10 bloqueiam robôs. Ao enviar parâmetros no dicionário
headers, o script simula o comportamento de um navegador comum (como o Chrome no Windows), garantindo o acesso aos dados. - O Motor de Busca e Conexão: Através de um loop
for, o código varre a lista de ativos, formata os nomes (tirando o “.SA”) e faz o download do código-fonte (HTML) bruto da página de cada empresa. - O Cérebro da Operação (Raspagem Resiliente com Regex): Ao invés de usar coordenadas fixas, a função isola todos os blocos do site (as
divscom classecell). Quando encontra a palavra-chave (ex: “p/l”), ela divide o texto e usa uma Expressão Regular (Regex) —r'-?\d{1,3}(?:\.\d{3})*(?:,\d+)?%?'— para ignorar qualquer letra ao redor e capturar única e exclusivamente o padrão numérico financeiro brasileiro (com vírgulas e porcentagens). - A Exportação via Pandas: Os dados coletados na memória do Python são convertidos na hora em um DataFrame do Pandas (uma tabela bidimensional) e exportados diretamente para um arquivo
.xlsxna sua máquina local, pronto para ser integrado.
5. O Motor de Cálculo no Excel e os Sinais de Compra
Uma vez que o seu script Python exporta o arquivo Excel, a sua planilha mestre de investimentos pode importar esses dados da planilha gerada pelo programa em Python e fazer a mágica acontecer.
A Margem de Segurança percentual na sua planilha pode ser calculada com uma fórmula simples:
$$\text{Margem} = \left( \frac{\text{Preço Teto}}{\text{Preço Atual}} \right) – 1$$
Para facilitar a visualização e evitar vieses cognitivos, recomenda-se aplicar Formatação Condicional nessa coluna:
- Verde Intenso (Sinal de Compra): Quando o resultado for, por exemplo,
> 15%. A ação está descontada. Há uma grande margem em relação ao teto calculado por Graham, Bazin ou Gordon. - Vermelho (Sinal de Alerta): Quando o resultado for
< 0%. A ação rompeu o Preço Teto. O ativo está caro, incorporando expectativas altas demais. Comprar agora significa reduzir seu rendimento futuro. O aviso é claro: aguarde.
O Superpoder do Investidor Moderno
O mercado de ações recompensa a disciplina e a paciência. Ao criar um pipeline automatizado com scripts resilientes em Python e painéis de controle no Excel, você afasta o maior inimigo do seu patrimônio: o viés emocional.
O valuation não precisa ser um emaranhado de suposições complexas reservado aos analistas de Wall Street. Usando código, boas bases de dados e as fórmulas corretas, a verdadeira vantagem competitiva está na sua própria máquina. Defina as regras, escreva os scripts, respeite estritamente o seu Preço Teto, e deixe os juros compostos fazerem o resto.
Gostou de entender a arquitetura por trás da automação em finanças? Já tentou conectar algum script de Web Scraping às suas planilhas de investimento? Compartilhe suas experiências (ou dúvidas com o código) nos comentários abaixo!
Referências Bibliográficas



