Hyperliquid分析ダッシュボードの作り方:ゼロから実践まで

2026年5月6日

アクティブにHyperliquidを取引するユーザーやクオンツリサーチャーにとって、リアルタイムに更新される自分専用の分析ダッシュボードは、意思決定の効率を大きく高めてくれます。

この記事では、データ取得、処理、フロントエンドでの可視化まで、ポジション監視、資金調達率(Funding Rate)の追跡、損益分析をカバーするHyperliquidダッシュボードを構築する流れを解説します。全体をオープンソースツールで構成し、追加の有料サービスは前提にしません。

ダッシュボードに入れるべき主要モジュール

実用的なHyperliquidダッシュボードでは、通常、次のようなモジュールを用意します。

  • アカウント残高と証拠金状況
  • 現在のポジション一覧
  • 未実現PnLと実現PnLの推移
  • 資金調達率の履歴と異常値監視
  • 注文板または直近約定のリアルタイム表示
  • レバレッジ、清算価格、リスク指標の可視化

利用可能なInfo Endpointの種類は、Hyperliquid公式ドキュメントで確認できます。

技術スタックの選定

おすすめのオープンソース構成は次のとおりです。

  • バックエンドのデータ取得:Python + requests(またはaiohttpで非同期実装)
  • データ保存:SQLite(軽量なローカル用途)またはPostgreSQL + TimescaleDB(時系列データに最適化)
  • ダッシュボードフレームワーク:Grafana(高機能でSQLite/Postgresデータソースに対応)またはStreamlit(Pythonネイティブで素早いプロトタイプに向く)
  • リアルタイム配信:Hyperliquid WebSocket API

素早く検証したい場合はStreamlitが扱いやすく、本番運用に近い監視環境では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 APIを利用します。

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を作る

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)

この構成なら、ウォレットアドレスを入力するだけで、アカウント価値、利用可能証拠金、レバレッジ、保有ポジション、未実現PnLを一覧できます。まずはStreamlitで最小構成を作り、必要に応じて資金調達率や約定履歴のグラフを追加していくと効率的です。

Grafanaで本番向けダッシュボードを構築する

複数人での運用、履歴データの保存、アラート設定が必要な場合は、Grafana構成がおすすめです。

基本的な流れは次のとおりです。

  1. ローカルでGrafanaを起動します。

    docker run -d -p 3000:3000 grafana/grafana
    
  2. PostgreSQL + TimescaleDBをデータソースとして設定します。

  3. 定期実行するPythonスクリプトを作成し、1分ごとにHyperliquid APIから取得したデータをDBへ書き込みます。

  4. Grafanaでパネルを作成し、SQLクエリでチャートを構築します。

  5. 資金調達率がしきい値を超えた場合などに通知するアラートルールを設定します。

Grafana公式ドキュメントには、パネル設定やアラート設定に関する詳しいガイドがあります。

OneKeyウォレット:ダッシュボードの先にある安全な実行環境

ダッシュボードに入力するウォレットアドレスは読み取り専用の照会に使うだけです。しかし、監視結果をもとに実際に取引する段階では、秘密鍵の安全性が非常に重要になります。

OneKeyハードウェアウォレットは、秘密鍵を物理的なセキュリティチップ内に保管します。仮にPCがマルウェアに感染していたとしても、秘密鍵が直接抜き取られるリスクを抑えられます。

さらにOneKey Perpsを組み合わせることで、ダッシュボードでシグナルやリスク指標を確認したあと、ハードウェア署名を通じてHyperliquidの無期限先物取引を実行できます。つまり、「データ分析」と「安全な取引実行」を同じワークフローの中でつなげられます。

Hyperliquidを継続的に取引する場合は、OneKeyをダウンロードし、OneKey Perpsを使って取引フローにハードウェアレベルの保護を加えることを検討してみてください。

よくある質問

Q1:Hyperliquidに公式のGrafanaデータソースプラグインはありますか?

現時点では、公式のGrafanaプラグインはありません。ただし、GrafanaのJSON APIデータソースやInfinityプラグインを使ってHyperliquid APIを直接参照する方法、または中間データベースに保存してからGrafanaで可視化する方法があります。

Q2:WebSocket接続は自動で切断されますか?

長時間アクティビティがない場合、WebSocket接続がタイムアウトすることがあります。データ取得を安定させるには、コード側でping/pongによるハートビートと自動再接続の仕組みを実装するのがおすすめです。

Q3:ダッシュボードで他人のアカウントデータも表示できますか?

表示できます。Hyperliquidのアカウントデータは公開されているオンチェーンデータであり、有効なEthereumアドレスを指定すれば照会できます。これは同時に、自分のデータも他人から見える可能性があることを意味します。

Q4:資金調達率の異常アラートはどう設定できますか?

データ取得スクリプトに条件分岐を追加し、資金調達率が設定したしきい値、たとえば1時間あたり0.1%を超えた場合に、Telegram Bot APIやメールで通知する方法があります。Grafanaにもアラート機能が内蔵されています。

Q5:StreamlitとGrafanaはどちらが初心者向けですか?

Pythonに慣れている人なら、Streamlitのほうが簡単に始められます。数十行のコードで基本的なチャートを表示できます。一方、Grafanaは複数人での運用や長期監視に向いており、学習コストはやや高いものの、機能はより強力です。

リスクについて

この記事は技術的なチュートリアルであり、投資助言ではありません。暗号資産市場は価格変動が大きく、ダッシュボード上のデータは参考情報にすぎません。将来の収益を示したり保証したりするものではありません。取引を行う場合は、リスクを十分に理解したうえでご自身の判断で行ってください。

OneKeyで暗号化の旅を守る

View details for OneKeyのご購入OneKeyのご購入

OneKeyのご購入

世界最先端のハードウェアウォレット。

View details for アプリをダウンロードアプリをダウンロード

アプリをダウンロード

詐欺アラート。すべてのコインをサポート。

View details for OneKey SifuOneKey Sifu

OneKey Sifu

暗号化の疑問を解消するために、一つの電話で。