12 KiB
return_max_long_v12.61 — 전략 완전 해설
SQS: 67.8 | 등록: 2026-03-30 | 저널: IMP-0893
한 줄 요약
이벤트 드리븐 롱 온리 전략. earnings_release, guidance_update, material_contract, other_material_event, management_change, unknown 6종 이벤트를 23개 엔진으로 처리하며, OOT 손실 유발 2개 엔진을 비활성화하고 저위험 슬리브를 소폭 증량한 sparse OOT 방어형 구성이다.
계보
v12.4 SQS 51.7 management_change 엔진 추가 (v11.49 donor graft)
v12.8 SQS 51.7 reaction_close_long_core macro_vix_max 25로 타이트화 (OOT 방어)
v12.13 SQS 51.2 bullish_raised 2개 엔진 동시 비활성화 테스트
v12.25 SQS 51.3 (파생 실험)
v12.31 SQS 51.3 (파생 실험)
v12.36 SQS 51.0 next_open_long_unknown_ome_orderly에 entropy 필터 추가
v12.42 SQS 59.2 reaction_close_long_core close_location_min 상향 (OOT tail 감소)
v12.59 SQS 60.3 guidance_unknown_orderly 소폭 증량 (de-risk 브랜치에서 CW 회복)
v12.61 SQS 67.8 earnings_mixed_inline_orderly 소폭 증량 → 최고 SQS
v12.61의 핵심 변경: earnings_mixed_inline_orderly의 per_trade_risk_pct_override를 0.035 → 0.045로 증량. OOT 손실에 기여하지 않는 슬리브만 증량하여 test/CW를 개선하면서 sparse OOT gains를 보존하는 전략.
비활성화된 엔진
| 엔진 | 비활성화 이유 |
|---|---|
reaction_close_long_bullish_raised_priority |
sparse OOT에서 bullish-raised tax 집중 — OOT 손실 유발 |
next_open_long_bullish_raised_recovery_oneoff_largecap_tight |
동일 계열 tail risk — 희소 OOT에서 리스크 대비 기여 미미 |
설정 전체
데이터셋
dataset_snapshot_id: midlarge-liquid-long-v1_bucketfix_full_audit_tier3tech
scoring_model: return_max_long_v13e
신호 (Signal)
| 파라미터 | 값 | 의미 |
|---|---|---|
score_threshold |
0.45 | 일반 진입 최소 점수 |
a_tier_score_threshold |
0.58 | A-tier 분류 최소 점수 |
max_candidates_per_day |
18 | 일일 최대 후보 수 |
리스크 (Risk)
| 파라미터 | 값 | 의미 |
|---|---|---|
per_trade_risk_pct |
0.069 (6.9%) | 기본 트레이드당 리스크 |
per_trade_risk_pct_a_tier |
0.0759 (7.59%) | A-tier 트레이드당 리스크 |
max_daily_new_risk_pct |
1.5% | 일일 최대 신규 리스크 한도 |
max_positions |
24 | 최대 동시 포지션 수 |
max_positions_per_sector |
5 | 섹터별 최대 포지션 수 |
max_position_value_pct |
1.5% | 포지션당 최대 자산 비중 |
max_adv_fraction |
0.20 | ADV 대비 최대 주문 비중 |
stop_atr_multiplier |
1.45 | ATR 기반 스탑 배율 |
macro_regime_neutral_size_scaler |
1.0 | 중립 레짐 사이징 배율 |
macro_regime_risk_off_size_scaler |
1.0 | Risk-off 레짐 사이징 배율 |
veto_unknown_direction |
false | unknown 방향 이벤트 허용 |
macro_regime_risk_off_a_tier_only |
false | Risk-off 시 A-tier only 아님 |
allow_budget_downsizing |
true | 예산 부족 시 사이징 하향 허용 |
실행 (Execution)
| 파라미터 | 값 | 의미 |
|---|---|---|
max_holding_days |
12 | 최대 보유 기간 |
trailing_warmup_days |
6 | 트레일링 스탑 시작 대기일 |
a_tier_target_1_r |
3.5R | A-tier 1차 목표 |
a_tier_target_1_fraction |
0.0 | A-tier 1차 목표 청산 비중 (0 = 전량 유지) |
non_a_tier_target_1_r |
2.25R | 일반 1차 목표 |
non_a_tier_target_1_fraction |
0.2 | 일반 1차 목표 청산 비중 (20%) |
early_failure_no_progress_days |
1 | 진전 없음 판단 대기일 |
early_failure_no_progress_r |
0.15R | 진전 없음 기준 (0.15R 미만) |
early_failure_no_progress_fraction |
1.0 | 진전 없음 시 전량 청산 |
이벤트 타입 프로파일
| 타입 | 활성화 | direction_filter | max_holding_days_override |
|---|---|---|---|
material_contract |
✅ | any | 20일 |
other_material_event |
✅ | any | 20일 |
unknown |
✅ | any | 12일 |
23개 전략 엔진
활성화된 엔진 (23개)
엔진은 timing_class 기준 두 그룹으로 나뉜다.
same_day (reaction_close 계열) — 이벤트 당일 장 마감 전 진입, 다음 날 오픈 전에 분류 완료
| 엔진 | 이벤트 타입 | VIX 상한 | close_location ≥ | volume_ratio ≥ | 리스크 | 목표 |
|---|---|---|---|---|---|---|
reaction_close_long_core |
earnings, guidance | 25 | 0.60 | 1.0 | 4.5% | 기본 |
reaction_close_long_residual_lowclose_gap_d3 |
earnings, guidance | 30 | 0.35 | 1.25 | 기본 | 3.0R |
reaction_close_long_residual_smallcap_gap |
earnings, guidance | 30 | 0.45 | 1.25 | 기본 | 3.0R |
reaction_close_long_extreme_orderly |
earnings, guidance | 30 | 0.83 | 6.0 | 기본 | 99R (트레일) |
reaction_close_long_unknown_strong |
unknown | 30 | 0.50 | 1.0 | 2.0% | 기본 |
after_close / any (next_open 계열) — 장 마감 후 이벤트, 다음 날 오픈 진입
| 엔진 | 이벤트 타입 | VIX 상한 | close_location ≥ | volume_ratio ≥ | 리스크 | 목표 | 기타 필터 |
|---|---|---|---|---|---|---|---|
next_open_long_unknown_material_patient |
material_contract | 30 | 0.50 | 0.8 | 기본 | 5.0R | — |
next_open_long_bullish_raised_recovery |
earnings | 30 | 0.03 | 1.2 | 0.35% | 5.0R | — |
next_open_long_unknown_inline_hivol |
earnings | 30 | 0.74 | 2.1 | 기본 | 5.0R | — |
next_open_long_guidance_unknown_orderly |
guidance | 30 | 0.90 | 0.8 | 4.5% | 6.0R | — |
next_open_long_earnings_mixed_inline_orderly |
earnings | 30 | 0.50 | 1.0 | 4.5% | 5.0R | — |
next_open_long_unknown_material_orderly |
material_contract | 30 | 0.50 | 0.9 | 1.5% | 5.0R | — |
next_open_long_other_material_mixed_orderly |
other_material | 30 | 0.45 | 1.0 | 3.5% | 5.0R | — |
next_open_long_guidance_unknown_premarket_orderly |
guidance | 30 | 0.35 | 0.75 | 1.5% | 5.0R | — |
next_open_long_unknown_ome_orderly |
other_material | 30 | 0.55 | 1.0 | 6.0% | 5.0R | entropy ≤ 1.98 |
next_open_long_mixed_ome_orderly |
other_material | 30 | 0.50 | 0.8 | 1.5% | 5.0R | entropy ≤ 1.90 |
next_open_long_bullish_raised_recovery_broad_oneoff |
earnings | 30 | 0.30 | 1.3 | 2.5% | 5.0R | — |
next_open_long_other_material_unknown_orderly |
other_material | 30 | 0.35 | 0.75 | 0.3% | 5.0R | entropy ≤ 1.65 |
next_open_long_material_contract_mixed_micro_postmarket |
material_contract | 30 | 0.60 | 0.5 | 1.5% | 5.0R | entropy ≤ 2.05 |
next_open_long_guidance_mixed_micro_postmarket_tight |
guidance | 30 | 0.65 | 0.6 | 0.8% | 5.0R | entropy ≤ 1.65 |
next_open_long_guidance_mixed_micro_postmarket |
guidance | 30 | 0.55 | 0.5 | 1.4% | 5.0R | entropy ≤ 1.70 |
next_open_long_earnings_unknown_inline_postmarket_strict |
earnings | 30 | 0.10 | 1.2 | 0.8% | 5.0R | entropy ≤ 1.90 |
next_open_long_bullish_raised_strong |
earnings | — | 0.96 | 1.2 | 1.5% | 5.0R | — |
next_open_long_management_change_unknown_premarket |
management_change | — | — | — | 기본 | 기본 | — |
비활성화된 엔진 (2개)
| 엔진 | 비활성화 이유 |
|---|---|
reaction_close_long_bullish_raised_priority |
OOT bullish-raised 손실 집중 |
next_open_long_bullish_raised_recovery_oneoff_largecap_tight |
희소 OOT tail risk |
성과
Full Split (학습/검증/테스트)
| 구분 | 기간 | 거래수 | 수익률 | Sharpe | Win% | MaxDD | R² |
|---|---|---|---|---|---|---|---|
| Train | 2022-03-02 ~ 2024-03-04 | 102 | +167.4% | 2.80 | 68.6% | 6.6% | 0.823 |
| Valid | 2024-03-05 ~ 2025-03-06 | 25 | +74.4% | 3.90 | 100% | 5.6% | 0.907 |
| Test | 2025-03-07 ~ 2026-03-24 | 24 | +71.7% | 7.46 | 100% | 1.6% | 0.935 |
SQS: 67.8 (공개 리더보드 기준)
Walk-Forward Validation (12 폴드, 2022~2026)
테스트 집계
| 지표 | 값 |
|---|---|
| 평균 수익률 | +19.64% |
| 중앙값 수익률 | +15.01% |
| 최저 수익률 | +2.95% |
| 양수 폴드 비율 | 100% (12/12) |
| 평균 Profit Factor | 20.52 |
| 평균 MaxDD | 2.96% |
| 평균 거래수 | 11.8 |
| 평균 Win Rate | 80.67% |
폴드별 테스트 결과
| 폴드 | 테스트 기간 | 수익률 | Sharpe | Win% | 거래수 |
|---|---|---|---|---|---|
| 0 | 2023-03~2023-06 | +8.0% | 1.04 | 83% | 6 |
| 1 | 2023-06~2023-09 | +3.0% | 0.54 | 44% | 9 |
| 2 | 2023-09~2023-12 | +9.0% | 1.01 | 80% | 10 |
| 3 | 2023-12~2024-03 | +32.5% | 2.04 | 88% | 16 |
| 4 | 2024-03~2024-06 | +15.8% | 1.07 | 58% | 12 |
| 5 | 2024-06~2024-09 | +11.3% | 0.93 | 67% | 15 |
| 6 | 2024-09~2024-12 | +14.2% | 1.90 | 78% | 9 |
| 7 | 2024-12~2025-03 | +17.5% | 1.87 | 70% | 20 |
| 8 | 2025-03~2025-06 | +9.0% | 1.41 | 100% | 7 |
| 9 | 2025-06~2025-09 | +44.8% | 2.78 | 100% | 12 |
| 10 | 2025-09~2025-12 | +23.3% | 3.45 | 100% | 11 |
| 11 | 2025-12~2026-03 | +47.5% | 6.68 | 100% | 15 |
설계 포인트
1. OOT 방어 구조
reaction_close_long_bullish_raised_priority와 next_open_long_bullish_raised_recovery_oneoff_largecap_tight 비활성화는 v12 계열 전체의 핵심 설계다. Sparse OOT(2020-2021 데이터)에서 bullish-raised 계열이 손실을 집중시키는 경향이 확인되어, 이 두 슬리브를 제거하면서 나머지 bullish-raised 엔진(next_open_long_bullish_raised_recovery, next_open_long_bullish_raised_recovery_broad_oneoff, next_open_long_bullish_raised_strong)은 유지했다.
2. de-risk 브랜치 증량 전략
reaction_close_long_core의 macro_vix_max=25 타이트화(v12.8)로 고변동 환경에서의 노출을 줄이고, 그 빈 예산을 OOT에서 손실을 내지 않는 저위험 슬리브들(guidance_unknown_orderly, earnings_mixed_inline_orderly)로 채웠다. v12.59에서 guidance, v12.61에서 earnings_mixed를 각각 소폭 증량하여 SQS를 60.3 → 67.8로 끌어올렸다.
3. Entropy 필터
other_material_event와 일부 소형주 지도계열 엔진에 pre_event_entropy_60d_max 제약을 추가. 이벤트 전 60일 엔트로피가 높으면(≥1.65~2.05) 노이즈성 이벤트 가능성이 높아 필터링한다.
4. 비대칭 사이징
엔진별 per_trade_risk_pct_override가 0.3%~6.9%로 크게 차이난다. 높은 리스크 엔진은 신호 품질이 높고 검증된 슬리브(reaction_close_long_core 4.5%, next_open_long_unknown_ome_orderly 6.0%), 낮은 리스크 엔진은 탐색적이거나 sparse 환경에서 불확실한 슬리브(next_open_long_bullish_raised_recovery 0.35%, next_open_long_other_material_unknown_orderly 0.3%).
5. A-tier 목표 구조
A-tier 엔진은 target_1_r=3.5R에서 청산 비중 0% → 전량 트레일링으로 넘어간다. 일반 엔진은 2.25R에서 20% 청산 후 나머지를 트레일링. 강한 신호일수록 조기 청산 없이 더 달린다.
활용 가이드
# Full split 재실행
python apps/backtester/run.py \
--manifest configs/experiments/return_max_long_v12.61.json \
--snapshot-dir data/parquet/midlarge-liquid-long-v1_bucketfix_full_audit_tier3tech \
--output-root runs/v12.61_fullsplit
# 시나리오 테스트
fithia2 scenario-test --config return_max_long_v12.61
# 과적합 검사
fithia2 overfit-check --config return_max_long_v12.61 --quick
연관 실험
| 실험 | 관계 | SQS |
|---|---|---|
return_max_long_v12.59 |
직계 부모 | 60.3 |
return_max_long_v12.42 |
조부 | 59.2 |
return_max_long_v12.8 |
v12 OOT 방어 출발점 | 51.7 |
return_max_long_v11.49 |
management_change 엔진 donor | — |
return_max_long_v7.70 |
현재 챔피언 | 76.9 |