Esta estratégia utiliza os conceitos de filtro de Kalman e reversão média para capturar flutuações anormais de curto prazo nos preços das ações e implementar a negociação direcional de ações. A estratégia estabelece primeiro um modelo de relação de preço entre uma ação e um índice de mercado, e depois usa a técnica de filtro de Kalman para prever e filtrar a relação. Os sinais de negociação são gerados quando a relação desvia dos níveis normais. Além disso, a estratégia também incorpora filtragem de volume para evitar falsos negócios.
A ideia central da estratégia é estabelecer um modelo de relação de preço entre o preço da própria ação e o preço do índice de mercado. Esta relação reflete o nível de preço de ações individuais em relação ao mercado geral. Quando a relação é alta, considera-se que a ação individual está sobrevalorizada e um sinal de venda é gerado. Quando a relação é baixa, considera-se que a ação individual está subvalorizada e um sinal de compra é gerado.
Para filtrar o sinal de relação sem problemas, a estratégia adota o algoritmo do filtro Kalman. O filtro Kalman pesa o valor observado real da relação com o valor previsto e atualiza a previsão da relação em tempo real. E calcula um valor de filtro Kalman suave. Os sinais de negociação são gerados quando o valor filtrado excede 2 desvios padrão acima ou abaixo dos níveis normais.
Além disso, a estratégia também considera fatores de volume de negociação.
A maior vantagem desta estratégia é a suavização e previsão efetivas da relação de preços usando o algoritmo do filtro Kalman. Em comparação com modelos de reversão média simples, o filtro Kalman pode refletir melhor as mudanças dinâmicas nos preços, especialmente quando os preços flutuam acentuadamente. Isso permite que a estratégia detecte anomalias de preços em tempo hábil e gere sinais de negociação precisos.
Em segundo lugar, a combinação do volume de negociação também aumenta a aplicabilidade prática da estratégia.
No geral, a estratégia combina com êxito a filtragem Kalman, a reversão média, a análise do volume de negociação e outras técnicas para formar uma estratégia de negociação quantitativa robusta.
Embora a estratégia seja teórica e tecnicamente válida, ainda existem alguns riscos potenciais na utilização real que necessitam de atenção.
O primeiro é o risco do modelo. Alguns parâmetros-chave no modelo de filtro de Kalman, como a variância do ruído do processo, a variância do ruído da observação, etc., precisam ser estimados com base em dados históricos.
Em segundo lugar, o risco de custos de deslizamento. O comércio freqüente incorrerá em custos de deslizamento mais altos, o que erodirá os retornos da estratégia. A otimização de parâmetros e a filtragem do volume de transações podem reduzir as transações desnecessárias até certo ponto.
Por fim, há algum risco sistémico de mercado em seguir o índice de mercado como referência. Quando todo o mercado flutua acentuadamente, a relação de preços entre ações individuais e o mercado também será anormal. A estratégia gerará então sinais errados. Podemos considerar a escolha de um índice mais estável como referência.
A estratégia pode ser ainda melhorada:
Usar modelos de aprendizagem profunda mais complexos para ajustar e prever proporções de preços.
Otimizar as regras de filtragem do volume de negociação para obter configurações de limiar mais dinâmicas e inteligentes, reduzindo assim a probabilidade de transações falsas.
Teste diferentes índices de mercado como referências estratégicas e escolha índices com flutuações menores e mais estáveis, reduzindo assim o impacto do risco sistémico de mercado.
Incorporar análise fundamental de ações para evitar a negociação de algumas ações com fundamentes significativamente deteriorados.
Usar dados intradiários de alta frequência para backtesting e otimização da estratégia.
A estratégia capta com sucesso flutuações anormais de preços de curto prazo em ações usando o modelo de filtro Kalman. Enquanto isso, a introdução de sinais de volume também aumenta a praticidade da estratégia. Embora ainda existam alguns riscos de modelo e riscos de mercado, esta é uma estratégia de negociação quantitativa muito promissora. Há grande espaço para melhoria e potencial de aplicação na futura otimização de modelos e sinais.
/*backtest start: 2023-12-21 00:00:00 end: 2023-12-28 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © xXM3GAXx //@version=5 strategy("My strategy", overlay=true) //SPY or QQQ context = request.security("BTC_USDT:swap", timeframe.period, input(close)) //our stock particular = input(close) //ratio src = ta.roc(particular, 1) / math.abs(ta.roc(context, 1)) //kalman calculation Sharpness = input.float(1.0) K = input.float(1.0) greencolor = color.lime redcolor = color.red velocity = 0.0 kfilt = 0.0 Distance = src - nz(kfilt[1], src) Error = nz(kfilt[1], src) + Distance * math.sqrt(Sharpness*K/ 100) velocity := nz(velocity[1], 0) + Distance*K / 100 kfilt := Error + velocity //2 std devs up and down upper = kfilt[1] + 2 * ta.stdev(kfilt, input(20)) lower = kfilt[1] - 2 * ta.stdev(kfilt, input(20)) //plotting for visuals plot(kfilt, color=velocity > 0 ? greencolor : redcolor, linewidth = 2) plot(upper) plot(lower) //plot(ta.ema(ta.roc(particular, 1)/ta.roc(context, 1), 5), color = #00ffff, linewidth=2) //volume data vol = volume volema = ta.ema(volume, 10) //buy when ratio too low longCondition = kfilt<=lower and vol>=volema if (longCondition) strategy.entry("My Long Entry Id", strategy.long) //sell when ratio too high shortCondition = kfilt>=upper and vol>=volema if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)