Primavera de 1998, seis alunos de MBA em Cornell rodaram uma única equação nas finanças da Enron e obtiveram -1,89.
O ponto de corte para "essa empresa provavelmente está maquiando os livros" é -2,22. A Enron já tinha passado disso. E, novamente, eram alunos, não uma firma de contabilidade forense.

Eles colocaram o relatório no site da escola. A rua inteira ainda tinha a Enron como compra na época, e a maioria manteve isso até algumas semanas antes de ir a zero.
Era um arquivo público que qualquer um poderia ter puxado e uma fórmula que leva uns 20 minutos na mão. É exatamente isso que vou te mostrar, só que você vai rodar em segundos e pode apontar para qualquer empresa ou token do planeta.
Não é aconselhamento financeiro, faça sua própria pesquisa. Scores forenses são indicadores de probabilidade, não provas, e todo preço aqui muda, então verifique antes de se comprometer. Eu construo ferramentas para traders profissionais de mercados de previsão @coldvisionXYZ
L0: Casa dos Dados
Toda empresa pública nos EUA arquiva na SEC, e a SEC simplesmente disponibiliza tudo através de uma API chamada EDGAR. Você acessa uma URL e recebe de volta cada número que uma empresa já reportou, já estruturado.
2 coisas fazem da EDGAR uma arma:
- Busca em texto completo. Ela indexa o texto real de cada arquivo já enviado, então você pode pesquisar uma frase como "fraqueza material" em todo o mercado e obter de volta todas as empresas que acabaram de admitir silenciosamente que seus controles contábeis estão quebrados. Isso é uma lista de observação em cerca de um segundo.
- Financeiros estruturados. Cada item de linha, cada trimestre, legível por máquina, de anos atrás.
edgartools é o que você quer.

Pip install, sem chave, e ele analisa 10-Ks, 8-Ks, Formulários 4 de insiders, participações de fundos 13F, tudo em objetos Python limpos.
Ele também vem com um servidor MCP, então você pode apontar o Claude diretamente para ele e dizer "compare o crescimento da receita da Apple e da Microsoft em 3 anos" e ele realmente vai buscar os arquivos reais em vez de inventar números que parecem certos.
sec-edgar-downloader é o que todo mundo encontra primeiro. Ele apenas baixa o arquivo bruto e te joga numa pilha de HTML para você mesmo analisar. Essa era a jogada há alguns anos, agora é só dor de cabeça. Use edgartools.*
BamSEC se você só quer ler arquivos sem a interface da EDGAR de 1998. Leitor limpo, comparação lado a lado, grátis para a maior parte do que você precisa. Bom para dar uma olhada.

Agora você tem acesso estruturado gratuito aos livros de todas as empresas públicas.
L1 - Pegue Mentirosos
Você tem os números. Antes de ler uma única frase da administração falando sobre seu "ano transformacional", você roda algumas fórmulas nos números brutos.
Acadêmicos construíram isso com base em décadas de casos reais de fraude. Você só precisa saber o que cada uma está farejando.
Beneish M-Score é o da Enron.
Oito entradas transformadas em um único número. A entrada mais pesada de longe é o total de acréscimos sobre o total de ativos, porque a maneira mais rápida de falsificar lucros é contabilizar receitas que nunca apareceram como dinheiro. O próximo sinal é um crescimento de vendas que é limpo demais para ser honesto, e foi esse que acendeu na Enron. Acima de -2,22 você investiga. A Enron marcou -1,89.

Altman Z-Score é a sua leitura de falência.
Mistura lucratividade, alavancagem e o quão duro os ativos estão trabalhando em uma única pontuação de dificuldade. Abaixo de 1,81 é a zona de perigo.

Índice de acréscimos de Sloan é a qualidade dos lucros.
Lucros feitos de dinheiro são reais, lucros feitos de acréscimos se revertem. Desvie mais de cerca de 25% para qualquer lado e os lucros são basicamente uma miragem contábil prestes a se desfazer em você.

Piotroski F-Score, 9 pontos sim/não sobre se uma empresa está realmente ficando financeiramente mais forte. 6 ou mais é saudável.

