MarketTrace
M1포지셔닝M2풋프린트M3청산M4FundingM5볼륨 프로파일
방법론 · v1.0.0 · 발행 2026-05-21

Perpetuals Heat Index

자산별 백분위와 동등 가중 글로벌 점수의 계산 방법, breadth 카운터의 의미, 데이터가 아직 닿지 못하는 곳.

실시간 위젯 보기: /perpetuals/positioning.

데이터 출처

Heat Index는 상류 파일 하나만 읽습니다: data/research/heat_index.json, PPI shadow-log cron이 매시간 :05 UTC에 작성. 같은 cron이 자산별 ppi_log.jsonl 파일도 유지합니다. 그래서 인덱스는 데이터 수준에서 PPI의 8시간 케이던스를 상속(Binance funding 결산당 새 데이터 1개), FE는 5분마다 폴링하지만요.

PPI 자체는 Binance USDT-M funding rate의 자산별 180-사이클 롤링 z-score(일 3 사이클 × 60일 ≈ 60일 컨텍스트). Shadow logger는 2024-07-07 이후 자산당 약 2,049 결산을 캡처했고, 그것이 백분위가 매핑되는 역사적 분포입니다.

자산별 백분위

각 추적 자산에 대해 인덱스는 현재 PPI 값을 그 자산 자체의 22개월 히스토리에 대해 순위 매깁니다. 공식은 단순 bisect_right: 현재 값 이하인 역사적 PPI 샘플 개수를 세고 총 개수로 나눈 뒤 100을 곱합니다.

백분위_pct = bisect_right(sorted(history), current_ppi)
            / len(history) × 100

BTC 점수 92는 오늘 BTC funding-z가 2024-07-07 이후 관측된 모든 BTC funding-z의 92%보다 높이 있다는 뜻. 각 자산은 자체 곡선에 대해 평가되므로 같은 날 BTC 92와 DOGE 12는 자산별 역사-내-위치에 대한 두 진술이지, 절대 funding rate가 같다는 뜻이 아닙니다.

글로벌 집계

시장 전체 점수는 6개 자산별 현재 PPI의 동등 가중 평균을, 6개 자산 모두 값이 있는 모든 timestamp에 대해 역사적으로 계산된 같은 동등 가중 집계의 백분위에 매핑한 값입니다. 역사적 윈도는 그런 timestamp 약 2,049개, 자산별 depth와 동일.

current_agg     = mean([ppi.btc, ppi.eth, ppi.sol, ppi.bnb,
                        ppi.xrp, ppi.doge])
historical_agg  = [mean(per_asset_ppi(t)) for t in shared_timestamps]
global_pct      = bisect_right(sorted(historical_agg), current_agg)
                  / len(historical_agg) × 100

OI 가중이 아닌 동등 가중. BTC가 전체 perp OI의 약 60%로 open interest를 지배하므로 OI 가중 composite는 BTC를 가깝게 추적할 것입니다. 동등 가중은 대신 breadth를 표면화. 6개 중 5개 venue가 함께 hot으로 갈 때 BTC 단독으로 break out 안 했어도 점수가 오릅니다.

Breadth 카운터

글로벌 백분위와 함께 payload는 두 카운터를 노출: 6개 자산 중 현재 Hot 또는 Euphoric 밴드에 있는 개수, 그리고 Cold 또는 Panic에 있는 개수. 위젯은 이를 “6개 중 1개가 핫존”으로 렌더링합니다.

Breadth는 광범위한 regime 변화와 단일 자산의 폭발을 구분. 글로벌 점수 75 + breadth_hot=5는 시장 대부분이 동시에 따뜻하다는 뜻. 글로벌 점수 75 + breadth_hot=1는 한 venue가 극단적 고점에 있어서 혼자 평균을 끌어올리고 있다는 뜻. 같은 헤드라인 숫자, 매우 다른 microstructure.

캐싱과 신선도

엔드포인트는 매 요청마다 heat_index.json을 읽고, 파일이 2시간 이상 오래되었으면 503을 반환합니다. 그 너머는 upstream에서 뭔가 잘못된 상태(timer 죽음, PPI cron 실패, 디스크 가득)이며 stale heat 값을 서빙하는 것이 정직한 오류보다 FE를 더 오도합니다.

Cache-Control은 max-age 5분과 stale-while-revalidate 10분으로 설정되어, CDN이 파일의 실제 나이를 초과해서 stale-serving 하지 않으면서 대부분의 트래픽을 흡수할 수 있습니다. FE 폴링이 일치: SWR 5분마다 새로고침. 파일이 시간 단위로 업데이트되므로 12개 클라이언트 요청 중 11개는 CDN에서 동일 바이트를 반환합니다.

한계

버전

v1.0.0 최초 릴리스 2026-05-21. 컴퓨트 경로의 중요 변경(새 가중치, 임계값 조정, 추가 입력)은 버전을 올리고 발행일을 갱신합니다. 문구 수정은 그대로.