리소스 로딩... 로딩...

Z-Score 표준화된 선형 신호 양적 거래 전략

저자:차오장, 날짜: 2025-01-06 16:14:07
태그:RSISMAZ-SCORELSBTPSL

img

전반적인 설명

이 전략은 선형 신호와 Z 점수 정상화를 기반으로 한 양적 거래 시스템이다. 그것은 가격 데이터와 RSI와 같은 외부 변수를 결합하여 표준화 된 거래 신호를 구축하고 임계치를 사용하여 거래를 유발합니다. 이 전략은 강한 적응력과 구성성을 제공하여 내일 및 고주파 거래 시나리오에 적합합니다.

전략 원칙

핵심 원칙에는 몇 가지 핵심 단계가 포함됩니다.

  1. 선형 신호 구축: 초기 신호를 형성하기 위해 RSI 지표와 가격 데이터를 선형적으로 결합하기 위해 구성 가능한 무게 (signal_alpha) 를 사용합니다.
  2. Z 점수 정상화: 뷰백 기간을 기반으로 선형 신호의 평균 및 표준편차를 계산하여 신호를 Z 점수로 정상화합니다.
  3. 임계 트리거 메커니즘: Z 스코어가 음 임계 이하로 떨어지면 긴 포지션을 열고 긍정적 임계 이하로 떨어지면 짧은 포지션을 열고, 리스크_조정_팩터에 의해 제어됩니다.
  4. 리스크 관리: 각 거래에 대한 스톱 로스 및 취리 레벨을 설정하고, 비율 매개 변수를 통해 유연한 리스크-어워드 비율 조정.

전략적 장점

  1. 신호 표준화: Z 점수 변환은 좋은 통계적 특성을 제공하여 보편적 임계 설정을 용이하게합니다.
  2. 높은 유연성: signal_alpha 조정을 통해 외부 변수와 가격의 영향을 균형 잡을 수 있습니다.
  3. 통제된 위험: 시장 특성에 따라 구성할 수 있는 완전한 스톱 로스 및 수익 취득 메커니즘.
  4. 좋은 적응력: 여러 시간 프레임에 적용되며 다른 유동성 높은 거래 도구로 확장 할 수 있습니다.

전략 위험

  1. 매개 변수 민감성: 전략 성능은 매개 변수 선택에 민감하므로 철저한 백테스팅이 필요합니다.
  2. 시장 환경 의존성: 약한 추세를 보이는 범위 제한 시장에서 빈번한 거래를 일으킬 수 있습니다.
  3. 신호 지연: 이동 평균 계산은 입시 시점에 영향을 미치는 지연을 가져올 수 있습니다.
  4. 유동성 위험: 유동성이 낮은 기간 동안 높은 주파수 거래는 미끄러짐 손실에 직면 할 수 있습니다.

전략 최적화 방향

  1. 동적 매개 변수 조정: 시장 변동성에 기초하여 임계치 및 스톱 로스 포지션을 동적으로 조정하는 적응 메커니즘을 도입합니다.
  2. 복수 신호 확인: 신호 신뢰성을 향상시키기 위해 필터링 조건으로 다른 기술적 지표를 추가합니다.
  3. 포지션 관리 최적화: 변동성과 신호 강도를 기반으로 동적 포지션 관리 시스템을 설계합니다.
  4. 트랜잭션 비용 제어: 빈번한 거래로 인한 비용을 줄이기 위해 진입 및 출구 논리를 최적화합니다.

요약

이 전략은 잘 구성되어 있으며 논리적으로 엄격한 양적 거래 전략이다. 선형 조합 및 표준화 처리를 통해 강력한 거래 신호 시스템을 구축합니다. 전략은 강력한 구성성과 포괄적인 위험 관리를 제공하지만 매개 변수 최적화 및 시장 적응성에주의를 기울여야합니다. 제안된 최적화 방향을 통해 전략의 안정성과 수익성이 더욱 향상 될 수 있습니다.


/*backtest
start: 2024-12-29 00:00:00
end: 2025-01-05 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Linear Signal-Based Strategy", shorttitle = "LSB_V1", overlay=true)

// Inputs
lookback_period = input.int(14, title="Lookback Period for Moving Averages")
signal_alpha = input.float(0.5, title="Signal Weight Alpha (Exogenous Variable)")
take_profit_percent = input.float(0.02, title="Take Profit (%)")
stop_loss_percent = input.float(0.01, title="Stop Loss (%)")
risk_adjustment_factor = input.float(1.5, title="Risk Adjustment Factor")

// Fetch Exogenous Variable (Example: RSI as a Proxy)
rsi_value = ta.rsi(close, lookback_period)

// Linear Signal Calculation
linear_signal = signal_alpha * rsi_value + (1 - signal_alpha) * close

// Z-Score Normalization for Signal
mean_signal = ta.sma(linear_signal, lookback_period)
stddev_signal = ta.stdev(linear_signal, lookback_period)
z_score_signal = (linear_signal - mean_signal) / stddev_signal

// Entry Conditions
long_condition = z_score_signal < -risk_adjustment_factor
short_condition = z_score_signal > risk_adjustment_factor

// Risk Management
long_take_profit = close * (1 + take_profit_percent)
long_stop_loss = close * (1 - stop_loss_percent)
short_take_profit = close * (1 - take_profit_percent)
short_stop_loss = close * (1 + stop_loss_percent)

// Execute Trades
if (long_condition)
    strategy.entry("Long", strategy.long, qty=1)
    strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)

if (short_condition)
    strategy.entry("Short", strategy.short, qty=1)
    strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)




관련

더 많은