상대적 변동성 지수 백테스팅 전략

저자:차오장, 날짜: 2023-09-26 16:15:44
태그:

전반적인 설명

상대 변동성 지수 (RVI) 는 상대 강도 지수 (RSI) 의 수정 버전인 기술 지표이다. 시장 추세와 강도를 결정하기 위해 지난 10 일 동안 폐쇄 가격의 표준편차를 계산하여 변동성의 방향을 측정한다.

전략 논리

이 전략의 핵심 논리는 다음과 같습니다.

  1. 지난 10일 동안 종료 가격의 표준편차를 계산합니다. StdDev.

  2. 지난 10일 동안 전날보다 높은 폐쇄 가격의 부분을 계산합니다.

  3. 지난 10일 동안 전날보다 낮은 종료 가격의 부분을 계산합니다. d.

  4. 기하급수 평형을 사용하여 u와 d, nU와 nD의 14일 기하급수 이동 평균을 계산합니다.

  5. nU와 nD의 비율을 계산하고 100로 곱하면 변동성 지수가 nRes입니다.

  6. nRes가 매수 구역보다 낮을 때 단축하고, nRes가 매수 구역보다 높을 때 장거래합니다.

  7. 구매 및 판매 구역 매개 변수 및 역 거래는 코드에서 설정할 수 있습니다.

지난 10 일 동안 상향 및 하향 변동성의 차이를 비교함으로써 전략은 다음 시장 움직임의 유력한 방향을 판단합니다. 상향 변동성이 더 높으면 상승 신호이며 하향 변동성이 더 높으면 하향 신호입니다.

이점 분석

RVI 백테스팅 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 마감 가격의 표준편차를 사용하여 변동성을 측정하면 가격보다 시장 변동 정보를 더 잘 반영합니다.

  2. 계산 방법은 간단하고 명확하며 이해하기 쉽고 실행하기 쉽습니다.

  3. 구매 및 판매 신호는 명확합니다. 제2적인 판단이 필요하지 않습니다.

  4. 구매 및 판매 지역 매개 변수는 전략 감수성을 조정하기 위해 유연하게 설정할 수 있습니다.

  5. 리버스 트레이딩을 지원하는 것은 다양한 종류의 시장에서 사용될 수 있습니다.

  6. 지표 라인과 거래 구역의 시각화 표시는 직관적인 거래 신호를 형성합니다.

  7. 백트테스팅은 이 전략의 효과를 확인했습니다.

위험 분석

이 전략에는 또한 몇 가지 위험이 있습니다.

  1. 구매 및 판매 신호는 잘못된 신호가 있을 수 있으며, 트렌드와 지지/저항 분석을 결합해야 합니다.

  2. 마감 가격 변동성만 고려하고, 내일 가격 움직임을 반영할 수 없습니다.

  3. 부적절한 매개 변수 설정으로 인해 거래가 과다하거나 수익이 낮을 수 있습니다.

  4. 실시간 거래에서 거래 비용은 최종 수익에 영향을 줄 것입니다.

  5. 리버스 트레이딩 방식에서는 손실 위험이 더 높습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. MACD, KD 등과 같은 잘못된 신호를 필터하기 위해 다른 기술 지표와 결합합니다.

  2. 위치 크기의 동적 조정 추가

  3. 더 정확한 신호를 위해 구매 및 판매 구역 범위를 최적화하십시오.

  4. 단일 거래 손실을 통제하기 위해 스톱 로스 메커니즘을 추가합니다.

  5. 높은 변동성 조건에서 포지션 크기를 줄이세요.

  6. 계산 기간, 매끄러운 매개 변수 등과 같은 다른 지표 매개 변수 설정을 테스트합니다.

요약

RVI 백테스팅 전략은 상향/하향 변동성을 비교하여 시장 방향을 판단하고, 단순하고 직관적인 트렌드 다음 전략을 구현합니다. 장점은 명확한 논리, 쉬운 구현, 좋은 백테스팅 결과입니다. 적절한 최적화로 개선 될 수 있습니다. 여전히 라이브 거래에서 위험 통제가 필요합니다. 신호를 확인하기 위해 다른 지표를 결합하십시오. 전반적으로이 전략은 양적 거래에 귀중한 아이디어를 제공합니다.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/10/2017
// The RVI is a modified form of the relative strength index (RSI). 
// The original RSI calculation separates one-day net changes into 
// positive closes and negative closes, then smoothes the data and 
// normalizes the ratio on a scale of zero to 100 as the basis for the 
// formula. The RVI uses the same basic formula but substitutes the 
// 10-day standard deviation of the closing prices for either the up 
// close or the down close. The goal is to create an indicator that 
// measures the general direction of volatility. The volatility is 
// being measured by the 10-days standard deviation of the closing prices. 
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Relative Volatility Index", shorttitle="RVI")
Period = input(10, minval=1)
BuyZone = input(30, minval=1)
SellZone = input(70, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=purple, linestyle=hline.style_dashed)
hline(BuyZone, color=red, linestyle=hline.style_solid)
hline(SellZone, color=green, linestyle=hline.style_solid)
xPrice = close
StdDev = stdev(xPrice, Period)
d = iff(close > close[1], 0, StdDev)
u = iff(close > close[1], StdDev, 0)
nU = (13 * nz(nU[1],0) + u) / 14
nD = (13 * nz(nD[1],0) + d) / 14
nRes = 100 * nU / (nU + nD)
pos = iff(nRes < BuyZone, -1,
	   iff(nRes > SellZone, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )  
plot(nRes, color=red, title="RVI")


더 많은