Imagina dois clubes. Clube A no interior do RS: 200 sócios que jogam só entre eles. Clube B em SP: 100 sócios, idem. O sistema gera IDTs de 1,5 a 5,5 pros dois lados. Pergunta: o IDT 1,5 do Clube A está na mesma escala do IDT 1,5 do Clube B?
Matematicamente: não dá pra saber. O sistema nunca viu um sócio do A jogar contra um sócio do B. Ele chuta que estão na mesma escala porque foi o que conseguiu fazer com o que tinha, mas é chute.
E esse chute é invisível. O IDT 1,5 sai limpinho no perfil, sem aviso de que “olha, esse 1,5 aqui pode ser meio fictício”.
Se um jogador é de uma bolha super isolada, marcar “calibração baixa”. Não mexer no IDT dele, só dizer: “esse número aqui é menos comparável globalmente que aquele outro”.
Pra isso, precisamos de três coisas:
Algoritmo padrão da indústria pra encontrar comunidades em grafos. Roda em segundos sobre 20k jogadores. Cada pool — masculino adulto, feminino adulto, juvenil masculino, juvenil feminino — gera seu próprio mapa.
Pra cada bolha, somar o peso das partidas que saem dela (tier × recência), ponderado por diversidade: 10 jogadores-ponte de níveis variados pesam muito mais que 1 jogador fazendo todas as partidas externas.
A incerteza da bolha vira sigma de calibração. Pra cada jogador: RD_global² = RD_individual² + (exposure × sigma_bolha)². Soma de variâncias independentes — RD global sempre ≥ RD individual.
Cada ponto é um jogador. Cada linha cinza, uma partida. Cores marcam as 12 maiores bolhas detectadas pelo algoritmo no masculino adulto — 23,7 mil jogadores nos clusters reconhecidos, de um pool total de 33,2 mil. Os blocos coloridos densos são as comunidades; as linhas finas entre eles são as poucas pontes que permitem comparação global.


