칼만 필터와 평균 반전을 기반으로 한 변동 비율 거래 전략

저자:차오장, 날짜: 2023-12-29 17:23:14
태그:

img

전반적인 설명

이 전략은 칼만 필터와 평균 회귀의 개념을 활용하여 주식 가격의 비정상적인 단기 변동을 파악하고 주식의 방향 트레이딩을 구현합니다. 전략은 먼저 주식과 시장 지수 사이의 가격 비율 모델을 설정하고, 그 다음 칼만 필터 기술을 사용하여 비율을 예측하고 필터합니다. 비율이 정상 수준에서 벗어나면 거래 신호가 생성됩니다. 또한 전략은 잘못된 거래를 피하기 위해 볼륨 필터링도 포함합니다.

전략 원칙

전략의 핵심 아이디어는 주식 자체의 가격과 시장 지수의 가격 사이의 가격 비율 모델을 설정하는 것입니다. 이 비율은 전체 시장에 비해 개별 주식의 가격 수준을 반영합니다. 비율이 높을 때 개별 주가가 과평가되어 판매 신호가 생성되는 것으로 간주됩니다. 비율이 낮을 때 개별 주가가 과평가되어 구매 신호가 생성되는 것으로 간주됩니다.

비율 신호를 원활하게 필터링하기 위해 전략은 칼만 필터 알고리즘을 채택합니다. 칼만 필터는 비율의 실제 관찰 값을 예측 값과 함께 가중하고 실시간으로 비율의 예측을 업데이트합니다. 그리고 원활한 칼만 필터 값을 계산합니다. 필터링 값이 정상 수준 이상 또는 이하의 2 표준 편차를 초과하면 거래 신호가 생성됩니다.

또한, 전략은 거래량 요인도 고려합니다. 실제 거래 신호는 거래량이 크면만 생성됩니다. 이것은 일부 잘못된 거래를 피합니다.

이점 분석

이 전략의 가장 큰 장점은 칼만 필터 알고리즘을 사용하여 가격 비율의 효과적인 평형화 및 예측입니다. 간단한 평균 반전 모델에 비해 칼만 필터는 특히 가격이 급격히 변동할 때 가격의 동적 변화를 더 잘 반영 할 수 있습니다. 이것은 전략이 가격 이상성을 적시에 감지하고 정확한 거래 신호를 생성 할 수 있습니다.

둘째, 거래량 조합은 또한 전략의 실용적 적용성을 향상시킵니다. 합리적인 거래량 필터링은 일부 잘못된 신호를 피하고 불필요한 거래 비용을 줄이는 데 도움이됩니다.

전체적으로, 전략은 칼만 필터링, 평균 역전, 거래량 분석 및 다른 기술을 성공적으로 결합하여 견고한 양적 거래 전략을 형성합니다.

위험 분석

이 전략은 이론적으로 기술적으로 건전하지만 실제 사용에서는 여전히 주의가 필요한 몇 가지 잠재적 위험이 있습니다.

첫 번째는 모델 위험이다. 칼만 필터 모델의 일부 주요 매개 변수인 프로세스 노이즈 변동, 관찰 노이즈 변동 등은 역사적 데이터에 기초하여 추정되어야 한다. 추정치가 정확하지 않거나 시장 조건이 크게 변하면 모델 예측에서 오차가 발생할 수 있다.

두 번째는 미끄러짐 비용의 위험입니다. 빈번한 거래는 더 높은 미끄러짐 비용을 발생시켜 전략 수익을 침식시킬 것입니다. 매개 변수 최적화 및 거래량 필터링은 불필요한 거래를 어느 정도 줄일 수 있습니다.

마지막으로, 시장 지수를 기준으로 따르는 데는 어떤 체계적 시장 위험이 있습니다. 전체 시장이 급격하게 변동할 때 개별 주식과 시장 사이의 가격 비율도 비정상적일 것입니다. 전략은 잘못된 신호를 생성 할 것입니다. 우리는 보다 안정적인 지수를 기준으로 선택하는 것을 고려 할 수 있습니다.

최적화 방향

전략의 더 많은 최적화를 위한 여지가 있습니다.

  1. 더 복잡한 딥 러닝 모델을 사용하여 가격 비율을 조정하고 예측합니다. 이것은 모델 정확성과 안정성을 향상시킬 수 있습니다.

  2. 거래량 필터링 규칙을 최적화하여 더 역동적이고 지능적인 임계 설정을 달성합니다. 이것은 잘못된 거래의 가능성을 줄입니다.

  3. 다른 시장 지표를 전략 벤치마크로 테스트하고 더 작고 안정적인 변동이 있는 지표를 선택하십시오. 이것은 시장 시스템 위험의 영향을 줄입니다.

  4. 주식의 근본 분석을 포함 하 여 근본적인 지표가 크게 악화 된 일부 주식을 거래 하지 않도록 합니다. 이것은 더 높은 품질의 거래 목표를 위해 스크린합니다.

  5. 전략 백테스팅 및 최적화를 위해 높은 주파수 내일 데이터를 사용합니다. 이것은 전략의 실제 거래 성능을 향상시킵니다.

결론

이 전략은 칼만 필터 모델을 사용하여 주식에서 비정상적인 단기 가격 변동을 성공적으로 포착합니다. 한편, 볼륨 신호의 도입은 전략의 실용성을 향상시킵니다. 여전히 일부 모델 위험과 시장 위험이 있지만 이것은 매우 유망한 양적 거래 전략입니다. 미래 모델 및 신호 최적화에 대한 개선 및 응용 잠재력에 큰 여지가 있습니다.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
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/
// © xXM3GAXx

//@version=5
strategy("My strategy", overlay=true)

//SPY or QQQ
context = request.security("BTC_USDT:swap", timeframe.period, input(close))
//our stock
particular = input(close)

//ratio
src = ta.roc(particular, 1) / math.abs(ta.roc(context, 1))

//kalman calculation
Sharpness = input.float(1.0)
K = input.float(1.0)


greencolor =  color.lime
redcolor =  color.red

velocity = 0.0
kfilt = 0.0

Distance = src - nz(kfilt[1], src)
Error = nz(kfilt[1], src) + Distance * math.sqrt(Sharpness*K/ 100)
velocity := nz(velocity[1], 0) + Distance*K / 100
kfilt := Error + velocity

//2 std devs up and down
upper = kfilt[1] + 2 * ta.stdev(kfilt, input(20))
lower = kfilt[1] - 2 * ta.stdev(kfilt, input(20))

//plotting for visuals
plot(kfilt, color=velocity > 0 ? greencolor : redcolor, linewidth = 2)
plot(upper)
plot(lower)
//plot(ta.ema(ta.roc(particular, 1)/ta.roc(context, 1), 5), color = #00ffff, linewidth=2)

//volume data
vol = volume
volema = ta.ema(volume, 10)

//buy when ratio too low
longCondition = kfilt<=lower and vol>=volema
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

//sell when ratio too high
shortCondition = kfilt>=upper and vol>=volema
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)


더 많은