[TOC]

最近、友人から資金調達レートの裁定戦略を作成できるかどうか尋ねられました。例えば、CEXとDEXの資金調達レートにはしばしば不一致があり、この戦略では裁定機会を収集し、AIを使ってポジションを開く価値があるかどうかを判断できます。しかし、常に問題点がありました。優れた裁定機会検出ツールは存在しない。
偶然にも、大物がそれを推薦した。VarFundingこのプラットフォームは、Binance、Hyperliquid、Lightner、Bybitなど、プラットフォームに上場している複数の取引所からリアルタイムの資金調達レートデータを収集します。さらに重要なのは、これらのリアルタイムの資金調達レートデータを比較することで、最適な裁定取引の機会の組み合わせを提供することです。

眠い時にちょうど枕が届けられるような気分です!今日は、この資金調達レート・アービトラージ戦略の設計をステップバイステップで解説します。
戦略を詳しく検討する前に、1 つの質問を明確にしておきましょう。資金調達レート裁定取引とは何でしょうか?
永久契約には、資金調達率決済サイクルは取引所によって異なります。8 時間の決済期間を持つ取引所もあれば、4 時間の決済期間を持つ取引所、さらには 1 時間の決済期間を持つ取引所もあります。
取引所によってユーザー構成や流動性が異なるため、強気派と弱気派の力関係も異なります。そのため、同じ仮想通貨でも、資金調達率は取引所によって異なることがよくあります。
例えば、取引所AのBTC手数料は…+0.1%取引所Bは+0.05%。
この時点で、次のことが可能です。
双方のポジションをヘッジすることで、価格変動による損益は相殺されますが、手数料差額(0.05%)は確実に懐に入ります。

これが資金調達金利裁定取引の核となる論理です。価格変動ではなく金利差から利益を得るのです。
資金調達レート裁定の原則を理解したら、次の質問は、それをどのように実行するかということです。
従来のアプローチでは完全なプログラムを作成しますが、今回は… を使用することを選択しました。ワークフローこれはワークフローによって実現されます。ワークフローにはいくつかの独自の利点があります。
各ノードは、データ収集、フィルタリング、AI評価、実行といった独立した機能を担当します。各ノードは独自の役割を持ち、ロジックは明確で、デバッグや変更が容易です。
戦略全体の運用プロセスが一目でわかり、どのリンクに問題があってもすぐに見つけることができます。
フィルタリング基準を変更したり、トランザクション ロジックを最適化したりするには、対応するノードを変更するだけで済みます。他の部分に触れる必要はありません。
ワークフローは、大規模なモデルの呼び出しを自然にサポートするため、AI が意思決定に参加するのが非常に簡単になります。
このニーズのために複数のデータソース、複数ステップの処理裁定取引戦略の場合、ワークフローは非常に適した実装方法です。
この戦略は、2つのメインライン:


