You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fithia2/docs/leader_intraday_momentum_wo...

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는 정식 broad 3408개 티커를 사용한다.
  • 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 thrust breadth 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.yaml
  • configs/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_continuation
    • candidate_intraday_rank_mode: liquid_continuation
    • same-day support_score, is_liquid_largecap, is_moderate_gap_liquid를 candidate weighted rank에 추가

결과:

결론:

  • 이 엔진은 실제로 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 판정 개선이 우선이다.