Como funcionam os rankings
SigningLab transforma dados públicos de partidas em uma resposta quantitativa pra uma pergunta simples: quem fez as melhores contratações esse ano?
O que conta como contratação
Pra cada temporada e clube, identificamos jogadores que apareceram pela primeira vez em partidas oficiais daquela equipe. O jogador precisa ter tido tempo mínimo em campo (200 minutos por padrão no futebol, equivalentes em outros esportes) pra ser considerado uma contratação "avaliável" — exclui curiosidades de 5 minutos no fim de jogo.
Para cobertura cross-source (api-football + súmulas FGF no Gauchão), resolvemos o mesmo time entre IDs diferentes através de um mapa de aliases que evita contar um Internacional duas vezes ou perder um Grêmio.
Como cada contratação é pontuada
Para cada jogador-time-temporada, calculamos features estatísticas e produzimos um score (z-score combinado). A versão atual é v3 e prioriza produção objetiva normalizada por posição:
- G+A por 90 min, normalizado por posição (45%) — o sinal dominante. Carlos Vinícius com 12 gols em 954 minutos vence Tiago Volpi mesmo com Volpi jogando o ano inteiro.
- Rating médio normalizado por posição (15%) — nota de partida (api-football) comparada à média de outros jogadores na mesma posição.
- Minutos normalizados por posição (15%) — recompensa contribuição ao longo da temporada.
- % titular, valor de mercado, idade-pico, custo por g+a, upgrade de liga ao revender, cartões vermelhos (5% cada) — sinais secundários.
Goleiros e defensores têm a feature de "gols por 90 min" zerada no score (não vence ranking porque um zagueiro fez 2 gols num ano). Isso mantém goleiros competindo entre si por rating e minutos, sem inflacionar o ranking geral.
Tiers
Os limites são calculados por temporada e liga — uma "Excelente" no Brasileirão não é a mesma coisa que uma "Excelente" no Paulistão.
Score do clube
Para o ranking de clubes, agregamos os scores individuais com ajuste por força de liga (Premier League pesa mais que Série B). O score final é a média ponderada das contratações daquele clube, com bônus por concentração de "Excelente" + "Boa".
Fontes de dados
- api-football — partidas, escalações, estatísticas e ratings de 50+ ligas de futebol e cobertura histórica até 2008.
- FGF (Federação Gaúcha) — súmulas oficiais em PDF do Gauchão, parseadas pra cobrir dados que api-football não tem.
- MLB Stats API — beisebol, transações nativas (signings, trades).
- NHL public API — hóquei, rosters por temporada.
- nflverse — futebol americano via CSVs mantidos pela comunidade (licença permissiva).
- cricsheet.org — ball-by-ball de 9 ligas T20 (IPL, BBL, PSL, etc). cricsheet.org, ODbL 1.0.
- Liquipedia — esports (LoL incluindo CBLOL). liquipedia.net, CC BY-SA 3.0.
- stats.wnba.com — basquete feminino americano.
- LNB — basquete brasileiro (NBB).
- euroleague-api — basquete europeu.
Limitações conhecidas
- Ratings têm viés posicional. Goleiros recebem média 7.07 no api-football vs ~6.88 dos outros — o algoritmo conta defesas/clean sheets pesado. A versão v3 do score compensa parcialmente via normalização por posição. A próxima iteração migra ratings pra SofaScore (em desenvolvimento).
- Ligas africanas tier-2 (Marrocos, Argélia, Tunísia, Nigéria, etc) têm fixtures mas api-football não expõe stats de jogador — só temos os resultados, sem ranking de contratações.
- Pré-2021 no Gauchão não existe online; a FGF só começou a publicar súmulas digitais em 2021.
- Esports / LoL não temos stats de performance por jogador, apenas roster changes. Ranking de LoL atual é por volume de contratações, não qualidade.
Quem fez isso
Projeto pessoal de Alessandro Almeida, mantido em código aberto em github.com/alessandroUSF/signinglab. Sugestões e correções são bem-vindas — abra um issue ou me mande email.