11 KiB
Leader Intraday Momentum Workflow
이 문서는 Leader Intraday Momentum High WR Intraday First 전략을 개발하고
검증하는 운영 기준이다. 기존 orb_gainers와 달리 이 전략은 ORB breakout보다
장 초반 top leader follow-through를 직접 매매하는 momentum 전략이다.
Source Of Truth
정식 전략 파일:
공식 검증 경로:
연구 helper나 momentum snapshot 결과는 빠른 탐색용이다. 최종 채택 판단은 반드시 아래 공식 CLI와 웹사이트가 사용하는 동일 경로로 재검증한다.
python -u -m apps.intraday_bt.run \
--config configs/intraday/strategies/leader_intraday_momentum_high_wr_intraday_first.yaml \
--start 2026-01-02 \
--end 2026-03-31 \
--daily-budget-reset \
--no-compound-returns
전략 개발 검증은 daily_budget_reset + no compound를 기본으로 한다. 이는 날짜별
edge를 보기 위한 연구 모드이며, 후반 구간의 복리/계좌 규모 효과로 과적합되는
문제를 줄인다. 실전 계좌 결과는 별도로 simple/compound 모드에서 확인한다.
Current Engine
핵심 구조:
- Universe는 정식
broad3408개 티커를 사용한다. - Daily seed는 look-ahead 없이 당일 open 이전/entry 시점까지 알 수 있는 feature만 쓴다.
- Intraday-first shortlist를 만든 뒤, 10분 entry와 5분 confirmation으로 재랭킹한다.
- Five-sleeve selection으로
core,volume,gap,trend,blend를 분리한다. - Same-day filing catalyst는 additive alpha가 아니라 weak tail exemption 판단에 쓴다.
- Moderate-gap liquid reserve는 sparse day에서만 broad scan이 잡는 liquid follow-through 후보를 보강한다.
- Multi-event liquid overlay는 core basket을 건드리지 않고, broad same-day filing cluster가 확인된 날에만 별도 budget으로 liquid continuation names를 추가한다.
- 손실 방어는 개별 티커 블랙리스트가 아니라 구조 조건만 사용한다.
현재 방어 레이어:
weak-event tail defense: event flag가 있어도 support score가 낮으면 sparse-day 방어 예외로 보지 않는다.low-momentum single-name defense: single-name day에서 유일한 후보의 morning gain이 낮고 supported event/largecap도 아니면 day budget을 줄인다.soft-day sparse defense: soft day인데 basket이 1~2개뿐이고 event / liquid large-cap / moderate-gap liquid support가 없으면 day budget을 추가로 줄인다.trailing_stop_pct: -0.07: hard take-profit 없이 intraday trailing stop으로 큰 downside를 제한한다.loss_containment_score: WR/DD와 별도로 손실일 평균과 tail loss를 직접 보는 보조 지표다.
Official Validation Windows
과적합 방지를 위해 2026 Q1만 보지 않고 2025년 분기별 official backtest를 같이 본다.
python -u -m apps.intraday_bt.run --config configs/intraday/strategies/leader_intraday_momentum_high_wr_intraday_first.yaml --start 2025-01-02 --end 2025-03-31 --daily-budget-reset --no-compound-returns
python -u -m apps.intraday_bt.run --config configs/intraday/strategies/leader_intraday_momentum_high_wr_intraday_first.yaml --start 2025-04-01 --end 2025-06-30 --daily-budget-reset --no-compound-returns
python -u -m apps.intraday_bt.run --config configs/intraday/strategies/leader_intraday_momentum_high_wr_intraday_first.yaml --start 2025-07-01 --end 2025-09-30 --daily-budget-reset --no-compound-returns
python -u -m apps.intraday_bt.run --config configs/intraday/strategies/leader_intraday_momentum_high_wr_intraday_first.yaml --start 2025-10-01 --end 2025-12-31 --daily-budget-reset --no-compound-returns
python -u -m apps.intraday_bt.run --config configs/intraday/strategies/leader_intraday_momentum_high_wr_intraday_first.yaml --start 2026-01-02 --end 2026-03-31 --daily-budget-reset --no-compound-returns
Latest official results as of 2026-04-21 after promoting the multi-event liquid overlay into the flagship:
| Window | Result file | Return | WR | Max DD | LC | Trades |
|---|---|---|---|---|---|---|
| 2025 Q1 | runs/intraday/intraday_20260421_220246_34b0dff0.json |
+6.56% | 55.1% | -10.93% | 66.11 | 89 |
| 2025 Q2 | runs/intraday/intraday_20260421_223436_79a89cb1.json |
+23.23% | 60.0% | -4.31% | 66.80 | 60 |
| 2025 Q3 | runs/intraday/intraday_20260421_224448_ccd2985b.json |
+6.92% | 49.6% | -6.81% | 64.38 | 135 |
| 2025 Q4 | runs/intraday/intraday_20260421_222253_6f5a98e0.json |
-5.24% | 41.8% | -15.47% | 65.33 | 122 |
| 2026 Q1 | runs/intraday/intraday_20260421_221923_2ea8b7f2.json |
+16.14% | 55.4% | -6.16% | 66.33 | 148 |
해석:
- 2025 Q4는 아직 음수라서 전략의 약점 구간이다.
- 다만 multi-event overlay는 2025 Q1/Q2/Q3/Q4 official 창에서는 아예 발화하지 않아, 약한 분기들을 추가로 오염시키지는 않았다.
- 2026 Q1 holdout에서는 2026-01-02 한 번의 broad filing cluster에서만 발화했고, 그 날
APLD,BMNR두 개를 추가해 flagship 대비 수익률과 WR을 끌어올렸다. - 다음 개선은 개별 종목을 외우는 방식이 아니라 Q4 같은 weak regime을 더 잘 감지하는 meta-layer여야 한다.
sector thrustbreadth engine은 2026-04-21에 코드로 추가해 실험했지만, 정식 전략에 full enable하면 2026 Q1 holdout이 약+21.92% -> +15.98%까지 악화돼 아직 승격하지 않았다.
Actual Catalyst Branches
2026-04-21에 actual catalyst + liquid leader continuation 방향도 분리 검증했다.
전략 파일:
configs/intraday/strategies/leader_intraday_momentum_actual_catalyst_liquid.yamlconfigs/intraday/strategies/leader_intraday_momentum_event_day_liquid_hybrid.yaml
Q1 결과:
| Variant | Result file | Return | WR | Max DD | Trades | Notes |
|---|---|---|---|---|---|---|
| strict event-only | runs/intraday/intraday_20260421_205738_1f70d7db.json |
+3.21% | 63.6% | -7.87% | 11 | actual filing catalyst만 거래해서 너무 sparse했다 |
| hybrid event reserve | runs/intraday/intraday_20260421_210703_5bb723e7.json |
+15.65% | 54.8% | -6.14% | 146 | baseline보다 아주 미세하게 개선됐지만 구조 변화는 작았다 |
| baseline flagship | runs/intraday/intraday_20260421_211021_30f71c80.json |
+15.59% | 54.8% | -6.19% | 146 | 비교 기준 |
해석:
- strict event-only는 방향성은 맞아도 메인 엔진으로 쓰기엔 너무 희소하다.
- hybrid는
candidate_allowed_event_types를 통해earnings_release,guidance_update,material_contract,other_material_event만 event로 인정하게 했지만, Q1 기준으로 baseline 대비 개선폭은+0.06%수준에 그쳤다. - 즉, actual catalyst를 reserve/overlay로만 넣는 것만으로는 아직 획기적 변화가 없었다.
- 다음 구조 개선은
event issuer 자체를 더 사는 것이 아니라,event day에 broad scan에서 잡힌 liquid continuation names를 별도 engine/sleeve로 어떻게 승격할지쪽이 더 유망하다.
Multi-Event Liquid Overlay
2026-04-21 최종 승격안은 strict event reserve가 아니라 overlay-only 구조였다.
핵심 규칙:
- core basket은 leader_intraday_momentum_high_wr_intraday_first.yaml과 동일하게 유지한다.
- filing data는 core rank에 섞지 않는다.
- 대신
earnings_release,guidance_update,material_contract,other_material_event,management_change,unknown중에서 2개 이상 same-day contributor가 동시에 보이고, 합산 entry dollar volume이 $100M 이상일 때만 overlay를 켠다. - overlay가 켜진 날에만 day budget의 12%를 써서, base basket 밖의 liquid continuation names를 최대 2개 추가한다.
최종 해석:
- 2025 official 창에서는 overlay가 발화하지 않았고 결과도 거의 그대로 유지됐다.
- 2026 Q1에서는 2026-01-02 하루만 발화했고,
APLD,BMNR두 개가 추가됐다. - 이 한 번의 broad event cluster가
+16.14% / WR 55.4% / DD -6.16%를 만들었고, 직전 flagship 비교치+15.59% / WR 54.8% / DD -6.19%보다 좋아졌다. - 즉, 이 overlay는 “매일 조금씩 손대는 additive factor”가 아니라, 희소하지만 설명 가능한 broad event cluster day에만 붙는 post-allocation sleeve로 이해해야 한다.
Liquid Continuation Core Experiment
moderate-gap liquid / liquid large-cap / sector thrust를 overlay가 아니라
full core basket engine으로 승격한 실험도 별도로 진행했다.
- 전략 파일: leader_intraday_momentum_liquid_continuation_core.yaml
- 코드 변경:
momentum_selection_mode: liquid_continuationcandidate_intraday_rank_mode: liquid_continuation- same-day
support_score,is_liquid_largecap,is_moderate_gap_liquid를 candidate weighted rank에 추가
결과:
- 1차 broad version: intraday_20260421_235041_f5aeac8a.json
2026 Q1: -6.98%,WR 47.7%,DD -13.52%
- stricter version: intraday_20260421_235327_04e5bda8.json
2026 Q1: -0.43%,WR 46.8%,DD -11.56%
- walk-forward spot check: intraday_20260421_235647_93d29530.json
2025 Q1: -2.31%,WR 41.8%,DD -9.23%
결론:
- 이 엔진은 실제로
special liquidity이름만 중심으로 고르도록 동작했지만, flagship을 대체할 full core engine으로는 아직 edge가 없다. - 특히 moderate-gap liquid 정의를 core로 올리면 거래 수는 줄어도 분기 성과가 baseline보다 지속적으로 나빠졌다.
- 따라서 현재 판단은
liquid continuation을 full replacement로 승격하지 말고, tail replacement / reserve slot / rare-day sleeve 쪽에만 제한적으로 쓰는 편이 낫다.
Required Checks Before Keeping A Change
변경을 유지하려면 최소한 아래를 확인한다.
- Unit tests pass:
pytest -q tests/unit/intraday/test_simulator.py tests/unit/intraday/test_run_helpers.py tests/unit/intraday/test_screener.py tests/unit/intraday/test_metrics.py
- 2026 Q1 official result가 무너지지 않는다.
- 2025 Q1/Q2/Q3/Q4 중 한 분기만 좋아지고 다른 분기들이 크게 악화되지 않는다.
- 결과 JSON의 trade diagnostics로 변경이 어떤 구조에 적용됐는지 설명 가능해야 한다.
Known Bottleneck
분기별 official 검증에서 Fetching momentum filing catalysts 단계가 가장 느리다.
현재는 캐시가 있어도 90% 이후 일부 ticker 조회가 오래 걸린다. 전략 검증 자체는
정상 완료되지만, 다음 인프라 개선은 event 조회 범위 축소나 캐시 hit 판정 개선이
우선이다.