Um detector de regimes que você mesmo constrói
Neste projeto final você constrói um modelo oculto de Markov só com NumPy e o executa em vinte anos de SPY. O modelo diz que a cada dia o mercado está em um de três regimes ocultos, calmo, normal ou tempestuoso, que você nunca vê. Cada regime tem seu retorno e sua volatilidade típicos, e o regime de amanhã depende só do de hoje por uma matriz de transição A. A passagem para frente transforma os retornos numa probabilidade para cada regime a cada dia. Uma passagem para trás acrescenta o que os dias seguintes dizem. Viterbi acha o único caminho mais provável. Baum-Welch repete esses passos para aprender os números dos regimes a partir dos dados.
Tudo é escalado. Dividir os números da passagem para frente de cada dia pela sua soma cₜ impede que encolham até zero ao longo de milhares de dias, e a soma dos log cₜ é exatamente a log-verossimilhança. Viterbi trabalha com logaritmos pelo mesmo motivo. Na etapa de Baum-Welch as probabilidades suavizadas γ servem de pesos: a média e a volatilidade de cada regime são a média ponderada e a dispersão ponderada dos retornos, e as contagens de transição vêm da probabilidade de passar de i a j a cada dia. Cada rodada só pode aumentar a log-verossimilhança, o que é um bom teste do seu código. Na última função você usa os regimes ajustados para operar: um sinal prevê a probabilidade de crise a partir do dia anterior (honesto) e o outro a lê das probabilidades suavizadas (com olhar adiante).
- Escale cada passo: divida pela soma do dia e some os logaritmos, ou milhares de dias caem a zero.
- Confira por força bruta: em poucos dias dá para listar todos os caminhos de estados e comparar. A log-verossimilhança nunca pode cair de uma rodada para outra.
- Só sinais honestos: preveja amanhã com as probabilidades filtradas de hoje. As suavizadas lisonjeiam o backtest.
Lab: o que é avaliado
- Probabilidades de emissão10 pts
- O algoritmo para frente20 pts
- O algoritmo para trás10 pts
- A suavização5 pts
- A decodificação de Viterbi15 pts
- O ajuste de Baum-Welch25 pts
- O estudo de regimes15 pts