99% dos bots de "StatArb" vendidos para traders de varejo usam uma janela de lookback estática (OLS) para calcular a razão de hedge. Quando o regime do mercado muda, o spread ultrapassa o limite do Z-score, e sua conta é liquidada.
Arbitragem institucional real requer hedge dinâmico. Aqui está o passo exato da atualização do Filtro de Kalman que uso em meu bot Sentinel para rastrear dinamicamente a relação entre dois ativos em tempo real.
core/kalman_filter.py (Linhas 42-56)import numpy as np
def kalman_update(preco_x, preco_y, media_estado, covariancia_estado, ruido_observacao, ruido_transicao):
# Matriz de observação
H = np.array([price_x, 1.0]).reshape(1, 2)
# Previsão
pred_cov = state_cov + transition_noise
# Atualizar
innovation = price_y - np.dot(H, state_mean)
innovation_cov = np.dot(H, np.dot(pred_cov, H.T)) + observation_noise
kalman_gain = np.dot(pred_cov, H.T) / innovation_cov[0, 0]
new_state_mean = state_mean + kalman_gain * innovation[0]
new_state_cov = pred_cov - np.dot(kalman_gain, np.dot(H, pred_cov)) return new_state_mean, new_state_cov
Se o seu bot não recalcular a razão de hedge em cada tick usando modelos de espaço de estado, você está operando em uma ilusão defasada.
Eu empacotei todo o meu motor Python StatArb (Kalman + Z-Score) em um contêiner Docker pronto para ser implantado. Ele usa SQLite WAL para velocidades extremas de leitura/escrita, Redis para gerenciamento de estado e é totalmente controlável via polling do Telegram. Nenhuma intervenção manual necessária.
Pare de comprar embalagens. Compre a matemática. Link na bio para a imagem Docker e licença SaaS para executar isso para seus clientes. #StatArb #algoTrading #Python #BybitFutures #QuantTrader