2つのラインはそれぞれ独自の役割を担っており、執行ラインは意思決定と取引を、データ収集ラインはデータの収集と可視化を担っています。この設計により、戦略を効率的に執行すると同時に、運用状況をリアルタイムで監視することが可能になります。
この戦略では、いくつかの重要なパラメータを構成する必要があります。
['binance', 'hyperliquid', 'lighter']['high', 'medium', 'low']これらのパラメータは、必要に応じて柔軟に設定できます。
この戦略の最初のステップは、裁定取引の機会データを取得することです。これは、HTTPリクエストを介してVarFundingのAPIにアクセスし、事前に設定された取引所リストを渡すことで行われます。
const url = `https://varfunding.xyz/api/funding?exchanges=${exchangeList.join(',')}`;
プラットフォームは、様々な取引所における全ての暗号資産の手数料データと、最適な裁定取引の組み合わせを計算して返します。ただし、生のデータが大量にあるため、すべてのデータを使用できるわけではありません。この戦略はフィルタリングされ、設定リストに記載されている取引所でロングポジションとショートポジションの両方が利用可能な機会のみが保持されます。
const filteredMarkets = data.data.markets.filter(market => {
const bestExchange = market.bestRate?.exchange;
const worstExchange = market.worstRate?.exchange;
return exchangeList.includes(bestExchange) && exchangeList.includes(worstExchange);
});
フィルタリングされたデータは、取引ペア、ロング取引所、ショート取引所、手数料スプレッド、推定年率リターン、信頼度といった重要な情報のみを残した簡潔な形式で抽出されます。このデータは、後続の裁定機会分析のために保存されます。
レートは一時的に変動する可能性があるため、レートデータポイントが1つだけでは不十分です。そのため、この戦略では継続的にデータスナップショットを収集し、現在のレートデータを1分ごとに保存し、直近N時間の履歴データのみを保持します。
十分なサンプルを蓄積した後、この戦略は統計分析を実行し、さまざまな信頼レベルで各通貨の頻度を計算します。
const stats = {};
for (const snapshot of savedData) {
for (const [baseAsset, info] of Object.entries(snapshot.data)) {
if (!stats[baseAsset]) {
stats[baseAsset] = { high: 0, medium: 0, low: 0, total: 0 };
}
stats[baseAsset].total++;
if (info.confidence === 'high') stats[baseAsset].high++;
// ... 统计其他置信度
}
}
次に、通貨は最も頻繁な信頼度レベルに従って分類され、加重スコアが計算されます。
score = (high出现次数 × 3 + medium出现次数 × 2 + low出现次数) / 总次数
この評価は裁定取引機会の安定性を反映しています。評価が高いほど、過去のデータにおける裁定取引機会のパフォーマンスが一貫しており、信頼性が高いことを意味します。
手数料分析が完了すると、この戦略は最新の裁定機会リストを使用して既存のポジションをチェックします。ポジションクローズ検出のコアロジックは、すべての取引所を反復処理して現在のポジションステータスを確認することです。
function scanAllPositions() {
const allPositions = {};
for (const [exName, exIndex] of Object.entries(EXCHANGE_MAP)) {
const positions = exchanges[exIndex].GetPositions();
for (const pos of positions) {
const baseAsset = pos.Symbol.match(/^([A-Z0-9]+)_/)[1];
const isLong = pos.Amount > 0;
// 记录多空仓位信息
}
}
return allPositions;
}
次に、どのポジションを決済する必要があるかを判断します。2つのシナリオが考えられます。
最初のタイプ裁定取引の機会は消滅しました。特定の保有通貨に対応する通貨が最新の裁定取引機会リストに掲載されていない場合は、手数料スプレッドが縮小したことを意味します。利益を確定するためにポジションを決済する必要があります。
2番目のタイプ方向が変わりました。例えば、以前はA地点でロングポジション、B地点でショートポジションだったが、今はポジションが逆転している場合、まず古いポジションを決済する必要があります。
ポジションをクローズすると、両方のポジションが同時にクローズされます。
// 平多仓
exchanges[longExIndex].CreateOrder(symbol, "closebuy", -1, amount);
// 平空仓
exchanges[shortExIndex].CreateOrder(symbol, "closesell", -1, amount);
また、新たな機会を探す前に、期限切れのポジションを確実に処理できるよう、保有記録をクリアしてください。
ポジションクローズチェック後、この戦略はライブ取引を実施し、選択された裁定機会を検証します。検証には以下の2つの側面が含まれます。
両方の取引所からローソク足チャート データを取得して、過去の価格差を計算します。
// 获取240根K线
const recordsLong = EX_Long.GetRecords(symbol, PERIOD_M1, 240);
const recordsShort = EX_Short.GetRecords(symbol, PERIOD_M1, 240);
// 计算价差
const spreads = [];
for (const time of commonTimes) {
const midPrice = (priceMapLong[time] + priceMapShort[time]) / 2;
const spread = (priceMapLong[time] - priceMapShort[time]) / midPrice;
spreads.push(spread);
}
// 统计指标
const avgSpread = 平均值(spreads);
const range = 最大值(spreads) - 最小值(spreads);
const stdDev = 标准差(spreads);
これらの指標は、2つの取引所間の価格変動の一貫性を反映しています。価格変動が大きいほど、リスクが高くなります。
リアルタイムの市場データを取得し、取引コストを計算します。
const tickerLong = EX_Long.GetTicker(symbol);
const tickerShort = EX_Short.GetTicker(symbol);
// 买卖价差(反映深度)
const longSpread = (tickerLong.Sell - tickerLong.Buy) / tickerLong.Last;
const shortSpread = (tickerShort.Sell - tickerShort.Buy) / tickerShort.Last;
// 开仓成本(在Long所买入,Short所卖出)
const openCost = (tickerLong.Sell - tickerShort.Buy) / midPrice;
// 平仓成本(在Short所买入,Long所卖出)
const closeCost = (tickerShort.Sell - tickerLong.Buy) / midPrice;
// 往返总成本
const roundTripCost = openCost + closeCost;
ポジションの開設と決済にかかるコストが高すぎると、手数料収入が減ってしまうため、そのような機会を追求する価値はありません。
検証後、データに裁定機会がない場合(dataオブジェクトが空の場合、プロセスはそのまま終了します。新たなエントリ機会が発生した場合、AI評価フェーズが開始されます。
検証成功の可能性はAIに与えられ、総合的な評価が行われます。AIがプロの裁定アナリストのように思考できるよう、慎重に設計されたプロンプトを使用しました。
AI はいくつかの側面を分析します。
手数料収入が価格スプレッド変動リスクをカバーできるかどうか。判断の核となるロジックは以下のとおりです。
如果 rateSpread(每8小时收益)> range × 0.3
说明即使价差波动到极端情况,1-2个结算周期就能覆盖风险
平均価格スプレッドがマイナスで、買いポジションがより安い価格の取引所にある場合、ポジションを開くことでより安い価格で購入することができ、ポジションを開くのに有利な条件となります。
両取引所の取引量は十分ですか?また、売買スプレッドは妥当ですか?どちらかの取引所の24時間取引量が10万ドル未満、または売買スプレッドが0.3%を超える場合、流動性が不足している可能性があります。
ポジションの開設と決済にかかるコストは、合理的な期間内に手数料収入で賄えるでしょうか?
如果 roundTripCost < rateSpread × 2
意味着 2 个结算周期(16小时)就能覆盖交易成本
AIは各機会を0~100ポイントでスコア化し、リスクレベル(低/中/高)を決定します。スコアを満たす機会のみが執行されます。同時に、AIはリスクレベルに基づいて適切なエントリー額を提案します。
AI の出力は JSON 配列であり、各要素には、ポジションを開くことを推奨するかどうか、評価、推奨金額、リスク レベル、および決定の理由が含まれます。
AIによる評価に合格すると、この戦略はポジションを実行します。実行プロセスは非常に厳格です。
提案された開始金額と現在の価格に基づいて、開く必要がある契約数を計算します。
const currentPrice = getCurrentPrice(ex, symbol);
const contractAmount = amountUSD / currentPrice / ctVal;
で ctValこれは契約額面金額であり、取引所によって異なる場合があります。
目標レバレッジ(デフォルトは 10 倍)を設定してみて、それがサポートされていない場合は段階的に減らしてください。
const leveragesToTry = [10, 5, 3, 2, 1];
for (let lev of leveragesToTry) {
const result = ex.SetMarginLevel(symbol, lev);
if (result === true) {
return lev; // 设置成功
}
}
注文後、すぐに注文が成功したとはみなされません。注文の確認を待つ必要があります。
const orderId = ex.CreateOrder(symbol, 'buy', -1, contractAmount);
// 循环检查订单状态
for (let i = 0; i < 20; i++) {
const order = ex.GetOrder(orderId);
if (order.Status === ORDER_STATE_CLOSED) {
// 完全成交
break;
}
Sleep(500);
}
注文が実行されたと表示されていても、実際の保有状況を再度確認する必要があります。
const position = getPosition(ex, symbol);
if (!position || Math.abs(position.Amount) === 0) {
// 订单成交但无持仓,开仓失败
return { success: false };
}
ポジションの 1 方向のみが正常に開かれた場合 (たとえば、ロング ポジションは正常に開かれたが、ショート ポジションは失敗した場合)、この戦略では開かれたポジションを自動的にクローズします。
if (!results.short.success && results.long.success) {
// 尝试平掉多仓
const pos = getPosition(longEx, longSymbol);
executeClose(longEx, longSymbol, true, pos.Amount, longExchange);
}
これにより、一方的なエクスポージャーが回避され、裁定取引のヘッジ性が確保されます。
ポジションが正常に開かれると、この戦略は、開始時刻、価格、数量などの裁定ポジション情報を保存し、後続のクローズチェックで使用します。
戦略実行中、すべての情報は監視パネルにリアルタイムで表示され、5 つのテーブルに分かれています。アカウント概要には、各取引所の残高、凍結額、総資産、総損益の概要が表示されます。裁定信号には、現在検出された裁定取引の機会、実行ステータス、失敗の理由が表示されます。ポジション開始決定の詳細には、各機会の AI のスコア、リスク レベル、判断基準が記録されます。リアルタイム裁定ポジションには、現在保有している裁定取引ポートフォリオ、ロング/ショート損益、保有期間が表示されます。裁定取引利益統計には、今日、今週、今月、累計の裁定取引利益とリターンがまとめられています。

これらのパネルを使用すると、アカウントの健全性、現在の機会、ポートフォリオの損益などのすべての重要な情報を含む戦略のステータスをリアルタイムで監視できます。
最後に、リスクと注意事項について説明します。
資金調達レート裁定取引はヘッジ戦略ではありますが、リスクフリーではありません。2つの取引所間の価格差は変動する可能性があり、その変動が資金調達レートの利益を上回った場合、損失が発生します。そのため、この戦略では価格差の安定性を検証する必要があります。
取引所の流動性が不十分な場合、ポジションの開設時および決済時に大きなスリッページが発生する可能性があります。例えば、注文板の厚みが不十分な場合、成行注文が非常に不利な価格で約定し、ポジション開設にかかる実際のコストが予想よりもはるかに高くなる可能性があります。
特に、一部の新しいDEXでは、コントラクトの脆弱性や流動性不足といった問題が発生する可能性があります。DEXのスマートコントラクトの脆弱性により、ユーザーが資金を失った事例も発生しています。
この戦略では、資金を複数の取引所に保有する必要があります。例えば、3つの取引所で裁定取引を行う場合、資金は3つの場所に分散されるため、資本利用率は比較的低くなります。
まずは少額のお金でテストしてみることをお勧めします。戦略の運用ロジックに慣れてきたら、徐々に投資額を増やしてください。まずは2つの主要取引所間で裁定取引を行い、経験を積んでから、他の取引所にも投資を拡大していくのが良いでしょう。
本日、VarFundingプラットフォームをベースとした資金調達レート裁定戦略をご紹介いたします。この戦略は、データ収集、安定性検証、AI評価から自動執行まで、包括的なプロセスを実装し、明確な視覚的モニタリングを提供します。
戦略の核となる考え方は次のとおりです。
もちろん、これは単なる基本的なフレームワークであり、最適化の余地はまだたくさんあります。
完全なコードは、Inventors Quantification Platform で公開されています。ワークフロー資金調達レート裁定戦略皆様のご利用と改善を歓迎いたします。