[TOC]

Baru-baru ini, seorang rakan bertanya sama ada strategi arbitraj kadar pendanaan boleh dibuat. Contohnya, selalunya terdapat ketidakselarasan dalam kadar pendanaan antara CEX dan DEX, dan strategi tersebut boleh mengumpul peluang arbitraj dan menggunakan AI untuk menentukan sama ada berbaloi untuk membuka posisi. Walau bagaimanapun, sentiasa ada masalah:Tiada alat pengesanan peluang arbitraj yang baik。
Secara kebetulan, seorang yang hebat mengesyorkannya.VarFundingPlatform ini mengumpul data kadar pendanaan masa nyata daripada pelbagai bursa, termasuk Binance, Hyperliquid, Lightner dan Bybit, yang semuanya disenaraikan di platform. Lebih penting lagi, dengan membandingkan data kadar pendanaan masa nyata ini, ia menyediakan kombinasi peluang arbitraj yang optimum.

Ini ibarat bantal yang diberikan ketika anda mengantuk! Hari ini, saya akan membimbing anda langkah demi langkah melalui reka bentuk strategi arbitraj kadar pendanaan ini.
Sebelum kita membincangkan strategi, mari kita jelaskan satu soalan:Apakah sebenarnya arbitraj kadar pendanaan?
Kontrak kekal mempunyai mekanisme yang dipanggilKadar PembiayaanKitaran penyelesaian berbeza dari pertukaran ke pertukaran; ada yang mempunyai tempoh penyelesaian selama 8 jam, ada yang mempunyai tempoh penyelesaian selama 4 jam, dan ada juga yang mempunyai tempoh penyelesaian selama 1 jam.
Bursa yang berbeza mempunyai struktur pengguna dan kecairan yang berbeza, menghasilkan keseimbangan kuasa yang berbeza antara kenaikan dan penurunan. Oleh itu, kadar pendanaan untuk mata wang kripto yang sama sering berbeza antara bursa yang berbeza.
Contohnya, kadar yuran BTC bursa A ialah…+0.1%Bursa B ialah+0.05%。
Pada ketika ini kita boleh:
Dengan melindungi kedudukan di kedua-dua belah pihak, keuntungan dan kerugian daripada turun naik harga mengimbangi antara satu sama lain, tetapi perbezaan yuran (0.05%) sentiasa ditanggung.

Inilah logik teras arbitraj kadar pendanaan: anda mendapat keuntungan daripada perbezaan kadar, bukan daripada turun naik harga.
Setelah memahami prinsip arbitraj kadar pendanaan, persoalan seterusnya ialah: bagaimana kita melaksanakannya?
Pendekatan tradisional adalah dengan menulis program yang lengkap, tetapi kali ini kami memilih untuk menggunakan…Aliran kerjaIni dicapai melalui aliran kerja. Aliran kerja mempunyai beberapa kelebihan unik:
Setiap nod bertanggungjawab untuk fungsi bebas: pengumpulan data, penapisan, penilaian AI dan pelaksanaan. Setiap nod mempunyai tanggungjawabnya sendiri, logiknya jelas dan mudah untuk dinyahpepijat dan diubah suai.
Keseluruhan proses operasi strategi adalah jelas sepintas lalu, dan sebarang masalah dalam mana-mana pautan boleh dikesan dengan cepat.
Untuk mengubah kriteria penapisan atau mengoptimumkan logik transaksi, anda hanya perlu mengubah suai nod yang sepadan; anda tidak perlu menyentuh bahagian lain.
Aliran kerja secara semula jadi menyokong pemanggilan model besar, menjadikannya sangat mudah untuk AI mengambil bahagian dalam membuat keputusan.
Untuk keperluan iniPelbagai sumber data, pemprosesan berbilang langkahBagi strategi arbitraj, aliran kerja merupakan kaedah pelaksanaan yang sangat sesuai.
Strategi ini dibahagikan kepadaDua laluan utama:


