3
fokus pada
1444
Pengikut

Pengenalan kepada Arbitraj Lead-Lag dalam Mata Wang Kripto (2)

Dicipta dalam: 2024-12-18 11:16:41, dikemas kini pada: 2024-12-19 15:42:52
comments   0
hits   1677

Pengenalan kepada Arbitraj Lead-Lag dalam Mata Wang Kripto (2)

Pengenalan kepada Arbitraj “Brick Moving”.

Dalam artikel pertama, kami memperkenalkan secara ringkas cara arbitraj menggunakan fenomena Lead-Lag Artikel ini terutamanya akan memperkenalkan arbitraj pertukaran silang “pergerakan bata”. Prinsip asas adalah menggunakan fenomena lag harga (kesan Lead-Lag) antara bursa yang berbeza Kerana kecairan pasaran, kelajuan transaksi dan kelewatan rangkaian setiap pertukaran adalah berbeza, harga mata wang yang sama dalam pertukaran yang berbeza selalunya berbeza . Arbitraj boleh memantau perubahan harga yang ketinggalan dan menjalankan arbitraj dengan cepat untuk mendapatkan keuntungan tanpa risiko.

Bagaimana untuk menggunakan kesan Lead-Lag untuk arbitraj?

1. Pantau perbezaan harga

Pertama, penimbang tara perlu memantau perbezaan harga antara pertukaran berbeza dalam masa nyata, terutamanya harga permintaan dan harga bida. Dengan menjejaki harga permintaan pertukaran A dan harga tawaran pertukaran B, jika harga permintaan pertukaran A lebih rendah daripada harga tawaran pertukaran B, ia boleh dianggap bahawa terdapat peluang arbitraj. Sebagai contoh, harga permintaan pertukaran A ialah 10,000 USDT, dan harga bida pertukaran B ialah 10,100 USDT Perbezaan harga ialah 100 USDT, yang merupakan peluang arbitraj yang berpotensi. Sudah tentu, kita juga perlu mempertimbangkan julat perbezaan harga sejarah terkini sebagai rujukan untuk perbezaan harga pembukaan dan penutupan, dan masa menunggu juga merupakan salah satu kos.

2. Pelaksanaan Pertukaran Bersilang

Sebaik sahaja peluang timbang tara ditemui, penimbang tara harus membeli aset tersebut di bursa dengan harga permintaan yang lebih rendah (seperti Bursa A) dan menjualnya di bursa dengan harga bida yang lebih tinggi (seperti Bursa B). Ini boleh diautomasikan melalui API, memastikan pelaksanaan pantas dan memaksimumkan penggunaan perbezaan harga. Walau bagaimanapun, apabila melaksanakan dagangan, kos transaksi (seperti yuran dan kegelinciran) serta kejutan harga mesti dipertimbangkan. Andaikan yuran transaksi pertukaran A ialah 0.1%, manakala yuran transaksi pertukaran B ialah 0.2%, dan terdapat kegelinciran dalam pasaran. Sebagai contoh, apabila membeli 1 Bitcoin di Bursa A, harga urus niaga sebenar mungkin meningkat disebabkan oleh pelaksanaan pesanan yang besar, dengan mengandaikan kegelinciran adalah 0.1%. Kemudian, harga urus niaga sebenar akan menjadi 0.1% lebih tinggi daripada jangkaan, mengakibatkan peningkatan dalam kos pembelian.

Jika kegelinciran dan yuran diambil kira, kos belian dan pendapatan jualan sebenar akan berbeza daripada jangkaan.

3. Tutup kedudukan

Langkah terakhir dalam arbitraj ialah menutup kedudukan. Sebagai contoh, selepas satu tempoh masa, jika harga beli pertukaran A ialah 10,100 USDT dan harga jual pertukaran B ialah 10,150 USDT, dan perbezaan harga mengecil daripada 100 USDT kepada 50 USDT, program akan menutup kedudukan secara automatik dan merealisasikan keuntungan. Sudah tentu, dalam beberapa kes, penyebaran mungkin terus meluas, dan anda boleh terus membuka kedudukan sehingga dana anda habis. Arbitrageur menyumbang sebahagian besar sebab mengapa perbezaan harga di bursa tidak dapat dikekalkan.

