Categoria: Uncategorized

  • Combinando pesquisas eleitorais e Google Trends

    Esse post complementa o dashboard do nowcast eleitoral.

    Seja por politicagem ou puro clubismo, há um grande interesse em saber quem está à frente em uma disputa eleitoral. A ferramenta mais utilizada são pesquisas eleitorais, o padrão-ouro em termos de validade. Diversas empresas entrevistam amostras representativas de eleitores e captam diretamente o interesse de voto. Porém, os resultados não apenas chegam esporadicamente mas também com informações defasadas (já que há um atraso entre a coleta de dados e a divulgação dos resultados). Esse atraso impossibilita uma análise de alta frequência (como testar os efeitos de uma fala no palanque, uma operação policial, uma denúncia).

    No outro lado do espectro estão medições como o Google Trends. Ele entrega um sinal em tempo real sobre quanta atenção cada candidato está captando. O custo é óbvio: busca não é voto. Um pico de buscas por um dos candidatos pode refletir entusiasmo dos apoiadores, escândalo, ou simplesmente curiosidade. O nível absoluto é enviesado (presidentes em exercício são mais buscados por razões institucionais), e o sinal é ruidoso o suficiente para que ninguém leve a sério um modelo que prevê eleição olhando só para o volume de buscas.

    A intuição deste projeto é que esses dois sinais são complementares, não substitutos. Pesquisas trazem informações sobre o nível com baixa frequência, enquanto o Google Trends traz variação com alta frequência.

    Um filtro de Kalman é a ferramenta natural para fundir os dois: extrai a trajetória latente da intenção de voto, ponderando cada observação pela sua volatilidade.

    O resultado é um nowcast diário das intenções de voto, com banda de incerteza, que se atualiza assim que sai uma pesquisa nova ou que o Trends acumula evidência suficiente para mover a estimativa.

    Método

    Estados e observações

    Modelamos três quotas de votos válidos — Lula, Bolsonaro e Outros — como um vetor latente s_t \in \mathbb{R}^3 em escala logarítmica. A transformação para o simplex de probabilidades é feita por softmax:

    \theta_t = \mathrm{softmax}(s_t) \cdot 100, \qquad \sum_i \theta_{t,i} = 100

    Trabalhar em s_t (espaço irrestrito) e mapear para \theta_t (espaço restrito) por softmax é o truque padrão para contornar a restrição de que as quotas somam 100% sem precisar de outras projeções.

    A cada dia t podemos observar até seis variáveis:

    y_t^{\text{pesq}} \in \mathbb{R}^3: média ponderada das pesquisas que cobrem o dia t (ponderada pelo número de entrevistas, agregando “campo Lula”, “campo Bolsonaro” e “terceira via + nanicos”);

    y_t^{\text{gt}} \in \mathbb{R}^3: variação diária da média móvel de 7 dias do share de buscas por candidato no Google Trends.

    A escolha de usar a variação (e não o nível) do Google Trends é deliberada: como discutido na introdução, o nível absoluto de buscas é enviesado e tem componentes que nada têm a ver com intenção de voto. Já a variação suaviza esse viés de nível e mede a direção do interesse — exatamente a informação de alta frequência que queremos extrair.

    Equações do modelo

    Equação de transição

    s_t = s_{t-1} + \eta_t, \qquad \eta_t \sim \mathcal{N}(0, Q)

    com Q diagonal. O passeio aleatório é a especificação minimal que permite à série latente vagar sem reverter a uma média imposta — apropriado quando não temos uma teoria forte sobre para onde os votos “deveriam” convergir entre eleições.

    Equação de medida

    y_t = c + H \cdot \theta_t + \varepsilon_t, \qquad \varepsilon_t \sim \mathcal{N}(0, R)

    onde:

    c \in \mathbb{R}^6 são interceptos (capturam viés sistemático de cada fonte);

    H \in \mathbb{R}^{6 \times 3} é a matriz de loadings — diagonal por blocos: pesquisas carregam quase 1 nas próprias quotas (são uma medida quase direta), Google Trends carrega coeficientes menores e estimados;

    R é diagonal, com variâncias separadas para pesquisas e Trends (Trends é, como esperado, muito mais ruidoso).

    Como \theta_t = \mathrm{softmax}(s_t) é não-linear em s_t, usamos um filtro de Kalman extendido (EKF): linearizamos a função de medida em torno do estado predito usando o jacobiano analítico do softmax,

    J(s) = \mathrm{diag}(\theta) - \theta \, p^\top, \qquad p = \theta/100,

    e aplicamos as equações usuais do Kalman com H_{\text{eff}} = H \cdot J(s_{t|t-1}).

    Tratamento de dados faltantes

    Em mais da metade dos dias da amostra, falta pelo menos uma das fontes (e em muitos dias, todas as pesquisas). O EKF lida com isso naturalmente: para cada dia, identificamos o subconjunto de observações disponíveis e aplicamos as equações de atualização restritas a esse subconjunto. Dias completamente vazios passam pela predição sem atualização — o estado avança, mas a variância também cresce, o que é exatamente o comportamento desejado: na ausência de informação, a incerteza aumenta.

    Uma sutileza importante: pesquisas não chegam pontualmente no dia da divulgação. Cada pesquisa cobre, em média, os cinco dias anteriores. Atribuímos a observação de cada pesquisa a esses dias passados (não ao dia da divulgação) e ponderamos pelo n de entrevistas. O suavizador de Kalman, rodado depois do filtro, propaga essa informação para frente e para trás.

    Estimação

    Os 20 parâmetros do modelo (interceptos, loadings, variâncias de estado, variâncias de medida) são estimados por máxima verossimilhança via SLSQP, com bounds para garantir identificação. As variâncias de estado, em particular, são limitadas a um intervalo apertado em log — isso evita que o filtro “explique” toda a variação dos dados como ruído de medida (estimativa achatada) ou como ruído de processo (estimativa que copia as pesquisas).

    A inicialização do estado usa quotas neutras (40/40/20), e a covariância inicial é difusa — após algumas dezenas de observações, a influência do prior é desprezível.

    Resultados

    A última estimativa do modelo (suavizada, vintage 27/04/2026) traz:

    CandidatoEstimativa (%)IC 95%
    F. Bolsonaro47,246,0 — 48,4
    Lula40,839,6 42,0
    Outros12,010,8 — 13,2

    O modelo não é uma bola de cristal. A eleição está a meses de distância, eventos podem virar a mesa, e nenhuma fusão de fontes contemporâneas resolve esses riscos. Mas como leitura condicional ao que sabemos hoje, o nowcast entrega o que se propõe: uma estimativa diária, calibrada e auditável da disputa.

  • A taxa neutra de juros no Brasil

    O juro é a principal ferramenta do Banco Central para controlar a inflação e manter a economia nos trilhos. De maneira geral, taxas de juros definem a escolha entre poupança e consumo. Quanto mais altas as taxas de juros, maior o incentivo para poupar e, pela lei da oferta e da procura, a inflação tende a ceder e a atividade econômica a desacelerar.

    O que define se certa taxa de juros é “alta” ou “baixa” é o que economistas chamam de taxa neutra de juros. A taxa neutra é, em um sentido, uma taxa de equilíbrio: aquela que não gera nenhum efeito inflacionário.

    Porém, a taxa neutra não é observável e estimá-la é um desafio empírico. Historicamente, há uma extensa literatura sobre a estimação dessas taxas; recentemente, as mudanças trazidas pela pandemia acenderam novamente o debate sobre a posição da política monetária. Aqui, eu aplico dois métodos recentes para essa estimação no Brasil. Ambos foram desenvolvidos para economias avançadas. Também comparo as estimativas com a taxa real de juros implícita nas expectativas de longo prazo do sistema Focus do Banco Central.

    A primeira é a metodologia de Holston, Laubach, e Williams (2023). Eles propõem um modelo econométrico estrutural onde a taxa de juros neutra é um objeto possível de se calcular. Eles aplicam o método para os Estados Unidos, Canadá, e zona do euro. As estimativas desse modelo são publicadas trimestralmente pelo Banco da Reserva Federal americano em Nova Iorque e estão disponíveis nesse link.

    A segunda é a metodologia de Lubik e Matthes (2015). Esta consiste em estimar um modelo onde taxas de juros, inflação, e desemprego dependem dos seus passados. Nesse caso, a taxa de juros neutra é justamente a previsão de longo-prazo do modelo a cada período. Esses números também são publicados trimestralmente pelo Banco da Reserva Federal americano, desta vez o de Richmond por meio desse link.

    Por fim, incluo como referência a taxa real de juros implícita nas expectativas de longo prazo do sistema Focus do Banco Central — não uma estimativa estrutural, mas o que o mercado espera como taxa real de equilíbrio.

    As três medidas contam histórias diferentes até 2020. Para HLW, a taxa neutra brasileira despencou em 2014, quando o Brasil entrou em recessão, e se recuperou em 2017. O TVP-VAR estima uma taxa de juros muito mais estável durante o mesmo período. Enquanto isso, o mercado esperava que a taxa neutra caísse após o pico em 2015.

    Vale notar que as estimativas do modelo HLW e as expectativas implícitas do Focus convergem no final da amostra, em torno de 6%. O modelo TVP-VAR, por sua vez, sugere uma taxa neutra mais elevada, próxima de 9%. Essa divergência ilustra como a escolha de metodologia importa — e por que bancos centrais tipicamente consultam múltiplos modelos.

    As estimativas atuais situam a taxa neutra entre 6% e 9% ao ano em termos reais — um intervalo amplo, mas que reflete a incerteza inerente à estimação de uma variável não observável.

    Com a Selic atualmente em 14,75% e inflação esperada em torno de 5%, a taxa real vigente se encontra acima de todas as estimativas — sugerindo que a política monetária está em território contracionista.