# Current Best Non-Core Sleeve Stack

작성 기준일: 2026-04-08

이 문서는 현재 `core` 전략 위에 얹어 쓰는 비-core sleeve 5개와, 그 조합 중 현재 가장 높은 수익률을 만들고 있는 스택을 정리한 내부 운영 문서다.

이 문서에서 말하는 `최고 수익 조합`은 아래 조합이다.

- Parking: `qqqm_low_dd_tqqq_active_v2_gld`
- Idle Alpha: `micro_event_alpha_plus_event_plus`
- Form 4: `reserve_form4_cluster_plus_fresh`
- Ownership 13D: `ownership_13d_raise_reserve_ultra_balanced_purpose_plus_cooldown90_r95`
- Risk-Off Alpha: `risk_off_alpha_gld_crisis65_heavy`

중요한 점:

- 이 문서는 `최고 수익 조합` 문서다.
- `가장 단순한 조합`, `가장 robust한 조합`, `가장 낮은 DD 조합` 문서가 아니다.
- 지금 스택은 레이어가 많고 상호작용이 강하다.
- 따라서 각 슬리브를 개별적으로 평가한 결과보다, 실제로는 `합친 뒤 최종 결과`가 더 중요하다.

## 1. 현재 최고 수익 조합

개념적으로는 아래와 같은 6-layer 구조다.

1. `Core`
2. `Idle Alpha`
3. `Form 4`
4. `Ownership 13D`
5. `Risk-Off Alpha`
6. `Cash Parking`

실제 일일 실행 순서는 대략 다음과 같다.

1. `Core` 엔진 진입/청산
2. `Idle Alpha` 진입
3. `Form 4` 진입
4. `Ownership 13D` 진입
5. `Risk-Off Alpha` 진입
6. 남은 현금을 `Cash Parking`에 배치

즉 `Cash Parking`은 선행 알파가 아니라, 모든 진입이 끝난 뒤 남은 현금의 마지막 sink다.

## 2. 왜 이 조합이 현재 최고 수익인가

이 조합이 세게 나오는 이유는 각 슬리브의 역할이 비교적 다르기 때문이다.

- `Parking`이 가장 많은 idle cash를 실제로 굴린다.
- `Idle Alpha`는 core가 안 먹는 micro-event PEAD 계열을 줍는다.
- `Form 4`는 내부자 매수 클러스터를 짧게 먹는다.
- `Ownership 13D`는 저빈도지만 한 건당 임팩트가 큰 소유구조 변화를 먹는다.
- `Risk-Off Alpha`는 parking이 `SGOV` 쪽으로 기울 때 위기 국면의 `GLD`를 별도 reserve로 크게 실어준다.

즉 이 스택은:

- 평시에는 `QQQM/TQQQ` 쪽 parking 알파를 크게 먹고
- stress 구간에서는 `GLD`
- event 구간에서는 `Idle Alpha / Form 4 / 13D`

를 동시에 가져가도록 설계돼 있다.

## 3. 현재 최고 수익 스택 예시 설정

```json
{
  "risk": {
    "cash_parking_preset": "qqqm_low_dd_tqqq_active_v2_gld"
  },
  "idle_alpha_sleeve_preset": "micro_event_alpha_plus_event_plus",
  "form4_capture_sleeve_preset": "reserve_form4_cluster_plus_fresh",
  "ownership_capture_sleeve_preset": "ownership_13d_raise_reserve_ultra_balanced_purpose_plus_cooldown90_r95",
  "risk_off_alpha_sleeve_preset": "risk_off_alpha_gld_crisis65_heavy"
}
```

CLI 예시는 아래와 같다.

```bash
python -m apps.backtester.run \
  --manifest /Users/yirugi/mycloud/personal/workspace/fithia2/configs/experiments/return_max_long_v7.119.json \
  --split train \
  --parking qqqm_low_dd_tqqq_active_v2_gld \
  --idle-alpha micro_event_alpha_plus_event_plus \
  --form4-sleeve reserve_form4_cluster_plus_fresh \
  --ownership-sleeve ownership_13d_raise_reserve_ultra_balanced_purpose_plus_cooldown90_r95 \
  --risk-off-sleeve risk_off_alpha_gld_crisis65_heavy
```

## 4. Sleeve 1: Cash Parking

Preset:

- `qqqm_low_dd_tqqq_active_v2_gld`

핵심 역할:

