# 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% 청산 후 나머지를 트레일링. 강한 신호일수록 조기 청산 없이 더 달린다.

---

## 활용 가이드

```bash
# 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 |
