Hawkeye Market Sentiment
국내 시장 심리(0~100)를 나타내는 지수입니다. CNN Fear & Greed와 유사한 스케일이며, KOSPI 모멘텀(125일선), 종목폭/거래량강도, 변동성, 그리고 Naver 투자자별 매매동향 일자별 순매수(외국인·개인)를 반영해 계산합니다.
스냅샷 기준 시각 2026. 10. 16. 오후 4:53:53
중립
CNN Fear & Greed와 같이 0~100 스케일로 거래일마다 기록된 지수입니다. 색 띠는 탐욕(상단)~공포(하단) 구간을 나타냅니다.
투자 권유가 아닌 시장 심리 참고용 지표입니다. 원금 손실이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다. 외국인·개인 순매수(Naver)나 특정 원천 데이터 수집에 실패한 경우 해당 컴포넌트는 중립(50)으로 폴백될 수 있습니다.
20D 모멘텀(%): -15.2044 / z: -0.8154 (mean: -4.8299, std: 12.7229, hist: 60)
상승: 2154 / 하락: 351 / 당일 adv/(adv+dec): 0.8599
상승 거래량: 593271846 / 하락 거래량: 124224074 / 비율: 0.8269
20일 rolling std: 2.5375 / z: -0.7734 / sigmoid(raw): 31.6 / 최종 greed-score(반전): 68.4
외국인 수급은 Naver 투자자별 매매동향(일자별 순매수, 억원)을 바탕으로, 최근 5거래일 누적 순매수 -111276억원을 기준으로 누적 시계열에 대해 평균·표준편차를 잡고 z-score를 만든 뒤, 그 값을 0~100으로 환산한 중간 점수입니다. (중간 점수: 31.7)
지수 최종 합성에서는 외국인 수급을 정방향으로 넣습니다(높은 외국인 순매수는 greed를 높이는 쪽).
개인 수급은 Naver 투자자별 매매동향(일자별 순매수, 억원)을 바탕으로, 최근 3거래일 누적 순매수 7257.45억원을 기준으로 누적 시계열에 대해 평균·표준편차를 잡고 z-score를 만든 뒤, 그 값을 0~100으로 환산한 중간 점수입니다. (중간 점수: 48.9)
지수 최종 합성에서는 개인 수급을 역방향으로 넣습니다(quant: Retail '-' → 높은 개인 순매수는 greed를 낮추는 쪽으로 반영).
최종 점수는 아래 6가지 하위 점수(각 0~100)를 quant.md 가중치로 가중 평균한 값입니다. 표는 `new_high/dispersion`(각 10%)를 제외한 6개 팩터(총 80%)만 보여줍니다. (final 계산에서는 두 항목을 neutral 50으로 상수 처리)
| 항목 | 가중치 | 점수 |
|---|---|---|
| 모멘텀(20D 수익률)KOSPI 20일 수익률을 z-score 정규화 후 sigmoid 스케일로 0~100 점수화합니다. | 15% | 30.7 |
| 시장 넓이(Breadth)당일 KOSPI·KOSDAQ adv/(adv+dec) 비율을 일별로 쌓아, 그 시계열의 z-score를 sigmoid로 0~100에 맞춥니다. | 10% | 86.0 |
| 거래량 압력(Volume Pressure)상승 종목 거래량/전체(상승+하락) 거래량 비율을 0~100으로 정규화합니다. | 10% | 82.7 |
| 변동성최근 KOSPI 수익률의 rolling(20) std에 대해 z-score 정규화 후 sigmoid 스케일로 0~100 점수화합니다(방향: -). | 10% | 68.4 |
| 외국인 수급최근 5거래일 외국인 순매수 누적(억원)을 최근 구간 z-score 정규화 후 sigmoid로 0~100 점수화합니다. | 20% | 31.7 |
| 개인 심리최근 3거래일 개인 순매수 누적(억원)을 z-score+sigmoid로 0~100으로 만든 뒤, quant.md 방향(Retail은 -)으로 최종 greed에 반영합니다. | 15% | 51.1 |
quant.md: momentum = price.pct_change(20). KOSPI 종가는 pykrx 지수(1001) 우선, 실패 시 Yahoo ^KS11. 최근 히스토리에서 z-score → sigmoid로 0~100.
StockDailyBar로 당일 상승·하락 종목 수를 세어 adv_rate를 구하고, 서버 캐시에 일별 adv_rate를 누적합니다. 최근 구간 평균·표준편차로 z-score → sigmoid(quant.md). KRX 일봉 sync 이후 값이 가장 정확합니다. 히스토리가 부족하면 당일 비율을 직접 스케일합니다.
StockDailyBar에서 전일 대비 상승·하락 종목의 거래량을 합산해 volume_pressure = up_vol/(up_vol+down_vol)로 계산하고 ×100을 점수로 사용합니다.
quant.md: volatility = returns.rolling(20).std(). KOSPI 종가는 pykrx 지수(또는 Yahoo ^KS11). volatility z-score를 sigmoid로 0~100 생성 후 방향(-)에 따라 반전합니다.
데이터: pykrx 투자자별 거래실적(KOSPI+KOSDAQ). 일별 외국인 순매수를 5거래일 누적한 시계열의 최신 값에 z-score → sigmoid(quant.md). 수집 실패 시 proxy/중립 폴백.
pykrx 일자별 개인 순매수를 3거래일 누적한 시계열로 z-score+sigmoid 후 greed 합성 시 100에서 빼 방향(-) 반영. 수집 실패 시 proxy/중립 폴백.