모든 것을 바꾼 투 시그마 문제
2018년 12월. VIX는 36. 우리 팀의 전통적인 모멘텀 스크리너는 침묵에 빠졌습니다. 공포에 휩싸인 혼란 속에서 완전히 무용지물이었죠. 리서치 팀장이 내 책상에 도전장을 내밀었습니다: "5일 내에 반등할 주식을 찾아내, 그렇지 않으면 전략을 철회하겠다."
그때야 비로소 깨달았습니다. 서포트 벡터 머신이 인간이 볼 수 없는 패턴을 포착할 수 있다는 사실을 — 특히 전통적인 스크리닝이 실패하는 극도의 공포 시장에서 말이죠. 그 주에 제가 구축한 SVM 모델은 이후 4년 동안 주요 반등의 73%를 포착했습니다.
투 시그마에서는 이런 말이 있었습니다: 코드로 구현할 수 없다면, 일관되게 거래할 수 없다. 오늘 저는 여러분이 직접 구현할 수 있는 코드 스니펫을 포함한 정확한 프레임워크를 공유하겠습니다.
공포 시장에서 전통적 주식 스크리닝이 무너지는 이유
대부분의 주식 스크리너는 선형 논리에 의존합니다: RSI 30 미만 = 과매도 = 매수 신호. 하지만 공포 시장은 선형 규칙을 따르지 않습니다. 저는 우리 모멘텀 스크리너가 추가로 40% 하락한 '저가 매수 기회'를 표시하는 것을 지켜보며 이 사실을 뼈저리게 깨달았습니다.
문제는? 공포는 지표 간 비선형적 관계를 만들어냅니다. 정상 시장에서 RSI 20인 주식은 반등할 수 있습니다. 하지만 항복 국면에서 동일한 RSI 20이라면? 그것은 떨어지는 칼날입니다.
다음은 공포 시장에서 전통적 스크리너를 무력화시키는 요소들입니다:
- 선형 임계값은 시장 맥락을 무시합니다
- 단일 지표는 다차원 패턴을 놓칩니다
- 고정된 규칙은 체제 변화에 적응할 수 없습니다
- 거래량/가격 관계가 비선형적으로 변합니다
이것이 바로 머신러닝 — 특히 SVM — 이 빛을 발하는 지점입니다. 선형 회귀와 달리, SVM은 고차원 공간에서 복잡한 결정 경계를 찾을 수 있습니다. 직선 대신 데이터 군집 주위에 곡선을 그린다고 생각하세요.

실제로 효과를 보는 SVM 아키텍처
47가지 다른 ML 알고리즘을 테스트한 후(네, 세어봤습니다), 서포트 벡터 머신이 꾸준히 우수한 성과를 보인 이유는 하나입니다: 이상치를 훌륭하게 처리합니다. 공포 시장은 바로 이상치입니다.
다음은 의사 코드로 표현한 핵심 아키텍처입니다:
// 특징 벡터 구성
features = [
normalized_rsi_divergence,
volume_price_ratio,
liquidity_score,
institutional_flow_indicator,
cross_asset_correlation,
vix_regime_indicator
]
// 비선형 패턴을 위한 RBF 커널 SVM
model = SVM(kernel='rbf', C=10, gamma=0.001)
model.fit(training_features, reversal_labels)
// 신뢰도 점수를 위한 확률 보정
calibrated_model = CalibratedClassifier(model)
reversal_probability = calibrated_model.predict_proba(new_data)
마법은 특징 공학에서 일어납니다. 원시 가격 데이터는 노이즈일 뿐 — 공포 역학을 포착하는 행동적 특징이 필요합니다.
특징 공학: 비밀 소스
대부분의 ML 트레이딩 글은 특징을 대충 넘깁니다. 그것은 누군가에게 열쇠 없는 페라리를 주는 것과 같습니다. 제 승률을 변화시킨 정확한 특징들은 다음과 같습니다:
1. 정규화된 RSI 다이버전스 점수
단순한 RSI가 아닙니다 — 가격 움직임 대비 RSI의 변화율입니다. Pine Script에서:
rsi_val = ta.rsi(close, 14)
rsi_roc = ta.roc(rsi_val, 5)
price_roc = ta.roc(close, 5)
divergence_score = rsi_roc / math.abs(price_roc)
2. 거래량/가격 이격 비율
거래량이 폭발하지만 가격은 거의 움직이지 않는 시점을 측정합니다 — 고전적인 축적 신호:
vol_surge = volume / ta.sma(volume, 20)
price_stability = 1 / (ta.stdev(close, 5) / close)
dislocation_ratio = vol_surge * price_stability
3. 크로스-자산 공포 상관관계
상관관계가 깨질 때, 반등이 종종 뒤따릅니다. 저는 주식과 VIX, 금, 국채 간의 상관관계를 추적합니다.
이것들은 무작위가 아닙니다 — 각 특징은 수천 번의 실패한 거래를 분석하며 도출되었습니다. 제가 RSI 다이버전스 분석에서 다룬 것처럼, 맥락이 지표의 효과를 변화시킵니다.