Kedua-dua barisan ini masing-masing mempunyai tanggungjawab masing-masing: barisan pelaksanaan mengendalikan proses membuat keputusan dan transaksi, manakala barisan pengumpulan data bertanggungjawab untuk pengumpulan dan visualisasi data. Reka bentuk ini membolehkan strategi dilaksanakan dengan cekap di samping membolehkan pemantauan status operasinya secara masa nyata.
Strategi ini memerlukan konfigurasi beberapa parameter utama:
['binance', 'hyperliquid', 'lighter']['high', 'medium', 'low']Kita boleh menetapkan parameter ini secara fleksibel mengikut keperluan kita sendiri.
Langkah pertama dalam strategi ini adalah untuk mendapatkan data peluang arbitraj. Ini dilakukan dengan mengakses API VarFunding melalui permintaan HTTP, memasukkan senarai pertukaran yang telah dikonfigurasikan terlebih dahulu:
const url = `https://varfunding.xyz/api/funding?exchanges=${exchangeList.join(',')}`;
Platform ini mengembalikan data yuran untuk semua mata wang kripto di pelbagai bursa, berserta kombinasi arbitraj optimum yang dikira. Walau bagaimanapun, disebabkan oleh jumlah data mentah yang besar, tidak semuanya boleh digunakan. Strategi ini akan ditapis, hanya mengekalkan peluang di mana kedua-dua posisi panjang dan pendek tersedia di bursa yang disenaraikan dalam senarai konfigurasi kami:
const filteredMarkets = data.data.markets.filter(market => {
const bestExchange = market.bestRate?.exchange;
const worstExchange = market.worstRate?.exchange;
return exchangeList.includes(bestExchange) && exchangeList.includes(worstExchange);
});
Data yang ditapis akan diekstrak ke dalam format yang ringkas, hanya menyimpan maklumat penting: pasangan dagangan, pertukaran panjang, pertukaran pendek, spread yuran, anggaran pulangan tahunan dan tahap keyakinan. Data ini akan disimpan untuk analisis peluang arbitraj seterusnya.
Hanya mempunyai satu titik data kadar tidak mencukupi, kerana kadar mungkin berubah-ubah buat sementara waktu. Oleh itu, strategi ini mengumpul snapshot data secara berterusan, menyimpan data kadar semasa setiap minit dan hanya menyimpan data sejarah daripada N jam terkini.
Selepas mengumpul sampel yang mencukupi, strategi ini akan menjalankan analisis statistik untuk mengira kekerapan setiap mata wang pada tahap keyakinan yang berbeza:
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++;
// ... 统计其他置信度
}
}
Kemudian, mata wang dikategorikan mengikut tahap keyakinan yang paling kerap, dan skor berwajaran dikira:
score = (high出现次数 × 3 + medium出现次数 × 2 + low出现次数) / 总次数
Penarafan ini mencerminkan kestabilan peluang arbitraj. Semakin tinggi penarafan, semakin konsisten prestasi peluang tersebut dalam data sejarah, dan semakin boleh dipercayai.
Selepas analisis yuran selesai, strategi tersebut akan menyemak kedudukan sedia ada menggunakan senarai peluang arbitraj terkini. Logik teras pengesanan penutupan kedudukan adalah untuk berulang melalui semua bursa untuk mencari status kedudukan semasa:
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;
}
Kemudian tentukan posisi mana yang perlu ditutup. Terdapat dua senario:
Jenis pertamaPeluang arbitraj telah hilang. Jika mata wang yang sepadan dengan pegangan tertentu tidak lagi disenaraikan dalam senarai peluang arbitraj terkini, ini bermakna spread yuran telah menyempit, dan anda harus menutup posisi anda untuk mengunci keuntungan.
Jenis keduaArahnya telah berubah. Contohnya, jika sebelum ini anda berada dalam posisi beli di titik A dan posisi jual di titik B, tetapi sekarang posisi tersebut telah terbalik, anda perlu menutup posisi lama terlebih dahulu.
Menutup kedudukan akan menutup kedua-dua kedudukan secara serentak:
// 平多仓
exchanges[longExIndex].CreateOrder(symbol, "closebuy", -1, amount);
// 平空仓
exchanges[shortExIndex].CreateOrder(symbol, "closesell", -1, amount);
Dan kosongkan rekod pegangan bagi memastikan jawatan yang telah tamat tempoh diuruskan sebelum mencari peluang baharu.
Selepas semakan penutupan kedudukan, strategi akan menjalankan dagangan langsung untuk mengesahkan peluang arbitraj yang dipilih. Pengesahan merangkumi dua aspek:
Kira perbezaan harga sejarah dengan mendapatkan data carta candlestick daripada kedua-dua bursa:
// 获取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);
Petunjuk ini mencerminkan konsistensi pergerakan harga antara kedua-dua bursa. Turun naik harga yang besar menunjukkan risiko yang lebih tinggi.
Dapatkan data pasaran masa nyata dan hitung kos transaksi:
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;
Jika kos pembukaan dan penutupan posisi terlalu tinggi, ia akan menghakis pendapatan yuran, dan peluang sedemikian tidak berbaloi untuk diteruskan.
Selepas pengesahan, jika tiada peluang arbitraj tersedia dalam data (dataJika objek kosong, proses tersebut akan berakhir secara langsung. Jika peluang kemasukan baharu timbul, fasa penilaian AI akan bermula.
Peluang pengesahan yang berjaya akan diberikan kepada AI untuk penilaian komprehensif. Kami menggunakan gesaan yang direka bentuk dengan teliti untuk membuat AI berfikir seperti penganalisis arbitraj profesional.
AI akan menganalisis beberapa dimensi:
Sama ada pendapatan yuran boleh menampung risiko turun naik sebaran harga. Logik pertimbangan teras ialah:
如果 rateSpread(每8小时收益)> range × 0.3
说明即使价差波动到极端情况,1-2个结算周期就能覆盖风险
Jika purata spread harga adalah negatif dan kedudukan beli berada di bursa dengan harga yang lebih rendah, maka membuka kedudukan membolehkan anda membeli pada harga yang lebih murah, yang merupakan syarat yang baik untuk membuka kedudukan.
Adakah jumlah dagangan di kedua-dua bursa mencukupi, dan adakah spread bid-ask munasabah? Jika jumlah dagangan 24 jam mana-mana bursa kurang daripada $100,000, atau spread bid-ask melebihi 0.3%, kecairan mungkin tidak mencukupi.
Bolehkah kos pembukaan dan penutupan posisi ditanggung oleh pendapatan yuran dalam tempoh masa yang munasabah?
如果 roundTripCost < rateSpread × 2
意味着 2 个结算周期(16小时)就能覆盖交易成本
AI akan memberi skor kepada setiap peluang (0-100 mata) dan menentukan tahap risikonya (rendah/sederhana/tinggi). Hanya peluang yang memenuhi skor akan dilaksanakan. Pada masa yang sama, AI akan mencadangkan jumlah kemasukan yang sesuai berdasarkan tahap risiko.
Output AI ialah tatasusunan JSON, dengan setiap elemen mengandungi: sama ada untuk mengesyorkan pembukaan posisi, penarafan, jumlah yang disyorkan, tahap risiko dan sebab keputusan tersebut.
Sebaik sahaja penilaian AI diluluskan, strategi tersebut akan melaksanakan kedudukan pembukaan. Proses pelaksanaannya sangat ketat:
Kira berapa banyak kontrak yang perlu dibuka berdasarkan jumlah pembukaan yang dicadangkan dan harga semasa:
const currentPrice = getCurrentPrice(ex, symbol);
const contractAmount = amountUSD / currentPrice / ctVal;
dalamctValIa adalah nilai muka kontrak, yang mungkin berbeza antara bursa yang berbeza.
Cuba tetapkan leveraj sasaran (lalai 10x), dan jika ia tidak disokong, kurangkannya langkah demi langkah:
const leveragesToTry = [10, 5, 3, 2, 1];
for (let lev of leveragesToTry) {
const result = ex.SetMarginLevel(symbol, lev);
if (result === true) {
return lev; // 设置成功
}
}
Selepas membuat pesanan, ia tidak dianggap berjaya serta-merta; anda mesti menunggu pengesahan pesanan.
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);
}
Walaupun pesanan tersebut ditunjukkan seperti yang dilaksanakan, anda masih perlu menyemak semula pegangan sebenar:
const position = getPosition(ex, symbol);
if (!position || Math.abs(position.Amount) === 0) {
// 订单成交但无持仓,开仓失败
return { success: false };
}
Jika hanya satu arah posisi berjaya dibuka (contohnya, posisi beli berjaya dibuka, tetapi posisi jual gagal), strategi tersebut akan menutup posisi yang dibuka secara automatik:
if (!results.short.success && results.long.success) {
// 尝试平掉多仓
const pos = getPosition(longEx, longSymbol);
executeClose(longEx, longSymbol, true, pos.Amount, longExchange);
}
Ini mengelakkan pendedahan berat sebelah dan memastikan sifat lindung nilai arbitraj.
Selepas kedudukan berjaya dibuka, strategi tersebut akan menyimpan maklumat kedudukan arbitraj, termasuk waktu pembukaan, harga dan kuantiti, untuk digunakan dalam pemeriksaan penutupan berikutnya.
Semasa pelaksanaan strategi, semua maklumat dipaparkan dalam masa nyata pada panel pemantauan, dibahagikan kepada lima jadual: Gambaran Keseluruhan Akaun memaparkan baki, jumlah beku, jumlah ekuiti dan ringkasan jumlah untung rugi untuk setiap pertukaran; Isyarat Arbitraj membentangkan peluang arbitraj yang dikesan pada masa ini, status pelaksanaan dan sebab kegagalan; Butiran Keputusan Kedudukan Pembukaan merekodkan skor AI, tahap risiko dan asas pertimbangan untuk setiap peluang; Kedudukan Arbitraj Masa Nyata memaparkan portfolio arbitraj yang dipegang pada masa ini, untung rugi panjang/pendek dan tempoh pegangan; Statistik Keuntungan Arbitraj meringkaskan keuntungan dan pulangan arbitraj untuk hari ini, minggu ini, bulan ini dan secara kumulatif.