- 아무도 안 쓰는 현금을 그냥 놀리지 않고, 가능하면 `QQQM`
- 아주 저변동 구간이면 `TQQQ`
- risk-off defensive 구간이면 `GLD`
- 아무것도 안 맞으면 최종적으로 `SGOV`

즉 이 preset은 `QQQM` 기반 parking에 `TQQQ overlay`와 `GLD defensive relay`를 합친 형태다.

### 4.1. 기본 파라미터

- base parking symbol: `QQQM`
- gate mode: `volatility`
- volatility lookback: `20`
- volatility threshold: `0.35`
- temperature threshold: `1.2`
- entropy lookback: `20`
- entropy threshold: `1.45`
- trend requirement: `True`
- trend mode: `momentum`
- trend period: `20`
- trend re-entry pct: `0.001`
- autocorr threshold: `0.0`
- top-up max peak drawdown pct: `0.02`
- reserve pct: `0.0`

### 4.2. 이 preset이 실제로 하는 일

평시:

- `QQQM`을 기본 parking risk asset으로 쓴다.

매우 저변동 구간:

- `TQQQ` overlay를 허용한다.

defensive relay 구간:

- 원래 gate가 `SGOV`를 가리키는 상황에서도 `GLD`가 충분히 강하면 `GLD`를 쓴다.

### 4.3. TQQQ overlay 조건

- `cash_parking_low_vol_overlay_symbol = "tqqq"`
- `vol_threshold = 0.22`
- `temperature_max = 1.05`
- `entropy_max = 1.45`

즉 이 preset은 `TQQQ`를 항상 쓰는 게 아니라, 아주 차분한 구간에만 overlay로 쓴다.

### 4.4. GLD relay 조건

- `cash_parking_defensive_symbol = "gld"`
- defensive relay enabled
- trigger mode = `always`
- relay risk score max = `100.0`
- defensive momentum min = `0.05`

의미는 이렇다.

- parking gate가 원래 `SGOV`로 가려는 상황이어도
- `GLD` 20일 모멘텀이 충분히 강하면
- defensive asset을 `GLD`로 대체할 수 있다.

### 4.5. 이 preset이 높은 수익을 만드는 이유

- `qqqm_low_dd`의 기본 low-DD 성격을 유지하면서
- calm regime에서는 `TQQQ`
- crisis defensive regime에서는 `GLD`

를 같이 쓴다.

즉 `QQQM -> TQQQ -> GLD -> SGOV`로 이어지는 다층 parking이다.

### 4.6. 한계

- 설정이 복잡하다.
- 실제 성능의 상당 부분이 이 parking preset 하나에 집중된다.
- 다른 sleeve를 잘 만들어도, parking이 너무 세면 비교가 왜곡되기 쉽다.

## 5. Sleeve 2: Idle Alpha

Preset:

- `micro_event_alpha_plus_event_plus`

핵심 역할:

- `Core`가 안 먹는 low-frequency post-allocation micro-event 알파를 뒤에 붙인다.
- 그냥 엔진을 추가하는 게 아니라, `post_allocation_idle_only` 엔진으로 따로 붙는다.
- 그리고 synthetic breadth engine 하나를 더 넣는다.

### 5.1. 엔진 구성

이 preset은 아래 5개 엔진으로 구성된다.

1. `next_open_long_material_contract_mixed_micro_postmarket`
2. `next_open_long_guidance_mixed_micro_postmarket`
3. `next_open_long_earnings_unknown_inline_postmarket_strict`
4. `next_open_long_bullish_raised_strong`
5. `idle_macro_breadth_smh_postalloc`

앞의 4개는 micro event snapshot 엔진이고, 마지막 1개는 synthetic breadth engine이다.

### 5.2. 각 엔진의 의도

`next_open_long_material_contract_mixed_micro_postmarket`

- `material_contract`
- small/mid-ish universe
- post-market
- next-open long
- 보수적인 gap cap
- max hold `12`

`next_open_long_guidance_mixed_micro_postmarket`

- `guidance_update`
- mixed direction parse에서 under-owned micro setup
- post-market
- next-open long
- max hold `12`

`next_open_long_earnings_unknown_inline_postmarket_strict`

- `earnings_release`
- direction `unknown`
- guidance `inline_or_maintained`
- post-market
- strict filter
- max hold `12`

`next_open_long_bullish_raised_strong`

