23 KiB
ORB Gainers V49.91 전략 완전 해설
버전: V49.91 (id: 255)
이름: ORB Gainers V49.91 Broad No-Thrust Liquid Impulse
상태: candidate (experimental)
부모: V49.90 (Broad Liquid Leader Impulse Repair)
작성일: 2026-05-05
1. 전략 철학
ORB Gainers의 핵심은 당일 비정상 관심 종목의 장 초반 돌파를 포착하는 것이다. 첫 5분봉의 고점 돌파(Opening Range Breakout)를 진입 트리거로 사용하지만, 실제 엣지의 원천은 "압축 후 확장"이 아닌 비정상 거래량 + catalyst + 당일 시장 관심이다.
V49.91은 기존 메인 ORB 북(book)이 진입하지 않는 날(regime/breadth 통과했지만 primary 후보 없음)에도 초대형 유동주식(평균 일거래대금 $3억 이상)이 첫 5분봉에서 강한 임펄스(≥3%)를 보일 때 소규모 추가 슬리브를 통해 포지션을 진입하는 "no-trade-day repair" 기능을 추가한다.
핵심 철학:
- 갭 크기보다 첫 5분봉 임펄스의 강도가 유동주 계속성을 결정한다
- 갭이 작거나(0~4%) market thrust가 없는 날에도, 충분히 유동적인 리더주는 자체 추진력으로 움직일 수 있다
- 메인 북과 경쟁하지 않고 보완적으로만 작동 (no-primary-entries 조건)
2. 개발 계보 요약
V1-V23: 핵심 엔진 수립
| 버전 | 핵심 발견 | 200d 성과 |
|---|---|---|
| V1-V3 | 초기 ORB 구조 | -19% |
| V8 | weight_momentum + QQQ regime | +19.73% |
| V10 | trailing_at_r 1.5→1.0 | +33.17% (400d) |
| V15 | streak_sizing + drawdown_governor | +41.60% |
| V17 | max_gap_pct 0.04 + no_partial_exit | +84.36% |
| V18 | daily_budget_reset + QQQ +0.15% filter | +103.50% |
| V23 | min_atr_pct=0.04 | +109.32% (DR 최종) |
V24-V48: 신호 축 추가
| 버전 | 핵심 발견 | 200d 성과 |
|---|---|---|
| V24 | OBV-slope_20d 신호 (w=0.05) | +94.78% |
| V46 | DB Prior-Event PEAD signal (w=0.12) | +114.60% |
| V47 | weight 공동 최적화 (ec=0.15, obv=0.10) | +133.29% |
| V48 | partial_exit_at_r=1.0, pct=0.30 재활성 | +140.52% (200d), +255.87% (400d) |
| V49 | min_rvol: 1.5→1.8 (샘플 품질 향상) | +155.58% (200d), +259.96% (400d) |
V49 서브-버전 계보 (2026-04-24~05-04)
V49 (core champion) 위에 별도 "broad" 슬리브 실험들이 누적된 계보다.
| 서브버전 | 주요 변경 | 상태 |
|---|---|---|
| V49.77 | ownership initial size scaling | candidate |
| V49.79 | unboosted weak attention governor | candidate |
| V49.80 | broad gapup continuation sleeve | candidate |
| V49.81 | market thrust breadth override 활성 | candidate |
| V49.82 | market thrust liquid continuation 슬리브 추가 | candidate |
| V49.83 | market thrust + opening burst 모드 | candidate |
| V49.84 | V49.83에서 gapup continuation 비활성화 | candidate |
| V49.85 | market thrust institutional 슬리브 | candidate |
| V49.86 | opening structure micro 슬리브 | candidate |
| V49.87 | soft day budget repair | candidate |
| V49.88 | unsupported attention governor 추가 | candidate |
| V49.89 | opening impulse reclaim 슬리브 추가 | candidate |
| V49.90 | liquid leader impulse repair (no-trade-day) | candidate |
| V49.91 | no-thrust 별도 임계값으로 liquid impulse 확장 | candidate |
| V49.93 | ORB idle overnight sleeve | candidate |
3. V49.91 핵심 변경사항
배경: V49.90의 문제점
V49.90은 시장 thrust가 있는 날, primary 진입이 없을 때만 liquid leader 임펄스 슬리브가 작동하도록 설계했다. 그러나 2026-05-04처럼 market thrust는 없지만 개별주(IREN)가 강한 임펄스를 보이는 날에는 진입 기회를 놓쳤다.
V49.90이 2026-05-04에 NBIS만 포착하고 IREN은 놓친 이유:
- IREN의 갭은 market thrust liquid continuation의 정상 임계값 미충족
- thrust 조건 없는 별도 경로가 없었음
V49.91의 해결책
market thrust 없는 날 전용 별도 임계값 세트를 추가:
# 새로 추가된 파라미터들 (V49.91 only)
market_thrust_liquid_continuation_no_thrust_min_gap_pct: 0.0
market_thrust_liquid_continuation_no_thrust_max_gap_pct: 0.04
market_thrust_liquid_continuation_no_thrust_min_first_bar_return_pct: 0.03
market_thrust_liquid_continuation_no_thrust_min_first_bar_dollar_vol: 1000000
market_thrust_liquid_continuation_no_thrust_min_avg_dollar_vol: 300000000
market_thrust_liquid_continuation_no_thrust_max_candidates: 3
market_thrust_liquid_continuation_no_thrust_max_trades: 2
market_thrust_liquid_continuation_no_thrust_size_scale: 0.20
핵심 차이:
min_gap_pct: 0.0— 갭 방향 무관 (0% 갭도 허용)min_first_bar_return_pct: 0.03— 정상 슬리브(0.7%)보다 훨씬 강한 첫 5분봉 +3% 임펄스 요구min_avg_dollar_vol: $300M— 일 평균 거래대금 기준 초대형 유동주만 대상size_scale: 0.20— 정상 risk의 20% (소규모 실험적 진입)
이 슬리브는 정상 market-thrust 슬리브와 병렬이 아닌 보완 관계:
- thrust 있는 날: 정상 market_thrust_liquid_continuation 작동 (기존 그대로)
- thrust 없는 날 + primary 진입 없음: no-thrust 경로로 액세스 가능
4. 엔진 구조: 다중 슬리브 아키텍처
V49.91은 단일 진입 엔진이 아닌 계층적 멀티-슬리브 구조를 갖는다.
[Universe: broad]
↓
[1차 필터: min_price=15, min_avg_dv=$40M, min_atr_pct=4%, min_rvol=3.0]
↓
[스코어링: rvol(0.35)+gap(0.20)+dv(0.05)+premkt_dv(0.25)+obv(0.15)+catalyst(0.15)]
↓
┌─────────────────────────────────────────────────────┐
│ 슬리브 계층 │
│ │
│ ① 메인 ORB 북 (gainers_leader) │
│ → min_rvol=3.0, min_gap=2%, max_gap=4% │
│ → max_simul=3, risk=5% │
│ │
│ ② Market ORB Quality Scaler (SPY/QQQ ORB 품질) │
│ → SPY/QQQ 첫봉 품질에 따라 size 0.4x~1.1x │
│ │
│ ③ Soft Day Fallback │
│ → regime/breadth 미충족 날: 축소 진입 │
│ → max_trades=2, size_scale=0.1x │
│ │
│ ④ Sector Confirmation │
│ → 같은 섹터 2개+ 동시 돌파 시 1.1x boost │
│ │
│ ⑤ Liquid Leader Conviction │
│ → 고득점(≥0.65) + premkt≥$50M → 2.4x size │
│ │
│ ⑥ Opening Burst (liquid) │
│ → 장 초반 15분 내 강한 돌파 → 1.8x size │
│ │
│ ⑦ Market Thrust Liquid Continuation (thrust 있는 날) │
│ → SPY/QQQ thrust 감지 + primary 없을 때 │
│ → liquid 갭업 추가 진입, 0.20x size │
│ │
│ ⑧ Opening Impulse Reclaim (V49.89 추가) │
│ → 갭 -6%~+2%, 첫봉 +2% 임펄스 │
│ → $3억+ 유동주 late breakout, 0.10x size │
│ │
│ ⑨ No-Thrust Liquid Impulse ★NEW in V49.91★ │
│ → thrust 없는 날 + primary 없을 때 │
│ → 갭 0~4%, 첫봉 +3%, $3억+ 유동주 │
│ → max_candidates=3, max_trades=2, 0.20x size │
│ │
│ ⑩ VWAP Reclaim / Soft Day VWAP │
│ → VWAP 재탈환 late entry, 소규모 │
│ │
│ ⑪ Risk Overlays (손실 제한) │
│ → crowded_gap, downside_gap, distressed 등 │
└─────────────────────────────────────────────────────┘
5. 핵심 파라미터 상세
5.1 후보 선별 (Universe & Screening)
| 파라미터 | 값 | 설명 |
|---|---|---|
universe.source |
broad | 광범위 유니버스 (midlarge보다 넓음) |
min_price |
15.0 | 최저 주가 |
min_avg_dollar_volume |
$40M | 일 평균 거래대금 (유동성 기준) |
min_atr_pct |
4% | ATR-14 / prev_close (저변동 제거) |
min_rvol |
3.0 | 상대거래량 (V49에서 1.5→1.8→3.0) |
min_abs_gap_pct |
2% | 최소 갭 크기 (메인 ORB) |
max_gap_pct |
4% | 최대 갭 크기 (crowded 갭 제거) |
min_premarket_dollar_vol |
$2.5M | 프리마켓 최소 거래대금 |
max_candidates |
16 | 최대 후보 수 |
max_candidates_per_sector |
3 | 섹터당 최대 후보 (분산) |
5.2 스코어링 가중치
| 신호 | 가중치 | 설명 |
|---|---|---|
weight_rvol |
0.35 | 상대거래량 (가장 중요) |
weight_premarket_dollar_vol |
0.25 | 프리마켓 거래대금 |
weight_gap |
0.20 | 갭 크기 |
weight_event_catalyst |
0.15 | DB 이벤트 catalyst (PEAD 효과) |
weight_obv_slope |
0.15 | OBV 기울기 20d (기관 축적) |
weight_dollar_vol |
0.05 | 일 평균 거래대금 |
weight_close_location |
0.015 | 전일 종가 위치 |
weight_body_ratio |
0.0 | (비활성화) |
스코어링 철학:
- rvol이 핵심 (높은 rvol = 기관/시장 관심의 proxy)
- OBV slope: V24에서 도입, 기관 사전 축적 신호 (G2=0.394R로 유일하게 통과한 신호)
- event_catalyst: V46에서 도입, PEAD(Post-Earnings Announcement Drift) 효과 활용
5.3 리스크 관리
| 파라미터 | 값 | 설명 |
|---|---|---|
risk_per_trade_pct |
5% | 트레이드당 리스크 (명목; 실효 ~3.4%) |
max_position_pct |
70% | 최대 포지션 (실효 리스크 capping 역할) |
atr_stop_multiplier |
0.75× | ATR 기반 초기 스탑 |
breakeven_at_r |
1.0R | 1R 도달 시 손익분기 이동 |
trailing_at_r |
1.0R | 트레일링 스탑 시작 |
trailing_stop_atr_multiplier |
0.6× | 트레일링 스탑 폭 |
trailing_tighten_at_r |
1.5R | 스탑 타이트닝 시작 |
trailing_stop_atr_multiplier_tight |
0.2× | 타이트닝 후 폭 |
partial_exit_at_r |
1.0R | 1R 도달 시 부분 청산 |
partial_exit_pct |
30% | 부분 청산 비율 (V48에서 재활성) |
daily_max_loss_pct |
5% | 일일 최대 손실 |
max_stops_per_day |
5 | 일일 스탑 최대 횟수 |
single_trade_loss_cap_pct |
13% | 단일 트레이드 최대 손실 |
5.4 Drawdown Governor & Streak Sizing
| 파라미터 | 값 | 설명 |
|---|---|---|
drawdown_governor_threshold |
2.5% | DD governor 발동 임계값 |
drawdown_governor_min_scale |
0.30 | governor 발동 시 최소 size 비율 |
streak_sizing_win_bonus |
1.0 | 연속 승리당 size 증가 |
streak_sizing_max |
3.0 | streak sizing 최대 배수 |
V23에서 확립된 핵심 메커니즘:
- Daily Budget Reset: 매일 $10K 기준으로 sizing (복리 아닌 단리)
- Streak Sizing: 연속 승리 시 size 누적 (최대 3.0x) — 유리한 regime에서 자연스럽게 포지션 확대
- DD Governor: 단기 DD 발생 시 size 축소 → 나쁜 regime에서 손실 제한
6. Market Regime & Day Classification
┌─────────────────────────────────────┐
│ QQQ 장 시작 갭 │
└──────────────┬──────────────────────┘
│
┌────────────────────┴──────────────────────┐
│ │
≥ +0.15% < +0.15%
(정상 regime) (soft/skip regime)
│ │
┌─────────┴──────────┐ ┌────────────┴──────────┐
│ breadth ≥ 60%? │ │ soft day fallback │
└─────────┬──────────┘ │ (size_scale = 10%) │
│ └───────────────────────┘
┌─────────┴──────────┐
│ 정상 운영 │
│ (메인 ORB 북) │
└─────────┬──────────┘
│
┌─────────┴────────────────────────────────────────────────┐
│ 보조 슬리브 (필요 시 활성) │
│ - Market Thrust Liquid Continuation (thrust + no primary) │
│ - No-Thrust Liquid Impulse (no thrust + no primary) ★NEW│
│ - VWAP Reclaim, Opening Impulse Reclaim │
└─────────────────────────────────────────────────────────┘
Soft Day 처리 (regime/breadth 미충족):
soft_day_setup_profile: skip_day_reclaim_v1- 정상 진입 대신 고득점 종목만 소규모 진입 (size_scale 10%)
- streak sizing / settlement에서 제외 (
soft_day_exclude_from_streak: true)
7. No-Thrust Liquid Impulse 슬리브 상세 (V49.91 신규)
7.1 동작 조건
market_thrust_liquid_continuation_only_when_no_primary_entries: true
market_thrust_liquid_continuation_only_when_no_primary_trades: true
즉, 메인 ORB 북에서 아무런 진입이 없는 날에만 활성화된다.
No-thrust 경로 (V49.91 추가):
- Market thrust 신호 없음 (SPY/QQQ thrust 미감지)
- Primary ORB 진입 없음
- 후보 중 다음 조건 충족:
- 갭: 0% ~ 4% (갭 방향 무관)
- 첫 5분봉 수익률: ≥ +3%
- 첫 5분봉 거래대금: ≥ $1M
- 평균 일거래대금: ≥ $300M (초대형 유동주)
- 최대 3개 후보, 최대 2거래, size_scale 0.20
7.2 의도된 유스케이스: 2026-05-04
V49.90은 NBIS(primary 없는 날, thrust 있음)를 잡았으나 IREN(thrust 없음)은 놓쳤다.
V49.91은 IREN의 시나리오:
- 시장 thrust 없음
- IREN 갭 ~2% (정상 ORB 미진입)
- IREN 첫 5분봉 +4% 급등 → no-thrust 경로로 진입
7.3 거절된 대안들 (Validation)
| 접근 | 거절 이유 |
|---|---|
rejected_liquid_followthrough_today_probe |
정상 thrust sleeve를 확장하면 낮은 품질 종목 유입 |
rejected_opening_impulse_trend_guard_200d_probe |
trend guard 추가 시 200d 성과 저하 |
8. 복합 리스크 오버레이 (Risk Overlays)
V49 계열은 종목 특성에 따른 세분화된 리스크 규칙을 가진다:
8.1 갭 유형별 처리
| 갭 유형 | 조건 | 액션 |
|---|---|---|
| Crowded Gap | gap≥2% + ret5d≥15% + 강한 바디 → premkt<$12M | confirm_scale (0.20x) |
| Countertrend Gap | gap≥2% + ret5d≤0 + 강한 바디 | scale (0.20x) |
| Ranked Downside Gap | gap≤-5% + premkt≤$5M | loss_cap (1.5%) |
| Gap-Up Fill Exit | gap 2~25%, premkt≤$10M, 전일 약세 | 갭 채워지면 청산 |
| Thin Gap-Up Loss Cap | gap 2.5~?, premkt≤$10M, 강한 바디 | loss_cap (0.75%) |
| Moderate Downside Loss Cap | gap -5~-10%, premkt≤$1억 | loss_cap (1.0%) |
8.2 이력 기반 필터
| 필터 | 목적 |
|---|---|
conditional_gap_zscore_reject_above: 2.5 |
비정상적으로 큰 갭 (ret5d 음수 시) 거절 |
rolling_loss_days: 7, threshold: -7% |
최근 7일 -7% 초과 손실 시 거래 중단 |
min_breakout_rel_vol: 1.2 |
돌파 시 ORB 평균 대비 1.2배 이상 거래량 요구 |
8.3 특수 진입 유형
| 유형 | 조건 | 크기 |
|---|---|---|
| Distressed Reclaim | 갭≤-5% + ret5d≤-10% + premkt≥$1억 | 10% size + 2% loss cap |
| Hot Reclaim | 갭≥5% + ret5d≥30% + 강한 바디 | 20% size + 0.5% loss cap |
| Weak Downside Reclaim | 갭≥2% + ret5d≥50% + 약한 바디 | loss_cap 3% |
| Stalled Gap-Up | 갭 2~8% + premkt≤$5M + 약한 바디 | 10% size reserve |
| Liquid Stalled Gap-Up | 갭 2~8% + premkt≥$5M + 약한 바디 | 10% size reserve |
9. 백테스트 결과 및 현재 검증 상태
9.1 V49 (core) 확정 성과
| 지표 | 200d | 400d |
|---|---|---|
| 수익률 | +155.58% | +259.96% |
| Max DD | -10.91% | -9.21% |
| Sharpe | 3.877 | 3.404 |
| 거래 수 | 166 | 373 |
기준: daily_budget_reset=true, compound_returns=false, $10K initial
9.2 V49.91 검증 데이터
| 프로브 | 윈도우 | 결과 |
|---|---|---|
no_thrust_midliquid_today_probe |
당일(2026-05-04) | IREN 포착 확인 |
no_thrust_liquid_impulse_60d_probe |
60d | 참조: tmp/v49_91_no_thrust_liquid_impulse_60_probe/ |
no_thrust_liquid_impulse_200d_probe |
200d | 참조: tmp/v49_91_no_thrust_liquid_impulse_200_probe/ |
주의: V49.91은 아직 candidate 상태다. 정식 200d/400d 프로모션 게이트를 통과하지 않았다. 실험적 슬리브로서 메인 ORB 북에 독립적으로 추가되므로 하방 리스크는 제한적이나, 상방 기여도는 아직 미검증.
9.3 V49 계열 (V48→V49 개선 요인)
V48 대비 V49의 +12.32pp (400d) 개선은 min_rvol: 1.5→1.8 단 하나의 변경으로 달성:
- rvol이 낮은(1.5~1.8x) 저신뢰도 후보 제거
- 남은 후보는 더 강한 momentum 신호를 가짐
- 동시에 400d 거래 수는 오히려 증가(367→373) — 품질 향상이지 거래량 감소가 아님
10. V49 서브버전 개발 맥락
V49.77부터 V49.93까지의 서브버전들은 핵심 V49 파라미터는 고정한 채 broad 유니버스에서 새로운 진입 기회를 포착하는 보조 슬리브를 탐색한다.
10.1 개발 흐름
V49 (core: min_rvol=1.8)
└─ V49.77: 소유구조 기반 initial size scaling
└─ V49.79: 비지지 attention 약세 governor
└─ V49.80: broad gapup continuation 시도
└─ V49.81: SPY/QQQ market thrust override 도입
└─ V49.82: market thrust + liquid continuation 슬리브
└─ V49.83: market thrust + opening burst 모드
└─ V49.84: gapup continuation 비활성 (negative EV 확인)
└─ V49.85: institutional 슬리브
└─ V49.86: opening structure micro
└─ V49.87: soft day budget repair
└─ V49.88: unsupported attention governor
└─ V49.89: opening impulse reclaim (갭 -6%~+2%, 첫봉 2%+)
└─ V49.90: liquid leader impulse repair (thrust 있는 날)
└─ V49.91: no-thrust liquid impulse (thrust 없는 날) ← 현재
└─ V49.93: ORB idle overnight sleeve
10.2 누적 슬리브에 포함된 주요 기능들
V49.91 전략 파일은 standalone YAML 기준으로 다음 기능을 포함한다:
- Market ORB Quality Scaler (SPY/QQQ ORB 캔들 품질 → size 조정)
- Soft Day Fallback (regime/breadth 미충족 시 소규모 진입)
- Sector Confirmation (동일 섹터 동반 돌파 보너스)
- Liquid Leader Conviction (초우량주 고신뢰 진입 2.4x)
- Opening Burst (15분 내 초기 돌파 1.8x)
- Market Thrust Liquid Continuation (thrust 있는 날 liquid 계속)
- Opening Impulse Reclaim (V49.89에서 추가)
- No-Thrust Liquid Impulse ← V49.91에서 신규 추가
11. 알려진 한계 및 주의사항
11.1 레짐 의존성 (CRITICAL)
V23 분석에서 확인된 구조적 취약점:
- 600d 백테스트: -51.25% DD — 전략이 2024~2026 고ATR 모멘텀 레짐에 특화됨
- 2024년 이전(특히 2023년 하반기) 다른 레짐에서는 심각한 DD 가능성
- 권고사항: 라이브 배포 시 계좌 레벨 서킷브레이커 설정 (고점 대비 -25% 시 일시 중단)
11.2 V49.91 슬리브 특이사항
- 실험적 상태: 200d/400d 정식 게이트 미통과
- 소규모 포지션: size_scale 0.20 (정상의 20%) → 메인 북에 미미한 영향
- no-trade-day 빈도 낮음: primary 진입이 없는 날만 활성 → 연간 수십 회 수준 예상
- 단순성: 3% 첫봉 임계값은 단순하지만 거짓 신호 위험 존재 (빠른 역전)
11.3 레지스탕스 레벨 테스트 (검증 필요)
V49.91의 no-thrust 슬리브가 200d/400d 전체 성과에 미치는 영향이 아직 완전히 검증되지 않았다. no_thrust_liquid_impulse_200d_probe 결과를 반드시 검토 후 정식 운용 여부를 결정해야 한다.
12. 라이브 운용 참고사항
12.1 일일 체크리스트
09:20 ET 이전:
□ Oracle 데이터 갱신 완료 확인 (09:20 ET 전 필수)
□ DB 스냅샷 최신화 (daily_bar_snapshot_id, prior_event_snapshot_id)
09:25 ET:
□ 스케줄러 자동 시작
□ QQQ 갭 확인 (≥+0.15% = 정상 regime)
□ breadth 확인 (≥60% = 정상 운영)
장 중:
□ 서킷브레이커 모니터링 (계좌 -25% 시 수동 중단)
□ rolling_loss 트리거 여부 확인
12.2 스냅샷 설정
daily_bar_snapshot_id: orb_daily_v46_20260423
prior_event_snapshot_id: orb_pead_d10_v46_20260423
이 스냅샷들은 백테스트 재현성을 위해 고정되어 있다. 실시간 운용에서는 최신 스냅샷으로 교체 필요.
13. 핵심 인사이트 요약
V49.91을 이해하기 위한 3가지 핵심 통찰:
① 엣지의 원천은 "당일 비정상 관심"
높은 rvol + 강한 갭 + 기관 축적(OBV) + 사전 catalyst가 결합할 때 ORB 돌파 후 이어달리기(continuation)가 발생한다. 이 중 하나라도 빠지면 WR이 급감.
② regime 필터는 보호막이지 제한이 아님
QQQ +0.15% 필터를 제거하면 수익이 반토막(-51pp). regime 나쁜 날 2개의 손실이 rolling_loss gate를 촉발해 그 이후 좋은 날까지 막는 "오염 효과" 때문.
③ 슬리브는 메인 북을 보완하지 대체하지 않음
모든 보조 슬리브(thrust, impulse, VWAP reclaim)는 메인 ORB가 진입하지 않는 날/경우에만 작동한다. 이 독립성이 전체 포트폴리오의 안정성을 유지한다.
문서 작성: 2026-05-05 | 기반 데이터: project_orb_gainers_lineage.md, V49.90/V49.91 YAML 설정