본문 바로가기
시스템트레이딩

Volatility Compression Filter

by 오늘밤날다 2025. 11. 16.

 

Volatility Compression 또는 Volatility Contraction Pattern라고들 하는데 결국은 변동성이 축소된 상황에서의 확장되는 형태로 전환되는 시점을 진입기회로 삼는 것.

 

이를 위해서 볼린저 밴드의 폭이 일정 수준 이하일 경우를 필터로 많이 사용해 왔었는데 밴드폭이 10% 미만과 같이 가격 기반의 제한을 둘 수밖에 없어서 시장에서 정상이라고 정의할 수 있는 변동성이 크게 바뀌면 진입이 아예 제한되는 등 문제가 발생함.

 

대안 중 하나로 생각한 것은 historical volatility를 계산한 후에 과거 기간의 평균치에 대한 백분율을 구하고 이 백분율의 일정 수치보다 낮은 경우로 정의함.

 

 

short_period = 7  # 최근의 변동성을 계산할 기간
long_period = 120  # 정상범위로 정의할 기간 -> Quantile 계산
business_days = 365  # 연환산 - 코인: 365, 주식: 대략 252
quantile_threshold = 0.2  # 낮은 수치

ret = np.log(df['close'] / df['close'].shift(1)
historical_volatility = ret.rolling(short_period).std() * np.sqrt(business_days)
low_threshold = historical_volatility.rolling(long_period).quantile(quantile_threshold)

condition = historical_volatility < low_threshold

 

 

'시스템트레이딩' 카테고리의 다른 글

IBS Strategy Update (NQ)  (0) 2025.11.21
전략의 손익 안정성 지표  (0) 2025.11.17
Target-Volatility Strategy - BTCKRW  (0) 2025.11.14
RPSI(Relative Price Strength Index) Strategy  (0) 2025.11.10
전략의 유효성  (0) 2025.11.08