Hyperliquid の Bot を置くVPSの選び方

最終更新: 2026-08-22

この用途は「東京リージョンに置く意味がある」数少ないケースです。ただし判断材料に ping を使うと確実に間違えます。

当サイトは各VPS事業者のアフィリエイトプログラムに参加しており、リンク経由でのお申し込みにより報酬を受け取る場合があります。ただし掲載順位・評価・実測データは編集方針と計測結果のみに基づいており、報酬額による優遇は一切行いません。日本リージョンが無い事業者や、報酬が発生しない事業者も同じ基準で掲載しています。

結論

  • 東京リージョンに置く理由がある用途です。 当サイトの実測では、api.hyperliquid.xyz のオリジンまでの往復は日本国内の観測点が最小で、韓国・シンガポール・米国・欧州は距離どおりに大きく出ました
  • ただし ping で比較すると必ず間違えます。 このホストは CloudFront の後ろにあり、ping が返るのは手元のCDNエッジだからです
  • 東京VPSから実際にAPIを叩いた往復時間(板情報の取得)は、下の表のとおり中央値で1桁msです。ただし p95 は日によって跳ねるので、平均だけ見ないでください
  • 詰めるべきは平均値ではなく、ゆらぎ・切断・時刻ずれのほうです
VultrPR東京リージョンあり。時間単位課金なので、置き場所の検証を数十円で試せる
公式で料金を見る

なぜ ping で判断すると間違えるのか

api.hyperliquid.xyz を名前解決すると 3.x.x.x、つまり Amazon CloudFront のアドレスが返ります。当サイトの東京ノードから ping を打つと、返ってくるのは東京のCDNエッジです。

ホスト役割平均RTTゆらぎホップ受けたCDNエッジ
api.hyperliquid.xyz mainnet REST / WebSocket 2.30ms 0.24 8 NRT57-P7
api.hyperliquid-testnet.xyz testnet REST / WebSocket 3.09ms 3.53 9 NRT20-P6
app.hyperliquid.xyz Web UI 1.68ms 0.89 8 NRT20-P7
rpc.hyperliquid.xyz HyperEVM JSON-RPC 1.96ms 0.73 9 NRT20-P8

計測日時: 2026-09-15T21:28:37+02:00 / 計測地点: 当サイトの計測ノード(東京DC内) / ICMP ping ×20 / MTR ×5。この列の値はCloudFrontエッジまでの距離であり、取引APIの応答時間ではありません。計測方法の詳細

ホップ数も1桁で、いかにも「すぐそこにある」値が出ます。しかしこれは取引APIの応答時間ではありません。同じことを大阪でもシンガポールでもやれば、そこでも近傍のエッジが応答するので、同じように良い値が出ます。差が出ない指標で置き場所を決めることになります。

オリジンはどこにあるのか — 観測点別のTTFB

そこで、オリジンまで必ず往復するリクエストで測ります。GET /info はオリジンの nginx が 405 Method Not Allowedallow: POST)を返すので、エッジで打ち返されません。応答ボディが空なので回線速度の影響も受けません。

Globalping の公開プローブから、世界の観測点で同じリクエストを投げた結果です。

観測点TTFB 最小(オリジンまで往復)中央値TLS回数
Tokyo JP
xTom
4ms
7 4 3
Osaka JP
The Constant Company/Oracle
10ms
11 5 3
Seoul KR
HostHatch
56ms
82 6 3
Singapore SG
xTom/LeaseWeb
72ms
73 5 3
Los Angeles US
HostPapa
105ms
108 4 3
Reston US
OVH
192ms
260 8 2
Ashburn US
Oracle
194ms
194 6 1
London GB
Oracle
220ms
224 6 3
Frankfurt DE
Oracle
236ms
451 4 3

