전산쟁이/AI 주식 자동매매 Lab

[전산쟁이 퀀트개발] 3편: 피보나치 눌림목 + VWAP 기울기 + 호가 잔량: 퀀트 단타 4단계 정밀 진입 타점

superminy 2026. 8. 7. 14:29

[전산쟁이 퀀트개발] 3편: 피보나치 눌림목 + VWAP 기울기 + 호가 잔량: 퀀트 단타 4단계 정밀 진입 타점

안녕하세요, 전산쟁이입니다! 앞선 2편에서 스크리닝한 주도주를 무지성으로 시장가 매수하면 어떻게 될까요? 눌림목이 아닌 돌파 고점에 물려 손실을 보기 십상입니다. 이번 3편에서는 4가지 핵심 지표를 조합한 정밀 눌림목 타점을 소개합니다.

1. 4단계 매수 검증 필터 메커니즘

매수 버튼을 누르기 전, 봇은 2초 간격으로 아래 4가지 조건이 동시에(ALL MET) 성립하는지 검증합니다.

📐 퀀트 매수 4대 신호 체계
1️⃣ Swing Low 피보나치 눌림: 고점 대비 최근 N분 파동 저점 기준 30%~50% 되돌림 영역 진입
2️⃣ VWAP 60초 기울기 우상향: 거래량 가중 평균가(VWAP)의 최근 60초 기울기가 + 양수 유지
3️⃣ 호가 잔량 잔량비 (Orderbook Ratio): 매도총잔량 / 매수총잔량 ≥ 0.8배 (눌림목 받침 잔량 유효)
4️⃣ 틱 수급 모멘텀 2회 연속 달성: 최근 틱 상승 비중 50% 이상 신호가 연속 2회(약 4초) 확인

2. Swing Low 기반 피보나치 되돌림 로직

일반적인 피보나치는 당일 '시가'를 기준으로 하지만, 단타 파동에서는 최근 N분간의 파동 저점(Swing Low)을 기준으로 측정해야 정밀합니다.

# 최근 60개 샘플(약 2분) 중 최소 가격을 Swing Low로 산정
swing_low = min(self.price_history[code]) if len(self.price_history[code]) >= 5 else low

if high > swing_low and swing_low > 0:
    # 당일 파동 대비 되돌림 비율(Retracement Ratio) 계산
    retracement_ratio = ((high - cp) / (high - swing_low)) * 100
    
    # 30% ~ 50% 적정 피보나치 눌림목 구간이 아니면 스킵
    if not (30.0 <= retracement_ratio <= 50.0):
        self.log_skip_reason(code, name, "FIBO_RANGE_OUT", f"피보나치 눌림 이탈 ({retracement_ratio:.1f}%)")
        continue

3. VWAP(거래량가중평균가) 60초 기울기 검증

VWAP은 주식 단타의 '생명선'입니다. 단순히 현재가가 VWAP 근처에 있는 것만으로는 부족하며, **VWAP 자체가 우상향 흐름(Slope > 0)**을 그리고 있어야 진짜 주도주 눌림목입니다.

# 60초 전 VWAP 데이터 샘플링
past_vwap_sample = None
for past_ts, past_v in self.vwap_history[code]:
    if (now_ts - past_ts) >= 60: # 60초 전
        past_vwap_sample = (past_ts, past_v)
        break

if past_vwap_sample:
    past_ts, past_vwap = past_vwap_sample
    vwap_slope = vwap - past_vwap
    
    # VWAP 기울기가 0 이하(보합 또는 우하향)면 진입 차단!
    if vwap_slope <= 0:
        self.log_skip_reason(code, name, "VWAP_SLOPE_DOWN", f"VWAP 추세 우하향 ({vwap_slope:+.2f})")
        continue

4. 호가 잔량 및 거래량 소쇄 검증

음봉이 떨어질 때 거래량이 터지면 세력의 매도 물량 투하(Volume Spike)일 수 있습니다. 따라서 거래량이 줄어드는 **거래량 소쇄(Contraction)** 상태와 호가 받침을 확인합니다.

# 음봉 발생 시 이전 최대 거래량의 75% 이상 터지면 음봉 트랩으로 판정하여 진입 금지
if cp < last_price and vol_delta > max_vol_surge * 0.75:
    self.log_skip_reason(code, name, "VOL_SPIKE_ON_DROP", "음봉 거래량 분출 트랩 포착")
    continue

# 호가 잔량 비율 검증 (매도잔량 / 매수잔량 >= 0.8)
if total_bid > 0:
    ob_ratio = total_ask / total_bid
    if ob_ratio < 0.8:
        self.log_skip_reason(code, name, "ORDERBOOK_WEAK", f"호가 수급 약세 ({ob_ratio:.2f})")
        continue

5. 다음 편 예고

진입 타점이 아무리 정교해도, 손절과 청산 규칙이 허술하면 한 번의 뇌동매매로 계좌가 무너집니다.

다음 [4편]에서는 **VWAP 노이즈 버퍼 손절(-0.5%)**, **ATR 기반 트레일링 스탑**, **14:50 타임컷** 및 **실전/가상매수 이중 모드**를 활용한 무결점 리스크 관리 방식을 완벽 공개합니다!

728x90
반응형