Masalah dan penyelesaian dalam amalan

1. Tiada peluang untuk membuka jawatan

Oleh kerana kewujudan sebilangan besar penimbangtara dan pembuat pasaran, perbezaan harga antara bursa yang berbeza tidak akan sangat berbeza, jika tidak, ia akan diratakan dengan cepat. Ini adalah masalah terbesar yang dihadapi perdagangan carry.

Penyelesaian:

  • Tunggu perbezaan harga terbentuk secara semula jadi:Pasaran mata wang digital sangat tidak menentu, dan biasanya terdapat perbezaan harga jangka pendek Kesabaran adalah cara terbaik untuk menyelesaikan masalah ini.
  • Menggunakan strategi pembuat: Secara aktif membuat pesanan beli dan jual pada buku pesanan pertukaran, dan teruskan membatalkan dan melaraskan pesanan apabila harga berubah Jika satu pihak menyelesaikan transaksi, pihak yang satu lagi akan menerima pesanan itu. Dengan cara ini, yuran urus niaga adalah lebih rendah, spread yang lebih kecil boleh diterima, dan urus niaga boleh dijamin untuk diselesaikan pada kali pertama.
  • Pantau lebih banyak pasangan dagangan:Anda tidak boleh hanya menumpukan pada mata wang arus perdana Peluang arbitraj mereka biasanya telah ditangkap oleh sebilangan besar penimbang tara, menyebabkan perbezaan harga menjadi sempit. Mata wang yang tidak popular dan baru disenaraikan mungkin mempunyai tebaran harga yang besar disebabkan oleh kecairan yang lemah dan persaingan yang kurang, dan merupakan peluang arbitraj yang patut diberi perhatian.
  • Pilih pertukaran kecil:Pertukaran kecil biasanya mempunyai kecairan yang lemah dan pelarasan harga yang lebih perlahan, menjadikannya lebih terdedah kepada perbezaan harga yang lebih besar. Pada masa ini, penimbangtara boleh memilih untuk membuat pesanan dan melaksanakannya terlebih dahulu untuk mendapatkan keuntungan.
  • Pilih pertukaran ambang yang tinggi:Sesetengah pertukaran memerlukan pensijilan KYC yang ketat, seperti pertukaran Korea Upbit. Terdapat lebih banyak peluang arbitraj di tempat-tempat ini yang sukar untuk pedagang biasa masuk Sudah tentu, anda perlu mencari cara untuk mengatasi kesulitan itu sendiri.

2. Perbezaan antara spread transaksi dan spread pemantauan adalah terlalu besar

Kegagalan untuk merebut pesanan adalah masalah biasa Apabila program menemui perbezaan harga dan membuat pesanan arbitraj, perbezaan harga transaksi sebenar tidak begitu besar dan sering mengakibatkan kerugian. Pada masa ini, tindak balas terpantas dan kelajuan pelaksanaan adalah penting.

Penyelesaian:

  • Optimumkan lokasi rangkaian dan pelayan: Pilih nod yang berdekatan dengan pelayan pertukaran untuk mengurangkan kependaman. Sebagai contoh, memilih bursa kecil dengan kecairan yang lemah untuk beroperasi boleh mengurangkan kelajuan tindak balas pasaran dan dengan itu merebut inisiatif.
  • Pemprosesan Asynchronous dan WebSocket:Menggunakan kod asynchronous dan WebSocket untuk menyambung kepada keadaan pasaran, anda boleh menerima maklumat harga dalam masa nyata dan bertindak balas dengan cepat untuk mengelakkan kehilangan peluang akibat ketinggalan maklumat.

3. Perjanjian kaki tunggal

Urus niaga kaki tunggal merujuk kepada urus niaga di mana satu pihak melengkapkan urus niaga manakala pihak lain gagal menyelesaikan urus niaga, yang biasanya berlaku apabila pasaran turun naik dengan cepat. Jika hanya satu bahagian pesanan yang berjaya, penimbang tara akan menghadapi risiko pendedahan.

