
블레이크-스코어스 변동률 조정 동적 돌파 전략은 통계학과 옵션 가격 이론에 기반한 양적 거래 방법이다. 이 전략은 블레이크-스코어스 모델의 아이디어를 시장 가격 돌파 분석에 능숙하게 적용하여 역사적 변동률을 계산하고 예상 가격 간격을 동적으로 조정하여 돌파 신호를 지능적으로 포착한다. 전략의 핵심은 쌍수 수익률의 표준 차이를 사용하여 시장 변동성을 추정하고 이를 각 거래 주기의 예상 가격 변동량으로 변환하여 동적 상승과 하락을 구축하고 가격이 이러한 돌파구를 돌파 할 때 적절한 구매 또는 판매 신호를 유발하는 동시에 전략은 내장 된 스톱 스포드 및 리스크 관리를 통해 위험을 효과적으로 제어합니다.
이 전략은 다음과 같은 단계에 기반을 두고 있습니다.
변동률 계산: 먼저 역사적인 수익의 대수익률을 계산합니다.[1])), 그리고 설정된 회귀주기를 이용하여 (기본 20주기) 이 상수수 수익률의 표준차를 계산하고 연간화 (거래주기의 제곱근을 곱하여 연간 252개의 거래일, 하루 390분을 고려한다).
예상 이동 계산: 블레이크-스코어스에서 영감을 받은 방법을 사용하여 각 거래 주기의 예상 가격 변화를 계산합니다.[1] * volatility * math.sqrt ((1 / periodsPerYear)) ᅳ 이것은 실제로 연간 변동률을 단일 주기에서의 예상 변화의 정도로 변환하는 것이다。
동적 임계 설정: 이전 종결 가격과 계산된 예상 이동의 폭에 따라 다음 두 개의 임계 설정[1] + expectedMove와 lowerThreshold = close[1] - expectedMove)。
거래 신호 생성: 현재 종식 가격이 상위 경계를 돌파할 때, 다중 신호를 유발한다. 하위 경계를 돌파할 때, 하위 신호를 유발한다.
위험 관리: 전략은 거래에 진입한 후 자동으로 백분율에 기반한 스톱로스 (기본 1%) 와 스톱로스 (기본 2%) 를 설정한다. 다단계 포지션의 경우, 스톱로스는 진입 가격 아래의 지정된 백분율에, 스톱로스는 상단의 지정된 백분율에 설정된다. 공시 포지션은 그 반대이다.
동적 적응성: 고정된 가격이나 비율을 사용하는 전통적인 브레이크 전략에 비해, 이 전략은 시장의 실제 변동 상황에 따라 브레이크 하락값을 동적으로 조정하여 다른 시장 조건과 변동 환경에 더 잘 적응합니다.
통계학 기초: 전략은 정교한 통계학 원리와 옵션 가격 이론에 기초하고, 대수 수익률과 표준 차이의 계산을 사용하며, 이론적 기초는 단단하다.
자동 위험 관리: 내장된 중지 및 중지 메커니즘은 각 거래에 미리 설정된 위험 제어 조치를 보장하고 감정적 인 요인에 의한 과도한 보유 또는 손실 확장을 방지합니다.
매개 변수 유연성: 사용자는 다양한 시장과 개인 위험 선호에 따라 변동률 회귀 주기를 조정할 수 있습니다.
계산 효율성: 전략 계산은 비교적 간단하고 직접적이며, 복잡한 지표 조합이 필요하지 않아 과도한 적합성의 위험을 줄이고, 실행 효율성을 높인다.
가짜 돌파 위험: 시장이 일시적으로 하락점을 돌파한 후 급격하게 철회할 수 있는 상황이 발생하여 잘못된 신호와 불필요한 거래 비용이 발생한다. 확인 메커니즘을 추가함으로써 이러한 위험을 줄일 수 있다. (예: 돌파가 일정 시간 동안 지속되는 것을 요구하거나 거래량 확인을 결합하는 것).
변동률 추정 오류: 역사적인 변동률은 미래의 변동률을 정확하게 예측할 수 없습니다. 특히 시장 조건이 급격히 변할 때입니다. 암시 변동률과 결합하거나 더 복잡한 변동률 모델, 예를 들어 GARCH를 사용하여 예측 정확도를 높이는 것이 고려 될 수 있습니다.
변수 감수성: 전략 성능은 변동률 회귀 주기와 손해 및 중지 설정에 민감할 수 있습니다. 특정 시장에 최적의 변수 조합을 찾기 위해 광범위한 회수 및 변수 최적화를 수행하는 것이 좋습니다.
트렌드 시장 성능: 강한 트렌드 시장에서 가격이 예상 변동 범위를 넘어 한 방향으로 오랫동안 움직일 수 있으며 중요한 트렌드를 놓치게됩니다. 트렌드 지표와 함께 전략을 보완하는 것이 고려 될 수 있습니다.
거래 비용의 영향: 빈번한 브레이크 신호는 과도한 거래로 이어져 수수료와 슬라이드 포인트 비용을 증가시킬 수 있다. 거래 간격 또는 신호 필터를 설정하여 거래 빈도를 줄일 수 있다.
// EWMA波动率计算
alpha = 0.94 // 衰减因子
ewmaVar = 0.0
ewmaVar := alpha * ewmaVar[1] + (1 - alpha) * logReturn * logReturn
ewmaVol = math.sqrt(ewmaVar) * math.sqrt(periodsPerYear)
volumeConfirmation = volume > ta.sma(volume, 20) * 1.5
momentumConfirmation = ta.rsi(close, 14) > 50 for longCondition or < 50 for shortCondition
longCondition := longCondition and volumeConfirmation and momentumConfirmation
atrPeriod = 14
atrMultiplier = 2
atrValue = ta.atr(atrPeriod)
dynamicStopLoss = atrMultiplier * atrValue
timeFilter = (hour >= 10 and hour < 15) or (hour == 15 and minute < 30)
longCondition := longCondition and timeFilter
higherTimeframeClose = request.security(syminfo.tickerid, "60", close)
higherTimeframeTrend = ta.ema(higherTimeframeClose, 20) > ta.ema(higherTimeframeClose, 50)
longCondition := longCondition and higherTimeframeTrend
shortCondition := shortCondition and not higherTimeframeTrend
블레이크-스코어스 변동율 조정 동적 돌파 전략은 옵션 가격 이론과 전통적인 돌파 거래 방법을 결합한 혁신적인 양적 전략이다. 시장 변동율을 계산하고 예상 가격 변화의 범위로 변환하여 동적 거래 마이너스를 구축하고, 다양한 시장 조건의 변동적 특성에 효과적으로 적응한다. 전략의 핵심 장점은 통계학적 기반, 동적 적응성 및 내장 된 위험 관리 장치에 있으며, 이는 다변화 시장 환경에서 잠재적인 장점을 갖는다.
그러나, 이 전략은 또한 가짜 돌파구, 변동률 추정 오류 및 변수 민감성 등의 도전에 직면합니다. 변동률 계산 개선, 신호 확인 메커니즘, 동적 위험 관리 및 다중 주기 분석과 같은 최적화 조치를 도입함으로써 전략의 안정성과 신뢰성을 크게 향상시킬 수 있습니다. 특히 높은 변동성 또는 빠르게 변화하는 시장 환경에서 이러한 최적화는 전략이 효과적인 신호를 더 잘 식별하고 위험을 제어하는 데 도움이 될 것입니다.
전체적으로, 블랙-스콜스 변동율 조정 동적 돌파구 전략은 전통적인 기술 분석과 현대 금융 이론을 결합하는 효과적인 시도를 나타내고, 양자 거래자에게 견고한 이론적 기반, 유연하고 쉽게 실행할 수있는 거래 프레임 워크를 제공합니다. 지속적인 최적화와 적절한 조정으로, 이 전략은 다양한 시장 조건에서 안정적인 성과를 낼 것으로 예상됩니다.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-03-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("black-scholes expected breakoout", overlay=true, initial_capital=100000, currency=currency.USD, calc_on_order_fills=true, calc_on_every_tick=true)
// User Inputs
chartRes = input.int(title="Chart Timeframe in Minutes", defval=1, minval=1)
volLookback = input.int(title="Volatility Lookback (bars)", defval=20, minval=1)
stopLossPerc = input.float(title="Stop Loss (%)", defval=1.0, minval=0.1, step=0.1)
takeProfitPerc = input.float(title="Take Profit (%)", defval=2.0, minval=0.1, step=0.1)
// Calculate periods per year based on chart timeframe (252 trading days * 390 minutes per day)
periodsPerYear = (252 * 390) / chartRes
// Calculate annualized volatility from log returns
logReturn = math.log(close / close[1])
volatility = ta.stdev(logReturn, volLookback) * math.sqrt(periodsPerYear)
// Expected move for one bar: S * σ * √(1/periodsPerYear)
expectedMove = close[1] * volatility * math.sqrt(1 / periodsPerYear)
// Define dynamic thresholds around the previous close
upperThreshold = close[1] + expectedMove
lowerThreshold = close[1] - expectedMove
// Plot thresholds for visual reference
plot(upperThreshold, color=color.green, title="Upper Threshold")
plot(lowerThreshold, color=color.red, title="Lower Threshold")
// Trading Signals: breakout of thresholds
longCondition = close > upperThreshold
shortCondition = close < lowerThreshold
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Fixed Risk Management Exit Orders
if (strategy.position_size > 0)
strategy.exit("Exit Long", from_entry="Long",
stop=close * (1 - stopLossPerc / 100),
limit=close * (1 + takeProfitPerc / 100))
if (strategy.position_size < 0)
strategy.exit("Exit Short", from_entry="Short",
stop=close * (1 + stopLossPerc / 100),
limit=close * (1 - takeProfitPerc / 100))