Estratégia de negociação de reversão da variância

Autora:ChaoZhang, Data: 2023-10-31 14:42:13
Tags:

img

Resumo

A estratégia de negociação de reversão de variação gera sinais de negociação através do cálculo da proporção entre as opções de compra e venda, também conhecida como proporção de compra e venda. Quando a proporção se inverte, ela desencadeia negociações combinadas com regras simples de gerenciamento de dinheiro para obter lucros. É adequado para períodos de 30 minutos de NDX e SPX. A oscilação precisa ser ajustada para refletir o ponto de reversão correto. Os resultados de backtesting sólidos indicam o ponto de reversão ideal.

Estratégia lógica

O principal indicador desta estratégia é a média móvel e o desvio padrão do rácio call/put. Ele primeiro calcula a média móvel de 20 dias do rácio call/put, depois calcula o desvio padrão de 30 dias do rácio. Um sinal longo é acionado quando o rácio cruza acima da média móvel mais 1,5 desvio padrão. Um sinal curto é acionado quando o rácio cai abaixo da média móvel menos 1,5 desvio padrão.

Após o longo, se a relação se recuperar acima da média móvel, feche a posição curta. O stop loss é definido em 1% abaixo do preço de entrada. O take profit é definido em 3 vezes a distância de stop loss do preço de entrada.

Análise das vantagens

A maior vantagem desta estratégia é capturar pontos de reversão do sentimento quando o mercado se torna excessivamente pessimista ou otimista, causando anomalias na relação compra/venda.

Análise de riscos

Os sinais de reversão também podem ser falsificados por falhas, causando perdas. Parâmetros devem ser otimizados para sinais mais confiáveis.

Optimização

Considere adicionar filtros para confirmar sinais de reversão e evitar falhas. Por exemplo, considere apenas sinais quando o volume se amplifica. Os filtros de tendência também podem evitar negociações de contra-tendência. Os parâmetros ideais provavelmente variam em diferentes mercados e prazos. Integrar mais fatores tornará a estratégia mais robusta.

Conclusão

Esta estratégia visa capturar os pontos de reversão do mercado usando a relação de compra / venda com regras básicas de gerenciamento de dinheiro. Pode lucrar com reversões locais, mas enfrenta riscos de falha de ruptura. Otimizar parâmetros, adicionar filtros e integrar mais fatores pode melhorar sua estabilidade e lucratividade.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
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/
// © I11L

//@version=5
strategy("I11L Long Put/Call Ratio Inversion", overlay=false, pyramiding=1, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash)

SL = input.float(0.01,step=0.01)
CRV = input.float(3)
TP = SL * CRV

len = input.int(30,"Lookback period in Days",step=10)
ratio_sma_lookback_len = input.int(20,step=10)
mult = input.float(1.5,"Standard Deviation Multiple")

ratio_sma = ta.sma(request.security("USI:PCC","D",close),ratio_sma_lookback_len)

median = ta.sma(ratio_sma,len)
standartDeviation = ta.stdev(ratio_sma,len)
upperDeviation = median + mult*standartDeviation
lowerDeviation = median - mult*standartDeviation


isBuy = ta.crossunder(ratio_sma, upperDeviation)// and close < buyZone
isCloseShort = (ratio_sma > median and strategy.position_size < 0)
isSL = (strategy.position_avg_price * (1.0 - SL) > low and strategy.position_size > 0) or (strategy.position_avg_price * (1.0 + SL) < high and strategy.position_size < 0)
isSell = ta.crossover(ratio_sma,lowerDeviation) 
isTP = strategy.position_avg_price * (1 + TP) < high

if(isBuy)
    strategy.entry("Long", strategy.long)

if(isCloseShort)
    strategy.exit("Close Short",limit=close)

if(isSL)
    strategy.exit("SL",limit=close)

if(isTP)
    strategy.exit("TP",limit=close)
    
plot(ratio_sma,color=color.white)
plot(median,color=color.gray)
plot(upperDeviation,color=color.rgb(0,255,0,0))
plot(lowerDeviation,color=color.rgb(255,0,0,0))

bgcolor(isBuy?color.rgb(0,255,0,90):na)
bgcolor(isSell?color.rgb(255,0,0,90):na)


Mais.