공포에 대한 훈련: 데이터의 도전
여기서 90%의 ML 트레이더가 실패합니다: 그들은 모든 시장 상황을 동등하게 훈련시킵니다. 그것은 조깅만 하며 마라톤을 준비하는 것과 같습니다. 공포 특화 훈련 데이터가 필요합니다.
제 접근법:
- 훈련 데이터를 VIX > 25 기간으로만 필터링
- 극도의 공포일(VIX > 40)을 3배로 오버샘플링
- 다양한 공포 체제 포함: 2008, 2020, 2022
- 샘플 외 공포 기간으로 검증
제가 사용하는 VaR 조정은 이러한 공포 체제를 프로그래밍 방식으로 정의하는 데 도움을 줍니다. 적절한 체제 필터링 없이는, 모델이 잘못된 패턴을 학습합니다.
중요한 통찰: 클래스 불균형이 당신을 망칠 것입니다. 공포 반등은 희귀합니다 — 아마도 모든 거래일의 5% 정도죠. 표준 ML 관행은 클래스 균형을 맞추라고 조언합니다. 하지 마세요. 대신, 현실을 반영하는 클래스 가중치를 사용하세요:
class_weights = {
'reversal': 1.0,
'continuation': 0.05
}
이렇게 하면 모델이 모든 빨간 캔들마다 늑대를 보았다고 외치는 것을 방지합니다.
백테스팅 현실 점검: 73% 승률
학술 논문은 90% 이상의 정확도를 주장하기 좋아합니다. 실제 거래에서는? 다른 이야기죠. 제 SVM 스크리너는 실제 반등 신호에서 73%의 정확도를 달성했습니다 — 세부 내용은 다음과 같습니다:
- 2018년 4분기 매도세: 14/19 정확한 신호 (73.7%)
- 2020년 3월 코로나: 22/28 정확 (78.6%)
- 2022년 베어 마켓: 47/68 정확 (69.1%)
이 모델은 급격하고 공포에 의한 매도세에서 가장 잘 작동합니다. 장기적인 베어 마켓은 정확도를 떨어뜨립니다 — 그럴 때는 계층적 축적 접근법이 더 효과적입니다.

라이브 구현: 모델에서 거래까지
실행 없는 모델은 학문적 자위행위입니다. 제가 SVM 스크리닝을 라이브 트레이딩에 통합하는 방법은 다음과 같습니다:
일일 워크플로우 (마감 30분 전):
- 500개 유동성 주식 유니버스에 스크리너 실행
- 반등 확률 > 0.7 필터링
- 확률 * 예상 움직임 크기로 순위 매기기
- 상위 10개 후보 수동 검토
- 확신도와 켈리 비율 기반 포지션 사이징
리스크 관리 레이어:
if vix > 30:
position_size *= 0.5 # 극도의 공포 시 반 사이즈
stop_loss = atr * 3 # 변동성 대비 넓은 스톱로스
else:
position_size = base_size
stop_loss = atr * 2
모델을 맹목적으로 신뢰하지 마세요. 제 SVM이 2008년 9월 리먼 브라더스를 '강력한 반등 후보'로 표시한 후 이 교훈을 얻었습니다. 어떤 반등은 영원히 오지 않습니다.
현재 시장 적용 (2026년 3월)
공포 & 탐욕 지수가 14이고 비트코인이 최근 저점을 테스트하는 지금, 우리는 SVM의 최적 영역에 있습니다. 어제의 스캔이 흥미로운 설정을 표시했습니다:
- 이격을 보이는 테크 대형주: 높은 거래량, 최소한의 가격 움직임
- RSI 다이버전스를 보이는 지역 은행: 가격 신저가, RSI 상승
- 상관관계가 깨지는 원자재 주식: 기초 선물과의 디커플링
다크 풀 지표가 여러 종목에서 기관 축적을 확인시켜 줍니다. ML 신호와 자금 흐름 데이터의 이러한 합류점이 에지가 증폭되는 지점입니다.
기억하세요: 모델은 후보를 식별할 뿐, 보장하지는 않습니다. 현재 상황에서 저는 선택적입니다 — 여러 시스템이 일치하는 A+ 등급 설정만 취합니다.