- `earnings_release`
- bullish
- guidance `raised`
- 강한 reaction day
- 높은 close location
- 더 긴 max hold `20`

`idle_macro_breadth_smh_postalloc`

- synthetic breadth engine
- trade symbol은 고정 `SMH`
- breadth symbols는 `QQQ`, `XLK`, `SMH`
- breadth count `2` 이상
- max hold `2`

### 5.3. allocator 설정

이 preset은 엔진만 붙이는 게 아니라 `IdleAlphaConfig`도 같이 조정한다.

- dynamic allocator enabled
- cash ratio low/high: `0.04 / 0.16`
- cash scale low/high: `0.8 / 1.025`
- crowded primary candidate count: `6`
- crowded primary unique sector count: `4`
- crowded scale: `0.79`
- synthetic scale multiplier: `1.03`
- snapshot scale multiplier: `1.02`
- synthetic reentry cooldown days: `2`
- min scale: `0.6`
- max scale: `1.045`

즉 cash가 많고 core slate가 덜 혼잡한 날에만 idle alpha를 조금 더 키운다.

### 5.4. 이 preset의 핵심 특징

- core와 같은 loop에서 무작정 싸우는 방식이 아니다.
- `selection_priority = -1/-2`
- `post_allocation_idle_only = True`

즉 core allocation 이후 남은 자본으로만 진입한다.

### 5.5. 장점

- core와의 충돌을 줄인다.
- 일반적인 PEAD와 다른 micro-event 알파를 추가한다.
- breadth engine이 따로 있어 `SMH` 계열 확장도 먹을 수 있다.

### 5.6. 한계

- 엔진 수가 많아 설명과 attribution이 복잡하다.
- 실제로는 synthetic breadth engine이 존재감이 클 수 있다.
- 사용자 체감상 `SMH`가 자주 보일 수 있다.

## 6. Sleeve 3: Form 4

Preset:

- `reserve_form4_cluster_plus_fresh`

핵심 역할:

- 내부자 매수 클러스터를 `next_open`으로 짧게 먹는 reserve sleeve다.

### 6.1. 입력 데이터

- `pit_events_path = data/reference/form4_daily_events_pit.parquet`

즉 point-in-time Form 4 event cache를 사용한다.

### 6.2. 기본 파라미터

- reserve pct: `0.06`
- min owner count: `2`
- min total value: `5,000,000`
- min purchase pct: `0.0`
- max lag days: `None`
- hold days: `20`
- max positions: `6`
- max new per day: `2`

### 6.3. 선택 로직

Form 4 후보는:

- 전 거래일 이후부터 어제까지 filing된 event를 본다.
- 오늘이 해당 filing의 `first trading day after filing`인 경우만 진입한다.
- `owner_count >= 2`
- `total_value >= 5M`
- `weighted_purchase_pct >= min_purchase_pct`
- `event_day_count >= min_event_day_count`
- `max_lag_days` 조건 통과
- 이미 열려 있는 symbol은 제외

정렬 우선순위는:

1. `owner_count`
2. `event_day_count`
3. `weighted_purchase_pct`
4. `total_value`

즉 단순히 dollar value만 보지 않고, `몇 명이 동시에 샀는가`를 가장 강하게 본다.

### 6.4. 진입/청산 구조

- entry timing: `next_open`
- max holding days: `20`
- 기본적으로 early failure 룰은 살아 있다.

### 6.5. 현재 중요한 구현상 특성

현재 Form 4 sleeve는:

- `equity_est * reserve_pct`로 예산을 계산하지만
- 실제 집행 예산은 `min(reserve_budget, self._cash)`다.

즉 현재 구현은:

- `Ownership`
- `Risk-Off`
- `Dividend`

처럼 parked cash를 일부 풀어서 reserve를 채우지 않는다.

이 말은 곧:

- `Form 4`는 개념상 reserve sleeve지만
- 실제로는 `그 시점에 free cash가 남아 있을 때만` 강하게 작동한다.

이 특성은 성능에 큰 영향을 준다.

### 6.6. 현재 평가

- 알파는 완전히 무효가 아니다.
- 하지만 다른 sleeve 대비 일관성은 가장 약한 편이다.
- 자금을 더 열어준다고 항상 좋아지지 않았고, 실제로 추가 진입분 질이 나빠지는 구간이 있었다.

즉 `Form 4`는 현재 스택에서 필요는 하지만, 가장 신중히 다뤄야 하는 sleeve다.

