# Current Best Non-Core Sleeve Stack 작성 기준일: 2026-04-07 이 문서는 현재 `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` - 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", "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 \ --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` 핵심 역할: - 내부자 매수 클러스터를 `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 + ownership_13d_raise_reserve_ultra_balanced_purpose_plus_cooldown90_r95 + risk_off_alpha_gld_crisis65_heavy` 이 문서의 목적은 이 조합을 기억하기 쉽게 적는 게 아니라, 왜 이 조합이 이렇게 생겼는지와 각 레이어가 무엇을 담당하는지를 한 번에 이해하게 만드는 데 있다.