Hyperliquid 분석 대시보드 구축하기: 기초부터 실전까지
활발하게 Hyperliquid를 거래하는 트레이더나 퀀트 리서처라면, 실시간으로 업데이트되는 개인 분석 대시보드가 의사결정 효율을 크게 높여줄 수 있어요. 이 글에서는 데이터 수집, 처리, 프런트엔드 시각화까지 Hyperliquid 대시보드를 직접 구축하는 흐름을 살펴봅니다. 포지션 모니터링, 펀딩비 추적, 손익 분석까지 포함하며, 전 과정은 오픈소스 도구를 사용해 추가 비용 없이 구성할 수 있습니다.
대시보드에 포함하면 좋은 핵심 모듈
실용적인 Hyperliquid 대시보드는 보통 다음과 같은 영역을 다룹니다.
- 계정 가치, 사용 가능 증거금, 레버리지 등 계정 상태
- 현재 보유 포지션과 미실현 손익
- 마켓별 펀딩비 및 과거 펀딩비 변화
- 최근 체결, 호가창, 거래량 등 실시간 시장 데이터
- 손익 추이와 리스크 지표
- 임계값 기반 알림, 예를 들어 펀딩비 급등 또는 증거금 부족 경고
Hyperliquid 공식 문서에는 사용 가능한 전체 Info Endpoint 유형이 정리되어 있습니다.
기술 스택 선택
추천할 만한 오픈소스 기술 스택은 다음과 같습니다.
- 백엔드 데이터 수집: Python +
requests또는 비동기 처리를 위한aiohttp - 데이터 저장소: 가벼운 로컬 환경에서는 SQLite, 시계열 데이터 최적화가 필요하면 PostgreSQL + TimescaleDB
- 대시보드 프레임워크: Grafana 또는 Streamlit
- 실시간 푸시: Hyperliquid WebSocket API
빠르게 검증하고 싶다면 Streamlit이 가장 간단합니다. Python 코드만으로 UI와 차트를 빠르게 만들 수 있기 때문이에요. 반대로 운영 환경에서 장기 모니터링, 여러 사용자 협업, 알림 설정이 필요하다면 Grafana + TimescaleDB 조합이 더 안정적입니다.
데이터 수집 레이어 구현
계정 상태 수집
import requests
import time
ENDPOINT = "https://api.hyperliquid.xyz/info"
def fetch_account_state(address: str) -> dict:
payload = {"type": "clearinghouseState", "user": address}
r = requests.post(ENDPOINT, json=payload, timeout=10)
r.raise_for_status()
return r.json()
def fetch_market_data() -> dict:
payload = {"type": "metaAndAssetCtxs"}
r = requests.post(ENDPOINT, json=payload, timeout=10)
r.raise_for_status()
return r.json()
펀딩비 일괄 수집
def fetch_all_funding_rates(coins: list, days: int = 1) -> dict:
end_ms = int(time.time() * 1000)
start_ms = end_ms - days * 24 * 3600 * 1000
results = {}
for coin in coins:
payload = {
"type": "fundingHistory",
"coin": coin,
"startTime": start_ms,
}
r = requests.post(ENDPOINT, json=payload, timeout=10)
if r.ok:
results[coin] = r.json()
return results
WebSocket 실시간 구독
호가창이나 최신 체결 데이터를 실시간으로 보여줘야 한다면 Hyperliquid의 WebSocket 인터페이스를 사용할 수 있습니다.
import asyncio
import websockets
import json
WS_URL = "wss://api.hyperliquid.xyz/ws"
async def subscribe_trades(coin: str):
async with websockets.connect(WS_URL) as ws:
sub_msg = {
"method": "subscribe",
"subscription": {"type": "trades", "coin": coin}
}
await ws.send(json.dumps(sub_msg))
while True:
msg = await ws.recv()
data = json.loads(msg)
print(data)
asyncio.run(subscribe_trades("BTC"))
WebSocket 구독 타입은 Hyperliquid 공식 문서의 WebSocket 섹션에서 확인할 수 있습니다.
Streamlit으로 대시보드 UI 만들기
Streamlit을 사용하면 몇 줄의 Python 코드만으로 계정 지표, 포지션 테이블, 손익 차트를 빠르게 만들 수 있어요.
import streamlit as st
import pandas as pd
import plotly.express as px
st.set_page_config(page_title="Hyperliquid Dashboard", layout="wide")
ADDRESS = st.sidebar.text_input("지갑 주소 입력", value="0x...")
if ADDRESS.startswith("0x"):
state = fetch_account_state(ADDRESS)
margin = state.get("marginSummary", {})
col1, col2, col3 = st.columns(3)
col1.metric("계정 가치 (USDC)", f"${float(margin.get('accountValue', 0)):,.2f}")
col2.metric("출금 가능 증거금", f"${float(margin.get('withdrawable', 0)):,.2f}")
col3.metric(
"레버리지",
f"{float(margin.get('totalRawUsd', 0)) / max(float(margin.get('accountValue', 1)), 1):.1f}x"
)
positions = state.get("assetPositions", [])
if positions:
pos_data = []
for p in positions:
pos = p.get("position", {})
pos_data.append({
"코인": pos.get("coin"),
"방향": "롱" if float(pos.get("szi", 0)) > 0 else "숏",
"포지션 크기": abs(float(pos.get("szi", 0))),
"미실현 PnL": float(pos.get("unrealizedPnl", 0)),
"진입가": float(pos.get("entryPx", 0)),
})
df = pd.DataFrame(pos_data)
st.dataframe(df)
fig = px.bar(df, x="코인", y="미실현 PnL", color="방향", title="포지션별 미실현 손익")
st.plotly_chart(fig, use_container_width=True)
이 방식은 개인용 모니터링, 전략 아이디어 검증, 간단한 리서치용으로 적합합니다. 다만 장기간 운영하거나 알림, 권한 관리, 여러 사용자 공유가 필요하다면 별도의 데이터베이스와 Grafana 구성이 더 좋습니다.
Grafana로 운영용 대시보드 구축하기
여러 사람이 함께 사용하거나, 과거 데이터 기반 알림과 장기 모니터링이 필요하다면 Grafana 구성을 추천합니다.
기본 흐름은 다음과 같습니다.
- 로컬 Grafana 실행:
docker run -d -p 3000:3000 grafana/grafana - PostgreSQL + TimescaleDB 데이터 소스 구성
- Python 스케줄러를 작성해 매분 Hyperliquid 데이터를 데이터베이스에 저장
- Grafana에서 SQL 쿼리로 패널과 차트 생성
- 펀딩비, 계정 가치, 증거금 비율 등 주요 지표에 알림 규칙 설정
Grafana 공식 문서에는 패널 구성과 알림 설정 방법이 자세히 안내되어 있습니다.
OneKey 지갑: 대시보드 뒤의 보안 기반
대시보드에 입력하는 지갑 주소는 기본적으로 읽기 전용 조회에 사용됩니다. 하지만 모니터링 결과를 바탕으로 실제 거래를 실행하는 순간부터는 개인키 보안이 매우 중요해집니다.
OneKey 하드웨어 월렛은 개인키를 물리적 보안 칩 안에 보관합니다. 따라서 컴퓨터가 악성코드에 감염되더라도 개인키가 직접 노출될 위험을 줄일 수 있습니다.
특히 OneKey Perps와 함께 사용하면, 대시보드에서 신호를 확인한 뒤 하드웨어 서명을 통해 Hyperliquid 무기한 선물 거래를 더 안전한 방식으로 실행할 수 있습니다. 즉, “데이터 분석 + 안전한 실행”이라는 실전 워크플로를 구성할 수 있어요.
Hyperliquid를 적극적으로 모니터링하고 거래한다면, OneKey를 다운로드해 지갑 보안 기반을 먼저 갖추고 OneKey Perps에서 실제 거래 흐름을 확인해 보세요. 수익을 보장하는 도구는 아니지만, 데이터 확인과 거래 실행을 더 체계적으로 분리하는 데 도움이 됩니다.
자주 묻는 질문
Q1. Hyperliquid는 공식 Grafana 데이터 소스 플러그인을 제공하나요?
현재 공식 Grafana 플러그인은 없습니다. 다만 Grafana의 JSON API 데이터 소스 또는 Infinity 플러그인을 통해 Hyperliquid API를 직접 조회하거나, 중간 데이터베이스에 저장한 뒤 Grafana에서 조회하는 방식으로 구현할 수 있습니다.
Q2. WebSocket 연결은 자동으로 끊길 수 있나요?
네. WebSocket 연결은 장시간 활동이 없거나 네트워크 상태가 불안정하면 타임아웃될 수 있습니다. 코드에 heartbeat, 즉 ping/pong 처리와 자동 재연결 로직을 넣어 데이터 수집이 끊기지 않도록 설계하는 것이 좋습니다.
Q3. 대시보드에서 다른 사람의 계정 데이터도 볼 수 있나요?
가능합니다. Hyperliquid의 계정 데이터는 공개 온체인 데이터이므로 유효한 이더리움 주소만 있으면 조회할 수 있습니다. 동시에 내 계정 데이터도 다른 사람이 볼 수 있다는 의미이므로, 포지션 공개성에 따른 리스크를 이해해야 합니다.
Q4. 펀딩비 이상 알림은 어떻게 설정하나요?
데이터 수집 스크립트에 조건문을 추가해 펀딩비가 설정한 임계값, 예를 들어 시간당 0.1%를 초과할 때 Telegram Bot API나 이메일로 알림을 보낼 수 있습니다. Grafana를 사용하는 경우 내장 알림 기능으로도 설정할 수 있습니다.
Q5. Streamlit과 Grafana 중 초보자에게 더 적합한 것은 무엇인가요?
Python에 익숙하다면 Streamlit이 더 쉽습니다. 수십 줄의 코드만으로 차트와 테이블을 만들 수 있어 빠른 프로토타입에 적합합니다. Grafana는 여러 사용자, 장기 운영, 알림, 대시보드 관리가 필요한 환경에 더 잘 맞지만 학습 곡선은 조금 더 있습니다.
리스크 안내
이 글은 기술 튜토리얼이며 투자 조언이 아닙니다. 가상자산 시장은 변동성이 매우 크고, 대시보드 데이터는 참고용일 뿐 미래 수익을 예측하거나 보장하지 않습니다. 거래 여부는 본인이 리스크를 충분히 이해한 뒤 신중하게 결정해야 합니다.