## 7. Sleeve 4: Ownership 13D

Preset:

- `ownership_13d_raise_reserve_ultra_balanced_purpose_plus_cooldown90_r95`

핵심 역할:

- 저빈도지만 임팩트가 큰 `13D amendment` 기반 소유구조 변화를 크게 탄다.

### 7.1. 입력 데이터

- `pit_events_path = data/reference/ownership_13d13g_events_pit.parquet`

즉 13D/13G point-in-time event cache를 사용한다.

### 7.2. 기본 파라미터

- reserve pct: `0.95`
- form groups: `["13D"]`
- min percent owned: `5.0`
- min percent delta points: `2.0`
- exclude_housekeeping_purpose: `True`
- exclude_structural_exchange_purpose: `True`
- require_amendment: `True`
- require_initial: `False`
- require_activist: `False`
- require_13g_to_13d_transition: `False`
- symbol_cooldown_days_after_loss: `90`
- hold_days: `30`
- min_avg_dollar_volume: `10,000,000`
- max_positions: `6`
- max_new_per_day: `2`
- min_cash_ratio_for_overlay: `0.25`
- max_idle_deploy_pct: `0.0`

### 7.3. 이 preset 이름의 의미

`ultra_balanced_purpose_plus_cooldown90_r95`

의 의미는 대략 아래와 같다.

- `ultra_balanced`: reserve를 크게 쓴다
- `purpose_plus`: housekeeping / structural exchange 목적 filing을 뺀다
- `cooldown90`: 같은 symbol에서 loss 뒤 90일 cooldown
- `r95`: reserve pct `95%`

### 7.4. 선택 로직

후보는:

- `13D` 그룹만
- amendment만
- percent owned `>= 5%`
- delta `>= 2.0%p`
- housekeeping purpose 제외
- structural exchange purpose 제외
- loss cooldown 90일 통과
- `ADV20 >= 10M`

그리고 symbol별로 가장 좋은 event 하나만 남긴다.

정렬 키는:

1. `ownership_strength_score`
2. `activist_flag`
3. `percent_delta_points`
4. `percent_owned`

즉 핵심은 `delta 확대폭`과 `strength score`다.

### 7.5. 자본 사용 방식

Ownership sleeve는 reserve budget을 계산한 뒤:

- cash가 부족하면 parked cash를 일부 풀 수 있다.
- 따라서 Form 4보다 실제 집행력이 더 강하다.

이 슬리브는 현재 스택에서 가장 `capital-hungry`한 sleeve 중 하나다.

### 7.6. 왜 강한가

- low-frequency
- high-conviction
- purpose filter로 잡음 제거
- loss cooldown으로 같은 symbol 재진입 실패를 줄임

즉 횟수는 적지만, 한 건당 임팩트가 크다.

### 7.7. 한계

- 이벤트 수가 적다.
- reserve가 커서 parking과 직접 경쟁한다.
- 목적문구 파싱 품질에 민감하다.

## 8. Sleeve 5: Risk-Off Alpha

Preset:

- `risk_off_alpha_gld_crisis65_heavy`

핵심 역할:

- parking regime가 이미 `SGOV` 쪽일 때, 그 stress 구간에서 `GLD`를 별도 reserve sleeve로 크게 실어준다.

즉 이 sleeve는 평시 알파가 아니라 `위기 구간 전용 알파`다.

### 8.1. 기본 파라미터

- enabled: `True`
- reserve pct: `0.70`
- symbols: `["gld"]`
- momentum lookback days: `20`
- min symbol momentum: `0.05`
- min consecutive sgov days: `3`
- min parking risk score: `65.0`
- rotation momentum gap: `0.02`
- max holding days: `0`
- min cash ratio for overlay: `0.0`
- max idle deploy pct: `0.0`

### 8.2. 진입 조건

아래를 모두 만족해야 한다.

- preview parking target이 `SGOV`
- `SGOV` streak가 최소 `3일`
- parking risk score가 `65` 이상
- `GLD` 20일 모멘텀이 `5%` 이상

이 조건을 통과하면 reserve `70%`를 `GLD`에 태운다.

### 8.3. symbol 선택 방식

현재 preset은 symbols가 `["gld"]` 하나라 회전 대상이 사실상 없다.

그래도 로직상으로는:

- 후보 symbol들의 momentum을 비교
- 현재 들고 있는 symbol과 새 best symbol의 차이가 `rotation_momentum_gap`보다 크지 않으면 유지

