| 트리거 (시장 심리) | VIX | 달러 (DXY) | 금 · 엔화 | 미국채 | 성장주 · 코인 | 신흥국 (EM) |
|---|---|---|---|---|---|---|
|
🔴 위험 회피 (Risk-Off)
전쟁 · 금융위기 · 은행 파산 · 패닉
|
급등 ▲ 30 이상 경계 |
강세 ▲ 최고의 피난처 |
급등 ▲ 안전자산 쏠림 |
강세 ▲ 금리 하락 (채권 가격↑) |
급락 ▼ 위험자산 투매 |
급락 ▼ 달러 강세에 타격 |
|
🟢 위험 선호 (Risk-On)
경기 호조 · 금리 인하 · 유동성 공급
|
하락 ▼ 20 이하 안정 |
약세 ▼ 위험자산으로 분산 |
하락/보합 ▼ 매력 감소 |
약세 ▼ 금리 상승 (채권 가격↓) |
급등 ▲ 하이 리턴 추구 |
강세 ▲ 자금 유입 |
| 트리거 (실물 경기) | 구리 (Dr. Copper) | 하이일드 스프레드 | ISM 제조업 PMI | 기업 실적 기대감 | 증시 전반 |
|---|---|---|---|---|---|
|
🟢 경기 확장 (호황)
고용 증가 · 투자 확대 · 소비 증가
|
상승 ▲ 산업 수요 폭발 |
축소 ▼ 부도 위험 감소 |
50 이상 ▲ 제조업 확장 구간 |
상승 ▲ | 상승 ▲ |
|
🔴 경기 침체 우려
고용 감소 · 소비 위축 · 재고 증가
|
하락 ▼ 재고 쌓임, 공장 스톱 |
확대 ▲ 신용 경색, 돈줄 마름 |
50 이하 ▼ 제조업 수축 구간 |
하락 ▼ | 하락 ▼ |
| 트리거 (실질 금리) | 금 (Gold) | 고PER 성장주 · 기술주 | 가치주 · 배당주 | 달러 (DXY) | 신흥국 채권 |
|---|---|---|---|---|---|
|
🔴 실질 금리 상승
물가 안정 · 연준 긴축 → 이자가 물가보다 더 오름
|
하락 ▼ 이자 주는 곳으로 자금 이탈 |
급락 ▼ 미래 현금흐름 할인율 폭격 |
보합/강세 ➖ 배당 vs 금리 경쟁 |
강세 ▲ 금리 매력 증가 |
약세 ▼ 달러 강세 = 신흥국 자금 이탈 |
|
🟢 실질 금리 하락
연준 완화 · 인플레 급등 → 이자가 물가 상승을 못 따라감
|
상승 ▲ 화폐가치 하락 헷지 |
급등 ▲ 풍부한 유동성 수혜 |
약세 ▼ 배당 상대 매력 감소 |
약세 ▼ | 강세 ▲ 자금 유입 |
| 금리차 상태 | 의미 | 은행주 | 성장주 | 경기방어주 | 증시 포지션 |
|---|---|---|---|---|---|
|
🔴 역전 (Inversion)
2년물 > 10년물 (음수 구간)
|
연준의 단기 금리 급인상으로 시장이 질식 상태. 6~18개월 내 침체 확률 급증. |
약세 ▼ 예대마진 축소 |
약세 ▼ 불안감 반영 |
강세 ➖ 헬스케어·유틸 |
⚠️ 경계 박스권 횡보, 현금 비중 확대 시작 |
|
🟡 역전 → 정상화 (가파른 전환)
10년물이 2년물 추월하며 급격히 회복
|
침체 현실화, 연준이 다급하게 단기 금리 인하 시작. 역사적으로 가장 위험한 구간 |
단기 강세 ▲ 예대마진 회복 기대 |
급락 ▼ 침체 현실화 |
강세 ▲ 방어주로 피신 |
🚨 폭락 경계 역사적으로 진짜 하락장 시작 구간 |
|
🟢 정상 우상향
10년물 > 2년물 (양수, 1~2%)
|
경제가 완만하게 성장, 인플레이션 적당한 골디락스 상태. | 강세 ▲ 예대마진 확보 |
강세 ▲ | 보합 ➖ | 대세 상승장 성장주·주식 비중 확대 구간 |
| 연준 스탠스 | 달러 (DXY) | 금 · 원자재 | 성장주 · 나스닥 | 가치주 · 금융주 | 신흥국 (EM) | 비트코인 |
|---|---|---|---|---|---|---|
|
🦅 매파 (Hawkish)
금리 인상 · 인플레 경계 · QT(양적 긴축)
|
강세 ▲ | 하락 ▼ 달러 강세 역풍 |
약세 ▼ 할인율 상승 |
보합/강세 ➖ 금리 수혜 섹터 |
약세 ▼ 달러 강세에 이중 타격 |
하락 ▼ 유동성 축소 |
|
🕊️ 비둘기파 (Dovish)
금리 인하 · 경기 부양 · QE(양적 완화)
|
약세 ▼ | 상승 ▲ 달러 약세 수혜 |
급등 ▲ 할인율 하락·유동성 |
상대 약세 ▼ 예대마진 축소 |
강세 ▲ 자금 유입 |
급등 ▲ 위험 선호 + 유동성 |
| 달러 방향 | 금 · 원자재 | 유가 (WTI) | 신흥국 통화·주식 | 원/달러 환율 | 미국 수출 대기업 | 미국 내수주 |
|---|---|---|---|---|---|---|
|
💪 달러 강세 (DXY ↑)
연준 긴축 · 글로벌 위험 회피
|
하락 ▼ 달러로 표시되므로 역상관 |
하락 압력 ▼ 구매력 약화 |
약세 ▼ 달러 부채 상환 부담↑ |
원화 약세 ▲ USD/KRW 상승 |
실적 하락 ▼ 해외 매출 환산 손실 |
영향 제한적 ➖ |
|
📉 달러 약세 (DXY ↓)
연준 완화 · 위험 선호 · 재정 적자 확대
|
상승 ▲ 달러 약세 역상관 수혜 |
상승 압력 ▲ | 강세 ▲ 자금 유입 |
원화 강세 ▼ USD/KRW 하락 |
실적 개선 ▲ 해외 매출 환산 이익 |
영향 제한적 ➖ |
| 인플레이션 국면 | 원자재·에너지 | TIPS·금 | 성장주·기술주 | 은행·금융주 | 일반 국채 | 부동산(리츠) |
|---|---|---|---|---|---|---|
|
🔥 고인플레이션 (CPI 3%↑)
에너지·식품 급등 · 공급망 쇼크
|
강세 ▲ 인플레 직접 수혜 |
강세 ▲ 인플레 헷지 수단 |
약세 ▼ 금리 인상 압박 |
보합/강세 ➖ 금리 상승 수혜 |
약세 ▼ 실질 가치 하락 |
엇갈림 ➖ 자산가치↑ vs 금리↑ |
|
❄️ 디스인플레이션 (CPI 1~2%)
연준 목표 물가 도달 · 안정적 성장
|
약세 ▼ | 보합 ➖ | 강세 ▲ 이상적 환경 (골디락스) |
보합 ➖ | 강세 ▲ 금리 인하 기대 |
강세 ▲ |
|
🧊 디플레이션 (CPI 0% 이하)
수요 붕괴 · 경기 침체 · 부채 디레버리징
|
급락 ▼ 수요 붕괴 |
금 강세 ➖ 안전자산, 但 TIPS는 약세 |
약세 ▼ 기업 실적 악화 |
급락 ▼ 부실 채권 급증 |
급등 ▲ 실질 가치 상승 |
약세 ▼ 자산 가격 디플레 |
| 유가 방향 | 에너지 섹터 | 항공 · 해운 · 물류 | 화학 · 플라스틱 | 소비자 구매력 | CPI (인플레) | 원화 (KRW) |
|---|---|---|---|---|---|---|
|
⛽ 유가 상승 (WTI ↑)
OPEC 감산 · 지정학 리스크 · 수요 증가
|
강세 ▲ XLE, 엑손, 쉐브론 |
약세 ▼ 연료비 부담 급증 |
비용 증가 ▼ | 약화 ▼ 휘발유값 → 소비 감소 |
상승 ▲ 에너지 CPI 직접 반영 |
원화 약세 ▼ 에너지 수입국 부담 |
|
📉 유가 하락 (WTI ↓)
OPEC 증산 · 경기 침체 수요 감소 · 미국 쉐일 증산
|
약세 ▼ 이익 마진 축소 |
강세 ▲ 연료비 절감 |
비용 감소 ▲ | 강화 ▲ 가처분 소득 증가 |
하락 ▼ 디스인플레 요인 |
원화 강세 ▲ 수입 비용 감소 |
| 기준 자산/지표 ↑ 상승 시 | 금 (Gold) | 달러 (DXY) | 나스닥 | 원자재 | 신흥국 주식 | 미국채 가격 | 비트코인 |
|---|---|---|---|---|---|---|---|
| VIX (공포지수) ↑ | + 강세 | + 강세 | − 급락 | − 하락 | − 급락 | + 강세 | − 하락 |
| 실질 금리 ↑ | − 하락 | + 강세 | − 하락 | − 하락 | − 하락 | − 하락 | − 하락 |
| 달러 (DXY) ↑ | − 하락 | — 기준 | − 약세 | − 하락 | − 급락 | 0 혼조 | − 약세 |
| 유가 (WTI) ↑ | 0 혼조 | − 약세 | 0 혼조 | + 상승 | 0 혼조 | − 하락 | 0 혼조 |
| 구리 (Dr.Copper) ↑ | 0 혼조 | − 약세 | + 상승 | + 상승 | + 상승 | − 하락 | + 상승 |
| 나스닥 ↑ | 0 혼조 | 0 혼조 | — 기준 | 0 혼조 | + 상승 | 0 혼조 | + 상승 |
| 국면 | USD/JPY | 일본 닛케이 | 나스닥·성장주 | 금 (Gold) | 신흥국 (EM) | 비트코인 | 미국채 |
|---|---|---|---|---|---|---|---|
|
🟢 캐리 구축 (엔 약세)
BOJ 금리 동결·완화 / 미일 금리차 확대
|
엔 약세 ▲ USD/JPY 상승 |
강세 ▲ 수출 기업 수혜 |
강세 ▲ 글로벌 유동성↑ |
보합 ➖ | 강세 ▲ 자금 유입 |
강세 ▲ 위험 선호↑ |
보합 ➖ |
|
🔴 캐리 청산 (엔 급등)
BOJ 금리 인상 / 달러 급락 / 패닉 셀
|
엔 급등 ▼ USD/JPY 급락 |
급락 ▼ 수출 경쟁력 훼손 |
급락 ▼ 레버리지 강제 청산 |
초기 하락 ▼ 마진콜로 금도 투매 |
급락 ▼ 달러 부채 상환 압박 |
급락 ▼ 위험자산 일괄 투매 |
강세 ▲ 안전자산 피신 |
|
🔵 청산 후 안정기
BOJ 개입 중단 / 연준 완화 시사
|
안정화 ➖ USD/JPY 반등 |
반등 ▲ 과매도 회복 |
강한 반등 ▲ V자 복귀 패턴 |
강세 ▲ 안전자산 수요 지속 |
반등 ▲ | 반등 ▲ | 보합 ➖ |
- 1998년 — 러시아 디폴트·LTCM 위기. 엔화 폭등, 글로벌 주식 -20%
- 2007~2008년 — 서브프라임 충격. 엔캐리 청산이 금융위기 증폭
- 2024년 8월 — BOJ 0.25% 깜짝 인상. 닛케이 -12%, 나스닥 -10%, BTC -15% (3일)
규모 약 80억 달러의 사모신용 펀드. 2026년 1분기에 투자자들이 전체 주식의 11% 환매 요청 → 분기별 5% 한도 규정 적용으로 요청액의 46%인 약 1억 6,900만 달러만 지급. 펀드는 22억 달러 이상의 유동성(현금) 보유 중이나, 자산 수익률 하락·M&A 시장 불확실성을 이유로 Gate 유지.
| 구분 | 내용 | 시장 해석 |
|---|---|---|
🔴 Gate 발동 환매 요청 > 분기 한도 초과 |
투자자 이탈 수요가 한도를 넘어섬. 펀드는 매월·분기별로 나눠서 지급 | 부정적 ▼ 숨겨진 유동성 스트레스. 사모시장 불안 선행 신호 |
🟡 Gate 지속 복수 분기 연속 한도 초과 |
투자자 신뢰 이탈 가속. 신규 투자자 유입 차단, NAV 하락 압력 | 위험 ▼▼ 펀드런 전조. 평가손실 가시화 가능 |
🟢 Gate 해제 환매 요청 감소 or 자산 매각 성공 |
유동성 정상화. 투자자 신뢰 회복 | 긍정적 ▲ 사모시장 안정화 신호 |
| 항목 | 퍼블릭 펀드 (ETF·공모) | 사모신용 펀드 (Private Credit) |
|---|---|---|
| 환매 | 즉시 (T+1~2) | 분기별 5% 한도 (1년에 최대 20%) |
| 자산 평가 | 시장가 (투명) | NAV 기반 (불투명, 지연 반영) |
| 레버리지 | 제한적 | 높음 (2~4배 일반적) |
| 시장 규모 | — | 글로벌 1.7조 달러+ (2024년 기준, 급성장 중) |
| 위기 시 | 즉각 가격 반영 | Gate로 손실 은폐 → 나중에 한꺼번에 폭락 |
- 초저금리 시대 과잉 팽창: 2020~2022년 제로금리 때 급팽창 → 현재 고금리에서 기초 자산 부실화
- M&A 시장 냉각: IPO·M&A 감소로 Exit 기회 줄어 유동성 확보 어려움
- 대출 연체율 상승: 중소기업 대출 중심인 사모신용, 경기 둔화 시 부실 확대
- NAV 불투명성: 손실을 즉시 반영하지 않아 실제 위험이 시장에 과소평가됨
SaaS 기업에 대출 → CLO화 → CLO 파생상품
대출 묶어 재판매 → 담보 → JPM·Barclays 등
Warehouse line 대출
| 사건 | 내용 | 심각도 |
|---|---|---|
| First Brands·Tricolor | 자동차 SaaS 기업 파산 | 🔴 디폴트 |
| Blue Owl Gating | 환매 중단, 유동성 위기 | 🔴 Gating |
| BlackRock 평가손 | 100센트 → 0, 하룻밤에 전액 손실 | 🔴 전손 |
| 영국 MFS 붕괴 | Barclays·Apollo 수십억 노출 | 🔴 연쇄 위험 |
| JPM 담보 삭감 | 소프트웨어 대출 가치 하향 조정 | 🟡 경고 |
| PIK 비중 8.8% | 현금 못 내고 원금에 가산 (이자의 이자화) | 🟡 악화 중 |
- 국민연금·한투: 해외 PE LP로 익스포저 有. 사모신용 부실 시 간접 영향
- KKR·Apollo 주가: PE 섹터 직접 지표. 위기 심화 시 주가 급락 가능
- 달러·안전자산 선호: 위기 심화 시 원화 약세, 금·달러 강세 예상
| 국면 / 유형 | 금 · 은 | 유가 (WTI) | 달러 (DXY) | 미국 증시 | 방산주 (ITA) | 신흥국 EM | 비트코인 |
|---|---|---|---|---|---|---|---|
|
💥 전쟁 발발 직후
초기 패닉 · 1~4주 / 불확실성 극대화
|
급등 ▲ 안전자산 최우선 |
급등 ▲ 공급 차질 우려 |
강세 ▲ 기축통화 피난 |
급락 ▼ 패닉셀 -5~15% |
급등 ▲ 국방비 확대 기대 |
급락 ▼ 위험회피 자금 이탈 |
하락 ▼ 위험자산 분류 |
|
📅 전쟁 장기화 (3~12개월)
시장 적응 · 경제 피해 제한적 확인
|
강세 유지 ▲ 인플레 헷지 |
고유가 지속 ▲ 에너지 우려 상존 |
안정 ➖ | 회복·상승 ▲ 전쟁 특수·재정확대 |
강세 ▲ 수혜 지속 |
혼조 ➖ 국가별 편차 큼 |
회복 ➖ 디지털 피난처 논쟁 |
|
🛢️ 중동 에너지 전쟁
호르무즈 해협 봉쇄 위협 / OPEC 핵심국
|
강세 ▲ | 폭등 ▲ 공급 30% 차질 가능 |
강세 ▲ | 급락 후 혼조 ▼ CPI 상승 부담 |
급등 ▲ 최대 수혜 |
급락 ▼ 에너지 수입국 타격 |
하락 ▼ |
|
⚛️ 핵 / 대규모 전면전
G2 갈등 · 핵 위협 / 시스템 리스크
|
폭등 ▲ 궁극적 안전자산 |
폭등 ▲ | 폭등 ▲ 달러·엔 동시 강세 |
폭락 ▼ 시장 기능 마비 |
급등 ▲ | 폭락 ▼ | 폭락 ▼ 네트워크 불안 |
- 1990 걸프전 — 발발 후 -20%, 지상전 개시 후 V자 반등. 6개월 후 전쟁 전 수준 회복
- 2001년 9/11 — 개장 후 -15%(1주), 3개월 후 완전 회복
- 2003 이라크전 — 전쟁 전부터 하락, 전쟁 시작 동시에 바닥 확인 후 급등 (소문에 팔고 사실에 사라)
- 2022 러-우크라 — 발발 직후 -3%, 1개월 후 회복. 에너지주 폭등, 방산주 폭등
- 2023 이스라엘-하마스 — 발발 후 -1% (제한적 충격). 금 +5%, 유가 +4%
EMA (지수이동평균) = 최근 데이터에 더 큰 가중치
k = 2 ÷ (N+1)
SMA는 노이즈 적고 추세 확인에 강함
주요 주기: 20일(단기), 50일(중기), 200일(장기)
→ 강세 전환 신호. 기관 추세 매수 시작
데드크로스 — 단기MA(50일)가 장기MA(200일)를 하향 돌파
→ 약세 전환 신호. 중장기 하락 추세 진입
⚠️ 주의: 횡보장에서 잦은 크로스 = 휩소(Whipsaw). 거래량 확인 필수
하락 추세: 주가가 MA 아래에 있고 MA 터치 시 저항 확인 후 하락
매수 타이밍: 강한 추세 중 20일/50일 MA 눌림목 지지
매도 타이밍: 200일 MA 이탈 후 리테스트(저항) 실패
200일 SMA는 기관들이 가장 많이 보는 선 — 이탈 시 대형 움직임
리본 펼쳐짐(위에서 아래 정렬) = 강한 상승 추세
리본 수렴(뒤엉킴) = 추세 약화, 방향 전환 주의
리본 역전(아래서 위 정렬) = 강한 하락 추세
활용: 리본이 넓게 펼쳐진 채 주가가 리본 위에 있으면 추세 추종 매매 유효
RS = 평균상승폭 ÷ 평균하락폭 (14일)
30 이하 = 과매도 → 매수 고려
50선 = 강세/약세 기준선
다이버전스(핵심!):
강세 다이버전스: 주가 저점↓↓ + RSI 저점↑↑ → 반등 예고
약세 다이버전스: 주가 고점↑↑ + RSI 고점↓↓ → 하락 예고
시그널선 = MACD의 EMA9
히스토그램 = MACD − 시그널
데드크로스: MACD선이 시그널선 하향 돌파 → 매도
히스토그램 확장: 현재 추세 강화 중
히스토그램 수축: 추세 약화, 전환 준비
0선 돌파: MACD가 0 상향 = 중기 매수, 0 하향 = 중기 매도
%D = %K의 3일 이동평균
20 이하 = 과매도 구간
%K가 %D 상향 돌파 → 단기 매수 신호
%K가 %D 하향 돌파 → 단기 매도 신호
주의: 강한 추세장에서 과매수 구간에서도 계속 오를 수 있음. RSI와 함께 확인
0~20: 추세 없음 (횡보장) — 돌파 신호 믿지 말 것
20~40: 적당한 추세 — 추세 추종 시작 가능
40+: 강한 추세 — 추세 추종 최적
활용: ADX 25+ 이면서 RSI·MACD 신호 발생 시 신뢰도 최고.
ADX 20 이하이면 오실레이터(RSI) 중심으로 매매
상단밴드 = SMA + 2σ
하단밴드 = SMA − 2σ
밴드 수축(스퀴즈): 변동성 극도로 낮아짐 → 곧 큰 변동 예고
밴드 확장: 큰 움직임(추세) 진행 중
상단밴드 터치 후 하락 + RSI 70 이상 → 강한 매도 신호
밴드워크(Band Walk): 강한 추세에서 상단/하단 밴드를 타고 이동
→ 상단밴드를 계속 터치 = 매우 강한 상승 추세 (매도 신호 아님!)
스퀴즈 후 돌파 방향으로 추세 형성. 거래량으로 방향 확인
%B < 0: 하단밴드 아래 (강한 하락 모멘텀)
%B = 0.5: 중간밴드(SMA) 위치
다이버전스 활용: 주가 신고점 + %B 신고점 미갱신 → 약세 신호
볼린저 밴드가 켈트너 채널 안으로 들어오면 = 스퀴즈 확정
라조르 스퀴즈(Squeeze Momentum):
BB가 KC 내부 → 에너지 응축 중 (회색 점)
BB가 KC 외부로 탈출 → 추세 폭발 임박 (컬러 점)
히스토그램 녹색·증가 → 상승 추세 / 적색·증가 → 하락 추세
상승 + 거래량 감소 = 약한 랠리 → 매도 준비
하락 + 거래량 증가 = 강한 매도세 → 패닉 셀 주의
하락 + 거래량 감소 = 약한 조정 → 지지 후 반등 가능
돌파 + 거래량 2배 이상 = 진짜 돌파 (True Breakout)
OBV 신고점 + 주가 신고점 = 강한 상승 추세 확인
주가 신고점 + OBV 고점 낮아짐 = 약세 다이버전스 → 하락 경고
주가 신저점 + OBV 저점 높아짐 = 강세 다이버전스 → 반등 예고
OBV 추세선 이탈이 주가 이탈보다 먼저 발생 → 선행지표
주가 > VWAP: 당일 매수자 평균 이익 → 매수세 우위
주가 < VWAP: 당일 매수자 평균 손실 → 매도세 우위
당일 VWAP 재돌파 = 강한 매수 신호 (기관 다시 진입)
데이트레이딩에서 가장 중요한 단일 지표
POC 위: 강한 지지선 역할
POC 아래: 강한 저항선 역할
VAH(Value Area High): 전체 거래량 70% 구간 상단
VAL(Value Area Low): 전체 거래량 70% 구간 하단
VAL 위 복귀 → 매수 / VAH 이탈 후 복귀 실패 → 매도
- 망치형 (Hammer): 긴 아래 꼬리 + 짧은 몸통. 하락 후 지지 신호
- 역망치형 (Inverted Hammer): 긴 위 꼬리. 하락 후 매수세 유입 시도
- 불리시 인걸핑 (Bullish Engulfing): 양봉이 전날 음봉 완전 포함 → 강력 반등
- 피어싱 라인 (Piercing Line): 음봉 중간 이상 진입한 양봉
- 모닝스타 (Morning Star): 음봉 + 도지/소봉 + 큰 양봉 3일 패턴
- 세 병사 (Three White Soldiers): 3연속 강한 양봉
- 교수형 (Hanging Man): 상승 후 긴 아래꼬리 음봉 → 매도세 유입
- 유성형 (Shooting Star): 긴 위꼬리 음봉. 상승 후 고점 저항
- 베어리시 인걸핑 (Bearish Engulfing): 음봉이 전날 양봉 완전 포함
- 이브닝스타 (Evening Star): 양봉 + 도지/소봉 + 큰 음봉
- 다크 클라우드 커버: 양봉 중간 이하로 내려온 음봉
- 세 까마귀 (Three Black Crows): 3연속 강한 음봉
드래곤플라이 도지: 긴 아래꼬리 도지 → 강세 도지
그레이브스톤 도지: 긴 위꼬리 도지 → 약세 도지
롱레그 도지: 위아래 모두 긴 꼬리 → 극심한 불확실성
⚠️ 캔들 단독으로 믿지 말 것 — 지지/저항 구간 + 거래량과 함께 확인
갭다운 (Gap Down): 전날 종가 아래에서 시가 형성
이탈 갭 (Breakaway Gap): 박스권 돌파 + 거래량 급증 → 강한 추세 시작
이어달리기 갭 (Runaway Gap): 추세 중간 발생 → 추세 가속
소진 갭 (Exhaustion Gap): 추세 끝에 발생 → 반전 임박
"갭은 채워진다": 통계적으로 70% 이상의 갭이 결국 채워짐
왼쪽 어깨 → 머리(신고점) → 오른쪽 어깨(낮은 고점)
넥라인 하향 돌파 = 공식 매도 신호
거래량: 오른쪽 어깨 형성 시 감소 → 넥라인 돌파 시 급증
더블 바텀 (W자): 비슷한 저점 2회 형성 → 상승 반전
확인 조건: 중간 저점(넥라인)을 가격이 이탈하면 패턴 확정
컵: 3~6개월 이상 완만한 U자형
핸들: 컵 고점의 10~15% 이내 조정
돌파: 컵 고점 + 거래량 급증 = 매수 진입
상승 삼각형: 수평 저항 + 상승하는 저점 → 상향 돌파 가능성↑
하락 삼각형: 수평 지지 + 하락하는 고점 → 하향 이탈 가능성↑
쐐기형 (Wedge):
상승 쐐기(위로 수렴) → 하락 반전
하락 쐐기(아래로 수렴) → 상승 반전
돌파 시 거래량 증가 필수 확인
23.6%: 약한 조정 (강한 추세 시 여기서 반등)
38.2%: 첫 번째 주요 지지/저항
50.0%: 심리적 중간점 (피보나치 수는 아니나 실전 중요)
61.8%: 황금비율 — 가장 강력한 지지/저항
78.6%: 여기 뚫리면 추세 반전 거의 확정
실전팁: 61.8% 구간 + 200일MA 겹치는 곳 = 초강력 지지
강한 지지 조건:
- 여러 번 터치했지만 뚫리지 않은 가격
- 이전 고점/저점
- 거래량 집중 구간 (Volume Profile POC)
- 라운드 넘버 ($100, $200 등)
- 이동평균선(특히 200일)
하락 추세선: 고점들을 연결 (2개 이상의 고점 필요)
터치 횟수가 많을수록 추세선 신뢰도↑
추세선 이탈 + 거래량 급증 = 진짜 이탈
채널(Channel): 평행한 두 추세선 사이 가격 움직임
채널 상단 = 매도 구간 / 채널 하단 = 매수 구간 / 채널 이탈 = 새로운 추세 방향으로 가속
①진입: 지지 확인 + 양봉 + 거래량 증가 → 진입
②손절: 지지선 2~3% 하방 / 절대 손절 폭 정해놓기
③목표: R:R(리스크 대비 수익) = 최소 1:2 이상 설정
⚠️ 손절 없는 매매는 도박
월봉/주봉: 대추세 방향 확인 (매크로 방향)
일봉: 스윙 트레이딩 주 타임프레임
4시간봉: 진입 타이밍 세밀화
1시간/15분봉: 정확한 진입·손절 확인
3TF 분석법:
① 주봉 → 방향 확인 ② 일봉 → 패턴 확인 ③ 4H → 진입 타이밍
- 주봉 추세 방향 확인 (상승/하락/횡보)
- 일봉 200일 SMA 위/아래 위치
- RSI 과매도(30↓) or 다이버전스
- MACD 골든크로스 발생 여부
- 지지선 터치 or 돌파 후 리테스트
- 거래량 확인 (평균 대비 1.5배↑)
- 캔들 패턴 (반전 캔들 존재?)
- 손절가·목표가 R:R 1:2 이상 확인
→ 핵심 2~3개만 사용 (MA + RSI + 거래량)
확증 편향: 내 방향에 맞는 신호만 봄
→ 반대 시나리오도 항상 점검
횡보장에서 추세 지표 사용
→ ADX 25 미만이면 RSI 중심으로
손절 안 하기: 모든 실패의 근원
→ 진입 전에 손절가 먼저 설정
Finviz: 종목 스크리너 + 차트 빠른 확인
StockCharts: 기술적 분석 전문. P&F 차트
Investing.com: 글로벌 지수·채권·환율 차트
TradingView 필수 지표 세팅:
- EMA 20/50/200 (색상 구분)
- BB (20, 2)
- RSI (14, 30/70 기준선)
- MACD (12,26,9)
- Volume + 거래량 MA20
1파: 초기 상승 (거래량 적음, 비관론 속 반등)
2파: 조정 (1파의 38~62% 되돌림, 1파 저점 불파)
3파: 가장 강한 상승 (보통 가장 길고 거래량 최대)
4파: 조정 (3파의 38% 되돌림, 1파 고점 불파)
5파: 마지막 상승 (거래량 감소, RSI 다이버전스)
A파: 하락 조정 시작
B파: 반등 (불 트랩 주의)
C파: 강한 하락 (종종 A파 길이만큼)
① 2파는 1파 시작점을 하회하지 않음
② 3파는 가장 짧은 충격파가 될 수 없음
③ 4파는 1파 고점과 겹치지 않음
3파 목표: 1파의 161.8% ~ 261.8%
4파 되돌림: 피보 23.6% / 38.2%
5파 목표: 1파와 동일 or 1파×61.8%
- 1파 확인 → 2파 조정 대기 (피보 61.8%)
- 2파 저점에서 매수 진입
- 목표가: 1파 고점×1.618
- 손절: 1파 시작점 하방
- 거래량 감소하며 신고가
- RSI/MACD 다이버전스 발생
- 뉴스 모두 긍정적 (대중 낙관론 최고조)
→ B파가 A파 시작점 근처까지 반등
지그재그형 (Zigzag): A(5)-B(3)-C(5), 가파른 조정
→ C파가 A파보다 길어지는 경우 많음
트라이앵글형 (Triangle): A-B-C-D-E 5파 수렴
→ 주로 4파, 마지막 상승 전 압축 에너지 축적
확장형 (Expanding): 드물고 예측 어려움
→ 고변동성 장에서 출현
상승 OB (Bullish OB):
→ 급등 직전 마지막 음봉 (기관 매수 구역)
→ 가격이 다시 OB 구역으로 돌아올 때 매수
하락 OB (Bearish OB):
→ 급락 직전 마지막 양봉 (기관 매도 구역)
→ 가격이 다시 OB 구역으로 돌아올 때 매도
유효성: OB는 한 번 반응 후 효력 감소. 미반응 OB가 강함
= 연속 3개 캔들에서 첫 캔들 고가와 셋째 캔들 저가 사이 공백
Bearish FVG: 캔들1 저가 ~ 캔들3 고가 (아래에서 위로 공백)
Bullish FVG → 가격 되돌림 시 지지 / Bearish FVG → 가격 반등 시 저항
⚠️ FVG가 완전히 채워지면 효력 소멸
→ 상승 추세 중 이전 고점 상향 돌파 = 추세 지속 확인
→ 하락 추세 중 이전 저점 하향 돌파 = 추세 지속 확인
CHOCH (Change of Character) — 추세 전환
→ 상승 중 이전 저점 하향 돌파 = 하락 전환 신호
→ 하락 중 이전 고점 상향 돌파 = 상승 전환 신호
매매 원칙: CHOCH 확인 → OB/FVG에서 진입
→ BOS로 추세 방향 확인 → 추세 방향으로만 거래
Buy Side Liquidity (BSL):
→ 이전 고점 위에 쌓인 매도 손절 + 돌파 매수 주문
→ 기관이 BSL 스윕 후 하락 반전
Sell Side Liquidity (SSL):
→ 이전 저점 아래 쌓인 매수 손절 + 숏 진입 주문
→ 기관이 SSL 스윕 후 상승 반전
함정 패턴: 신고가 돌파 → 즉시 되돌림 (BSL 스윕)
= 개인 손절 → 기관 매도 → 급락
기회: SSL 스윕 후 OB 구역 진입 매수
PS (Preliminary Support): 첫 번째 지지, 하락 속도 둔화
SC (Selling Climax): 대량 거래량+급락 → 패닉 매도 절정
AR (Automatic Rally): SC 후 자동 반등 (세력 매수)
ST (Secondary Test): 지지 재확인 (거래량 감소)
Spring: 지지선 아래로 일시적 하락 (손절 유발) 후 강한 반등
SOS (Sign of Strength): 거래량 증가하며 저항 돌파
LPS (Last Point of Support): 돌파 후 되돌림 지지 → 최적 매수 타이밍
PSY (Preliminary Supply): 첫 저항, 상승 속도 둔화
BC (Buying Climax): 대량 거래량+급등 → 탐욕 절정
AR (Automatic Reaction): BC 후 자동 하락
ST (Secondary Test): 고점 재테스트 (거래량 감소)
UT (Upthrust): 고점 위로 일시적 급등 (불 트랩) 후 급락
LPSY (Last Point of Supply): 마지막 약한 반등 → 최적 매도 타이밍
SOW (Sign of Weakness): 지지 붕괴하며 하락 가속
→ 수요 > 공급 = 가격 상승 / 공급 > 수요 = 가격 하락
→ 거래량과 가격 관계로 수급 판단
② 원인·결과의 법칙
→ 매집 기간이 길수록 이후 상승폭 큼
→ 분배 기간이 길수록 이후 하락폭 큼
→ 대량 거래량 + 작은 가격 변동 = 저항 강함 (반전 경고)
→ 소량 거래량 + 큰 가격 변동 = 강한 추세 (세력 부재)
- 지지선 아래 거짓 돌파 (속임 하락)
- 즉각적인 강한 반등 (긴 아래꼬리 양봉)
- 거래량: 돌파 시 급증 → 반등 시 점차 감소
- 손절: Spring 저점 하방 1~2%
- 저항선 위 거짓 돌파 (불 트랩)
- 즉각적인 강한 하락 (긴 위꼬리 음봉)
- 손절: UT 고점 상방 1~2%
넥라인/지지선 하향 이탈
거래량 동반 시 신뢰도 ↑
이탈 확인 없이 선진입 금지
수렴 끝 지점에서 거래량 급증 주목
돌파 후 리테스트 때 진입
돌파 방향이 확인될 때까지 대기
거래량 동반 돌파 = 신뢰도 최고
목표가 = 이전 추세 폭만큼 투영
손절은 패턴 무효화 지점 바로 아래
각 타임프레임의 신호를 독립적으로 판단 후, 일치하는 방향이 많을수록 진입 신뢰도가 높아집니다.
상위 TF(일봉/주봉)가 하위 TF(1H/4H)를 지배 — 일봉이 하락 추세면 1H 매수 신호는 단기 반등에 불과할 수 있습니다
| 타임프레임 | 신호 (방향/강도/신뢰도) | 해석 | 상태 |
|---|---|---|---|
| 1H | BUY 유지 / BUY / 86 / .86 | 단기 흐름이 살아있어 추세 연장 가능 | 강세 |
| 2H | BUY 유지 / BUY / 80 / .80 | 중간 추세가 살아있어 정상 눌림 가능성이 큼 | 강세 |
| 4H | BUY 유지 / BUY / 83 / .83 | 4시간 구조 양호 | 강세 |
| 1D | 관찰 / BUY 대기 / 73 / .73 | 일봉 재정렬 — 완전 확인 전 신중 | 관찰 |
| 최종 분류 | 추세 강화 → Full Hold / 추격매수 금지 | ||
① 현재 포지션 (BUY/SELL/관찰)
② 신호 방향 (BUY/SELL)
③ 강도 점수 (0~100, 높을수록 강한 추세)
④ 신뢰도 (0.0~1.0, .86 = 86% 신뢰)
3TF BUY + 1TF 관찰 → Full Hold (추격매수 금지)
2TF BUY + 2TF 관찰 → 부분 보유, 지켜봄
상위 TF SELL + 하위 TF BUY → 단기 반등, 조심
4TF 모두 SELL → 즉시 매도 검토
↳ 상승 추세? → 매수 시나리오 우선
↳ 하락 추세? → 단기 반등에도 조심
Step 2 — 4H/2H 신호 확인
↳ 상위 TF와 같은 방향? → 진입 준비
↳ 반대 방향? → 추세 전환 신호인지 확인
Step 3 — 1H 진입 타이밍
↳ 지지선 터치 + 반등 캔들 확인
↳ 거래량 동반 여부 체크
무효화 선 설정:
이 가격 하향이탈 시 = 분석 무효
진입 전 반드시 무효화선 먼저 설정
→ Full Hold 유지, 추격매수 금지
→ 눌림목(1차 지지)에서 추가 매수 가능
→ 포지션 유지, 신규 진입 보류
→ 일봉 BUY 복귀 확인 후 행동
→ 포지션 50% 축소 검토
→ 무효화선 하향이탈 시 전량 매도
퀀트(Quant)는 수학·통계·프로그래밍을 이용해 시장에서 수익을 내는 방법입니다. 감(感)이나 뉴스가 아니라 데이터와 규칙으로 매매 결정을 내립니다.
예) 저PER, 저PBR, 모멘텀, 퀄리티
전략 검증의 첫 번째 단계
퀀트의 목표 = 알파 발굴
항상 out-of-sample 검증 필요
Q1. 팩터 투자에서 "모멘텀 팩터"가 의미하는 것은?
② 최근에 강하게 상승한 종목이 계속 상승하는 경향
③ 배당수익률이 높은 종목을 선택
④ PER이 낮은 종목을 선택
Q2. 백테스트 결과가 좋아도 실전에서 실패하는 가장 큰 이유는?
② 주식 시장이 랜덤해서
③ 과거 데이터에 과적합(오버피팅)되어 미래에 일반화 안 됨
④ 세금이 너무 높아서
Q3. 샤프 비율(Sharpe Ratio)이 높을수록 의미하는 것은?
② 위험 대비 수익률이 효율적이다 (수익/변동성)
③ 거래 빈도가 낮다
④ MDD(최대 낙폭)가 크다
Q4. 다음 중 "가치 팩터"에 해당하는 것은?
② ROE (자기자본이익률)
③ PBR (주가순자산비율) — 낮을수록 저평가
④ 52주 신고가 여부
import yfinance as yf
import pandas as pd
import numpy as np
# 1. 데이터 다운로드 (예: NASDAQ 100 구성 종목 일부)
tickers = ["AAPL", "MSFT", "NVDA", "AMZN", "META",
"GOOGL", "TSLA", "AVGO", "AMD", "INTC"]
prices = yf.download(tickers, start="2022-01-01", end="2024-12-31")["Adj Close"]
# 2. 모멘텀 팩터: 최근 6개월(126거래일) 수익률
momentum = prices.pct_change(126) # 각 종목의 6개월 수익률
# 3. 매월 리밸런싱: 상위 3개 종목 매수, 하위 3개 종목 공매도
monthly = prices.resample("ME").last() # 월말 가격
mom_monthly = momentum.resample("ME").last()
portfolio_returns = []
for date in mom_monthly.index[1:]:
scores = mom_monthly.loc[date].dropna()
if len(scores) < 6:
continue
top3 = scores.nlargest(3).index # 상위 3개 (롱)
bot3 = scores.nsmallest(3).index # 하위 3개 (숏)
# 다음 달 수익률로 측정 (date→next_date 기간 수익률)
try:
next_date = mom_monthly.index[mom_monthly.index.get_loc(date) + 1]
# ⚠️ 주의: .pct_change()는 Series에서 인접 원소 간 변화율 → 잘못된 결과
# 올바른 방법: date→next_date 두 시점의 가격 비율로 계산
long_ret = (monthly.loc[next_date, top3] / monthly.loc[date, top3] - 1).mean()
short_ret = (monthly.loc[next_date, bot3] / monthly.loc[date, bot3] - 1).mean()
portfolio_returns.append(long_ret - short_ret) # 롱-숏 수익률
except:
pass
# 4. 성과 분석
ret_series = pd.Series(portfolio_returns)
total_return = (1 + ret_series).prod() - 1
sharpe = ret_series.mean() / ret_series.std() * np.sqrt(12) # 연율화 샤프
print(f"총 수익률: {total_return:.1%}")
print(f"샤프 비율: {sharpe:.2f}")
print(f"MDD: {(ret_series.cumsum().cummax() - ret_series.cumsum()).max():.1%}")
pip install yfinance pandas numpy상관관계가 높은 두 종목의 가격 차이(스프레드)가 역사적 평균에서 벗어날 때 — 비싼 쪽을 공매도하고 싼 쪽을 매수 — 다시 평균으로 수렴할 때 이익을 냅니다. 이를 평균 회귀(Mean Reversion)라 합니다.
|Z| > 2 → 진입, |Z| < 0.5 → 청산
GLD ↔ SLV (귀금속)
BTC ↔ ETH (코인)
Q1. 페어트레이딩에서 Z-score가 +2.5일 때 올바른 행동은?
② 상대적으로 비싼 종목 공매도, 싼 종목 매수 (스프레드 수렴 기대)
③ 두 종목 모두 공매도
④ 포지션 청산
Q2. 페어 선택 시 가장 중요하게 확인해야 할 통계 검정은?
② 공적분 검정 (Engle-Granger 또는 Johansen)
③ 자기상관 검정 (Ljung-Box)
④ 분산 동질성 검정 (Levene)
Q3. 페어트레이딩의 가장 큰 리스크는?
② 공적분 관계가 붕괴되어 스프레드가 수렴하지 않는 것 (regime change)
③ 거래세가 높아서
④ 데이터가 너무 많아서
import yfinance as yf
import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import coint
# 1. BTC, ETH 데이터 (USD 기준)
btc = yf.download("BTC-USD", start="2023-01-01")["Adj Close"]
eth = yf.download("ETH-USD", start="2023-01-01")["Adj Close"]
# 2. 공적분 검정
score, pvalue, _ = coint(btc, eth)
print(f"공적분 p-value: {pvalue:.4f}") # < 0.05이면 페어 유효
# 3. 스프레드 계산 (로그 가격 차이)
log_btc = np.log(btc)
log_eth = np.log(eth)
# 헤지 비율 계산 (OLS 회귀)
from numpy.linalg import lstsq
hedge_ratio = lstsq(log_eth.values.reshape(-1,1), log_btc.values, rcond=None)[0][0]
spread = log_btc - hedge_ratio * log_eth
# 4. Z-score (60일 롤링 윈도우)
window = 60
z_score = (spread - spread.rolling(window).mean()) / spread.rolling(window).std()
# 5. 매매 신호
signals = pd.DataFrame(index=z_score.index)
signals['z_score'] = z_score
signals['signal'] = ''
signals.loc[z_score > 2, 'signal'] = 'SHORT_BTC_LONG_ETH'
signals.loc[z_score < -2, 'signal'] = 'LONG_BTC_SHORT_ETH'
signals.loc[abs(z_score) < 0.5, 'signal'] = 'CLOSE'
# 현재 신호 출력
current = signals.iloc[-1]
print(f"현재 Z-score: {current['z_score']:.2f}")
print(f"현재 신호: {current['signal'] or '관망'}")
pip install yfinance pandas numpy statsmodels폴리마켓은 실제 돈으로 미래 사건의 확률에 베팅하는 탈중앙화 예측시장입니다. 시장 참여자들의 집단 지성이 뉴스·여론조사보다 정확한 확률을 만들어냅니다. 퀀트 관점에서는: 확률의 비효율을 찾아 시스템적으로 베팅하는 것이 목표입니다.
② 뉴스 감성 분석 → 즉시 베팅
③ 관련 시장 간 차익거래
Q1. 폴리마켓에서 YES 토큰 가격이 0.73 USDC라면 의미하는 것은?
② 시장 참여자들이 해당 사건 발생 확률을 73%로 추정
③ 73 USDC를 투자해야 1 USDC 이익
④ 아무 의미 없음
Q2. 내가 사건 발생 확률을 80%로 추정하고, 시장 YES 가격이 0.65일 때 전략은?
② 관망
③ YES 토큰 매수 (내 추정 80% > 시장 65% → 저평가)
④ 두 쪽 모두 매수
Q3. 폴리마켓 자동화 매매에서 가장 어려운 부분은?
② API 연결
③ 시장 가격보다 정확한 확률 모델 만들기 (알파 생성)
④ 인터넷 연결
import requests
import pandas as pd
from datetime import datetime
GAMMA_API = "https://gamma-api.polymarket.com"
def get_active_markets(limit=20, min_volume=10000):
"""활성 마켓 목록 가져오기 (볼륨 기준 필터링)"""
res = requests.get(f"{GAMMA_API}/markets", params={
"active": True,
"limit": limit,
"order": "volume24hr",
"ascending": False
})
markets = res.json()
result = []
for m in markets:
vol = float(m.get("volume24hr", 0) or 0)
if vol < min_volume:
continue
# YES 토큰 현재 가격 파싱
tokens = m.get("tokens", [])
yes_price = next((t["price"] for t in tokens if t.get("outcome") == "Yes"), None)
result.append({
"question": m.get("question", ""),
"yes_price": float(yes_price) if yes_price else None,
"volume_24h": vol,
"end_date": m.get("endDate", "")[:10],
"slug": m.get("slug", "")
})
return pd.DataFrame(result)
# 실행 예시
df = get_active_markets(limit=50, min_volume=5000)
print(df.to_string(index=False))
# 특정 가격 구간 필터 (0.3~0.7: 불확실성 높음 → 비효율 발견 가능성↑)
uncertain = df[(df['yes_price'] > 0.3) & (df['yes_price'] < 0.7)]
print(f"\n불확실 마켓 {len(uncertain)}개:")
print(uncertain[['question', 'yes_price', 'volume_24h']].to_string())
pip install requests pandas · API 키 불필요 (공개 엔드포인트)폴리마켓에서 지속적으로 수익 내는 플레이어들의 공통점은 단순 뉴스 베팅이 아닙니다. 여러 시장의 "잘 맞추는 사람들의 중복 지점"을 찾아 시스템적으로 포지션을 잡습니다.
Polymarket, Metaculus, Kalshi, Manifold에서 동일 사건의 확률을 비교합니다. 세 시장이 다른 확률을 가리키면 → 가장 비효율적인 쪽에 베팅합니다
Polymarket 70% / Metaculus 85% / Kalshi 78%
→ Polymarket이 가장 낮음 → YES 매수 (기대값 양수)
폴리마켓은 블록체인(Polygon) 기반이라 모든 거래가 공개됩니다. 승률 높은 지갑 주소를 추적해 포지션을 복사하는 것이 "잘 맞추는 사람들의 중복 지점"입니다
PolyTrack
Polygon Scan
거래 횟수 > 50
총 수익 > $10K
속보 발생 후 폴리마켓 가격이 반영되기까지 5~30분 지연이 발생합니다. 이 갭을 자동화로 치는 것이 실전 전략입니다
가격 데이터에서 피처(Feature)를 추출하고, 레이블(Label)을 정의한 뒤, 모델이 미래 수익/방향을 예측하게 합니다. 감이 아닌 패턴과 확률로 매매합니다.
5일 후 수익률 < -1% → -1 (매도)
그 외 → 0 (관망)
Q1. ML 트레이딩에서 "Look-Ahead Bias(미래 정보 누출)"를 방지하는 방법은?
② 딥러닝 모델을 사용한다
③ 훈련/검증 데이터를 시간순으로 분리하고, 피처는 과거 데이터만 사용
④ 매일 모델을 재학습한다
Q2. XGBoost 모델에서 피처 중요도를 확인하는 가장 좋은 이유는?
② 어떤 지표가 예측에 실제로 기여하는지 파악해 불필요한 피처 제거
③ 수익률을 직접 높이기 위해
④ GPU 메모리를 절약하기 위해
Q3. 모델 정확도가 55%인데 실전에서 손실이 날 수 있는 이유는?
② 코드에 버그가 있어서
③ 거래 비용(슬리피지·수수료)과 손익비(이길 때 작고 질 때 큰 경우)가 수익을 잡아먹음
④ 시장이 항상 효율적이어서
Q4. LSTM이 일반 신경망(MLP)보다 주가 예측에 적합한 이유는?
② 시계열의 순서와 장기 의존성(과거 패턴)을 기억하는 구조이기 때문
③ 파라미터 수가 적어서
④ 해석이 쉬워서
import yfinance as yf
import pandas as pd
import numpy as np
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score, classification_report
# 1. 데이터 & 피처 공학
df = yf.download("BTC-USD", start="2020-01-01")["Adj Close"].rename("close").to_frame()
# 기술적 지표 피처
df['ret_1d'] = df['close'].pct_change(1)
df['ret_5d'] = df['close'].pct_change(5)
df['ret_20d'] = df['close'].pct_change(20)
# RSI (14일)
delta = df['close'].diff()
gain = delta.clip(lower=0).rolling(14).mean()
loss = (-delta.clip(upper=0)).rolling(14).mean()
df['rsi'] = 100 - 100 / (1 + gain / loss)
# 볼린저 밴드 %B
ma20 = df['close'].rolling(20).mean()
std20 = df['close'].rolling(20).std()
df['bb_pct'] = (df['close'] - (ma20 - 2*std20)) / (4*std20)
# 2. 레이블: 5일 후 수익률
df['label'] = (df['close'].shift(-5) / df['close'] - 1 > 0.01).astype(int)
df = df.dropna()
features = ['ret_1d', 'ret_5d', 'ret_20d', 'rsi', 'bb_pct']
# 3. 시간순 분리 (70% 훈련, 30% 테스트)
split = int(len(df) * 0.7)
X_train, y_train = df[features][:split], df['label'][:split]
X_test, y_test = df[features][split:], df['label'][split:]
# 4. 모델 학습
model = XGBClassifier(n_estimators=100, max_depth=4, learning_rate=0.05,
eval_metric='logloss', random_state=42)
model.fit(X_train, y_train)
# 5. 평가
preds = model.predict(X_test)
print(f"테스트 정확도: {accuracy_score(y_test, preds):.3f}")
print(classification_report(y_test, preds, target_names=['관망', '매수']))
# 피처 중요도
importance = pd.Series(model.feature_importances_, index=features).sort_values(ascending=False)
print(f"\n피처 중요도:\n{importance}")
# 6. 현재 신호
latest = df[features].iloc[[-1]]
prob = model.predict_proba(latest)[0][1]
signal = "🟢 매수" if prob > 0.6 else ("🔴 매도" if prob < 0.4 else "⚪ 관망")
print(f"\n현재 상승 확률: {prob:.1%} → {signal}")
pip install yfinance pandas numpy xgboost scikit-learn승률 60%짜리 전략도 잘못된 베팅 사이즈면 파산합니다. 반대로 승률 55%도 켈리 기준으로 포지션을 잡으면 장기 복리 수익을 최대화할 수 있습니다. 과베팅이 파산의 주원인입니다.
f* = 자본 대비 베팅 비율
→ f* = (p-m) / (1-m)
Q1. 폴리마켓에서 YES가 0.60이고, 내 추정 승률이 75%일 때 켈리 베팅 비율은?
② 자본의 37.5% (켈리 = (0.75-0.60)/(1-0.60) = 0.375)
③ 자본의 15%
④ 자본의 100%
Q2. 켈리 기준의 2배로 베팅하면 장기적으로 어떻게 되나?
② 장기 기대 성장률이 0%에 수렴한다 (파산 경로)
③ 변동성만 높아진다
④ 아무 차이 없다
Q3. 내 확률 추정이 틀릴 수 있을 때 켈리 기준 적용 방법은?
② 켈리 기준 3배
③ Half-Kelly (f*/2) 사용 — 추정 오차에 대한 안전 마진 확보
④ 모든 포지션을 동일 사이즈로
import numpy as np
def kelly_polymarket(my_prob, market_price, capital, half_kelly=True):
"""
폴리마켓 켈리 기준 포지션 사이저
my_prob : 내가 추정한 YES 확률 (0~1)
market_price: 현재 YES 토큰 가격 (= 시장 확률)
capital : 총 자본 (USDC)
"""
if my_prob <= market_price:
return {"action": "NO_EDGE", "bet_size": 0}
# 켈리 공식: f* = (p - m) / (1 - m)
f_star = (my_prob - market_price) / (1 - market_price)
# Half-Kelly 적용 (추정 오차 대비)
f_actual = f_star / 2 if half_kelly else f_star
# 최대 포지션 제한 (자본의 20% 이하)
f_capped = min(f_actual, 0.20)
bet_usdc = capital * f_capped
expected_profit = bet_usdc * (my_prob * (1 - market_price) - (1 - my_prob) * market_price) / market_price
return {
"action": "BUY_YES",
"full_kelly_pct": round(f_star * 100, 1),
"bet_pct": round(f_capped * 100, 1),
"bet_size": round(bet_usdc, 2),
"expected_profit": round(expected_profit, 2)
}
# 예시 실행
result = kelly_polymarket(
my_prob=0.75, # 내 추정: 75%
market_price=0.60, # 시장 가격: 60%
capital=1000, # 자본: $1000
half_kelly=True
)
print(f"액션: {result['action']}")
print(f"풀켈리: 자본의 {result['full_kelly_pct']}%")
print(f"실제 베팅: 자본의 {result['bet_pct']}% = ${result['bet_size']}")
print(f"기대 수익: ${result['expected_profit']}")
# 출력:
# 액션: BUY_YES
# 풀켈리: 자본의 37.5%
# 실제 베팅: 자본의 18.8% = $187.5
# 기대 수익: $37.5
pip install numpy동일한 전략도 시장 레짐(환경)에 따라 수익과 손실이 갈립니다. 모멘텀 전략은 추세장에서 강하고 횡보장에서 약합니다. 레짐을 감지해 전략을 자동으로 전환하는 것이 2025년 실전 퀀트의 핵심입니다.
→ 모멘텀·롱 전략 활성화
→ 방어·헤지 전략으로 전환
→ 포지션 축소 또는 관망
VIX 레벨 + 수익률 변동성
Breakout 감지
import yfinance as yf
import pandas as pd
import numpy as np
# 1. 데이터: S&P500(SPY), VIX, 금(GLD)
spy = yf.download("SPY", start="2022-01-01")["Adj Close"]
vix = yf.download("^VIX", start="2022-01-01")["Adj Close"]
df = pd.DataFrame({'spy': spy, 'vix': vix}).dropna()
df['sma200'] = df['spy'].rolling(200).mean()
df['ret_vol'] = df['spy'].pct_change().rolling(20).std() * np.sqrt(252)
# 2. 레짐 감지 규칙 기반 (Rule-Based)
def detect_regime(row):
if pd.isna(row['sma200']): return 'UNKNOWN'
if row['vix'] > 30 or row['ret_vol'] > 0.30:
return 'VOLATILE' # 변동 레짐
elif row['spy'] > row['sma200'] and row['vix'] < 20:
return 'BULL' # 강세 레짐
else:
return 'BEAR' # 약세 레짐
df['regime'] = df.apply(detect_regime, axis=1)
# 3. 레짐별 전략 선택
STRATEGY = {
'BULL': '모멘텀 전략 ON — 상위 모멘텀 종목 롱',
'BEAR': '헤지 전략 ON — 현금 비중 높이기, GLD 롱',
'VOLATILE': '포지션 축소 — 켈리 사이즈 50% 감소',
}
current_regime = df['regime'].iloc[-1]
current_vix = df['vix'].iloc[-1]
print(f"현재 레짐: {current_regime} (VIX: {current_vix:.1f})")
print(f"전략: {STRATEGY.get(current_regime, '대기')}")
# 레짐별 일수 분포
print(f"\n레짐 분포:\n{df['regime'].value_counts()}")
pip install yfinance pandas numpy전통 퀀트가 쓰는 주가·재무 데이터는 이미 모두가 씁니다. 알파가 사라졌습니다. 2025년 실전 엣지는 남들이 아직 안 쓰는 비정형 데이터에서 나옵니다.
import praw # Reddit API
import requests
from transformers import pipeline
# 1. Reddit 감성 분석기 (Hugging Face FinBERT)
sentiment_pipe = pipeline("text-classification",
model="ProsusAI/finbert",
top_k=None)
def get_reddit_sentiment(keyword, limit=25):
"""Reddit 최신 게시물 감성 점수 (-1~+1)"""
reddit = praw.Reddit(client_id="YOUR_ID",
client_secret="YOUR_SECRET",
user_agent="quant_bot")
posts = list(reddit.subreddit("politics+news").search(
keyword, sort="new", limit=limit))
scores = []
for p in posts:
result = sentiment_pipe(p.title[:512])[0]
pos = next((r['score'] for r in result if r['label']=='positive'), 0)
neg = next((r['score'] for r in result if r['label']=='negative'), 0)
scores.append(pos - neg)
return sum(scores) / len(scores) if scores else 0
# 2. 폴리마켓 시장과 연결
def alt_data_signal(keyword, market_yes_price):
sentiment = get_reddit_sentiment(keyword)
# 감성 → 확률 변환 (보수적: 기존 시장가 ±15% 이내)
my_prob = market_yes_price + sentiment * 0.15
my_prob = max(0.05, min(0.95, my_prob))
edge = my_prob - market_yes_price
if edge > 0.05:
kelly_bet = (my_prob - market_yes_price) / (1 - market_yes_price) / 2 # Half-Kelly
return {"signal": "BUY_YES", "sentiment": sentiment, "edge": edge, "kelly": kelly_bet}
elif edge < -0.05:
return {"signal": "BUY_NO", "sentiment": sentiment, "edge": edge}
return {"signal": "HOLD", "sentiment": sentiment}
pip install praw transformers torch동일 사건이 서로 다른 예측 시장에서 다른 확률로 거래됩니다. 이 가격 차이가 위험 없는 차익(Arbitrage) 또는 기대값 양수 베팅의 기회입니다.
| 플랫폼 | 타입 | 결제 수단 | 특징 | API |
|---|---|---|---|---|
| Polymarket | 탈중앙화 | USDC (Polygon) | 전 세계 접근, 고유동성 | 공개 ✓ |
| Kalshi | 중앙화 (미국 규제) | USD | CFTC 승인, 미국 거주만 | 공개 ✓ |
| Metaculus | 커뮤니티 예측 | 무료 (포인트) | 전문가 집단, 높은 정확도 | 공개 ✓ |
| Manifold | 소셜 예측 | 가상화폐 (Mana) | 자유주제, 소액 베팅 | 공개 ✓ |
import requests
import pandas as pd
from fuzzywuzzy import process # 유사 질문 매칭
# 1. Polymarket 데이터
def get_polymarket():
r = requests.get("https://gamma-api.polymarket.com/markets",
params={"active": True, "limit": 100, "order": "volume24hr", "ascending": False})
markets = []
for m in r.json():
tokens = m.get("tokens", [])
yes_p = next((float(t["price"]) for t in tokens if t.get("outcome")=="Yes"), None)
if yes_p: markets.append({"q": m["question"], "poly_p": yes_p})
return pd.DataFrame(markets)
# 2. Metaculus 데이터
def get_metaculus():
r = requests.get("https://www.metaculus.com/api2/questions/",
params={"type": "forecast", "status": "open", "limit": 100,
"order_by": "-activity"})
markets = []
for q in r.json().get("results", []):
cp = q.get("community_prediction", {}).get("full", {}).get("q2")
if cp: markets.append({"q": q["title"], "meta_p": cp})
return pd.DataFrame(markets)
# 3. 유사 질문 매칭 → 괴리 계산
poly_df = get_polymarket()
meta_df = get_metaculus()
opportunities = []
for _, pm in poly_df.iterrows():
match, score = process.extractOne(pm['q'], meta_df['q'].tolist())
if score >= 70: # 유사도 70% 이상
meta_p = meta_df.loc[meta_df['q']==match, 'meta_p'].values[0]
gap = meta_p - pm['poly_p']
if abs(gap) > 0.08: # 8% 이상 괴리
opportunities.append({
'question': pm['q'][:60],
'polymarket': pm['poly_p'],
'metaculus': meta_p,
'gap': gap,
'signal': 'BUY_YES' if gap > 0 else 'BUY_NO'
})
opp_df = pd.DataFrame(opportunities).sort_values('gap', key=abs, ascending=False)
print("=== 멀티마켓 차익 기회 ===")
print(opp_df.to_string(index=False))
pip install requests pandas fuzzywuzzy python-Levenshtein현재 스터디는 2022년 퀀트 커리큘럼 수준이야. 지금 실제로 돈 버는 사람들은 여기서 더 나아가 있어.
| 과거 (스터디에 있는 것) | → | 현재 실전 |
|---|---|---|
| yfinance 데이터 | → | 대안 데이터 (온체인, 소셜, NLP) |
| 단순 XGBoost | → | 앙상블 + LLM 시그널 결합 |
| 백테스트 후 실전 | → | Walk-Forward + Paper Trading 동시 |
| 단일 전략 | → | 레짐 감지 후 전략 자동 전환 |
| 고정 포지션 사이즈 | → | 켈리 기준 동적 사이징 ← 핵심 |
1. 챕터 5 켈리 기준 먼저 적용 — 포지션 사이징 모르면 좋은 전략도 파산함
2. 폴리마켓 고승률 트레이더 추적 시스템 — 온체인이라 공개되어 있어, 당장 따라 할 수 있음