O que transforma isso de lição de casa em um fluxo de trabalho é rodar todos os 4 de uma vez em toda a sua lista de observação e só ler os nomes que sinalizam. Que é exatamente o que o script abaixo faz.
E por favor, não reimplemente isso baseado em algum blog aleatório, metade do código M-Score no GitHub está sutilmente errado.
O repositório FinanceToolkit tem mais de 150 índices - Beneish, Altman, Piotroski, Sloan, todos eles - com as fórmulas escritas abertamente para que você possa auditar um número quando não confiar nele.
Combine com uma chave FMP para dados e você está pronto. Honestamente, um dos repositórios de finanças mais subestimados por aí, transparente e realmente mantido.

O Beneish roda com dados do ano passado, então a manipulação já pode estar se desfazendo quando você a vê. Ele perde algumas fraudes reais e sinaliza falsamente algumas limpas. Uma pontuação ruim significa abrir o arquivo. Nunca é, por si só, uma razão para vender a descoberto.
L2: IA Leia as Palavras para Você
Você fez a triagem, algo sinalizou, agora você abre o 10-K, que tem mais de 100 páginas de juridiquês construído especificamente para ser ilegível.
Deixe esse trabalho para a IA
o caminho errado é:
colar o arquivo inteiro numa caixa de chat e perguntar "essa é uma boa empresa?" Ele se afoga e te diz o que você quer ouvir.
o caminho certo é:
Peça para ele comparar o deste ano com o do ano passado.
Puxe a seção de Fatores de Risco do 10-K deste ano e do ano passado, entregue ambos ao modelo e dê a ele um único trabalho.
Me diga apenas o que é NOVO este ano ou o que foi REMOVIDO, cite a nova linguagem, ignore o texto padrão que está em ambos.
Uma empresa que insere silenciosamente um parágrafo sobre concentração de clientes acabou de te dizer que um grande cliente está balançando. Uma que deleta uma linha sobre um fornecedor chave acabou de te dizer que um relacionamento terminou. Nada disso chega ao comunicado à imprensa. Advogados escrevem essas frases porque têm medo de serem processados, e o medo é informação sentada em texto simples que ninguém lê duas vezes.
A mesma diferença funciona no MD&A (a própria história do ano da administração) e nas notas de rodapé. Toda a fraude da Enron vivia em notas de rodapé sobre entidades fora do balanço. A história era uma mentira, as notas de rodapé não eram.
O repositório edgar-crawler existe basicamente para extrair essas seções de itens, Fatores de Risco e MD&A, em JSON limpo para que você não precise usar regex no HTML para obtê-los. Esse é o trabalho dele e ele faz bem, alimente a saída na sua comparação.
Se você prefere pagar a construir, aqui está o mapa honesto de quem faz isso por você.
Hudson Labs (antigo Bedrock AI)
É a escolha subestimada e a que eu realmente pagaria. Faz a extração de bandeiras vermelhas entre anos automaticamente, revela linguagem de continuidade, fraquezas materiais, risco de partes relacionadas sem você pedir. Começa em torno de $100/mês. Se você lê arquivos a sério, este é o melhor custo-benefício da lista.

AlphaSense
Padrão institucional, algo em torno de 15-20k por assento, então realisticamente só se sua empresa estiver pagando. Ela possui a Tegus, uma biblioteca de milhares de entrevistas pagas com ex-executivos e clientes. O mais próximo de conhecimento privilegiado legal que você consegue, e você não pode recriar de graça.

Daloopa
Puxa financeiros prontos para modelagem com cada número com hiperlink para seu local exato no arquivo. Essa trilha de auditoria é por que as pessoas que constroem DCFs sérios o usam. Preço empresarial, exagero a menos que modelagem seja seu trabalho de verdade.

Fintool é focado em IA, construído para ações dos EUA, citações em tudo, além de alertas permanentes como "me avise quando qualquer empresa mencionar problemas na cadeia de suprimentos".
Um meio-termo decente se Hudson parece muito forense e AlphaSense muito caro.

L3: Cripto
Vire para tokens. Exatamente a mesma ideia.
Em ações, a fraude se esconde em acréscimos e notas de rodapé.
Em cripto, ela se esconde em cronogramas de fornecimento e concentração de detentores, e ambos estão em uma blockchain pública que você pode ler de graça.
Seu equivalente à EDGAR aqui é DefiLlama.