하는 구조다.

### 8.4. 자본 사용 방식

Risk-Off Alpha는:

- reserve budget 기반
- cash가 부족하면 parked cash를 일부 풀 수 있다.

즉 이 슬리브는 parking 위에 얹는 별도 crisis reserve layer다.

### 8.5. 왜 `crisis65_heavy`인가

`crisis60`보다 느리지만 더 정제된 진입이고, `balanced_refined`보다 reserve가 커서 full stack에서 더 세게 나왔다.

핵심은:

- 너무 이른 `GLD` 진입은 불필요
- 하지만 실제 위기 구간에선 reserve를 크게 태우는 게 유리

라는 점이다.

## 9. 5개 sleeve의 상호작용

현재 스택의 핵심은 각 슬리브가 서로 완전히 독립이 아니라는 점이다.

### 9.1. capital interaction

- `Idle Alpha`는 core 이후의 후순위 엔진 집합이다.
- `Form 4`는 free cash 기반 reserve sleeve다.
- `Ownership`는 reserve sleeve이며 parking cash release가 가능하다.
- `Risk-Off Alpha`도 reserve sleeve이며 parking cash release가 가능하다.
- `Parking`은 최종 sink다.

즉 자본 경쟁은 주로 아래 축에서 일어난다.

- `Ownership` vs `Risk-Off` vs `Parking`
- `Form 4` vs available raw cash

### 9.2. practical impact

- parking이 너무 세면 나머지 sleeve 비교가 왜곡된다.
- ownership reserve가 너무 크면 parking 수익이 줄 수 있다.
- risk-off alpha가 너무 세면 `GLD` 노출이 과도해질 수 있다.

그래서 이 스택은 단순 합이 아니라 `capital routing system`에 가깝다.

## 10. 왜 지금은 이 구조를 core에 합치지 않는가

현재는 core에 전부 섞기보다 sleeve를 유지하는 편이 낫다.

이유는 아래와 같다.

- 데이터 소스가 다르다.
- 운용 목적이 다르다.
- attribution이 필요하다.
- 개별 on/off가 가능해야 한다.
- parking/ownership/risk-off는 `현금 routing` 문제까지 포함한다.

즉 지금 단계에서는:

- `core alpha`
- `idle capital utilization`

을 분리해 두는 게 더 낫다.

## 11. 현재 스택에서 빠진 것

현재 최고 수익 스택에는 아래가 없다.

- `Dividend Capture`

이유는 간단하다.

- point-in-time infra는 만들었지만
- 현재까지는 robust하게 additive하지 않았다.

즉 현재 public surface에는 관련 기반이 일부 남아 있어도, 최고 수익 스택에는 포함하지 않는다.

## 12. 운영 메모

이 스택을 쓸 때는 아래를 같이 기억해야 한다.

- `최고 수익 스택`과 `가장 단순한 스택`은 다르다.
- `최고 수익 스택`과 `가장 설명하기 쉬운 스택`도 다르다.
- 현재 가장 큰 기여자는 대체로 parking 쪽이다.
- `Form 4`는 현재 가장 불안정한 축이다.
- `Ownership`는 가장 저빈도지만 가장 의미 있는 reserve sleeve다.
- `Risk-Off Alpha`는 위기 국면에서만 존재감이 커진다.

## 13. 추천 해석

현재 최고 수익 조합은 아래처럼 이해하면 된다.

- `Parking`이 엔진이다.
- `Idle Alpha`가 micro-event 확장이다.
- `Form 4`가 insider cluster 확장이다.
- `Ownership 13D`가 ownership shock 확장이다.
- `Risk-Off Alpha`가 crisis GLD 확장이다.

즉 이 스택은 `core + 다섯 개의 별도 알파/자본-routing 레이어`다.

현재 기준에서 최고 수익 조합을 한 줄로 쓰면:

`core + qqqm_low_dd_tqqq_active_v2_gld + micro_event_alpha_plus_event_plus + reserve_form4_cluster_plus_fresh + ownership_13d_raise_reserve_ultra_balanced_purpose_plus_cooldown90_r95 + risk_off_alpha_gld_crisis65_heavy`

이 문서의 목적은 이 조합을 기억하기 쉽게 적는 게 아니라, 왜 이 조합이 이렇게 생겼는지와 각 레이어가 무엇을 담당하는지를 한 번에 이해하게 만드는 데 있다.