Penyelesaian:

  • Sediakan mekanisme henti rugi yang munasabah: Apabila urus niaga satu kaki berlaku, anda boleh menetapkan stop loss Penutupan posisi tepat pada masanya adalah cara yang berkesan untuk mengurangkan risiko.
  • Gunakan pesanan pasaran:Harga pasaran boleh menjamin transaksi, tetapi masalahnya ialah perbezaan harga transaksi tidak dapat dikawal dan boleh mengakibatkan kerugian.

4. Gudang penuh pada satu pertukaran

Apabila perbezaan harga wujud untuk masa yang lama, dana pertukaran tertentu akan dibeli dengan cepat, dan penimbang tara mungkin tidak dapat meneruskan operasi arbitraj mereka. Pada masa ini, penimbang tara perlu memindahkan dana dengan cepat atau melaraskan kedudukan mereka.

Penyelesaian:

  • Operasi pemindahan syiling: Gunakan pemindahan mata wang pertukaran silang untuk memindahkan dana dan meneruskan arbitraj. Dengan cara ini, adalah mungkin untuk mengelakkan dana terkumpul dalam satu pasaran dan meningkatkan kecairan dana.
  • Menunggu penyebaran bertukar: Memandangkan kos masa pengeluaran, menunggu perbezaan harga untuk kembali juga merupakan pilihan.

Kod Demo

Kod tersebut bukan kod sebenar dan hanya untuk tujuan demonstrasi. Ia tidak mengambil kira isu seperti bilangan pasaran, kegagalan akses API, kelajuan pesanan tak segerak, dsb.


// symbol 是套利的交易对,比如 BTC/USDT
let symbol = "BTC_USDT";
exchanges[0].SetCurrency(symbol);
exchanges[0].SetPrecision(2, 4); //设置精度
exchanges[1].SetCurrency(symbol);
exchanges[1].SetPrecision(2, 4);

// 设置手续费、滑点、开仓和平仓的利润率
let fee = 0.1 / 100;      // 0.1% 手续费
let slippage = 0.1 / 100; // 0.1% 滑点
let entryThreshold = 0.005; // 开仓阈值:价差大于0.5%时开仓
let exitThreshold = 0.001;  // 平仓阈值:价差回归到0.1%时平仓

// 每次循环执行的具体操作
function OnTick() {
    // 获取各个交易所的行情数据
    let tickers = exchanges.map(exchange => exchange.GetTicker(symbol));
    //容错处理
    if(!tickers[1] || !tickers[0]){
        return;
    }
    // 计算套利机会(基于利润率)
    // profitAB: 从交易所0买入,从交易所1卖出
    const profitAB = (tickers[1].Buy - tickers[0].Sell) / tickers[0].Sell - fee * 2 - slippage * 2;
    // profitBA: 从交易所1买入,从交易所0卖出
    const profitBA = (tickers[0].Buy - tickers[1].Sell) / tickers[1].Sell - fee * 2 - slippage * 2;

    // 打印日志
    Log(`Tickers: Exchange0 Buy: ${tickers[0].Sell}, Exchange1 Sell: ${tickers[1].Buy}, Profit AB: ${profitAB} USDT`);
    Log(`Tickers: Exchange1 Buy: ${tickers[1].Sell}, Exchange0 Sell: ${tickers[0].Buy}, Profit BA: ${profitBA} USDT`);

    // 根据利润判断是否执行套利操作
    if (profitAB > entryThreshold) {  // 当利润大于开仓阈值时开仓
        Log(`套利机会:从交易所0买入BTC,从交易所1卖出,利润:${profitAB} USDT`);
        executeArbitrage(0, 1, tickers[0].Sell, tickers[1].Buy, profitAB);  // 从交易所0买入并在交易所1卖出
    } else if (profitBA > entryThreshold) {
        Log(`套利机会:从交易所1买入BTC,从交易所0卖出,利润:${profitBA} USDT`);
        executeArbitrage(1, 0, tickers[1].Sell, tickers[0].Buy, profitBA);  // 从交易所1买入并在交易所0卖出
    } else if (profitAB < exitThreshold) {  // 如果价差回归,平仓
        Log(`平仓:从交易所0买入并在交易所1卖出的套利机会,利润已回归至平仓阈值`);
        closeArbitrage(0, 1, tickers[0].Sell, tickers[1].Buy); // 执行平仓操作
    } else if (profitBA < exitThreshold) { 
        Log(`平仓:从交易所1买入并在交易所0卖出的套利机会,利润已回归至平仓阈值`);
        closeArbitrage(1, 0, tickers[1].Sell, tickers[0].Buy); // 执行平仓操作
    } else {
        Log("没有足够的利润进行套利或平仓");
    }
}

