가우스파 예측 전략

저자:차오장, 날짜: 2024-01-22 12:37:07
태그:

img

전반적인 설명

가우스 파동 예측 전략 (Gauss Wave Forecasting Strategy) 은 가우스 필터링을 기반으로 한 양적 거래 전략이다. 가우스 필터의 매끄러운 기능을 활용하여 여러 번 가격 시리즈를 필터링하여 여러 번 매끄러운 가격 시리즈를 생성한다. 그 다음이 가격 시리즈의 다항식 적합과 결합하여 미래 가격의 예측을 실현한다. 예측 결과에 따라 긴 또는 짧은 포지션에 대한 제안을 제공합니다.

전략 원칙

이 전략의 핵심은 가우스 필터 알고리즘이다. 가우스 필터는 가우스 함수를 무게로 사용하는 선형 평형 필터이다. 전략의 매개 변수 p는 필터링 창의 크기로 설정된다. 그 다음 알파 필터링 계수는 삼각함수를 통해 계산된다. 각 가격 시리즈 ret\[i\]는 원래 가격 시리즈의 i 번째 가우스 필터링 후 결과를 나타낸다.

이 전략은 회귀의 아이디어를 사용한다. 첫째, 알파와 원래 가격 시리즈 가격으로 첫 번째 필터링 ret을 계산한다. 그 다음 ret을 기반으로 두 번째 필터링을 수행하여 ret2를 얻는다. 이것을 여러 번 반복한다. 마지막으로, 여러 가격 시리즈를 결합함으로써, 미래 가격을 예측하기 위해 곡선이 부착된다.

여러 번 필터링을 통해 유연하고 트렌드에 더 잘 맞을 수 있습니다. 동시에 다항식 적합과 결합하여 단기간에 가격 트렌드의 예측을 실현합니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 가우스 필터를 사용하여 가격을 부드럽게 합니다. 그것은 효과적으로 고주파 잡음을 필터링하고 전략을 더 안정적으로 만들 수 있습니다.

  2. 반복적 복수 필터링. 가격 추세에 더 잘 맞게 예측 효과를 향상시킬 수 있습니다.

  3. 다항식 부착을 기반으로 한 가격 예측. 단기 가격 추세를 모델링하여 거래 신호를 생성 할 수 있습니다.

  4. 현재 가격과 예측된 가격을 기준으로 판단합니다. 거래 신호는 트렌드 예측과 직접 결합되어 거래 기회를 놓치지 않도록합니다.

  5. 구현하기 쉽고 이해하기 쉽고 최적화 할 수 있습니다. 다른 분석 지표를 확장하기위한 고 주파수 전략의 기본 모듈으로 사용될 수 있습니다.

위험 분석

이 전략은 또한 다음과 같은 위험을 가지고 있습니다.

  1. 급격한 가격 변화에 대한 가우스 필터의 평형 효과는 단기적인 거래 기회를 놓칠 수 있습니다.

  2. 다항식 적합성은 과도한 적합성의 위험을 가지고 있습니다. 가격 변화 모델이 갑자기 돌연변이를 하면 예측 효과가 감소합니다.

  3. 필터 창의 크기와 부착 다항식의 순서가 정확하게 설정되어야 합니다. 그렇지 않으면 실패할 수 있습니다.

  4. 거래 시그널에 대한 개시 가격에만 의존하고 있으며, 내일 거래는 할 수 없습니다.

최적화 방향

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

  1. 모델 훈련 및 슬라이딩 윈도우 재 훈련 메커니즘을 추가하여 과도한 장착 위험을 줄이기 위해 매개 변수를 동적으로 조정합니다.

  2. 더 많은 가격 지표와 특징을 포함하여 입력 정보를 풍부하게 만들고 예측을 더 안정적으로 만듭니다.

  3. 스톱 로스 메커니즘을 추가하여 극심한 시장 조건에서 큰 손실을 피하기 위해 최대 손실 비율을 설정합니다.

  4. 포지션 관리를 최적화하고 예측 정확성과 변동성에 따라 포지션을 동적으로 조정합니다.

  5. LSTM 같은 주류 기계 학습 모델을 기반으로 예측을 시도하고 예측 능력을 더욱 향상시킵니다.

결론

요약하자면, 이것은 가우스 필터와 다항식 적합을 사용하여 가격 예측을 수행하는 고주파량 전략입니다. 특정 장점이 있지만 개선할 여지가 있습니다. 더 많은 기능을 통합하여 동적 매개 변수 조정, 중지 손실 메커니즘 등을 도입함으로써 전략 효과는 훨씬 향상 될 수 있습니다. 이 전략은 고주파 전략의 추가 연구 및 최적화을위한 기본 모듈로 기초를 마련합니다.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Gaussbot v1.0", overlay=true)

p = input(20, minval=1, title="Length")
price = input(open, title="Source")

pi=3.1415926535


w=2*pi/p
beta = (1 - cos(w))/(pow(1.414,2.0/3) - 1)
alfa = -beta + sqrt(beta*beta + 2*beta)
ret=  pow(alfa,4)*price+4*(1-alfa)*nz(ret[1])-6*pow(1-alfa,2)*nz(ret[2])+4*pow(1-alfa,3)*nz(ret[3])-pow(1-alfa,4)*nz(ret[4])
ret2 = pow(alfa,4)*ret+4*(1-alfa)*nz(ret2[1])-6*pow(1-alfa,2)*nz(ret2[2])+4*pow(1-alfa,3)*nz(ret2[3])-pow(1-alfa,4)*nz(ret2[4])
ret3 = pow(alfa,4)*ret2+4*(1-alfa)*nz(ret3[1])-6*pow(1-alfa,2)*nz(ret3[2])+4*pow(1-alfa,3)*nz(ret3[3])-pow(1-alfa,4)*nz(ret3[4])
ret4 = 3*ret-3*ret2+ret3


diff2 = nz(ret[1]) - nz(ret[2]) - (nz(ret[2]) - nz(ret[3]) )  
diff22 = nz(ret2[1]) - nz(ret2[2]) - (nz(ret2[2]) - nz(ret2[3]) ) 
diff23 = nz(ret3[1]) - nz(ret3[2]) - (nz(ret3[2]) - nz(ret3[3]) )  
diff24 = nz(ret4[1]) - nz(ret4[2]) - (nz(ret4[2]) - nz(ret4[3]) )  


longCondition =    price[0] - ret4[1]  > 0
shortCondition =  price[0] - ret4[1] < 0

if(longCondition and shortCondition)
    longCondition = longCondition[1]
    shortCondition = shortCondition[1]
if(longCondition==false and shortCondition==false)
    longCondition = longCondition[1]
    shortCondition = shortCondition[1]



if (longCondition==true and shortCondition == false) 
    strategy.entry("Gaussbot Long", strategy.long )
if (longCondition==false and shortCondition == true)
    strategy.entry("Gaussbot Short", strategy.short)



더 많은