Panel-panel ini membolehkan anda memantau status strategi dalam masa nyata, termasuk kesihatan akaun, peluang semasa dan semua maklumat penting seperti untung rugi portfolio.
Akhir sekali, mari kita bincangkan tentang risiko dan langkah berjaga-jaga:
Walaupun arbitraj kadar pendanaan merupakan strategi lindung nilai, ia tidak bebas risiko. Perbezaan harga antara dua bursa boleh berubah-ubah, dan jika turun naik melebihi keuntungan kadar pendanaan, kerugian akan berlaku. Inilah sebabnya strategi tersebut perlu mengesahkan kestabilan perbezaan harga.
Jika sesebuah bursa mempunyai kecairan yang tidak mencukupi, gelinciran semasa membuka dan menutup posisi boleh menjadi ketara. Contohnya, jika kedalaman buku pesanan tidak mencukupi, pesanan pasaran anda mungkin dilaksanakan pada harga yang sangat rendah, mengakibatkan kos sebenar pembukaan posisi menjadi jauh lebih tinggi daripada yang dijangkakan.
Khususnya, sesetengah DEX baharu mungkin mempunyai masalah dengan kelemahan kontrak atau kekurangan kecairan. Terdapat kes di mana pengguna telah kehilangan dana disebabkan oleh kelemahan kontrak pintar dalam DEX.
Strategi ini memerlukan dana disimpan di berbilang bursa. Contohnya, jika anda melakukan arbitraj di 3 bursa, dana tersebut akan tersebar di 3 tempat, mengakibatkan penggunaan modal yang agak rendah.
Saya cadangkan anda menguji dengan sejumlah kecil wang terlebih dahulu.Setelah membiasakan diri dengan logik operasi strategi tersebut, tingkatkan pelaburan anda secara beransur-ansur. Anda boleh mulakan dengan arbitraj antara dua bursa arus perdana untuk mengumpul pengalaman sebelum berkembang ke lebih banyak bursa.
Hari ini, kami memperkenalkan strategi arbitraj kadar pendanaan ini berdasarkan platform VarFunding. Ia melaksanakan proses lengkap daripada pengumpulan data, pengesahan kestabilan, penilaian AI hingga pelaksanaan automatik dan menyediakan pemantauan visual yang jelas.
Idea teras strategi tersebut ialah:
Sudah tentu, ini hanyalah rangka kerja asas, dan masih banyak ruang untuk pengoptimuman:
Kod lengkap telah didedahkan kepada umum di Platform Kuantifikasi Pencipta.Strategi arbitraj kadar pembiayaan aliran kerjaKami mengalu-alukan semua orang untuk menggunakannya dan menambah baiknya.