55.951 jogadores no banco. 48.403 com IDT calculado, distribuídos em quatro pools independentes (adulto masculino e feminino, juvenil masculino e feminino). Cinco descobertas que mudam como pensar o IDT.
O grafo de 33 mil jogadores parece um único bloco conectado. Mas o Leiden — algoritmo de detecção de comunidades — quebra esse bloco em 76 bolhas distintas. A maior tem só 5,9% dos jogadores (1.952). As outras 75 estão lá embaixo, separadas por poucas partidas-ponte.
Modularidade 0,85 — alta. As bolhas são bem definidas, não ruído.
Distribuição do coeficiente de participação (mede o quanto cada jogador se espalha entre comunidades adjacentes): 27.106 de 33.225 jogadores adultos masculinos têm participação ZERO. Mediana zero. Não é “alguns viajam” — é “a esmagadora maioria nunca jogou contra alguém de outra bolha”.
No feminino é ainda mais — 84,5% das adultas com participação zero.
1.337 jogadores no Mato Grosso, 94,4% das partidas em torneios dentro do estado, calibração global baixa (0,34). O algoritmo achou o cluster sem ninguém dizer “olhe pro MT” — a geografia emergiu dos jogos. O ajuste do cluster é praticamente zero (−0,85 Glicko): sem pontes pra outros estados, o sistema não inventa correção. Comparar um IDT 2,5 mato-grossense com um IDT 2,5 paulista é, hoje, um chute parcial — e agora a gente sabe disso.
Padrão repetido em RN, AL e outros estados com circuito regional fechado.
Juvenil masculino tem 30 bolhas (vs 76 nos adultos), das quais 7 (23%) saem com confiança alta. No adulto masculino, nenhuma. O circuito CBT/regional move os meninos pra fora da cidade, e isso aparece automaticamente no algoritmo. Validação importante: o método não está dizendo “tudo é baixa” por bug — ele consegue distinguir grupos bem conectados de grupos mal conectados.
Modularidade juvenil 0,67 vs adulta 0,85. Bolhas existem, mas são bem mais permeáveis.
O C_c já está vivo no número que aparece em todo perfil, ranking e H2H. Para 40 mil jogadores masculinos com idt_with_offset calculado, o ajuste mediano absoluto é 0,08 IDT — pequeno. Em casos extremos chega a 1,46 IDT, sempre em direções que fazem sentido pra quem conhece o circuito. 2.163 jogadores M (5,4%) têm |Δ| > 0,5; 4.920 (12%) têm |Δ| > 0,2.
Bolhas sem ponte alguma: ajuste praticamente zero — quando não há evidência, o sistema não inventa.
Os top clusters do masculino adulto saem com identidade reconhecível — não porque algum humano marcou no banco, mas porque foi assim que o tênis se organizou na prática.
O maior cluster do RS é o circuito clubístico de Porto Alegre: 1.952 jogadores que circulam entre os torneios do GNU (29% dos jogadores do cluster passaram por torneios lá), Academia Personal Tennis (18%), Sogipa (14%), HR Tennis (10%) e a Federação Gaúcha (24%). Não é só sócio do GNU — é quem joga os abertos da capital. Caxias do Sul aparece como cluster separado, ancorado no Recreio da Juventude (24% do cluster). Santa Catarina aparece como duas bolhas distintas, ambas dominadas pela Federação Catarinense (89% dos jogadores em cada) — provável amador vs juvenil/federado, ou regiões diferentes.
Estados inteiros podem virar bolha. MT, RN, AL aparecem cada um como cluster único, dominado pela federação local — o Mato Grosso tem 1.337 jogadores, 76% deles passando pelos torneios da Federação MT, com calibração quase nula porque quase ninguém de lá joga fora.
Esse reconhecimento automático é a melhor validação que o método tem. O algoritmo descobre sozinho o que qualquer porto-alegrense do tênis já sabia: quem joga GNU joga Sogipa joga Personal joga HR — e quase nunca contra um catarinense.
A descoberta mais importante deste estudo não é nenhum algoritmo. É que o tênis amador brasileiro adulto é estruturalmente um conjunto de ilhas. O Glicko-2 funciona muito bem ordenando gente dentro das ilhas, mas a comparação entre ilhas é, hoje, parcialmente um chute.
Esse diagnóstico tem valor por si só. Agora sabemos onde estimular pontes faz mais diferença. Subsidiar a viagem de um top do MT pra um torneio aberto em SP vale muito mais — pra calibração da base — que mais um torneio dentro de Cuiabá. O método aponta onde colocar a próxima ponte.
O IDT exibido em todo lugar do site — perfil, ranking, h2h — agora é Ri + Cc (rating individual + altura da bolha equilibrada). Você não precisa fazer nada — o número que aparece já é o calibrado entre bolhas.
Jogadores em bolhas bem conectadas têm Cc próximo a zero (já estavam alinhados nacionalmente). Jogadores em bolhas isoladas têm um pequeno ajuste pra refletir a melhor estimativa do nível absoluto deles dado o que o sistema sabe. Bolha sem ponte alguma: ajuste praticamente zero — quando não há evidência, o sistema não inventa.
Em média, o ajuste é pequeno (mediana absoluta ~0,08 IDT no masculino, ~0,10 no feminino). Em casos extremos pode chegar a ±1,46 IDT — e todos eles fariam sentido pra quem conhece o circuito. 5,4% dos jogadores masculinos têm |Δ| acima de 0,5 IDT. O painel admin expõe os ajustes pra auditoria.
Os achados completos vivem em docs/clusters.md no repositório, com o estudo de validação pré-implementação em docs/superpowers/findings/2026-05-17-graph-exploration.md. Helpers matemáticos em db/idt_connectivity.py com testes unitários. Pipeline em scripts/build_idt_clusters.py e scripts/recompute_idt_cluster_calibration.py. Fale conosco em contato@idtenis.com.br.