単位はms。計測日時: 2026-09-15T21:28:37+02:00 / HTTPS GET /info(オリジンが405を返す=オリジンまで往復する)×3回 / 観測点: Globalping (https://globalping.io)。TLSはどの観測点でも近傍のCDNエッジで終わるため距離に応じて増えません。差が出ているTTFBがオリジンまでの距離を表します。プローブ側の事情で1回の値は数十msぶれるため最小値で並べています。近接した観測点どうしの順位は読まないでください。観測点は日替わりのため同一観測点の時系列比較にも使えません。

読み方はこうです。

  • TLSの列はどの観測点でも一桁ms台に収まります(距離に応じて増えません)。手前のCDNエッジで終端しているためで、「エッジはどこにでもある」ことの裏取りになります
  • 差が出ているのはTTFBの列だけです。エッジから先、オリジンまで往復した時間がそのまま乗っています
  • 日本国内の観測点が最小で、距離が離れるほど素直に増えます。オリジンは日本国内にあると読むのが自然です
  • ただし東京と大阪の順位は計測のたびに入れ替わります(当サイトの計測でも1回目は大阪が小さく、2回目は東京が小さく出ました)。プローブ側の事情で1回の値は数十msぶれるので、近接した観測点どうしの順位は読まないでください

東京VPSから実際にAPIを叩いた往復時間

当サイトの計測ノード(東京DC内)から、接続を維持したまま POST /info を繰り返した実測です。毎回TLSを張り直すと測っているのはハンドシェイクになるので、Botと同じく接続を張りっぱなしにしています。

リクエスト中央値最小p95応答サイズ
板情報 (l2Book BTC)
Botが最も高頻度で叩く。実運用の代表値はここ
5.7ms
4.5 38.8 1.5KB
全銘柄の中値 (allMids)
全銘柄ぶんの価格。応答が大きい
6.9ms
5.4 65.1 18.4KB
銘柄メタ情報 (meta)
起動時に1回取る類。常時叩くものではない
22.4ms
16.2 41.3 17.2KB

計測日時: 2026-09-15T21:28:37+02:00 / 対象: api.hyperliquid.xyz / HTTPS keep-alive で POST /info を×30(TLSは張り直さない) / 計測地点: 当サイトの計測ノード(東京DC内)。応答サイズとサーバ側の処理量が違うため、リクエスト種別をまたいで比較しないでください。

Botが最も高い頻度で叩くのは板情報(l2Book)です。ここが実運用の代表値になります。応答サイズの大きいリクエストやサーバ側の処理が重いリクエストは同じ回線でも桁が変わるので、種別をまたいで比較しないでください

「AWS の中に置けば速いのか」— 東京の中で並べてみる

CloudFront が手前にあると分かると、次に浮かぶのは「では AWS のインスタンスに置けばエッジまで最短では?」という疑問です。測りました。有利にはなりませんでした。

東京の観測点を10台取り、同一のプローブ集合で ping(エッジまで)と TTFB(オリジンまで)を並べた結果です。

東京の観測点ping 最小(ms)pingでの順位TTFB(ms)TTFBでの順位
TeraSwitch Networks
AS20326
0.85 1 15 6
M247
AS9009
1.19 2 6 4
The Constant Company
AS20473
1.32 3 33 8
Akari Networks
AS38136
1.33 4 6 5
Akamai Connected Cloud
AS63949
1.37 5 5 1
xTom
AS3258
1.74 6 4341 9
Amazon.com
AS16509
1.88 7 24 7
Oracle
AS31898
2.04 8 5 2
HostHatch
AS63473
2.04 9 5 3

計測日時: 2026-09-15T21:28:37+02:00 / 同一プローブ集合で HTTPS GET /info(オリジンまで往復)と ICMP ping(CloudFrontエッジまで)を測定 / 観測点: Globalping (https://globalping.io)。同一のプローブ集合で両方を測っています(別々に測ると指標の差ではなく観測点の差になります)。pingはCloudFrontエッジまで、TTFBはオリジンまで往復した値です。

  • ping は全観測点が数ms以内に収まります。同じ都市の中ではエッジまでの距離の差は小さく、しかも次の行のとおりその大小はTTFBの大小と対応しません
  • TTFB は桁で開きます。 そして2つの順位は一致しません。当サイトの計測では、pingで最速だった観測点がTTFBでは最下位という並びも出ました
  • Amazon (AS16509) の観測点も横並びです。CloudFront は anycast で最寄りのエッジに落ちるので、AWSの中にいること自体はエッジまでの距離を縮めません

構造で考えると当然の結果です。往復時間は「自分→エッジ」+「エッジ→オリジン」で、後者は誰にも短縮できません。前者をいくら詰めても、支配的な区間は動かないということです。

WebSocket:Botが実際に張りっぱなしにする経路

ここまでは REST(POST /info)の話でした。しかし実運用の Bot は WebSocket を張りっぱなしにします。当サイトの東京ノードから wss://api.hyperliquid.xyz/ws を実測した値です。

項目実測意味
接続(TLS + Upgrade) 81.0ms 接続時に1回だけ。運用中は効かない
購読 → 初回配信 15.7ms 再接続のたびに効く。切断が多い環境ほど重い
ws post の往復 112.8ms 同じ接続で問い合わせた往復。RESTの代わりに使える
板の配信間隔(中央値) 5.37秒 観測 10 件。ここが実質の解像度
板の配信間隔(最大) 5.51秒 最悪ケース

計測日時: 2026-09-15T21:28:37+02:00 / 対象: wss://api.hyperliquid.xyz/ws(BTC) / l2Book を購読し 45 秒観測。ws post の往復も測定 / 計測地点: 当サイトの計測ノード(東京DC内)。板の配信間隔は購読の種類で大きく変わります(同じ接続で trades を購読すると桁が違います)。

この表で一番重要なのは、速さではなく配信間隔の行です。

再接続のたびに効くのは「購読 → 初回配信」の行です。WebSocket は必ず切れるので、切断が多い環境ほどこの値が積み上がります。回線の平均レイテンシより、切れにくさのほうが効くというのはここに現れます。

東京か、大阪か

Hyperliquid のAPI相手なら東京です。当サイトの実測では東京と大阪の間に往復6ms前後の差があり、この用途ではそれを埋め返す材料がありません。

サービスリージョン平均RTT最小ゆらぎロスホップ
Linode (Akamai) 東京 (jp-tyo-3)
1.0ms
0.7 0.2 0% 9
Vultr 東京 (nrt)
1.0ms
0.5 0.4 0% 7
Oracle Cloud 東京 (ap-tokyo-1)
2.0ms
1.8 0.4 0% 8
Linode (Akamai) 大阪 (jp-osa)
8.3ms
7.9 0.3 0% 17
Oracle Cloud 大阪 (ap-osaka-1)
8.6ms
8.3 0.2 0% 6
Vultr 大阪 (osa)
9.0ms
7.3 4.1 0% 9
Vultr ソウル (参考)
32.1ms
31.4 1.1 0% 10
Hetzner シンガポール (sin)
67.0ms
66.9 0.1 0% 3
Vultr シンガポール (参考)
68.0ms
67.4 1.4 0% 9
Linode (Akamai) シンガポール (参考)
68.6ms
67.2 2.5 0% 10
DigitalOcean シンガポール (sgp1)
74.7ms
74.2 0.8 0% 16
Vultr ロサンゼルス (参考)
107.2ms
107.1 0.1 0% 9
DigitalOcean ニューヨーク (nyc3)
140.4ms
140.2 0.2 0% 16
Vultr アムステルダム (参考)
225.9ms
225.0 1.1 0% 15
Hetzner ドイツ (fsn1)
235.6ms
229.8 8.8 0% 11
Hetzner フィンランド (hel1)
243.7ms
241.5 3.7 0% 12

計測日時: 2026-09-15T21:25:15+02:00 / 計測地点: 日本国内(東京) / ICMP ping x10 + MTR x5。計測方法の詳細

大阪を選ぶ理由があるとすれば、東京リージョンの障害から独立させたい場合の待機系としてです。詳しくは東京と大阪の比較にまとめています。

サービスの選び方

Vultr 東京 — 検証しながら決められる

時間単位課金なので、東京・大阪・シンガポールに同時に立てて自分のBotで実測し、負けたインスタンスを即座に破棄できます。数時間なら数十円です。この用途では「借りてから測る」が現実的な検証手段になります。

Linode 東京 — ゆらぎの小ささを取る

Akamaiのバックボーンに乗っており、経路が安定しています。平均値よりゆらぎ(mdev)を重視するなら候補です。東京は新世代の jp-tyo-3 を選んでください。

避けたほうがいい選択

PR

東京リージョンで実際に測ってから決める

Vultrは時間単位課金です。東京・大阪・シンガポールに同時に立て、自分のBotで往復時間を測り、勝ったリージョンだけ残す。この検証が数十円で終わります。

  • 日本リージョン: 東京・大阪
  • 最安 $2.50〜 / 時間単位
  • 東京・大阪の2拠点で日本からのレイテンシが最小

上記は広告リンクです。紹介された側に $300 クレジット(30日で失効)。価格・特典は公式サイトの表示が最新です。

自分の環境で測る手順

置き場所の判断は、自分のBotが叩くリクエストで測ってください。以下はそのまま実行できます。

# 1. pingは「エッジまで」しか測れないことを確認する(比較には使わない)
ping -c 20 api.hyperliquid.xyz
curl -sI https://api.hyperliquid.xyz/info | grep -i x-amz-cf-pop   # 受けたエッジ

# 2. オリジンまで往復させる(405が返るが、それでよい)
curl -o /dev/null -s -w 'tls:%{time_appconnect} ttfb:%{time_starttransfer}\n' \
  https://api.hyperliquid.xyz/info

# 3. 実運用に近い形で測る(接続を維持したまま板情報を繰り返し取得)
python3 - <<'PY'
import http.client, json, time, statistics
c = http.client.HTTPSConnection("api.hyperliquid.xyz", timeout=10)
body = json.dumps({"type": "l2Book", "coin": "BTC"})
hdr = {"Content-Type": "application/json"}
ts = []
for _ in range(30):
    t = time.perf_counter()
    c.request("POST", "/info", body, hdr); r = c.getresponse(); r.read()
    ts.append((time.perf_counter() - t) * 1000)
s = sorted(ts)
print(f"min {s[0]:.1f}ms  median {statistics.median(s):.1f}ms  p95 {s[int(len(s)*0.95)-1]:.1f}ms")
PY

WebSocket を測る

# pip install websockets (当サイトの日次計測は依存を避けて標準ライブラリで書いていますが、
# 手元で1回測るだけならこちらが早いです)
import asyncio, json, time, statistics, websockets

async def main(coin="BTC", seconds=45):
    async with websockets.connect("wss://api.hyperliquid.xyz/ws") as ws:
        await ws.send(json.dumps({"method": "subscribe",
                                  "subscription": {"type": "l2Book", "coin": coin}}))
        t0, stamps = time.perf_counter(), []
        end = time.time() + seconds
        while time.time() < end:
            try:
                msg = await asyncio.wait_for(ws.recv(), timeout=max(0.1, end - time.time()))
            except asyncio.TimeoutError:
                break
            if json.loads(msg).get("channel") == "l2Book":
                stamps.append(time.perf_counter())
        if not stamps:
            print("配信が届きませんでした"); return
        print(f"購読→初回配信 {(stamps[0]-t0)*1000:.1f}ms / {len(stamps)}件")
        if len(stamps) > 1:
            gaps = [(b-a)*1000 for a, b in zip(stamps, stamps[1:])]
            print(f"配信間隔 中央値 {statistics.median(gaps):.0f}ms / 最大 {max(gaps):.0f}ms")

asyncio.run(main())

WebSocket の配信間隔は、購読してからしばらく放置して測ります。30秒では足りません(5秒間隔なら6件しか取れず、中央値が安定しません)。当サイトは45秒観測しています。自分のBotが使う購読内容で測ること。 l2Booktrades では桁が違います。

当サイトが上と同じことを毎回同じ手順で行うスクリプトは scripts/measure-hyperliquid.py です(WebSocketの計測は依存パッケージを使わず標準ライブラリだけで書いてあります)。計測方法のページに方針を書いています。

運用チェックリスト

時刻同期は特に見落とされます。VPSを立てた直後はNTPが有効でないイメージがありますtimedatectlSystem clock synchronized: yes を確認してから本番に移してください。

よくある質問

Hyperliquid の Bot を動かすVPSは東京リージョンがいいですか

当サイトの実測では、api.hyperliquid.xyz のオリジンまでの往復(TTFB)は日本国内(東京・大阪)の観測点が最も小さく、韓国・シンガポールが数十ms、米国が100ms超、欧州が200ms超と、距離に応じて一貫して大きくなりました。したがって東京リージョンに置く合理性があります。ただしこれは当サイトが観測した時点の結果で、Hyperliquid 側の構成が変われば変わります。

api.hyperliquid.xyz に ping を打って比較すればいいですか

いけません。このホストは CloudFront の後ろにあり、ping が返ってくるのは利用者の近くにあるCDNエッジです。東京・大阪・シンガポールのどのVPSから打っても数msの良い値が出てしまい、差が出ません。判断には接続を維持した状態での POST /info の往復時間か、オリジンまで到達するリクエストのTTFBを使ってください。

AWS のインスタンスに置けば CloudFront まで近くて有利ですか

当サイトの実測では有利になりませんでした。東京の観測点を同一条件で並べると、Amazon (AS16509) の観測点は ping でも TTFB でも他社と横並びです。CloudFront は anycast で最寄りのエッジに落ちるため、AWS の中にいること自体はエッジまでの距離を縮めません。そしてエッジから先、オリジンまでの区間は誰にも短縮できないので、そこが往復時間の大半を占めます。

どのくらいのスペックが必要ですか

板情報の購読と発注だけなら 1〜2GB RAM の小さいインスタンスで足ります。効くのはCPUコア数よりネットワークの安定性と、WebSocket を維持し続けられる環境です。自前で特徴量を計算したり複数銘柄を同時に扱うなら 4GB 以上を見てください。

テストネットで先に試せますか

api.hyperliquid-testnet.xyz が用意されています。当サイトの東京ノードからは本番と同程度の応答でした。署名まわりとレート制限の挙動はテストネットで確認してから本番に移すのが安全です。

WebSocketの板情報はどのくらいの頻度で届きますか

当サイトが東京ノードから観測した限りでは、l2Book(板情報)の配信は約5秒に1回でした。BTCとETHの両方で再現しています。一方 trades(約定)はイベント駆動で0.7秒前後の間隔で届きました。板を見て判断する設計なら、往復レイテンシを1ms詰めるより、見ている板が最大5秒古いという事実のほうが支配的です。ただしこれが仕様なのか購読の仕方によるものかは当サイトでは確定できていないため、自分のBotが使う購読内容で必ず測り直してください。

レイテンシを詰めればそのまま勝てますか

いいえ。Hyperliquid はオンチェーンのオーダーブックで、約定はブロックの生成順に従います。VPSからAPIまでの数msを詰めても、その先の合意形成の時間は短縮できません。回線の速さより、切れないこと・時刻がずれないこと・ゆらぎが小さいことのほうが実運用では効きます。

Vultr: $2.50〜PR・アフィリエイトリンク
公式を見る