Estratégia de negociação dinâmica adaptável baseada em retornos logarítmicos normalizados

SZI SMA LOG STD
Data de criação: 2024-12-27 14:39:32 última modificação: 2024-12-27 14:39:32
cópia: 2 Cliques: 376
1
focar em
1617
Seguidores

Estratégia de negociação dinâmica adaptável baseada em retornos logarítmicos normalizados

Visão geral

A estratégia é um sistema de negociação auto-adaptável baseado no índice Shiryaev-Zhou (SZI). Identifica os estados de sobrecompra e sobrevenda do mercado através do cálculo de uma pontuação padronizada da taxa de retorno aritmética, capturando assim as oportunidades de retorno do valor médio do preço. A estratégia combina um objetivo de parada e lucro dinâmico para um controle preciso do risco.

Princípio da estratégia

O núcleo da estratégia é a construção de indicadores padronizados por meio de características estatísticas de rolagem da taxa de retorno de logarítmos. Os passos específicos são os seguintes:

  1. Calcular a taxa de ganho de pares para obter o tratamento normalizado da taxa de ganho
  2. Calculação da média rolante e diferença padrão com uma janela de 50 ciclos
  3. Construção do indicador SZI: (Retorno logarítmico - média rolante) / diferença padrão rolante
  4. Quando o SZI é inferior a -2,0 gera um sinal de multiplicação, quando é superior a 2,0 gera um sinal de vazio
  5. Estabelecer 2% de stop loss e 4% de stop loss com base no preço de entrada

Vantagens estratégicas

  1. Base teórica sólida: baseada na hipótese de distribuição ortogonal linear, com bom apoio estatístico
  2. Adaptabilidade: Capacidade de se adaptar a mudanças nas características de flutuação do mercado por meio do cálculo da janela rolante
  3. Controle de risco perfeito: estratégia de parada percentual para um controle preciso do risco de cada transação
  4. Visualização amigável: sinaliza claramente os sinais de negociação e os níveis de controle de risco no gráfico

Risco estratégico

  1. Sensibilidade de parâmetros: a escolha do comprimento da janela de rolagem e o valor de barra tem um impacto significativo no desempenho da estratégia
  2. Dependência do cenário de mercado: Falso sinal frequente em mercados de tendência
  3. Efeito de deslizamento: em períodos de forte volatilidade, os preços reais de transação podem se desviar significativamente dos níveis ideais
  4. Computação de atraso: o cálculo de estatísticas em tempo real pode gerar um certo atraso no sinal

Direção de otimização da estratégia

  1. Dimensão de um sinal: dimensões de um sinal que podem ser consideradas com base na variação da taxa de mercado
  2. Múltiplo período de tempo: introdução de mecanismos de confirmação de sinais com vários períodos de tempo
  3. Filtragem de taxa de flutuação: suspensão de negociação ou ajuste de posição durante a flutuação extrema
  4. Confirmação de sinais: aumentar o volume de tráfego, impulso e outros indicadores auxiliares para a confirmação de sinais
  5. Gerenciamento de posições: implementação de gerenciamento de posições dinâmico com base na volatilidade

Resumir

Trata-se de uma estratégia de negociação quantitativa, baseada em sólidas estatísticas, que capta oportunidades de flutuação de preços por meio da padronização dos ganhos logarítmicos. A principal vantagem da estratégia reside na sua auto-adaptabilidade e no controle perfeito do risco, mas ainda há espaço para otimização em termos de seleção de parâmetros e adaptabilidade ao ambiente de mercado. A estabilidade e a confiabilidade da estratégia são esperadas para melhorar ainda mais com a introdução de desvalorização dinâmica e mecanismo de confirmação de sinais multidimensional.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Jalambi Paul model", overlay=true)

// Define the length for the rolling window
window = input.int(50, title="Window Length", minval=1)
threshold = 2.0 // Fixed threshold value
risk_percentage = input.float(1.0, title="Risk Percentage per Trade", step=0.1) / 100

// Calculate the logarithmic returns
log_return = math.log(close / close[1])

// Calculate the rolling mean and standard deviation
rolling_mean = ta.sma(log_return, window)
rolling_std = ta.stdev(log_return, window)

// Calculate the Shiryaev-Zhou Index (SZI)
SZI = (log_return - rolling_mean) / rolling_std

// Generate signals based on the fixed threshold
long_signal = SZI < -threshold
short_signal = SZI > threshold

// Plot the signals on the main chart (overlay on price)
plotshape(series=long_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", offset=-1)
plotshape(series=short_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", offset=-1)

// Strategy logic: Buy when SZI crosses below the negative threshold, Sell when it crosses above the positive threshold
if (long_signal)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    
if (short_signal)
    strategy.entry("Sell", strategy.short, comment="Short Entry")

// Calculate the stop loss and take profit levels based on the percentage of risk
stop_loss_pct = input.float(2.0, title="Stop Loss (%)") / 100
take_profit_pct = input.float(4.0, title="Take Profit (%)") / 100

// Set the stop loss and take profit levels based on the entry price
strategy.exit("Take Profit / Stop Loss", "Buy", stop=close * (1 - stop_loss_pct), limit=close * (1 + take_profit_pct))
strategy.exit("Take Profit / Stop Loss", "Sell", stop=close * (1 + stop_loss_pct), limit=close * (1 - take_profit_pct))

// Plot the stop loss and take profit levels for visualization (optional)
plot(stop_loss_pct != 0 ? close * (1 - stop_loss_pct) : na, color=color.red, linewidth=1, title="Stop Loss Level")
plot(take_profit_pct != 0 ? close * (1 + take_profit_pct) : na, color=color.green, linewidth=1, title="Take Profit Level")