왜 시그널 필터링이 필요한가?
퀀트 전략이 생성하는 매매 신호에는 반드시 노이즈가 섞여 있습니다. 이동평균 크로스, RSI 기반 진입 등 어떤 지표를 사용하든 시장 노이즈로 인한 거짓 신호(false signal)는 피할 수 없습니다. 필터링 없이 모든 신호에 반응하면 잦은 매매, 슬리피지 누적, 수수료 폭증으로 이어집니다. 이 글에서는 실전에서 검증된 시그널 필터링 기법을 체계적으로 정리합니다.
1. 확인 지표 필터 (Confirmation Filter)
하나의 지표가 신호를 생성하면, 독립적인 두 번째 지표로 검증하는 가장 기본적인 방법입니다.
- 추세 확인 — 단기 이평선 크로스 + 장기 이평선 방향 일치 여부
- 모멘텀 확인 — 진입 신호 + RSI가 과매수/과매도 구간이 아닌지 검증
- 거래량 확인 — 가격 돌파 시 거래량이 평균 대비 1.5배 이상인지 확인
두 개 이상의 독립 지표가 동시에 같은 방향을 가리킬 때만 진입하면, 거짓 신호의 상당 부분을 제거할 수 있습니다.
def confirmation_filter(signal, trend_direction, rsi, volume, avg_volume):
"""두 가지 이상의 확인 조건이 충족될 때만 True"""
confirmations = 0
if signal == 'buy' and trend_direction == 'up':
confirmations += 1
if 30 < rsi < 70: # 과열 구간이 아닌 경우
confirmations += 1
if volume > avg_volume * 1.5:
confirmations += 1
return confirmations >= 2
2. 시간 필터 (Time Filter)
신호가 발생한 직후 바로 실행하지 않고, 일정 시간 동안 신호가 유지되는지 확인하는 방법입니다.
- N-캔들 확인 — 신호 발생 후 3개 캔들 동안 반전되지 않으면 진입
- 타이머 방식 — 신호 발생 후 5분간 조건이 유지되면 실행
- 연속 조건 — 동일 신호가 연속 N회 발생해야 유효 처리
시간 필터는 순간적인 스파이크로 인한 오발진을 효과적으로 막아줍니다. 다만 진입 타이밍이 늦어지는 트레이드오프가 있으므로, 확인 기간은 백테스트를 통해 최적화해야 합니다.
3. 변동성 필터 (Volatility Filter)
시장 변동성에 따라 신호의 신뢰도가 달라집니다. 변동성 기반 필터로 시장 상태에 맞는 전략 적용이 가능합니다.
| 변동성 상태 | 측정 방법 | 필터 전략 |
|---|---|---|
| 저변동성 | ATR < 20일 평균의 0.7배 | 돌파 전략 비활성화, 평균회귀 선호 |
| 정상 변동성 | ATR ≈ 20일 평균 | 모든 신호 정상 처리 |
| 고변동성 | ATR > 20일 평균의 1.5배 | 포지션 축소, 진입 기준 강화 |
ATR(Average True Range) 외에도 볼린저밴드 폭, 역사적 변동성(HV) 등을 활용할 수 있습니다. 핵심은 시장 환경에 따라 필터 강도를 동적으로 조절하는 것입니다.
4. 레짐 필터 (Regime Filter)
시장이 추세장인지 횡보장인지 판단하고, 현재 레짐에 맞지 않는 신호를 걸러내는 고급 기법입니다.
- ADX 기반 — ADX > 25이면 추세장으로 판단, 추세추종 신호만 허용
- 허스트 지수 — H > 0.5이면 추세 지속성 높음, H < 0.5이면 평균회귀 성향
- 이평선 기울기 — 200일 이평선 기울기로 장기 추세 방향 판단
퀀트 팩터 로테이션 전략에서 다룬 레짐 감지 방법을 시그널 필터에도 동일하게 적용할 수 있습니다.
def regime_filter(adx: float, signal_type: str) -> bool:
"""시장 레짐에 맞는 신호만 통과"""
if adx > 25: # 추세장
return signal_type in ('trend_follow', 'breakout')
else: # 횡보장
return signal_type in ('mean_reversion', 'range_bound')
5. 빈도 제한 필터 (Cooldown Filter)
같은 방향의 신호가 너무 빈번하게 발생하는 것을 방지하는 필터입니다.
- 최소 간격 — 직전 진입 후 N분/N캔들 동안 같은 방향 신호 무시
- 일일 최대 횟수 — 하루 최대 거래 횟수 제한
- 연패 후 쿨다운 — 연속 N회 손절 시 일정 기간 매매 중단
빈도 제한은 자동매매 주문 큐 설계의 레이트 리밋과 개념적으로 유사합니다. 과도한 매매를 구조적으로 차단해 수수료와 슬리피지 손실을 줄여줍니다.
6. 복합 필터 체인 설계
실전에서는 위 필터들을 파이프라인 형태로 조합해 사용합니다. 순서가 중요합니다.
- 레짐 필터 → 현재 시장 상태에 맞는 전략 유형인지 확인
- 변동성 필터 → 현재 변동성 수준에서 신호 유효성 판단
- 확인 지표 필터 → 독립 지표 2개 이상 동의 확인
- 시간 필터 → 신호 지속성 검증
- 빈도 제한 필터 → 과매매 방지
각 단계에서 탈락한 신호는 로그로 기록해 나중에 필터 성능 자체를 백테스트할 수 있도록 하는 것이 좋습니다. 필터가 수익성 높은 신호까지 걸러내고 있다면 조건을 완화해야 합니다.
필터 성능 평가 지표
필터를 추가한 뒤 반드시 아래 지표를 비교 분석하세요.
- 적중률 변화 — 필터 전후 승률 비교
- 손익비 변화 — 평균 수익/평균 손실 비율
- 거래 횟수 감소율 — 너무 많이 줄면 기회손실
- 총 수익 변화 — 승률이 올라도 거래 감소로 총 수익이 줄 수 있음
- MDD 변화 — 최대 낙폭이 줄었는지 확인
마무리
시그널 필터링은 퀀트 전략의 품질 관리입니다. 좋은 전략은 신호를 많이 만드는 것이 아니라, 높은 확률의 신호만 선별하는 것입니다. 확인 지표, 시간, 변동성, 레짐, 빈도 제한 등 다층 필터를 체계적으로 조합하면 거짓 신호를 크게 줄이고 실전 수익률을 개선할 수 있습니다. 다만 과도한 필터링은 과적합의 또 다른 형태라는 점도 항상 경계해야 합니다.