O recurso está a ser carregado... Carregamento...

Estratégia de negociação quantitativa de sinal linear normalizado Z-Score

Autora:ChaoZhang, Data: 2025-01-06 16:14:07
Tags:RSISMAZ-ScoreLSBTPSL

img

Resumo

Esta estratégia é um sistema de negociação quantitativo baseado em sinais lineares e normalização de pontuação Z. Ele constrói sinais de negociação padronizados combinando variáveis exógenas como RSI com dados de preço e desencadeia negociações usando limiares.

Princípio da estratégia

Os princípios fundamentais incluem várias etapas-chave:

  1. Construção de sinal linear: usa pesos configuráveis (signal_alpha) para combinar linearmente o indicador RSI com dados de preço para formar sinais iniciais.
  2. Normalização do Z-Score: Calcula a média e o desvio padrão dos sinais lineares com base em um período de retrocesso, normalizando os sinais em pontuações Z.
  3. Mecanismo de desencadeamento do limiar: abre posições longas quando a pontuação Z cai abaixo do limiar negativo e posições curtas quando acima do limiar positivo, controlado pelo fator de ajustamento de risco.
  4. Gerenciamento de riscos: define níveis de stop-loss e take-profit para cada negociação, com ajustamento flexível da relação risco-recompensação através de parâmetros percentuais.

Vantagens da estratégia

  1. Padronização do sinal: a transformação de pontuação Z fornece boas propriedades estatísticas, facilitando a configuração de limiares universais.
  2. Alta flexibilidade: pode equilibrar a influência de variáveis exógenas e preço através do ajuste de sinal_alfa.
  3. Risco controlado: mecanismo completo de stop-loss e take-profit, configurável com base nas características do mercado.
  4. Boa adaptabilidade: aplicável a vários prazos, ampliável para outros instrumentos de negociação altamente líquidos.

Riscos estratégicos

  1. Sensibilidade de parâmetros: o desempenho da estratégia é sensível à seleção de parâmetros, exigindo um backtesting completo.
  2. Dependência do ambiente de mercado: pode gerar trocas frequentes em mercados com tendências fracas.
  3. Lag de sinal: os cálculos da média móvel podem introduzir lag que afeta o tempo de entrada.
  4. Risco de liquidez: a negociação de alta frequência pode enfrentar perdas de deslizamento durante períodos de baixa liquidez.

Orientações para a otimização da estratégia

  1. Ajuste dinâmico dos parâmetros: introduzir mecanismos adaptativos para ajustar dinamicamente os limiares e as posições de stop-loss com base na volatilidade do mercado.
  2. Confirmação de sinais múltiplos: adicionar outros indicadores técnicos como condições de filtragem para melhorar a fiabilidade do sinal.
  3. Optimização da gestão de posições: conceber um sistema dinâmico de gestão de posições baseado na volatilidade e na força do sinal.
  4. Controle de custos de transação: Otimize a lógica de entrada e saída para reduzir os custos das negociações frequentes.

Resumo

Esta é uma estratégia de negociação quantitativa bem estruturada e logicamente rigorosa. Ela constrói um sistema robusto de sinais de negociação por meio de combinação linear e processamento de padronização. A estratégia oferece forte configurabilidade e gerenciamento de risco abrangente, mas requer atenção à otimização de parâmetros e adaptabilidade do mercado. Através das direções de otimização sugeridas, a estabilidade e lucratividade da estratégia podem ser ainda melhoradas.


/*backtest
start: 2024-12-29 00:00:00
end: 2025-01-05 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Linear Signal-Based Strategy", shorttitle = "LSB_V1", overlay=true)

// Inputs
lookback_period = input.int(14, title="Lookback Period for Moving Averages")
signal_alpha = input.float(0.5, title="Signal Weight Alpha (Exogenous Variable)")
take_profit_percent = input.float(0.02, title="Take Profit (%)")
stop_loss_percent = input.float(0.01, title="Stop Loss (%)")
risk_adjustment_factor = input.float(1.5, title="Risk Adjustment Factor")

// Fetch Exogenous Variable (Example: RSI as a Proxy)
rsi_value = ta.rsi(close, lookback_period)

// Linear Signal Calculation
linear_signal = signal_alpha * rsi_value + (1 - signal_alpha) * close

// Z-Score Normalization for Signal
mean_signal = ta.sma(linear_signal, lookback_period)
stddev_signal = ta.stdev(linear_signal, lookback_period)
z_score_signal = (linear_signal - mean_signal) / stddev_signal

// Entry Conditions
long_condition = z_score_signal < -risk_adjustment_factor
short_condition = z_score_signal > risk_adjustment_factor

// Risk Management
long_take_profit = close * (1 + take_profit_percent)
long_stop_loss = close * (1 - stop_loss_percent)
short_take_profit = close * (1 - take_profit_percent)
short_stop_loss = close * (1 + stop_loss_percent)

// Execute Trades
if (long_condition)
    strategy.entry("Long", strategy.long, qty=1)
    strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)

if (short_condition)
    strategy.entry("Short", strategy.short, qty=1)
    strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)




Relacionados

Mais.