Laboratório de modelos
forecast com pesquisas até 02/out/2026 · 2 dias para o 1º turno (04/out) · 4748 pesquisas na base
Variantes do agregador congelam um forecast por dia desde o primeiro dia da edição. A métrica foi definida ANTES de medir: erro médio de share contra a PRÓXIMA pesquisa de cada corrida (até 14 dias), e Brier contra o resultado oficial quando a urna abrir. Quem calibra melhor, vence.
Os competidores marcados SINTÉTICO não leem pesquisa de instituto: o voto
deles vem de um painel de personas geradas por IA. Estão aqui para responder uma pergunta de
pesquisa, se um painel sintético consegue acompanhar pesquisa de campo, e a resposta pode muito
bem ser que não. Nada do que eles produzem entra no forecast do site, e isso não depende
de disciplina: o motor recusa ler pesquisa sintética no modelo oficial, e um teste
(src/test_synths_gate.py) reprova se alguém quebrar essa separação.
Aviso: o campo sintético ainda não rodou. Os competidores marcados SINTÉTICO (MOCK) estão alimentados por um número de teste, colocado para provar que o encanamento funciona de ponta a ponta. Eles não medem nada até o painel de personas ir a campo, e é por isso que aparecem sem comparações.
Leaderboard walk-forward
| modelo | o que muda | freezes | comparações | erro médio |
|---|---|---|---|---|
| v3_runoff | COMPETIDOR do M8: o motor OFICIAL com a correlação 1º->2º turno ligada (RUNOFF_CORR=1). Fecha, como competidor, a limitação declarada desde a B4: hoje a probabilidade do par de 2º turno é CONSTANTE entre simulações, ou seja, quem sorteia um 1º turno forte entra no 2º exatamente igual a quem sorteia um fraco. Nasce aqui e não no oficial porque ligar muda o número PUBLICADO. | 3 | 104 | 3.0 pp |
| SINTÉTICO (MOCK) synths_mix | COMPETIDOR SINTÉTICO: a pesquisa sintética entra no agregador como mais um instituto. Responde 'sintético agrega valor?' | 5 | 212 | 3.1 pp |
| v2_estado | COMPETIDOR ESTRUTURAL (M1): nível latente por filtro de Kalman com efeitos por instituto, no lugar da média ponderada por recência. Estima o nível DE HOJE, não o nível médio das últimas 3 semanas. Único modelo do registro com engine próprio: as outras 5 variantes são o mesmo motor com parafusos diferentes e ficam dentro de 0,3 milésimo de MAE entre si. | 3 | 104 | 3.2 pp |
| v2_prior | COMPETIDOR do M5: o v2_estado com PRIOR DE REPUTAÇÃO por instituto. Único parâmetro diferente do v2_estado é PRIOR_INST=1. Responde a pergunta do M5 sem supor a resposta: o encolhimento do viés de casa passa a ter como alvo o viés HISTÓRICO do instituto (2018 e 2022, via M4) em vez de zero, e o leaderboard mede se isso melhora ou piora o erro walk-forward. Existe como modelo SEPARADO, e não como mudança no v2_estado, porque o v2_estado já tem freeze congelado: ligar o prior nele faria o competidor virar outro modelo no meio da medição. | 3 | 104 | 3.2 pp |
| baseline | agregador oficial: meia-vida 21d, house effect on, TIMEPP 2.0, correlação 1T->2T DESLIGADA (RUNOFF_CORR=0, declarado e não herdado do default) · MIN_CASADOS=2 (declarado): pesquisa com menos de 2 candidatos DISTINTOS casados com número não entra, achado do SEN-SE em 24/09 (distintos desde 25/09: SEN-MG tinha 7 colunas no mesmo sq) · COBERTURA_MIN=0,9 (declarado, reaproveita o 0,9 do MATCH_MIN): pesquisa cuja lista deixa de fora mais de 10% do campo, pela massa de consenso das listas cheias vizinhas, não entra; achado das listas parciais da Veritá em 25/09 (3 nomes no Senado, 2 na presidencial), que fabricavam destaques no detector de inflexões | 21 | 1076 | 3.2 pp |
| incerteza_alta | bandas largas: TIMEPP 3.5, piso 4pp | 21 | 1076 | 3.2 pp |
| recencia_curta | reage rápido: meia-vida 10d | 21 | 1076 | 3.2 pp |
| recencia_longa | conservador: meia-vida 42d | 21 | 1076 | 3.3 pp |
| sem_house | baseline sem correção de house effect | 21 | 1076 | 3.3 pp |
| SINTÉTICO (MOCK) synths_solo | COMPETIDOR SINTÉTICO: prevê só com a pesquisa sintética do vox, ignorando institutos. Responde 'sintético substitui pesquisa?' | 1 | 54 | 16.3 pp |
120 freezes gravados · comparações acumulam conforme novas pesquisas chegam: no começo da série o quadro é vazio MESMO, e está certo assim.
Ressalvas (viajam com os dados)
- Share de pesquisa não é voto; mede acompanhamento, não a urna.
- Freezes do mesmo dia veem as mesmas pesquisas: o walk-forward só discrimina com o tempo.
- n pequeno no início da série; diferenças pequenas são ruído.
- Fonte das pesquisas: Wikipédia (latência 1-3 dias; ver docs/fontes-eleicoes.md).
Método em uma telaabrir▸
Share agregado: média ponderada das pesquisas registradas (recência com meia-vida de 21 dias, tamanho de amostra, correção básica de viés de instituto), com indecisos realocados proporcionalmente. A banda listrada na ponta de cada barra é ±1 desvio: onde ela é larga, a corrida está aberta de verdade.
P(eleito) vem de 20 mil simulações Monte Carlo por corrida: incerteza entre institutos, indecisos, deriva até a eleição e um choque nacional simples por bloco partidário. Presidência e governos têm 2º turno condicional (pesquisas de pares quando existem); o Senado elege os 2 mais votados em turno único, com o eleitor votando em 2 nomes.
Chips de qualidade: corrida com pesquisa velha ou sem pesquisa carrega um prior declarado de alta incerteza, nunca um 50/50 silencioso. Candidatos e situação de registro vêm do TSE (chave estável por candidato); pesquisas, das tabelas públicas da Wikipédia, validadas por amostragem contra as fichas com nº de registro TSE. Método completo na página Modelos.
Limitações desta versão: indecisos são realocados proporcionalmente; a probabilidade do 2º turno por par não se correlaciona com a força sorteada no 1º; pesquisa mede intenção declarada, não voto. Os números são estimativas com ruído, e diferenças pequenas entre candidatos são empate técnico na prática.