변동 회전 거래 전략

저자:차오장, 날짜: 2023-10-31 14:42:13
태그:

img

전반적인 설명

변동 역전 거래 전략은 콜 및 푸트 옵션의 비율을 계산하여 거래 신호를 생성합니다. 콜 푸트 비율로도 알려져 있습니다. 비율이 역전되면 수익을 창출하기 위해 간단한 돈 관리 규칙과 결합한 거래를 유발합니다. NDX 및 SPX의 30 분 기간에 적합합니다. 오스실레이션은 올바른 역전 지점을 반영하도록 정렬해야합니다. 탄탄한 백테스팅 결과는 최적의 역전 지점을 나타냅니다.

전략 논리

이 전략의 핵심 메트릭은 콜/푸트 비율의 이동 평균과 표준 편차이다. 먼저 콜/푸트 비율의 20일 이동 평균을 계산하고, 그 다음 비율의 30일 표준 편차를 계산한다. 비율이 이동 평균과 1.5 표준 편차를 넘을 때 긴 신호가 트리거된다. 비율이 이동 평균 마이너스 1.5 표준 편차를 넘을 때 짧은 신호가 트리거된다.

장기간 거래 후, 비율이 이동 평균 이상으로 회복되면 짧은 포지션을 종료합니다. 스톱 손실은 입시 가격보다 1% 낮습니다. 영업 수익은 입시 가격에서 스톱 손실 거리의 3 배로 설정됩니다.

이점 분석

이 전략의 가장 큰 장점은 시장이 지나치게 비관적이거나 상승세를 보이는 시점의 정서 반전점을 포착하여 콜 / 푸트 비율의 이상으로 인해 발생합니다. 그러한 이상에 대한 거래는 지역 반전으로부터 이익을 얻을 수 있습니다. 돈 관리 규칙은 개별 거래의 위험과 보상을 효과적으로 제한합니다.

위험 분석

주요 위험은 잘못된 매개 변수 조정에서 발생합니다. 과도하게 빈번한 신호는 중요한 반전을 캡처하지 못합니다. 반전 신호는 또한 잘못된 파업으로 인해 손실이 발생할 수 있습니다. 매개 변수는 더 신뢰할 수있는 신호를 위해 최적화되어야합니다.

최적화

반전 신호를 확인하고 거짓 브레이크오웃을 피하기 위해 필터를 추가하는 것을 고려하십시오. 예를 들어, 볼륨이 증폭 될 때 신호만 고려하십시오. 트렌드 필터는 또한 역 트렌드 거래를 피할 수 있습니다. 최적 매개 변수는 다른 시장과 시간 프레임에 따라 다를 수 있습니다. 더 많은 요소를 통합하면 전략이 더 견고해질 것입니다.

결론

이 전략은 기본적인 돈 관리 규칙과 함께 통화 / 입출금 비율을 사용하여 시장 반전 지점을 포착하는 것을 목표로합니다. 지역 반전에서 이익을 얻을 수 있지만 잘못된 파업 위험에 직면합니다. 매개 변수를 최적화하고 필터를 추가하고 더 많은 요소를 통합하면 안정성과 수익성을 향상시킬 수 있습니다. 전반적으로 시장 정서에 따라 거래 반전 방향을 제공합니다. 실제 응용을 위해 추가 테스트 및 최적화가 필요합니다.


/*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)


더 많은