億ドロ続出のHyperliquidで0コストお削りbotを作成した話
本記事は仮想通貨botter Advent Calendar 2024の10日目の記事です。
今年一番の大ネタ、Hyperliquidについて書こうと思います。
Hyperliquid
界隈の人には釈迦に説法だとは思いますが、軽くHyperliquidについておさらいしようと思います。
Hyperliquid 概要
DYDXとGMXの特徴を兼ね備えたデリバティブ
オーダーブック形式
Tendermintをバックエンドに実装された Hyperliquid L1 という独自のチェーンが TPS 20k で処理を回している(※24年2月、コンセンサスアルゴリズムの更新により5x-10xの速度に)
稼働初期から、流動性はGMXで言うところのGLPである Hyperliquidity Provider(HLP)が担っており、最近では清算用のLiquidator VaultもHLPに統合された
つまりCEXと同じ快適な使用感とパフォーマンスを兼ねそなえたDEXです。簡単に言うと世界最高perpetual DEX、もっと端的に言うとDecentralized Binancneです。
エアドロ
こちらも界隈の方にはあえて説明することではありませんが、web3プロジェクトではよくよく行われるマーケティング手法で、サービスの利用者にTGE時点でトークンを配布することをエアドロといいます。
Hyperliquidではサービスの利用量に応じてポイントが配布され、そのポイントが将来のエアドロにつながることが強く示唆されていました。
過去にもdydx, Taiko等の他サービスにて大規模なエアドロが実施されており、一撃一億円を超えるエアドロは億ドロと呼ばれています。
Hyperliquidでは2024年11月末に$HYPEのTGEとエアドロが行われました。
今日、また一つ仮想通貨ドリームが誕生しましたね。
— SOU⚡️仮想通貨 / ビットコイン (@SOU_BTC) November 29, 2024
Hyperliquid $HYPE で、ガチで人生変わった人がまわりに100人以上いそう。クリプト、マジで最高やね。
エアドロもらえなかった人も、萎える必要はマジでないです。
ここに居れば、こういうのが絶対にまた来るので相場に立ち続けましょう!🥳🎉 https://t.co/HTeKzJvMse pic.twitter.com/3TLPUqUD3q
お削り
上記を踏まえたうえで、エアドロされるトークンを最大化するために「お削り」と呼ばれる手法が流行っていました。
取引手数料やその他コストを生贄に、取引高をとにかく増やす手法で、ポイントが取引高と強く相関して配布されるだろうという想定に基づいて、ポイント、エアドロ額を増やすためによく行われていました。1ptあたりの取得単価、取引高あたりのコストについてもよくDiscord内で話題になっていたことを記憶しています。
以下で話すbotはこの「お削り」を0コスト(というか実際は利益を出しながら)で行うものになります。
0コストお削りbot
以上をまとめて、「0コストお削りbot」とは、取引手数料や価格変動による損失等のコストをトータルでは全くかけず(なんなら利益を出しながら)Hyperliquid上での取引高をひたすら稼ぐbotになります。
基本的な戦略は以下のとおりです。
対象銘柄についてBybitのUSDC SpotとHyperliquid先物間の価格差を監視
HyperliquidのBest Bid - Bybit USDC SpotのBest Askが一定以上
現物と先物のデルタニュートラルポジションをOpen
Bybit USDC SpotのBest Bid - HyperliquidのBest Askが一定以上
現物と先物のデルタニュートラルポジションをClose
といったものになります。
戦略としては単純で、現物と先物のショートポジションを組み合わせ、価格変動リスクをヘッジしようというものです。
Bybit USDC Spotを利用した理由は、取引手数料が0であるためで、後述する価格差を考慮した場合に、スプレッドの広さや板の薄さを考慮しても取引手数料を無料にできるメリットが大きかったからです。Hyperliquid PerpがUSDC建てであり、USDC/USDTの価格を考慮しなくてよくなり実装が楽、という理由もあります。
Bybit USDC Spot - Hyperliquid perp間の価格差
Bybit USDC Spot、Hyperliquid perp間の価格差を取得するには、ロウソク足の過去データでは不十分で、自身で価格データを収集する必要があります(完全に同時刻の価格差を取得する必要があるため)。
私はWebsocketを使って、毎分0秒時点でのL1 bookをFirebaseに格納していました。
ここで上記のヘッジポジションをopen、closeしたときに発生する利益、損失をそれぞれopen_pnl, close_pnlとしましょう。
具体的な計算式は以下のようになります。
df["open_pnl"] = (df["hyperliquid_bid_px"] - df["bybit_usdc_spot_ask_px"]) / (
(df["hyperliquid_bid_px"] + df["bybit_usdc_spot_ask_px"]) / 2
)
df["close_pnl"] = (df["bybit_usdc_spot_bid_px"] - df["hyperliquid_ask_px"]) / (
(df["bybit_usdc_spot_bid_px"] + df["hyperliquid_ask_px"]) / 2
)過去データを用いて、open_pnl, close_pnlを図示してみましょう。
横軸は時間、縦軸は片側のポジションサイズを1としたときのpnlの割合です。
ここで注目してほしいのは、open_pnl、close_pnlともに0以上になっているタイミングがあるということです。
すなわち、open_pnlが0以上のときにヘッジポジションをopenし、close_pnlが0以上のときにヘッジポジションをcloseすれば、open時、close時どちらでも収益を発生させながら取引高を稼ぐ事ができます。
これが0コストお削りbotの基本的なコンセプトです。
執行戦略
執行はMarket orderで行いました。片側にLimit orderを置き、Limit orderが決済された瞬間にMarket orderを投げる方法も実装しましたが、パフォーマンスは概ね悪化しました。websocketで価格を監視し、乖離が広がった瞬間にMarket orderを投げるのが実装も楽だしパフォーマンスも良かったです。
そして次に大事なパラメータとして取引が執行されるopen_pnl、close_pnlの閾値を決めなければなりません。
この閾値が低ければ取引のたびに損失が発生し、閾値が高ければ取引高を十分に稼ぐことができません。
私は大体open_pnlの閾値を20bps、close_pnlの閾値を0bpsに設定していました。
やや保守的な設定で、長いときは数日周期でopen、closeを繰り返す程度の設定でしたが、botが暴走し無限に損失が発生するリスクを考えこの設定にしました。
スリッページを体感で多めに見積もって両取引所それぞれで3bps、取引手数料Hyperliquidが3bps、Bybit USDC Spotが0としたとき、
open時の実際のpnl = open_pnl - 3bps(hyperliquid手数料) - 0bps(bybit手数料) - 3bps - 3bps
close時の実際のpnl = close_pnl - 3bps - 0bps - 3bps - 3bpsとなります。
ここでopen_pnl = 20bps、close_pnl=0bpsとしておけば、一応この取引の往復において損失は発生しないだろう、という想定です。
(ここで先程の取引所と手数料の議論に戻ると、例えばBybit USDT Spotを利用する場合、open時、close時それぞれで10bpsの手数料がかかり、そのため上記に加えて20bps分乖離が広がるのを待たなければなりません。確かにUSDT Spotのほうがスプレッドも狭く、現先乖離が広がりやすそうなアルトコインもありましたが、この20bpsの幅を補って余りあるメリットが継続的には存在しなかったため、USDC Spotを利用することにしました)
この手法は有効だった?
ポイントを稼ぐことを重要視するのであれば、より手数料を支払い、より工夫された戦略を取るのが結果的には最適であったろうと思います。しかし、何より完全放置でよく、お削り時点ではどの程度リターンがあるか見込めない中、損失を抑えて取引高を稼げるこの手法は一定有効であったと思います(加えて当時はそこまでポイントもらえなかったけど、May point結構来てた ので、賢しげ行動が後に再評価された可能性も結構あるんじゃないかと思ってます(あと色々他にも工夫してた))。
で、お前は儲かったの?
オフラインでぜひお話しましょう。
終わりに
Hyperliquidを知るきっかけとなったDEG鯖の皆さん、ハイパー解体新書を著した、らとさんには足を向けて寝れないです(リファ踏ませていただきました)。
初めてアドベントカレンダーを書くにあたって結構肩に力が入ってしまっているかもしれません。万一問題のある内容が含まれていたらXのDMまでご連絡いただければと思います。
Xのアカウントも作りました、ぜひフォローお願いします。
https://x.com/nk2_botter


コメント