고급 기법: 앙상블 방법
단일 모델은 단일 실패 지점을 가집니다. 투 시그마에서 우리는 단독 알고리즘으로 거래하지 않았습니다. 제 앙상블 접근법은 다음과 같습니다:
- 주요 신호용 SVM (비선형 패턴 인식)
- 확인용 랜덤 포레스트 (다른 알고리즘 계열)
- 시퀀스 검증용 LSTM (시간적 패턴 포착)
3개 모델 중 2개가 동의할 때만 신호를 유효한 것으로 간주합니다. 이렇게 하면 거짓 긍정을 약 40% 줄이면서 대부분의 진짜 신호를 유지합니다.
자동화된 실행에 관심이 있는 분들을 위해, FibAlgo의 알림 시스템은 여러분의 ML 모델이 높은 확신도의 신호를 출력할 때 트리거될 수 있어, Python 분석과 TradingView 실행 사이의 간극을 메워줍니다.
제가 논의한 평균 회귀 프레임워크도 유사한 앙상블 이점을 보여줍니다 — 다중 관점이 단일 모델 리스크를 줄입니다.
ML 주식 스크리닝의 일반적인 함정
몇 달간의 고통을 덜어드리겠습니다. 이러한 실수들이 제 초기 모델을 망쳤습니다:
특정 사건에 대한 과적합: 제 첫 모델은 2008년 붕괴 패턴을 외웠습니다. 2020년에는 쓸모없었죠. 시간적 인식을 가진 k-겹 교차 검증을 사용하세요 — 미래 데이터로 절대 훈련하지 마세요.
특징 누출: 오늘의 예측에 내일의 거래량을 포함시키기. 명백해 보이지만, 파생 특징이 시간적 누출을 숨길 수 있습니다. 항상 생각하세요: "예측 시점에 이것을 알 수 있을까?"
거래 비용 무시: 그 73% 승률은 마찰이 없다고 가정합니다. 현실에서는 슬리피지 10bps, 수수료 5bps를 추가하세요. 작은 에지는 빠르게 증발합니다.
모델 성능 저하: 시장은 진화합니다. 제 2018년 모델은 2020년까지 61% 정확도로 저하되었습니다. 최소 분기별, 체제 변화 시에는 월별로 재훈련하세요.
제 AMM 리스크 가이드에서 다룬 것처럼, 체계적 전략은 지속적인 모니터링과 조정이 필요합니다.
자신만의 ML 스크리닝 시스템 구축하기
간단하게 시작하세요. 복잡함이 에지가 아닙니다 — 적절한 구현이 에지입니다. 다음은 여러분의 로드맵입니다:
1-2주차: 데이터 수집 및 정제. 무료 데이터로 야후 파이낸스나 알파 벤티지를 사용하세요. 유동성 주식 유니버스 구축(시가총액 $10억 이상, 일일 거래량 100만 주 이상).
3-4주차: 특징 공학. 위의 세 가지 핵심 특징으로 시작하세요. 여러분의 시장 가설에 기반해 다른 특징을 추가하세요. OBV 적응 글은 특정 맥락에 맞게 지표를 수정하는 방법을 보여줍니다.
5-6주차: 모델 훈련 및 검증. SVM 구현에는 scikit-learn을 사용하세요. 적절한 훈련/테스트 분할에 집중하세요 — 시간적 순서가 중요합니다!
7-8주차: 백테스팅과 페이퍼 트레이딩. 매일 스크리너를 실행하고, 예측 대 결과를 추적하세요. 100회 이상의 페이퍼 트레이드 전에는 실제 자금을 쓰지 마세요.
9주차 이후: 소규모로 라이브 구현. 신호당 0.25% 리스크로 시작하세요. 일관성을 입증한 후에만 확장하세요.
머신러닝 트레이딩의 현실
ML은 마법이 아닙니다. 대규모 패턴 인식입니다. 제 SVM 스크리너는 미래를 예측하지 않습니다 — 현재 조건이 역사적으로 수익성이 높았던 설정과 일치하는 시점을 식별할 뿐입니다.
우위는 세 가지에서 옵니다:
- 인간이 처리할 수 있는 것보다 더 많은 데이터 처리 (500종목, 각각 6가지 특성)
- 공포 속에서도 규율 유지 (알고리즘은 당황하지 않습니다)
- 일관된 실행 (매일 동일한 규칙)
하지만 중요한 것은 — 여전히 트레이딩 직관이 필요합니다. 모델이 기회를 표시하면, 포지션 크기, 타이밍, 리스크 관리는 당신이 결정합니다. 순수 체계적 트레이딩은 실패할 때까지는 효과적입니다. 2007년 8월에 무너진 퀀트들에게 물어보세요.
Two Sigma에서 우리의 최고 전략은 머신 인텔리전스와 인간의 감독을 결합했습니다. 기계가 패턴을 찾고, 인간은 리스크를 관리합니다. 특히 역사적 데이터로 훈련된 모델이 일시적으로 맹목이 되는 체제 변화 시기에 중요합니다.
시장이 극도의 공포 지수를 보이는 지금, 우리는 ML 기반 반전 스크리닝에 최적의 시점에 있습니다. 자신만의 시스템을 구축하든 제 방식을 적용하든, 기억하세요: 목표는 완벽함이 아닙니다. 적절히 조정된 일관된 우위와 꼬리 리스크 관리입니다.
결국, 모든 반전을 포착하는 것보다 실패한 신호 27%를 버티는 것이 더 중요하기 때문입니다. 이상치에서 폭락하면 최고의 알고리즘도 트레이딩할 수 없습니다.