API gratuita, sem chave, cobre basicamente o TVL, taxas, receita e cronograma de desbloqueio de todo protocolo.
Um protocolo tem 3 números que se mapeiam diretamente para uma empresa normal.
- Taxas = tudo que os usuários pagam. Isso é receita bruta.
- Receita = a fatia que o protocolo realmente fica. Isso é líquido.
- Lucros = receita menos os tokens que ele imprimiu para subornar usuários a aparecerem em primeiro lugar.
Token Terminal padroniza exatamente estes, taxas, receita, lucros, os equivalentes de P/L cripto, em todas as principais blockchains.
Genuinamente o Bloomberg-das-cripto e a padronização é um trabalho real que você odiaria fazer manualmente. Mas custa ~$350/mês, o que é muito para uma pessoa, e o nível gratuito mais o DefiLlama te levam a maior parte do caminho.

Então os 2 assassinos, a versão cripto da triagem forense.
Cronogramas de desbloqueio primeiro.
Tokens não existem todos no lançamento, as alocações da equipe e de VCs são adquiridas ao longo de anos, e quando são desbloqueadas, as pessoas que entraram perto de zero finalmente podem despejar em você. Regra geral, qualquer desbloqueio único acima de 5% do fornecimento circulante é uma bandeira vermelha. Para tornar isso real, o primeiro grande cliff do Arbitrum desbloqueou, em um dia, uma quantidade de ARB aproximadamente igual a todo o fornecimento circulante da época. Baleias que detinham desde o início puderam sair para o varejo e a data estava num calendário com meses de antecedência.
Conheça os 3 formatos.
- Cliff despeja uma quantidade enorme em um dia (violento).
- Aquisição linear goteja diariamente (sangramento lento que você pode às vezes segurar).
- Emissões liberadas com base na atividade. Um cliff para uma carteira de VC é o que acaba com portfólios.
Concentração de detentores em segundo lugar. Quem realmente possui a coisa. Se um punhado de carteiras detém a maior parte do fornecimento e elas são rotuladas como equipe ou algum fundo de VC inicial, parabéns, você é a liquidez de saída por design.
É aqui que as ferramentas de rotulagem de carteiras valem a pena, porque dados brutos de blockchain são apenas 0xxxxxxx... até que alguém te diga que é a Jump Trading ou um contrato de aquisição da equipe.
Arkham
Comece aqui porque é gratuito para indivíduos, o que nenhuma outra plataforma séria é. O mecanismo de desanonimização é o verdadeiro negócio, é a empresa que rastreou publicamente bilhões em bitcoin roubado de volta a um hack. Você pode executar esse mesmo rastreamento de entidade em qualquer token que estiver olhando. Grátis é o recurso matador, apenas use.
Nansen
Rastreia "dinheiro inteligente", carteiras com um histórico de estar cedo e certo, em várias blockchains. Cortou seu preço Pro recentemente para cerca de $49/mês. Os rótulos são o produto inteiro e são bons, mas o rastro esfria no momento em que os fundos atingem uma exchange centralizada. Vale a pena se você negocia on-chain a sério.
Dune
Mais de 100k dashboards SQL da comunidade que você pode bifurcar sem escrever uma linha de SQL você mesmo. O nível gratuito é suficiente para quase todos, e alguém já construiu o dashboard que você quer, então vá encontrá-lo antes de construir o seu.
Messari tem pesquisa qualitativa e classificações fortes. O preço é opaco e voltado para empresas, a pesquisa gratuita vale a leitura, mas não espere o material bom sem uma chamada de vendas.
Tokenomist (era Token Unlocks) é o calendário de desbloqueio dedicado. DefiLlama também cobre desbloqueios, mas se negociar desbloqueios é a sua praia, este é o especialista.
L4: Um Sistema
Você tem as peças agora, dados gratuitos de ambos os lados, matemática forense, a comparação de documentos, triagem on-chain. A última camada é fazer tudo funcionar como uma máquina em vez de você copiar e colar entre 15 abas.
virattt/ai-hedge-fund é uma equipe de agentes de IA, cada um modelado na filosofia de um investidor famoso, que discutem sobre uma ação e cospem uma recomendação. A coisa da persona de investidor é honestamente meio que um truque e você absolutamente não deve negociar ao vivo com dinheiro real.
Mas como uma lição gratuita sobre como orquestrar agentes de análise, como encadear um coletor de dados em um triador em um raciocinador, é o melhor professor no GitHub agora.

