Hawkeye Market Sentiment
국내 시장 심리(0~100)를 나타내는 지수입니다. CNN Fear & Greed와 유사한 스케일이며, KOSPI 모멘텀(125일선), 종목폭/거래량강도, 변동성, 그리고 Naver 투자자별 매매동향 일자별 순매수(외국인·개인)를 반영해 계산합니다.
스냅샷 기준 시각 2026. 7. 10. 오후 9:14:52
중립
CNN Fear & Greed와 같이 0~100 스케일로 거래일마다 기록된 지수입니다. 색 띠는 탐욕(상단)~공포(하단) 구간을 나타냅니다.
투자 권유가 아닌 시장 심리 참고용 지표입니다. 외국인·개인 순매수(Naver)나 특정 원천 데이터 수집에 실패한 경우 해당 컴포넌트는 중립(50)으로 폴백될 수 있습니다.
20D 모멘텀(%): -15.6618 / z: -2.2482 (mean: 12.237, std: 12.4093, hist: 60)
상승: 2290 / 하락: 296 / 당일 adv/(adv+dec): 0.8855
상승 거래량: 1187809649 / 하락 거래량: 10161828600 / 비율: 0.1047
20일 rolling std: 4.0481 / z: 0.8454 / sigmoid(raw): 70 / 최종 greed-score(반전): 30
외국인 수급은 Naver 투자자별 매매동향(일자별 순매수, 억원)을 바탕으로, 최근 5거래일 누적 순매수 -40764억원을 기준으로 누적 시계열에 대해 평균·표준편차를 잡고 z-score를 만든 뒤, 그 값을 0~100으로 환산한 중간 점수입니다. (중간 점수: 65.2)
지수 최종 합성에서는 외국인 수급을 정방향으로 넣습니다(높은 외국인 순매수는 greed를 높이는 쪽).
개인 수급은 Naver 투자자별 매매동향(일자별 순매수, 억원)을 바탕으로, 최근 3거래일 누적 순매수 -21441억원을 기준으로 누적 시계열에 대해 평균·표준편차를 잡고 z-score를 만든 뒤, 그 값을 0~100으로 환산한 중간 점수입니다. (중간 점수: 24.4)
지수 최종 합성에서는 개인 수급을 역방향으로 넣습니다(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% | 9.6 |
| 시장 넓이(Breadth)당일 KOSPI·KOSDAQ adv/(adv+dec) 비율을 일별로 쌓아, 그 시계열의 z-score를 sigmoid로 0~100에 맞춥니다. | 10% | 88.6 |
| 거래량 압력(Volume Pressure)상승 종목 거래량/전체(상승+하락) 거래량 비율을 0~100으로 정규화합니다. | 10% | 10.5 |
| 변동성최근 KOSPI 수익률의 rolling(20) std에 대해 z-score 정규화 후 sigmoid 스케일로 0~100 점수화합니다(방향: -). | 10% | 30.0 |
| 외국인 수급최근 5거래일 외국인 순매수 누적(억원)을 최근 구간 z-score 정규화 후 sigmoid로 0~100 점수화합니다. | 20% | 65.2 |
| 개인 심리최근 3거래일 개인 순매수 누적(억원)을 z-score+sigmoid로 0~100으로 만든 뒤, quant.md 방향(Retail은 -)으로 최종 greed에 반영합니다. | 15% | 75.6 |
quant.md: momentum = price.pct_change(20). 최근 히스토리(z_history)에서 평균/표준편차를 계산한 뒤 z-score를 sigmoid로 변환해 0~100으로 만듭니다.
Naver `sise_index` 상승·하락 종목수로 당일 adv_rate를 구하고, 서버 캐시에 일별 adv_rate가 누적됩니다. 최근 구간 평균·표준편차로 z-score → sigmoid(quant.md). Naver가 과거 일자별 종목수를 주지 않아 히스토리는 배포 이후 스냅샷이며, 안정적이려면 Redis 등 영구 캐시를 권장합니다. 히스토리가 부족하면 당일 비율을 직접 스케일합니다.
Naver `sise_quant.naver`에서 상승/하락 종목 거래량을 각각 합산해 volume_pressure = up_vol/(up_vol+down_vol)로 계산하고 volume_pressure*100을 점수로 사용합니다.
quant.md: volatility = returns.rolling(20).std(). volatility z-score를 sigmoid로 0~100 생성 후, quant.md 방향(Volatility는 -)에 따라 최종 greed-score를 반전해 계산합니다.
데이터: sise_trans_style.naver / investorDealTrendDay.naver 일자별 순매수. 일별 외국인 순매수를 5거래일 누적한 시계열의 최신 값에 z-score → sigmoid(quant.md) 적용. 수집 실패 시 proxy/중립 폴백.
일자별 개인 순매수를 3거래일 누적한 시계열로 동일하게 z-score+sigmoid 후 greed 합성 시 100에서 빼 방향(-) 반영. 수집 실패 시 proxy/중립 폴백.