발굴 시스템 피처 ↔ 데이터 매핑표 (PM 프레임)
작성: 2026-05-24 (Sun) | 상위 Topic: L (시스템 재설계)
선행: R6 매크로 산식 + R7 실무 운영자 방법론
0. PM 프레임 — 매크로의 본질
"매크로의 본질 = ① 유동성이 시장에 들어오는가 + ② 시장참여자 심리가 개선될 가능성이 있는가."
본 매핑표의 모든 매크로 피처는 두 축 중 하나에 분류된다. 개별 피처가 verdict를 단언하지 않고, 두 축의 composite z-score → 4분면 라벨 → funnel gate / 섹터 tilt / conditional base-rate에 작동한다.
운영 원칙 (R7 운영자 합의):
- 개선되는가 = Δ-based (Druckenmiller "change of pace"), 절대 level 아님
- 극단 vs 중간 분기 (Bridgewater 격언): ±2σ 밖 = contrarian fade / ±1σ 안 = momentum follow
- 다중 컨펌 의무: 최소 3개 축 동시 동일 방향 + tape divergence
- edge 아닌 regime gate: candidate pool / 섹터 tilt / conditional base-rate에만 작동
Status 범례: ✅ 가용(즉시 산출) / 🔧 보강 필요(수집기 신설/추가) / ❌ 불가
1. 유동성 축 (L) — "자금이 위험자산으로 흐를 환경인가?"
1-1. 글로벌 유동성 (Global Liquidity)
| 피처 |
산식 |
데이터 |
가용성 |
변화 측정 |
| Fed Net Liquidity ★ |
WALCL − TGA − RRP |
FRED |
🔧 신규 수집 (WALCL, WTREGEN, RRPONTSYD 3개) |
Δ60d (R7 핵심) |
| WALCL |
Fed 자산 총액 |
FRED |
🔧 신규 |
Δ20d |
| TGA 잔액 |
재무부 일반계정 |
FRED WTREGEN |
🔧 신규 |
Δ20d |
| ON RRP |
역레포 잔액 |
FRED RRPONTSYD |
🔧 신규 |
Δ20d, "near-zero" 임계 |
| BIS Global Liquidity Index |
90+국가 USD/외통화 credit |
data.bis.org/topics/GLI |
🔧 분기 수집 |
YoY |
| EPFR fund flows |
global equity/bond flow |
EPFR (paywall) |
❌ paywall, proxy로 ETF flow 대체 |
weekly |
1-2. 금리 / Curve
| 피처 |
산식 |
데이터 |
가용성 |
| US10Y level + Δ |
FRED DGS10 |
✅ 수집 중 |
Δ20d/60d |
| US2Y level + Δ |
FRED DGS2 |
✅ 수집 중 |
Δ20d/60d |
| 2s10s slope |
DGS10 - DGS2 |
✅ 산출 가능 |
Δ20d slope_chg |
| 3m10y slope |
DGS10 - DGS3MO |
🔧 DGS3MO 신규 수집 |
Estrella probit 정식 산식 |
| Estrella probit |
Φ(-0.5333 - 0.6629 × slope_3m10y) |
derived |
🔧 (DGS3MO 필요) |
| Real Yield 10Y |
DGS10 - T10YIE |
🔧 T10YIE 또는 DFII10 신규 |
성장주/금 valuation |
1-3. 신용 (Credit Channel)
| 피처 |
산식 |
데이터 |
가용성 |
| HY OAS |
BAMLH0A0HYM2 |
FRED |
✅ 수집 중 |
| HY z-score regime |
(HY - MA60)/STD60 |
derived |
✅ |
| HYG/LQD ratio |
ETF 가격비 |
yfinance |
✅ (HYG/LQD 추가 수집 권장) |
| SLOOS net tightening |
C&I lending standards |
FRED DRTSCILM |
🔧 분기 수집 |
| HY 1차 발행 잔액 |
weekly HY issuance |
SIFMA / LCD |
🔧 신규 (paywall 가능) |
| iTraxx Crossover |
EU 신용 스프레드 |
시장 |
🔧 미수집 |
1-4. 통화 / FX (자본흐름 채널)
| 피처 |
산식 |
데이터 |
가용성 |
| DXY level + Δ |
yfinance DXY |
✅ 수집 중 |
Δ20d, 양방향 분기 룰 |
| USD/KRW |
yfinance |
✅ 수집 중 |
Δ20d, EM 자본유출 proxy |
| Broad USD index |
FRED DTWEXBGS |
🔧 신규 수집 |
EM 자본흐름 transmitter (BIS 검증) |
| KRX USD 선물 |
close/chg/oi |
✅ 수집 중 |
외인 헷지 비용 |
1-5. 한국 유동성 (Korea L overlay)
| 피처 |
산식 |
데이터 |
가용성 |
| 외인 KOSPI net cum ★ |
일별 외인 순매수 누적 |
KRX 투자자별 |
✅ (collect_market_investor_flow.py) |
| 외인 KTB net position |
채권 외인 보유 변동 |
금감원/BoK |
🔧 신규 수집 (ADB 검증 가격발견 변수) |
| 한국 회사채 AA- 스프레드 |
한국 신용 |
KRX 채권 |
🔧 신규 |
| BoK 정책금리 |
기준금리 |
BoK |
✅ (수동) |
| KRX 10Y 국채선물 |
close/chg/oi |
✅ 수집 중 |
한국 금리 sentiment |
1-6. L축 Composite
liquidity_composite_z = mean([
fed_net_liquidity_z_60d, # 핵심 (Druckenmiller)
-hy_z_60d, # HY widening = 유동성 마름
-dxy_z_60d, # USD 강세 = EM 유출
-sloos_tightening_z, # 신용 tightening
foreign_kospi_net_z_20d, # 한국 외인 자본흐름
# 가중치는 자체 백테스트로 결정
])
liquidity_delta_20d = liquidity_composite_z - liquidity_composite_z.shift(20)
# "개선 중인가" = liquidity_delta_20d > 0
2. 심리 축 (S) — "투자심리가 개선될 가능성이 있는가?"
2-1. 변동성 (Vol)
| 피처 |
산식 |
데이터 |
가용성 |
| VIX |
spot |
yfinance ^VIX |
✅ |
| VIX9D |
spot |
yfinance ^VIX9D |
✅ |
| VIX3M |
spot |
yfinance ^VIX3M |
✅ |
| VIX 텀구조 |
VIX9D / VIX3M |
derived |
✅ |
| VRP |
VIX - HV20 |
derived |
✅ |
| VVIX |
CBOE |
yfinance ^VVIX |
🔧 미확인 (추가 수집) |
| CBOE SKEW |
CBOE |
yfinance ^SKEW |
🔧 미확인 (추가) |
| VKOSPI |
KRX 옵션 |
✅ 수집 중 (proxy) |
한국 직접 심리 6 regime |
2-2. 옵션 시장 (Dealer Flow)
| 피처 |
산식 |
데이터 |
가용성 |
| SPY/QQQ P/C ratio |
put/call OI 또는 vol |
derivatives JSON |
✅ 수집 중 |
| KOSPI200 P/C OI |
KRX opt_bydd_trd |
✅ 수집 중 |
자체 분포 percentile 80/20 (미국 임계 직수입 X) |
| KOSPI200 P/C Vol |
KRX |
✅ |
intraday flow 강도 |
| MaxPain |
OI 가중 strike |
✅ 수집 중 |
만기 D-2 weak signal |
| Dealer GEX |
SpotGamma / 자체 산출 |
🔧 산출기 신설 |
flip point = 일중 reference |
| AUD/JPY |
yfinance |
🔧 신규 수집 |
S&P +0.84 상관 RORO proxy |
2-3. 서베이 Sentiment
| 피처 |
산식 |
데이터 |
가용성 |
| AAII Bull-Bear Spread |
weekly survey |
AAII web |
🔧 신규 수집 (CSV 다운로드) |
| Investors Intelligence |
newsletter 비율 |
II web (구독) |
🔧 paywall, proxy 검토 |
| NAAIM Exposure Index |
active mgr 실 포지션 |
NAAIM web |
🔧 신규 수집 |
| BofA Bull & Bear Indicator |
10 inputs composite |
BofA report |
🔧 paywall, 뉴스 trigger로 수집 |
| BofA FMS Cash% |
monthly |
BofA FMS |
🔧 paywall |
| CNN Fear & Greed |
7 구성요소 |
CNN web |
🔧 신규 수집 (web scrape) |
| Baker-Wurgler |
학술 index |
HBS data |
🔧 분기 수집 |
| Goldman RAI |
27 risk premia z |
GS report |
🔧 paywall |
2-4. 포지셔닝 (Positioning)
| 피처 |
산식 |
데이터 |
가용성 |
| CFTC COT |
TFF + Legacy |
자체 수집 |
✅ 수집 중 |
| 외국인 KOSPI200 선물 |
누적 net |
KRX |
✅ |
| basis |
선물 - 현물 |
KRX |
✅ |
| 프로그램 차익/비차익 |
KRX 프로그램 |
✅ 수집 중 |
후행지표 (시장 상태 확인용) |
| FINRA Margin Debt |
NYSE 신용 |
FINRA |
🔧 신규 수집 (3주 지연) |
| SentimenTrader Smart/Dumb |
OEX 옵션, equity P/C 등 |
proprietary |
❌ paywall, 자체 proxy 필요 |
2-5. 한국 심리 (Korea S overlay)
| 피처 |
산식 |
데이터 |
가용성 |
| 신용잔고 시총비 ★ |
신용/시가총액 |
KRX |
🔧 신규 수집 |
| 미수금 |
결제 미납 |
KRX |
🔧 신규 |
| 개인/외인/기관 거래대금 비중 |
KRX |
✅ |
개인 비중 ↑ = 역지표 |
| 신용잔고 Δ_20d_z |
derived |
🔧 |
레버리지 변화 |
2-6. S축 Composite
sentiment_composite_z = mean([
-vix_term_z, # backwardation = 단기 공포
-vvix_z, # tail hedge 매수
-pc_ratio_percentile_self, # 옵션 sentiment
-aaii_bull_bear_spread_z, # 개인 심리 contrarian
naaim_exposure_z, # 액티브 매니저 momentum (반대 부호 주의)
-bofa_bull_bear_indicator_z, # institutional contrarian
foreign_kospi200_fut_z, # positioning
-vkospi_z, # 한국 직접 심리
-credit_balance_pct_z, # 한국 retail 레버리지 (역지표)
])
sentiment_delta_20d = sentiment_composite_z - sentiment_composite_z.shift(20)
# "개선 중인가" = sentiment_delta_20d > 0
3. L × S 결합 = Regime 4분면
3-1. 4분면 라벨
def classify_regime(L_z, S_z):
if L_z >= 0 and S_z >= 0: return "L_UP_S_UP_BULL"
if L_z >= 0 and S_z < 0: return "L_UP_S_DOWN_CONTRARIAN_BUY" # ★ 최고 보상
if L_z < 0 and S_z >= 0: return "L_DOWN_S_UP_TOP_WARNING"
if L_z < 0 and S_z < 0: return "L_DOWN_S_DOWN_BEAR"
3-2. 분면별 funnel 행동
| 분면 |
candidate pool |
섹터 tilt |
stoploss |
tail hedge |
| L↑S↑ Bull |
base × 1.6 |
momentum + cyclical |
trailing 완화 |
OFF |
| L↑S↓ Contrarian Buy ★ |
base × 1.4 |
quality + beta (역추세) |
base |
OFF |
| L↓S↑ Top Warning |
base × 0.5 |
take profit, defensive |
base |
부분 ON |
| L↓S↓ Bear |
base × 0.3 |
defensive + cash + 방어주 |
-3% → -1.5% (타이트) |
ON |
3-3. KC Fed RORO Composite 차용
roro_z = pca_first_component([
credit_spread_chg, # HY OAS Δ
equity_vol_chg, # VIX Δ
funding_liquidity_chg, # SOFR-IORB / TED
fx_gold_chg, # DXY Δ + Gold Δ
])
# 운영자 표준: PCA 1st component (Charistedman-Lundblad 2024)
3-4. Δ-기반 + 다중 컨펌 (R7 운영 원칙)
# Step 1: Regime level
regime = classify_regime(L_z, S_z)
# Step 2: Δ 측정
improving = (L_delta_20d > 0) and (S_delta_20d > 0)
# Step 3: 다중 컨펌
multi_confirm_count = sum([
aaii_bear_dropping, # Δ
pc_ratio_dropping, # Δ
cot_managed_money_recovering, # Δ
audjpy_recovering, # Δ
foreign_kospi_net_turning_pos, # Δ
])
multi_confirm = multi_confirm_count >= 3
# Step 4: Tape divergence (Druckenmiller 룰)
tape_confirms = (price_5d_change > 0) # 또는 더 정교한 시장 breadth
trigger_long = (regime == "L_UP_S_DOWN_CONTRARIAN_BUY") and multi_confirm and tape_confirms
4. R4 funnel 피처 (가격 기반)
R7 외, R4(Round 4 발굴 funnel) 피처는 기존 discovery_feature_spec.md 참조. 본 표는 매크로 축 중심이라 R4는 요약만:
| 영역 |
피처 |
가용성 |
| R4 가격 모멘텀 |
RS Rating, 12-1/6-1/3-1 momentum, 신고가 근접 |
✅ (FDR + 키움 일봉) |
| R4 거래량 |
RVOL, log-vol z, CMF, OBV slope |
✅ |
| R4 VSA |
spread/close_pos/vol_ratio, 8신호 + Spring/UT |
✅ (discovery/vsa_signals.py) |
| R4 Volume Profile |
POC/VAH/VAL, HVN/LVN, rotation |
✅ (discovery/volume_profile.py) |
| R4 Wyckoff |
4국면 + 11이벤트 + 3법칙 |
✅ (discovery/wyckoff.py) |
| R4 Order Flow |
BVC, CVD, divergence |
✅ (discovery/order_flow.py) |
| R4 RRG 테마 |
RS-Ratio × RS-Momentum, 4분면 |
🔧 산출기 신설 |
| R4 MST 상관 클러스터 |
Mantegna 1999, 60d corr → 거리 |
🔧 산출기 신설 |
| R4 Isolation Forest |
다차원 outlier |
🔧 |
5. R5 펀더·이벤트 피처
R5도 본 표 외 별도. 요약:
| 영역 |
피처 |
가용성 |
| R5 EarnAccel ★ |
EPS 성장률 2차 미분 |
🔧 (DART 분기 재무 + 시계열 산출기) |
| R5 SUE |
(실제-기대)/σ |
🔧 (FnGuide 컨센서스 ❌ 또는 시계열 기대모형 ✅) |
| R5 revenue_driven |
매출 서프라이즈 동반 |
🔧 |
| R5 quarters_to_breakeven |
적자축소 외삽 |
🔧 |
| R5 op_leverage |
EPS%/매출% |
🔧 |
| R5 코스피200 정기변경 |
컷오프 마진 × 패시브 매수/거래대금 |
🔧 (6/12월 결정론적) |
| R5 자사주 소각 CAR |
DART 공시 + 이벤트 스터디 |
🔧 |
| R5 내부자 클러스터 |
DART 임원 매수 30일 내 2인+ |
🔧 |
| R5 M&A spread |
시장내재 성공확률 |
🔧 |
6. 데이터 보강 갭 — 우선순위
R7 운영자 합의에 따라 우선순위:
P0 (즉시 필요 — L축 핵심)
- Fed Net Liquidity = WALCL + TGA + RRP daily 자동 수집기 (FRED 3 시리즈)
- FRED DGS3MO — Estrella probit 정식 산식
- FRED T10YIE 또는 DFII10 — Real yield
- FRED DRTSCILM (SLOOS) — 분기 수집 + tightening 지수
P1 (S축 핵심)
- AAII Bull-Bear Spread weekly CSV (open data)
- NAAIM Exposure Index weekly CSV (open data)
- CNN Fear & Greed Index daily (web scrape 또는 mirror)
- VVIX / SKEW yfinance 추가 수집
P2 (한국 핵심)
- 외인 KTB net position (BoK 또는 금감원)
- 신용잔고 / 미수금 (KRX 종합 통계)
- AUD/JPY yfinance 추가
- Broad USD index DTWEXBGS FRED 추가
P3 (보강)
- HY 1차 발행 잔액 SIFMA/LCD (paywall 가능)
- iTraxx Crossover 시장 데이터
- Naphtha-Brent crack swap CME
- FINRA Margin Debt monthly (3주 지연)
P4 (paywall - proxy 우선)
- EPFR fund flows ❌ paywall → ETF flow proxy
- BofA Bull & Bear Indicator ❌ paywall → 뉴스 trigger 수집
- Goldman RAI ❌ paywall
- SentimenTrader ❌ paywall → 자체 proxy
7. 첫 백테스트 설계 (PM 프레임 검증)
가설
"L×S 4분면 라벨이 한국 BUY_STRONG verdict의 D+20 alpha에 conditional 영향을 준다"
변수 (단순화 — P0/P1만, 즉시 산출 가능)
- L축: Fed Net Liquidity Δ20d_z + HY z60 (S307 캐시 기간 외 Fed 데이터 추가 수집)
- S축: AAII Bull-Bear Δ4w + VKOSPI z60d + 외인 KOSPI net z20d
- regime label: 4분면
백테스트
- 모집단: S307big 250종목 캐시 (47,456 samples)
- 시점 t에 regime label 부여 (t-1 데이터까지만)
- conditional alpha:
mean(D+20 ret | regime, verdict) matrix
- DSR + PBO + Combinatorial Purged CV 검증
성공 기준
- regime별 BUY_STRONG D+20 alpha가 통계적으로 다름 (Wilcoxon p<0.05)
- L↑S↓ 분면이 다른 분면보다 D+20 alpha 유의하게 높음 (R7 CF7 가설 검증)
- DSR > 0 (다중검정 보정 후 양수)
- 표본 cell n ≥ 30 (regime 4 × verdict 5 = 20 cell)
산출
data/backtest/lxs_v1/regime_alpha_matrix.parquet
docs/research/2026-MM-DD_lxs_first_backtest.md
8. 발굴 시스템 5층 통합 (R3 ~ R7)
| 단계 |
리서치 |
역할 |
| ① 발굴 funnel |
R4 |
종목 트랙 + 테마 트랙 → 후보 압축 |
| ② 펀더·이벤트 |
R5 |
EarnAccel / DART 이벤트 |
| ③ 매크로 regime |
R6 + R7 (본 매핑) |
L×S 4분면 → funnel gate + 섹터 tilt |
| ④ 차트·수급 layer |
R3 |
Layer A/B/C 정규화 |
| ⑤ LLM 종합 |
R1·R2 |
구조화 사실 → D+N verdict |
| ⑥ base-rate 엔진 |
R3·R4·R6·R7 |
conditional 확률 + walk-forward |
LLM macro_context yaml 표준:
macro_context:
# L축
liquidity_composite_z: +0.8
liquidity_delta_20d: +0.3
fed_net_liquidity_z_60d: +1.1
hy_z_60d: +0.4
# S축
sentiment_composite_z: -1.5
sentiment_delta_20d: +0.4
vix_term_regime: "BACKWARDATION"
aaii_bull_bear_spread_z: -1.8
vkospi_z: +1.2
# Korea overlay
foreign_kospi_net_cum_z: -1.8
pcr_percentile_self: 85
credit_balance_pct_z: +0.7
# Regime
regime_quadrant: "L_UP_S_DOWN_CONTRARIAN_BUY" # ★
regime_confidence: 0.72
multi_confirm_count: 4
tape_divergence: true
9. 다음 작업 (실행 순서)
- P0 데이터 수집기 신설 (Fed Net Liquidity + DGS3MO + T10YIE + SLOOS) —
scripts/fetch_fed_liquidity.py
- P1 sentiment 수집기 신설 (AAII + NAAIM + CNN F&G + VVIX/SKEW) —
scripts/fetch_sentiment_indices.py
- L축 / S축 composite 산출기 —
scripts/macro/build_lxs_regime.py
- 첫 백테스트 (§7) 실행
- 결과 따라 가중치 조정 + 4분면 임계 재조정
- LLM macro_context yaml 표준 적용 —
morning/signal-synthesizer 입력 변경
- R7 신규 보강 갭 (P2/P3) 순차 신설