// 执行套利交易
function executeArbitrage(buyExchangeIndex, sellExchangeIndex, buyPrice, sellPrice) {
    let buyExchange = exchanges[buyExchangeIndex];
    let sellExchange = exchanges[sellExchangeIndex];

    // 获取账户余额(假设为BTC余额)
    let accountBuy = buyExchange.GetAccount();
    let accountSell = sellExchange.GetAccount();

    //容错处理
    if(!accountBuy || !accountSell){
        return;
    }
    let amountBTC = Math.min(accountBuy.Balance / buyPrice, accountSell.Amount);

    // 假设每次交易量为 0.1 BTC
    let amount = Math.min(amountBTC, 0.1);

    // 确保交易量充足
    if (amount <= 0) {
        Log("余额不足,无法进行套利");
        return;
    }

    // 在买入交易所下单买入
    Log(`在交易所${buyExchangeIndex} 下单买入 ${amount} BTC @ ${buyPrice}`);
    buyExchange.Buy(buyPrice * (1 + slippage), amount);

    // 在卖出交易所下单卖出
    Log(`在交易所${sellExchangeIndex} 下单卖出 ${amount} BTC @ ${sellPrice}`);
    sellExchange.Sell(sellPrice * (1 - slippage), amount);
}

// 平仓操作
function closeArbitrage(buyExchangeIndex, sellExchangeIndex, buyPrice, sellPrice) {
    let buyExchange = exchanges[buyExchangeIndex];
    let sellExchange = exchanges[sellExchangeIndex];

    // 获取账户余额(假设为BTC余额)
    let accountBuy = buyExchange.GetAccount();
    let accountSell = sellExchange.GetAccount();

    //容错处理
    if(!accountBuy || !accountSell){
        return;
    }

    let amountBTC = Math.min(accountBuy.Balance / buyPrice, accountSell.Amount);
    let amount = Math.min(amountBTC, 0.1);

    // 在买入交易所吃单卖出
    Log(`在交易所${buyExchangeIndex} 平仓卖出 ${amount} BTC @ ${buyPrice}`);
    buyExchange.Sell(buyPrice * (1 - slippage), amount);

    // 在卖出交易所吃单买入
    Log(`在交易所${sellExchangeIndex} 平仓买入 ${amount} BTC @ ${sellPrice}`);
    sellExchange.Buy(sellPrice * (1 + slippage), amount);
}

// 主循环
function main() {
    while (true) {
        OnTick();
        Sleep(1000); // 每秒钟执行一次
    }
}

ringkaskan

Arbitraj Lead-Lag ialah strategi arbitraj pertukaran silang berdasarkan tindak balas ketinggalan pasaran. Dengan menganalisis perbezaan harga dengan tepat dalam pasaran dan melaksanakan dagangan dengan cepat, penimbang tara dapat memperoleh keuntungan yang stabil dalam pasaran mata wang kripto. Walau bagaimanapun, kejayaan strategi ini bukan sahaja bergantung pada reka bentuk strategi itu sendiri, tetapi juga memerlukan pelaksanaan yang baik dan pemahaman yang sensitif tentang masa pasaran. Apabila persaingan pasaran semakin sengit, penimbang tara perlu terus mengoptimumkan strategi dan teknik mereka dan meningkatkan kelajuan dan responsif mereka untuk mengekalkan keberkesanan peluang arbitraj yang berterusan.