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/current_best_non_core_stack.md

18 KiB

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. 현재 최고 수익 스택 예시 설정

{
  "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 예시는 아래와 같다.

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 overlayGLD 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

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