Dados abertos
Dados abertos da Liga Portugal
As previsões das páginas da Liga Portugal vêm de ficheiros JSON estáticos servidos deste site, sem chave a pedir nem limite de pedidos. O jogo Contra o Modelo guarda as previsões de quem joga no próprio browser, sem conta nem servidor; os dados do modelo estão todos aqui.
Se construíres alguma coisa com eles, podes usar as saídas do modelo nos termos da licença CC BY-NC 4.0: uso não comercial, com atribuição a estimador.pt e um link para a página de origem. Os dados de terceiros que alguns ficheiros trazem ficam fora dessa licença (vê abaixo). E se publicares, diz-nos: gostamos de ver.
Ficheiros publicados
A lista abaixo é gerada a partir do que está realmente no servidor no momento em que a página foi construída.
Época 2026-27
época atualhttps://estimador.pt/data/football/liga-2026-27/
| Ficheiro | O que é | Tamanho |
|---|---|---|
| ask.json | Para perguntas condicionais sobre a época («e se o Porto perder em Braga?»): as probabilidades de cada equipa (título, top 3, Europa, despromoção) e os jogos em aberto cobertos. Ainda sem página própria no site. | 37 KB |
| ask_samples.json | Uma amostra das épocas simuladas, compactada, para responder a essas perguntas: em cada uma, o resultado de cada jogo em aberto e a posição final de cada equipa (a codificação está descrita no próprio ficheiro). | 568 KB |
| contested_ratings.json | Posse disputada: probabilidade de ganhar duelos aéreos e no chão, defesas e médios, agregada sobre as épocas que o próprio ficheiro lista (seasons; quatro nesta versão, 2023-24 a 2026-27). Células que falharam uma porta pré-registada trazem ranking: null.Fora da licença: as contagens de duelos (duels, won, rate_raw), da SofaScore. | 85 KB |
| contrib_ratings.json | Contribuição ofensiva: golos mais assistências por 90 acima do substituto, com intervalo e a distribuição da métrica por posição. rank_goals_only e rank_change_vs_goals_only contam posições entre todos os jogadores do modelo, não na lista de finalização publicada; /jogadores compara com essa lista.Fora da licença: os minutos, golos e assistências de cada jogador (SofaScore). | 28 KB |
| def_ratings.json | Defesas: mais-valia ajustada sobre golos sofridos. Pode trazer apenas diagnósticos, se o modelo concluir que os jogadores não são separáveis dos colegas de equipa.Fora da licença: as contagens de ações em descriptive_actions (SofaScore). | 44 KB |
| game_fixtures.json | O calendário da época para o jogo Contra o Modelo: cada jogo com hora de início (UTC; kickoff_confirmed diz se já é a oficial), a sua hora de fecho (locks_at), as probabilidades do modelo e quando foram publicadas (published_at; probs_source diz de que ficheiro vieram) e o resultado. No jogo, uma jornada fecha inteira no locks_at mais cedo dos seus jogos. As notas abaixo dizem onde estas regras se afastam do calendário.Fora da licença: os resultados (home_goals, away_goals), da SofaScore. | 130 KB |
| gk_channels.json | Os três eixos de guarda-redes, publicados separados e nunca combinados: intervenção em cruzamentos (separável), saídas da área (estilo) e defesa de remates (nulo com potência adequada). As épocas usadas estão no campo seasons (quatro nesta versão, 2023-24 a 2026-27).Fora da licença: as contagens de cada guarda-redes (y, n), da SofaScore. | 22 KB |
| gk_ratings.json | Guarda-redes: golos evitados face ao xGOT dos remates enfrentados, em bruto e modelado, por 90 minutos e com intervalo. Traz também a validação fora da amostra e as regras de exclusão de remates.Fora da licença: os remates enfrentados, o seu xGOT e os golos sofridos (SofaScore). | 23 KB |
| injuries.json | Lesionados e suspensos por clube, com motivo, regresso previsto quando conhecido e valor de mercado. Instantâneo com data.Fora da licença: o ficheiro inteiro: lesões, castigos e valores de mercado do Transfermarkt. | 6 KB |
| market_scorecard.json | Uma avaliação do modelo contra a linha de fecho do mercado, com o número de jogos e de épocas, o erro padrão emparelhado em cada bloco, as casas de apostas cujas cotações foram usadas (market_sources), a verificação dos intervalos de pontos finais (calibration) e, no campo model, o modelo avaliado (que pode não ser o que publica as previsões).Fora da licença: as probabilidades e os erros do mercado (os campos market_*), derivados das cotações de fecho da Pinnacle e da Bet365 via football-data.co.uk. | 10 KB |
| mdNN.json 9 ficheiros (md00.json … md08.json) | A previsão publicada depois de uma jornada: classificação simulada com probabilidades de título, top 3 e despromoção (17.º ou 18.º lugar), forças de ataque e defesa, xPts e a classificação real nessa altura.Fora da licença: os resultados (actual_standings, matchday_results), da SofaScore, e o xG de xpts_table (xgf, xga, e os xPts calculados a partir dele), da FotMob. | 164 KB |
| mdNN_scenarios.json 8 ficheiros (md01_scenarios.json … md08_scenarios.json) | Análise condicional da mesma jornada: jogos decisivos, caminhos para o título e para a manutenção, e probabilidades condicionadas a cada resultado. São ficheiros grandes. | 3,3 MB |
| players.json | A lista de finalização: golos por 90 minutos acima do nível de substituição (SAR), com intervalo de credibilidade de 90% e a variação face à época anterior. generated_from.seasons diz as épocas usadas.Fora da licença: os minutos, jogos e golos de cada jogador (SofaScore). | 19 KB |
| players_detail.json | O detalhe por jogador por trás das páginas de jogador: histórico época a época e jogos recentes. appearances_through é a data do último jogo incluído. As páginas mostram só os jogadores da lista de players.json, com a posição e os números dessa lista; team é o plantel atual.Fora da licença: os minutos, jogos, golos e assistências por época e por jogo, e a nota de cada jogo (rating), da SofaScore. | 148 KB |
| samples.json | Épocas completas tiradas à sorte da simulação de Monte Carlo — posição, pontos e diferença de golos de cada equipa em cada época sorteada, mais os quantis de pontos. | 74 KB |
Época 2025-26
época arquivadahttps://estimador.pt/data/football/liga-2025-26/
| Ficheiro | O que é | Tamanho |
|---|---|---|
| mdNN.json 19 ficheiros (md04.json … md31.json) | A previsão publicada depois de uma jornada: classificação simulada com probabilidades de título, top 3 e despromoção (17.º ou 18.º lugar), forças de ataque e defesa, xPts e a classificação real nessa altura.Fora da licença: os resultados (actual_standings, matchday_results), da SofaScore, e o xG de xpts_table (xgf, xga, e os xPts calculados a partir dele), da FotMob. | 273 KB |
| mdNN_scenarios.json 9 ficheiros (md23_scenarios.json … md31_scenarios.json) | Análise condicional da mesma jornada: jogos decisivos, caminhos para o título e para a manutenção, e probabilidades condicionadas a cada resultado. São ficheiros grandes. | 1,5 MB |
| review.json | A revisão de uma época terminada: classificação final, xPts por equipa, a diferença entre pontos e xPts (luck; não é uma separação limpa entre sorte e talento) e a evolução das probabilidades de título e de despromoção ao longo do ano. Em 2025-26, as previsões das jornadas 4 a 22 foram reconstituídas depois, a 4 de março de 2026; o timestamp de cada mdNN.json mostra-o.Fora da licença: a classificação final (SofaScore) e o xG por trás dos xPts (FotMob). | 24 KB |
Os campos principais
Os ficheiros de jornada (mdNN.json) são o ponto de partida para quase tudo. Os campos abaixo são os que interessam.
| Campo | O que é |
|---|---|
| table[] | Uma entrada por equipa: mean_pts, std_pts, mean_gd e as probabilidades p_champion, p_top3 e p_relegation (despromoção = terminar em 17.º ou 18.º; o 16.º, que vai ao play-off, não conta). p_champion e p_relegation trazem ainda _lo/_hi: os percentis 3 e 97 da mesma probabilidade calculada em 100 blocos de 500 simulações. É a dispersão de uma estimativa com 500 simulações, cerca de dez vezes a margem de erro de Monte Carlo do número publicado (±0,4 pontos percentuais com 50 000 simulações), e não é a incerteza do modelo. O site não os mostra. p_top3 não tem _lo/_hi. |
| actual_standings[] | A classificação real no momento da previsão: played, points, gf, ga, gd. |
| xpts_table[] | Pontos esperados a partir do xG de cada jogo: xpts, xgf, xga, played. Não usa os parâmetros do modelo — é uma leitura independente. |
| team_strengths{} | Ataque e defesa por equipa, em escala logarítmica e centrados em zero. Valores positivos de defense significam pior defesa. |
| position_probs{} | Por equipa, a probabilidade de terminar em cada posição, do 1.º ao último. Soma 1. |
| next_matchday{} | A jornada seguinte com p_home, p_draw e p_away por jogo. Pode incluir jogos adiados de jornadas anteriores. Nem sempre traz a jornada inteira: md03, md04 e md05 trazem 6, 7 e 8 dos 9 jogos. |
| matchday_results[] / matches_remaining[] | matchday_results: os resultados que entraram desde a publicação anterior, que podem ser de mais do que uma jornada (jogos adiados ou antecipados). matches_remaining: jogos da jornada em curso ainda por disputar quando o ficheiro foi gerado (com kickoff quando conhecido); fica vazio quando a jornada acabou, mesmo que haja jogos adiados. Um mdNN.json não é cortado exatamente na jornada NN: actual_standings diz quantos jogos cada equipa já tinha. |
| season, matchday, model, n_sims, timestamp | Metadados: que época, que jornada, que modelo, quantas simulações e quando foi gerado pela última vez (UTC, ISO 8601). Um mdNN.json é regenerado no mesmo endereço enquanto a sua jornada decorre, à medida que entram resultados, por isso timestamp é a última regeneração e não a primeira publicação. Em 2026-27, model é joint_sot (o modelo anterior) na pré-época (md00) e bivcross (o modelo atual, Poisson bivariado com remates à baliza) da jornada 1 em diante; toda a época 2025-26 é joint_sot. O next_matchday de md01, md03, md04 e md08 difere do registo do jogo (game_fixtures.json) em até 0,4 pp; nos outros coincide. O registo do jogo é o que conta. |
Notas sobre o jogo Contra o Modelo
Lidas do próprio game_fixtures.json: onde as regras de fecho e de avaliação se afastam do calendário.
- Jornada 1: as probabilidades do modelo foram publicadas a 10 de agosto de 2026, depois de 8 dos 9 jogos terem começado. Ninguém podia jogar essa jornada. A partir da jornada 2, as probabilidades são publicadas antes do primeiro jogo.
- Sp. Braga – Gil Vicente (jornada 2) foi adiado para segunda-feira, 19 de outubro às 20:15, mas fechou com a jornada 2, a 14 de agosto de 2026 (a hora original do jogo era 16 de agosto de 2026): é avaliado com as probabilidades que o modelo publicou para essa jornada.
- As probabilidades das jornadas 3, 5, 6, 7 e 9 foram congeladas antes do fim da jornada anterior (por exemplo, as da jornada 9 a 11 de outubro de 2026, com a jornada 8 ainda a decorrer até 12 de outubro de 2026): não incluem os resultados que faltavam. O modelo é avaliado no jogo com essas probabilidades, tal como foram congeladas.
- O registo de cada jogo é o game_fixtures.json: published_at diz quando as probabilidades foram congeladas e probs_source de que publicação vieram (ficheiro e commit). O mdNN.json com esse nome pode ter sido regenerado depois, por isso o seu timestamp e os seus números podem não coincidir com os do jogo. As jornadas 1 e 2 não têm probs_source.
Como usar
Não há índice: os ficheiros de jornada seguem o padrão mdNN.json com dois dígitos, e o mais recente é o do número mais alto. A jornada em curso está sempre no ficheiro com o NN mais elevado da época atual.
# um ficheiro de jornada (o mais recente é o NN mais alto)
curl -s https://estimador.pt/data/football/liga-2026-27/md01.json | jq '.table[0]'
# a classificação final e a diferença pontos − xPts de 2025-26
curl -s https://estimador.pt/data/football/liga-2025-26/review.json | jq '.luck[:3]'Licença e atribuição
As saídas do modelo do estimador.pt (probabilidades, simulações, cenários, avaliações de jogadores e a avaliação do modelo) estão sob a licença Creative Commons Atribuição 4.0 Internacional (CC BY-NC 4.0): podes usá-las, redistribuí-las e transformá-las, incluindo para fins comerciais, desde que atribuas a fonte («estimador.pt», com link para a página correspondente).
A licença não abrange os dados de terceiros que alguns ficheiros trazem, marcados na lista acima como «Fora da licença»: resultados e estatísticas de jogo (SofaScore), xG (FotMob), cotações de casas de apostas (Pinnacle e Bet365, via football-data.co.uk) e lesões e valores de mercado (Transfermarkt). Esses dados vêm da fonte original e não são redistribuíveis por nós: para os reutilizar, segue os termos de cada fonte.
Os dados são fornecidos como estão, sem garantias — são previsões probabilísticas de um modelo estatístico, e por definição vão estar erradas parte do tempo.
Proveniência
Resultados e estatísticas de jogo (incluindo remates à baliza) da SofaScore; xG da FotMob; cotações de fecho (Pinnacle e Bet365) via football-data.co.uk; lesões e valores de mercado do Transfermarkt. As probabilidades vêm de um modelo bayesiano de Poisson bivariado (bivcross), ajustado aos golos e aos remates à baliza das últimas quatro épocas da Primeira Liga e da Liga 2, com os jogos mais antigos a pesar menos e o valor de cada plantel como ponto de partida, e de 50 000 simulações de Monte Carlo por publicação. A pré-época (md00) foi publicada pelo modelo anterior, joint_sot.