OpenBB é o terminal Bloomberg de código aberto. Conecte seus fornecedores de dados uma vez, use-os em todos os lugares, com um servidor MCP para que um agente possa dirigir tudo. Poderoso, mas pesado, a configuração é trabalho real e a qualidade dos dados depende inteiramente de qual fornecedor gratuito você conecta. Vale a pena se você quer um cockpit para tudo, exagero se você só quer triar alguns nomes.

FinGPT / FinRobot são LLMs financeiros abertos que você pode ajustar de forma barata. Academicamente impressionante e sim, o ajuste fino é mais barato do que as pessoas pensam.
Mas para basicamente todos, você não precisa ajustar nada, um modelo de fronteira com os prompts acima faz o trabalho.

Em ordem
Camada de ferramenta primeiro, chamada de função ou servidores MCP envolvendo EDGAR, FMP, DefiLlama, para que o modelo busque números reais e nunca os invente. Inegociável, uma IA citando uma figura financeira sem fonte é um passivo, não um analista.
Camada de triagem, os scores forenses e verificações on-chain rodam automaticamente em qualquer coisa que entre no seu universo.
Camada de leitura, a comparação ano a ano no que sobrevive à triagem.
Síntese, o modelo escreve o memorando com uma citação para cada afirmação e você lê o memorando em vez das 200 páginas.
Sobre modelos, Claude ou GPT funcionam. Se você está lidando com dados sensíveis e não quer que os arquivos saiam da sua máquina, rode um modelo aberto localmente através do Ollama. O modelo nunca foi o fosso. O fosso é conectá-lo a dados limpos, verificados e vinculados à fonte e apontar matemática disciplinada para ele.
L5: Construa L1
Entregue a ele um ticker, ele puxa os arquivos reais da EDGAR, calcula Beneish, Altman, Piotroski e o índice de acréscimos, e se você der uma chave, ele roda a comparação ano a ano dos Fatores de Risco e escreve um veredito de um parágrafo.
1#!/usr/bin/env python32"""3forensic_screener.py - leia qualquer empresa como um analista, em um comando.45configuração:6 pip install edgartools anthropic7 export SEC_IDENTITY="Seu Nome [email protected]" # SEC exige este cabeçalho8 export ANTHROPIC_API_KEY="sk-..." # opcional, apenas para a comparação910execução:11 python forensic_screener.py AAPL12 python forensic_screener.py TSLA NVDA SMCI # trie vários de uma vez13 python forensic_screener.py SMCI --diff # adicione a comparação de fatores de risco14"""1516import os, sys, argparse17from dataclasses import dataclass1819# LIMIARES - as linhas que mudam sua postura. ajuste a gosto.20M_FLAG = -1.78 # Beneish acima disso -> risco de manipulação (ponto de corte clássico -2.22)21Z_DISTRESS = 1.81 # Altman abaixo disso -> zona de dificuldade22Z_SAFE = 2.99 # Altman acima disso -> zona segura23ACCRUAL_BAD = 0.25 # |acréscimos/ativos| acima disso -> bandeira vermelha de qualidade dos lucros24F_STRONG = 6 # Piotroski neste valor ou acima -> fortalecimento2526@dataclass27class YearData:28 sales: float; cogs: float; sga: float; net_income: float; cfo: float29 receivables: float; current_assets: float; current_liabilities: float30 ppe_net: float; depreciation: float; total_assets: float31 total_liabilities: float; long_term_debt: float; retained_earnings: float32 ebit: float; market_cap: float; shares: float3334def load_two_years(ticker: str):35 """retorna (este_ano, ano_passado). chama SEC EDGAR pela rede."""36 from edgar import Company, set_identity37 identity = os.environ.get("SEC_IDENTITY")38 if not identity:39 sys.exit("defina SEC_IDENTITY='Seu Nome [email protected]' - a SEC exige isso.")40 set_identity(identity)4142 company = Company(ticker)43 fin = company.get_financials()44 inc, bal, cfs = fin.income_statement(periods=2), fin.balance_sheet(periods=2), fin.cash_flow(periods=2)4546 def g(stmt, col, *aliases):47 # busca de linha de melhor esforço; empresas marcam a mesma ideia de forma diferente48 for a in aliases:49 try:50 row = stmt.loc[stmt.index.str.contains(a, case=False, na=False)]51 if not row.empty:52 return float(row.iloc[0, col])53 except Exception:54 continue55 return 0.05657 def build(col):58 return YearData(59 sales=g(inc, col, "RevenueFromContractWithCustomerExcludingAssessedTax", "Revenues", "SalesRevenueNet"),60 cogs=g(inc, col, "CostOfGoodsAndServicesSold", "CostOfRevenue"),61 sga=g(inc, col, "SellingGeneralAndAdministrativeExpense"),62 net_income=g(inc, col, "NetIncomeLoss"),63 cfo=g(cfs, col, "NetCashProvidedByUsedInOperatingActivities"),64 receivables=g(bal, col, "AccountsReceivableNetCurrent", "ReceivablesNetCurrent"),65 current_assets=g(bal, col, "AssetsCurrent"),66 current_liabilities=g(bal, col, "LiabilitiesCurrent"),67 ppe_net=g(bal, col, "PropertyPlantAndEquipmentNet"),68 depreciation=g(cfs, col, "DepreciationDepletionAndAmortization", "DepreciationAmortizationAndAccretionNet"),69 total_assets=g(bal, col, "Assets"),70 total_liabilities=g(bal, col, "Liabilities"),71 long_term_debt=g(bal, col, "LongTermDebtNoncurrent", "LongTermDebt"),72 retained_earnings=g(bal, col, "RetainedEarningsAccumulatedDeficit"),73 ebit=g(inc, col, "OperatingIncomeLoss"),74 market_cap=getattr(company, "market_cap", 0.0) or 0.0,75 shares=g(bal, col, "CommonStockSharesOutstanding"),76 )7778 # col 0 = ano mais recente, col 1 = ano anterior (edgartools ordena o mais recente primeiro)79 return build(0), build(1)8081def d(a, b): return a / b if b else 0.0 # divisão segura8283def beneish_m_score(t, p):84 DSRI = d(d(t.receivables, t.sales), d(p.receivables, p.sales))85 GMI = d((p.sales - p.cogs)/p.sales if p.sales else 0, (t.sales - t.cogs)/t.sales if t.sales else 0)86 AQI = d(1 - d(t.current_assets + t.ppe_net, t.total_assets), 1 - d(p.current_assets + p.ppe_net, p.total_assets))87 SGI = d(t.sales, p.sales)88 DEPI = d(d(p.depreciation, p.depreciation + p.ppe_net), d(t.depreciation, t.depreciation + t.ppe_net))89 SGAI = d(d(t.sga, t.sales), d(p.sga, p.sales))90 TATA = d(t.net_income - t.cfo, t.total_assets)91 LVGI = d(d(t.total_liabilities, t.total_assets), d(p.total_liabilities, p.total_assets))92 return (-4.84 + 0.92*DSRI + 0.528*GMI + 0.404*AQI + 0.892*SGI93 + 0.115*DEPI - 0.172*SGAI + 4.679*TATA - 0.327*LVGI)9495def altman_z_score(t):96 wc = t.current_assets - t.current_liabilities97 return (1.2*d(wc, t.total_assets) + 1.4*d(t.retained_earnings, t.total_assets)98 + 3.3*d(t.ebit, t.total_assets) + 0.6*d(t.market_cap, t.total_liabilities)99 + 1.0*d(t.sales, t.total_assets))100101def piotroski_f_score(t, p):102 s = 0103 s += t.net_income > 0104 s += t.cfo > 0105 s += d(t.net_income, t.total_assets) > d(p.net_income, p.total_assets)106 s += t.cfo > t.net_income # dinheiro supera acréscimos107 s += t.long_term_debt < p.long_term_debt108 s += d(t.current_assets, t.current_liabilities) > d(p.current_assets, p.current_liabilities)109 s += t.shares <= p.shares # sem diluição110 s += d(t.sales - t.cogs, t.sales) > d(p.sales - p.cogs, p.sales)111 s += d(t.sales, t.total_assets) > d(p.sales, p.total_assets)112 return int(s)113114def sloan_accruals(t): return d(t.net_income - t.cfo, t.total_assets)115116def risk_factor_diff(ticker):117 """compara os Fatores de Risco deste ano com os do ano passado. a melhor leitura única na pilha."""118 key = os.environ.get("ANTHROPIC_API_KEY")119 if not key:120 return "(pulado - defina ANTHROPIC_API_KEY para ativar a comparação)"121 from edgar import Company122 import anthropic123 f = Company(ticker).get_filings(form="10-K").latest(2)124 this_rf = getattr(f[0].obj(), "risk_factors", str(f[0]))125 last_rf = getattr(f[1].obj(), "risk_factors", str(f[1]))126 client = anthropic.Anthropic(api_key=key)127 msg = client.messages.create(128 model="claude-opus-4-8", max_tokens=1024,129 messages=[{"role": "user", "content": (130 "compare estas duas seções de Fatores de Risco de arquivos anuais consecutivos. "131 "relate APENAS o que é NOVO este ano ou o que foi REMOVIDO. cite a nova linguagem. "132 "ignore o texto padrão que está em ambos. termine com uma frase: algo aqui muda o risco?\n\n"133 f"ANO PASSADO:\n{last_rf[:40000]}\n\nESTE ANO:\n{this_rf[:40000]}")}],134 )135 return msg.content[0].text136137def screen(ticker, do_diff=False):138 print(f"\n{'='*60}\n {ticker.upper()}\n{'='*60}")139 try:140 t, p = load_two_years(ticker)141 except Exception as e:142 print(f" não foi possível carregar os arquivos: {e}"); return143144 m, z, f, a = beneish_m_score(t, p), altman_z_score(t), piotroski_f_score(t, p), sloan_accruals(t)145 flags = []146 if m > M_FLAG: flags.append(f"M-Score {m:+.2f} - risco de manipulação de lucros")147 if z < Z_DISTRESS: flags.append(f"Z-Score {z:.2f} - zona de dificuldade financeira")148 if abs(a) > ACCRUAL_BAD: flags.append(f"Acréscimos {a:+.1%} - bandeira vermelha de qualidade dos lucros")149 if f < F_STRONG: flags.append(f"F-Score {f}/9 - não está fortalecendo")150151 print(f" Beneish M : {m:+.2f} (> {M_FLAG} = investigar)")152 print(f" Altman Z : {z:.2f} (< {Z_DISTRESS} dificuldade, > {Z_SAFE} seguro)")153 print(f" Piotroski F: {f}/9 (>= {F_STRONG} forte)")154 print(f" Sloan Accr : {a:+.1%} (|x| > {ACCRUAL_BAD:.0%} bandeira vermelha)")155 print(f"\n VEREDITO: {'INVESTIGAR' if flags else 'LIMPO'}")156 for fl in flags: print(f" - {fl}")157 if do_diff:158 print("\n COMPARAÇÃO DE FATORES DE RISCO (ano a ano):")159 print(" " + risk_factor_diff(ticker).replace("\n", "\n "))160161def main():162 ap = argparse.ArgumentParser(description="triador forense para qualquer empresa pública dos EUA")163 ap.add_argument("tickers", nargs="+")164 ap.add_argument("--diff", action="store_true", help="também executa a comparação de fatores de risco")165 args = ap.parse_args()166 for tk in args.tickers:167 screen(tk, do_diff=args.diff)168 print("\nlembrete: indicadores de probabilidade, não provas. Beneish roda com dados do ano passado, então "169 "a manipulação já pode estar se desfazendo. uma pontuação ruim significa abrir o arquivo, nunca "170 "venda a descoberto apenas com base no número.\n")171172if __name__ == "__main__":173 main()
Eu verifiquei a matemática antes de enviar, alimente um conjunto saudável de números e ele imprime um M limpo em torno de -2.24, Z na zona segura, F em 9/9, acréscimos perto de zero, exatamente o que você quer.
A única coisa que precisa da sua máquina é a conexão ao vivo com a SEC e uma chave para a comparação. Os aliases de tags cobrem os arquivadores padrão, um exótico pode precisar de uma linha adicionada e eu marquei onde.





