Dados abertos do Brasileirão 2026
A classificação, as probabilidades, as projeções, o índice de impacto e o histórico por rodada em JSON e CSV, com a documentação de cada campo e a forma recomendada de citação.
Atualizado após a 30ª rodada · números de 16/10/2026 às 15:30 · fonte conferida a cada 30 minutos
Os arquivos
dados.jsona fotografia completa: clubes, probabilidades, projeções, confrontos e impacto.clubes.csvuma linha por clube, pronta para planilha.confrontos.csvuma linha por jogo em aberto, com a probabilidade de cada resultado.historico.csvuma linha por rodada arquivada e por clube, desde o início da série.schema.jsono JSON Schema dodados.json, para validar o arquivo antes de confiar nele.status.jsonintegridade do dado e da publicação, frescor, proveniência, o checksum de cada arquivo e o histórico de versões do modelo e do produto.manifesto.jsono menor arquivo do conjunto: o identificador da fotografia corrente, as versões do modelo, do produto e do esquema, o checksum e o resultado da conferência de superfícies. Toda conferência começa por ele.estado.jsona fotografia e o acervo de resultados de que ela foi calculada, no mesmo corpo. É o que as páginas do portal leem: uma requisição, um snapshot.imprensa/feed.jsonefeed.xml, as pautas de cada rodada em JSON Feed 1.1 e RSS 2.0.
Status dos dados
299 de 380 jogos processados, sem divergências.
| Partidas no acervo | 380 de 380 esperadas |
|---|---|
| Partidas processadas | 299 |
| Partidas em aberto | 81 |
| Divergências | nenhuma |
| Última leitura da fonte | há 38 min |
| Fotografia | 2026.R30.231da24f-299.m1.2.0 |
| Versão do esquema | 2.4.0 |
Nenhuma divergência encontrada nesta fotografia. As conferências que rodam a cada requisição estão listadas abaixo, em proveniência.
Este mesmo estado é servido em status.json, para quem quiser conferir antes de baixar. Ele é publicado inclusive quando encontra problema: um número errado sem aviso é pior do que um aviso de atraso.
A tabela acima descreve a fotografia que está no ar. Quando uma atualização mais recente é calculada e recusada pelo portão, o diagnóstico completo dela fica no mesmo status.json, nos campos candidateRejected, candidateRejectionReason e candidateTimestamp, e não aparece nas páginas de conteúdo. A separação é proposital: recusar uma fotografia ruim é o portão funcionando, e quem veio ler a chance de um clube não precisa de um relatório de operação na frente do número. O campo publicStatus resume em uma palavra se o que está sendo servido representa o campeonato de agora.
De onde vem cada número
O que este cluster publica se divide em três: o dado primário, que vem de terceiro; a conferência, que fazemos para não repassar erro adiante; e o dado derivado, que é calculado aqui e é o que a licença cobre.
| Papel | Fonte | O que fornece | Frequência |
|---|---|---|---|
| Primária | football-data.org (competição BSA) | calendário completo da Série A, mando de campo, rodada, data e horário, placar das partidas encerradas e remarcações. A base bruta pertence à fonte e não é redistribuída por nós. Os arquivos de dado aberto deste cluster trazem o que calculamos, mais o placar necessário para reproduzir a conta. |
lido por um Worker nosso a cada 30 minutos; o navegador de quem visita nunca fala com a API. |
| Validação | Tabela agregada da mesma fonte | a classificação que a própria fonte publica, usada só para conferência cruzada: quando ela e a nossa discordam, a diferença aponta um problema de dado a investigar. É também o que permite fechar o placar de uma partida encerrada quando a fonte atrasa a atualização individual, e só quando quatro conferências independentes batem. |
a cada atualização. |
| Primária | CBF, Regulamento Específico da Competição | as regras da temporada: vagas continentais por posição, número de rebaixados e a ordem dos critérios de desempate. | por temporada, quando a CBF publica. |
| Derivada | Modelo ValorFinal | classificação montada jogo a jogo, rating de força no estilo Elo, simulação de Monte Carlo, probabilidades por faixa, projeções, pontos esperados, dificuldade de calendário e o Índice de Impacto. | recalculado a cada atualização de resultado. |
O que a licença cobre
A licença CC BY 4.0 cobre tudo que o ValorFinal calcula: probabilidades, projeções, ratings, pontos esperados, dificuldade de calendário, Índice de Impacto e as fotografias arquivadas.
Ela não cobre a base bruta de calendário e placares, que pertence à fonte primária e tem os termos de uso dela. Por isso os arquivos publicados aqui trazem o que calculamos, mais o placar estritamente necessário para que a conta seja reproduzível, e não a base bruta de terceiro.
Como o dado é conferido
- A classificação não é copiada pronta: ela é montada aqui, partida a partida, com os critérios de desempate do regulamento. Quando a nossa tabela e a da fonte discordam, isso aponta um problema de dado.
- O acervo passa por uma bateria de invariantes a cada requisição: partida duplicada, jogo encerrado sem placar, placar impossível, clube fora do elenco, rodada fora do intervalo e soma de gols que não fecha.
- O resultado dessa conferência é publicado em /brasileirao/status.json, inclusive quando encontra divergência.
- Pontos esperados são calculados por conta fechada e comparados com a média da simulação. Se as duas divergirem por mais de 0,6 ponto, uma das duas está errada, e um teste automático reprova a publicação.
O que este modelo declaradamente não faz
- O modelo simula apenas o Campeonato Brasileiro. Ele não simula a Copa do Brasil nem os torneios da Conmebol, e por isso publica faixa de posição final em vez de probabilidade de vaga continental.
- Os critérios de desempate por cartões não são aplicados: a fonte publica o placar das partidas e não a súmula.
- O modelo não usa elenco, valor de mercado, escalação, lesão nem desfalque. A força de cada clube é estimada a partir dos resultados da própria temporada.
- As probabilidades vêm de uma amostra pseudoaleatória. Com o número de simulações publicado, o erro padrão de uma probabilidade perto de 50% fica em 0,35 ponto percentual.
Requisição condicional, ETag e cache
Todo arquivo é servido com ETag, Last-Modified e os cabeçalhos X-Snapshot e X-Schema-Version. O ETag é derivado do identificador da fotografia mais um checksum do corpo, e isso tem uma consequência prática: fotografia igual significa conteúdo igual, então um 304 aqui é garantia, e não aposta.
curl -H 'If-None-Match: "<etag anterior>"' https://valorfinal.com.br/brasileirao/dados.json
O CORS é aberto (Access-Control-Allow-Origin: *) porque o objetivo declarado é que outras pessoas usem os arquivos direto do navegador. Os cabeçalhos ETag, Last-Modified, X-Snapshot e X-Schema-Version estão expostos em Access-Control-Expose-Headers, então um script no navegador consegue lê-los.
O cache público é de 1 minuto em toda superfície corrente, página ou arquivo, e o manifesto.json não tem cache nenhum. A fotografia em si muda a cada meia hora, no máximo, e só quando entra resultado novo. O schema.json tem cache de um dia e ETag próprio, porque ele muda com o FORMATO e não com a rodada.
Além de X-Snapshot, toda resposta traz X-Modelo-Versao, X-Produto-Versao e X-Snapshot-Tipo (corrente ou historica). Uma requisição HEAD a qualquer página responde em qual fotografia ela está, e é assim que a conferência externa percorre o cluster inteiro sem interpretar HTML.
Validar o arquivo antes de confiar nele
O schema.json é um JSON Schema draft 2020-12 que descreve o dados.json campo a campo, com tipo, faixa e a explicação de cada um. Ele existe para que um script não precise descobrir a forma do arquivo por tentativa e erro, nem descobrir que ela mudou quando quebra em produção.
Ele não é uma promessa escrita à mão: o esquema e o arquivo são conferidos nos dois sentidos a cada integração. Campo publicado que o esquema não descreve reprova, e campo descrito que o arquivo não traz também. É a mesma disciplina que impede o dicionário desta página de envelhecer.
Para conferir que o arquivo baixado é exatamente o desta fotografia, o status.json traz, em arquivos, o tamanho em bytes e o checksum de cada um dos quatro. É o mesmo valor que aparece dentro do ETag servido, então dá para conferir os quatro arquivos numa leitura só, sem baixar nenhum deles.
O mesmo status.json publica, em modelo.changelog, o histórico de versões do modelo em dado estruturado, e em produto.notas o que mudou no produto sem mexer em número. A metodologia conta a mesma história em texto, para quem lê em vez de automatizar.
O ok do status.json só é verdadeiro quando duas integridades fecham ao mesmo tempo: a do dado (dataset.ok: a entrada fecha e a fotografia passou nas invariantes) e a da publicação (publicacao.ok: todas as superfícies correntes, renderizadas a partir desta mesma publicação, saíram com este identificador). Uma sem a outra é um "ok" que não significa nada, e foi exatamente isso que existiu até 01/09/2026.
Como citar
Fonte: Modelo ValorFinal - Campeonato Brasileiro Série A 2026, dados após a 30ª rodada (fotografia 2026.R30.231da24f-299.m1.2.0). valorfinal.com.br/brasileirao
Em texto corrido, "segundo o Modelo ValorFinal" com a rodada resolve. O importante é a rodada aparecer: uma probabilidade sem rodada é uma afirmação que ninguém consegue conferir depois, porque o número muda quando o campeonato anda. Quem quiser precisão total cita o identificador da fotografia, que devolve exatamente os mesmos valores.
Não exigimos link, aprovação prévia nem aviso de uso. Uso comercial está liberado pela licença CC BY 4.0.
Campos de clubes.csv e do bloco de clubes do JSON
| Campo | Tipo | O que é |
|---|---|---|
snapshot | texto | Identificador da fotografia: temporada, rodada de referência, assinatura dos resultados e versão do modelo. Duas linhas com o mesmo snapshot vieram do mesmo cálculo. |
rodada_referencia | inteiro | Maior rodada com pelo menos 80% dos jogos disputados. É onde o campeonato está. |
atualizado_em | data ISO 8601 | Instante da última leitura da fonte de resultados que alimentou esta fotografia. |
code | texto | Identificador do clube no ValorFinal, estável entre temporadas (exemplo: atletico-mg). |
posicao, pontos, jogos, vitorias, empates, derrotas, gols_pro, gols_contra, saldo | inteiro | Classificação real no momento da fotografia, montada dos placares encerrados com os critérios de desempate do regulamento. |
rating | inteiro | Força estimada do clube no estilo Elo, calculada apenas com os resultados desta temporada. Todos começam em 1500. |
prob_titulo | número, 0 a 100 | Probabilidade de terminar em 1º lugar. Zero significa que o desfecho não apareceu em nenhum dos campeonatos simulados, e não que ele seja impossível. |
prob_top4 | número, 0 a 100 | Probabilidade de terminar entre 1º e 4º. Em 2026 esta é a faixa que dá vaga direta na fase de grupos da Libertadores (Art. 6º do REC da CBF). |
prob_top5 | número, 0 a 100 | Probabilidade de terminar entre 1º e 5º, a faixa que garante vaga de Libertadores só pela posição no Brasileirão 2026. O 5º entra na fase preliminar. |
prob_top6 | número, 0 a 100 | Probabilidade de terminar entre 1º e 6º. ATENÇÃO: em 2026 o 6º lugar NÃO garante Libertadores. Ele pega a vaga apenas se o campeão ou o vice da Copa do Brasil terminar no Top 5 e a vaga sobrar. |
prob_continental | número, 0 a 100 | Probabilidade de terminar entre 1º e 11º, a faixa em que a vaga continental (Libertadores ou Sul-Americana) está garantida qualquer que seja o desfecho da Copa do Brasil. INCLUI o Top 5: para a chance de Sul-Americana use prob_sul_americana. |
prob_rebaixamento | número, 0 a 100 | Probabilidade de terminar entre 17º e 20º e cair para a Série B. |
prob_g6 | número, 0 a 100 | CAMPO HISTÓRICO, idêntico a prob_top6. Mantido para não quebrar quem já consome o arquivo. O nome vem da distribuição de vagas até 2025, quando o Brasileirão dava seis vagas de Libertadores; desde 2026 ele dá cinco. Prefira prob_top5 para vaga garantida. |
prob_7_a_12 | número, 0 a 100 | CAMPO HISTÓRICO: probabilidade de terminar entre 7º e 12º. A faixa da Sul-Americana deixou de ser fixa nessas posições (Art. 7º: os 6 melhores excluídos os classificados à Libertadores). Prefira prob_sul_americana. |
prob_sul_americana | número, 0 a 100 | Probabilidade de terminar na faixa que dá vaga de Sul-Americana PELA POSIÇÃO: do 6º ao 11º em 2026, do 7º ao 12º em 2025. É prob_continental sem as posições que já garantem Libertadores. É o campo a usar para a chance de Sul-Americana, e é o número que abre as páginas de clube que disputam essa faixa. |
posicao_projetada, pontos_projetados | inteiro | Mediana da posição e da pontuação final nas simulações. |
posicao_p10, posicao_p90, pontos_p10, pontos_p90 | inteiro | Limites do intervalo típico: em 80% das simulações o resultado ficou entre os dois. |
pontos_esperados_restantes | número | Soma de três vezes a chance de vitória mais uma vez a chance de empate em cada jogo que falta. Conta fechada, sem amostragem. |
incerteza | número, 0 a 1 | Entropia de Shannon da distribuição de posições finais, normalizada. Zero é destino selado, um é tudo em aberto. |
posicoes_provaveis | número | Exponencial da entropia: o número efetivo de posições em que o clube pode terminar. |
dificuldade_calendario | número | Pontos por jogo que um clube médio somaria enfrentando os jogos que faltam a este clube, no mesmo mando. Menor é mais difícil. |
rank_dificuldade | inteiro, 1 a 20 | Posição no ranking de dificuldade do calendário restante. 1 é o calendário mais duro. |
Campos de confrontos.csv
| Campo | Tipo | O que é |
|---|---|---|
jogo_id | texto | Identificador estável da partida na base de origem. |
prob_mandante, prob_empate, prob_visitante | número, 0 a 100 | Probabilidade de cada resultado pelo modelo, com o mando de campo embutido. Conta fechada sobre a distribuição de Poisson, sem amostragem. |
gols_esperados_mandante, gols_esperados_visitante | número | Média da distribuição de Poisson de cada lado. |
impacto_geral, impacto_titulo, impacto_top4, impacto_top5, impacto_top6, impacto_continental, impacto_rebaixamento | número | Índice de Impacto: deslocamento total de probabilidade, em pontos percentuais somados entre os vinte clubes, provocado pelo resultado deste jogo. Só é calculado para os jogos da próxima janela; fica vazio nos demais. |
impacto_g6 | número | CAMPO HISTÓRICO, idêntico a impacto_top6. Mantido para não quebrar quem já consome. Prefira impacto_top5 para o impacto sobre a vaga de Libertadores garantida pela posição. |
Campos de historico.csv
O histórico repete os campos de clube com o valor que eles tinham em cada rodada arquivada, mais três campos próprios.
| Campo | Tipo | O que é |
|---|---|---|
rodada | inteiro | Rodada da fotografia arquivada. |
corte_ate | data ISO 8601 | Instante do último jogo que a fotografia conhece. Nenhum resultado posterior a essa data entrou no cálculo. |
origem | texto | publicado quando a fotografia foi registrada enquanto era a atual; reconstruido quando ela foi calculada depois, com o mesmo método e sobre o mesmo corte de resultados. |
Uma rodada arquivada nunca é reescrita. Se a fonte corrigir um placar antigo, a fotografia antiga continua no arquivo do jeito que foi publicada, e é a diferença entre as duas que conta a história.
Notas de uso
Estabilidade dos identificadores. O campo code de cada clube é estável entre temporadas e é a chave recomendada para cruzar dados. O jogo_id é estável dentro da temporada. O campo snapshot muda a cada recálculo e serve para detectar mudança sem comparar o arquivo inteiro.
Probabilidades. Todas vêm em escala de 0 a 100, com duas casas decimais. Valores exatamente 0 ou 100 aparecem nos arquivos quando a contagem da simulação deu isso, e devem ser lidos como "não apareceu na amostra", nunca como impossibilidade ou certeza. Nas páginas o percentual de chance tem uma casa decimal, e uma estimativa extrema aparece como 99,9% ou menos de 0,1%, com o valor real ao lado; impossibilidade ou certeza só são afirmadas quando a conta dos pontos ainda em disputa demonstra.
Faixas de posição, não vagas. Os campos de probabilidade descrevem faixas de posição final. O número de vagas brasileiras na Libertadores e na Sul-Americana depende de resultados de outras competições, que este modelo não simula.
Reprodutibilidade. Cada arquivo traz a semente e o número de simulações. Sobre a mesma fotografia, refazer a conta devolve exatamente os mesmos valores. A metodologia descreve o método inteiro, e a página de desempenho mede o quanto ele acerta.
Cabeçalho comum. Todo arquivo repete, em cada linha ou no topo do JSON, o snapshot, a temporada, a rodada de referência e a data da última leitura da fonte. Isso deixa cada linha auto-suficiente: um recorte copiado para outro lugar continua carregando de onde veio.
O que não é publicado
Não existe endpoint de dado bruto de terceiros aqui. O calendário e os placares vêm de uma base pública de dados esportivos sob licença própria, e redistribuir aquele acervo não é nosso direito. O que este site publica é o que ele produz: a classificação montada por nós, as probabilidades do modelo, as projeções e os índices derivados.
Também não são publicados dados de jogadores, escalações ou estatísticas de partida, porque o ValorFinal não coleta nem produz esse tipo de informação. Publicar número que não se produz é a forma mais rápida de perder a confiança de quem cita.
Continue por aqui
Perguntas frequentes
Posso usar esses dados em uma matéria, num trabalho acadêmico ou num site?
Pode. Os arquivos são publicados sob licença CC BY 4.0, que permite uso, adaptação e redistribuição, inclusive comercial, desde que a fonte seja creditada. O crédito pedido é curto: o nome do modelo, a competição, a temporada e a rodada dos dados. Não pedimos link obrigatório, aprovação prévia nem aviso de uso.
Com que frequência os arquivos mudam?
Eles mudam junto com as páginas: quando um resultado novo entra, quando um jogo é remarcado ou quando o dia vira. Entre uma coisa e outra, o conteúdo é idêntico, byte a byte, e o campo snapshot é o mesmo. Se o seu programa guarda o snapshot da última leitura, dá para saber se algo mudou sem reprocessar nada.
Existe um limite de requisições?
Existe um limite por endereço de IP para evitar abuso, generoso para uso normal. Um programa que baixa os arquivos algumas vezes por hora nunca esbarra nele. Para reprocessamento em massa, o caminho eficiente é ler o histórico completo uma vez e depois acompanhar só o snapshot atual.
Por que o CSV usa ponto decimal e não vírgula?
Porque o público do arquivo é programático. Vírgula decimal junto com vírgula separadora exige configuração extra em quase toda ferramenta e é uma fonte clássica de erro silencioso de leitura. As páginas continuam mostrando tudo em português, com vírgula decimal; os arquivos seguem a convenção de dados.
As probabilidades de Libertadores são de vaga ou de posição?
De posição, e o nome do campo diz isso. O campo prob_g6 é a probabilidade de terminar entre o 1º e o 6º lugar. O número de vagas do Brasil na Libertadores pode mudar conforme resultados de outras competições, que este modelo não simula, então publicar aquilo como probabilidade de vaga seria impreciso.
Os dados incluem resultados de jogos e escalações?
Incluem os placares encerrados, dentro da classificação e do histórico, e o calendário dos jogos em aberto com a probabilidade de cada resultado. Escalação, estatística de partida e dado de jogador não fazem parte: o ValorFinal não coleta esse tipo de informação e não publicaria número que não produz.
Fotografia 2026.R30.231da24f-299.m1.2.0Modelo ValorFinal 1.2.0Amostra 20.000 campeonatosNúmeros de 16/10/2026 às 15:30, a última leitura da fonteSimulação calculada em 16/10/2026 às 15:38, sobre essa leitura Metodologia · Dados abertos