
Im ersten Artikel haben wir kurz erläutert, wie Arbitrage mithilfe des Lead-Lag-Phänomens funktioniert. In diesem Artikel geht es hauptsächlich um die börsenübergreifende „Brick Moving“-Arbitrage. Das Grundprinzip besteht darin, das Preisverzögerungsphänomen (Lead-Lag-Effekt) zwischen verschiedenen Börsen auszunutzen. Da die Marktliquidität, die Transaktionsgeschwindigkeit und die Netzwerkverzögerung jeder Börse unterschiedlich sind, ist der Preis derselben Währung an verschiedenen Börsen oft unterschiedlich. synchron . Arbitrageure können solche verzögerten Preisänderungen überwachen und schnell Arbitragegeschäfte durchführen, um risikofreie Gewinne zu erzielen.
Erstens müssen Arbitrageure die Preisunterschiede zwischen verschiedenen Börsen in Echtzeit überwachen, insbesondere den Briefkurs und den Geldkurs. Durch die Verfolgung des Briefkurses der Börse A und des Gebotskurses der Börse B kann davon ausgegangen werden, dass eine Arbitragemöglichkeit besteht, wenn der Briefkurs der Börse A niedriger ist als der Gebotskurs der Börse B. Beispielsweise beträgt der Briefkurs der Börse A 10.000 USDT und der Gebotskurs der Börse B 10.100 USDT. Der Preisunterschied beträgt 100 USDT, was eine potenzielle Arbitragemöglichkeit darstellt. Natürlich müssen wir auch den jüngsten historischen Preisunterschiedsbereich als Referenz für die Eröffnungs- und Schlusspreisunterschiede berücksichtigen, und die Wartezeit ist auch einer der Kosten.
Sobald sich eine Arbitragemöglichkeit ergibt, sollte der Arbitrageur den Vermögenswert an einer Börse mit einem niedrigeren Briefkurs (z. B. Börse A) kaufen und ihn an einer Börse mit einem höheren Gebotskurs (z. B. Börse B) verkaufen. Dies kann über die API automatisiert werden, wodurch eine schnelle Ausführung gewährleistet und die Nutzung von Preisunterschieden maximiert wird. Allerdings müssen bei der Ausführung von Trades Transaktionskosten (wie Gebühren und Slippage) sowie Preisschocks berücksichtigt werden. Angenommen, die Transaktionsgebühr der Börse A beträgt 0,1 %, während die Transaktionsgebühr der Börse B 0,2 % beträgt und es zu Slippage auf dem Markt kommt. Wenn Sie beispielsweise 1 Bitcoin an der Börse A kaufen, kann sich der tatsächliche Transaktionspreis aufgrund der Ausführung großer Aufträge erhöhen, vorausgesetzt, dass die Slippage 0,1 % beträgt. Der tatsächliche Transaktionspreis ist dann um 0,1 % höher als erwartet, was zu einer Erhöhung der Anschaffungskosten führt.
Wenn Slippage und Gebühren berücksichtigt werden, weichen die tatsächlichen Kaufkosten und Verkaufserlöse von den Erwartungen ab.
Der letzte Schritt beim Arbitragegeschäft besteht darin, die Position zu schließen. Wenn beispielsweise nach einer gewissen Zeit der Kaufpreis der Börse A 10.100 USDT und der Verkaufspreis der Börse B 10.150 USDT beträgt und sich der Preisunterschied von 100 USDT auf 50 USDT verringert, schließt das Programm die Position automatisch und Gewinn realisieren. Natürlich kann sich der Spread in manchen Fällen weiter vergrößern und Sie können weiterhin Positionen eröffnen, bis Ihre Mittel aufgebraucht sind. Arbitrageure tragen in weiten Teilen dazu bei, dass die Preisunterschiede an der Börse nicht aufrechterhalten werden können.
Aufgrund der Existenz einer großen Anzahl von Arbitrageuren und Market Makern werden die Preisunterschiede zwischen verschiedenen Börsen nicht sehr groß sein, da sie sich sonst schnell ausgleichen würden. Dies ist das größte Problem beim Carry-Trading.
Das Versäumnis, Aufträge zu erhalten, ist ein häufiges Problem. Wenn das Programm den Preisunterschied feststellt und einen Arbitrageauftrag erteilt, ist der tatsächliche Preisunterschied bei der Transaktion nicht so groß und führt häufig zu einem Verlust. Zu diesem Zeitpunkt sind schnellste Reaktions- und Ausführungsgeschwindigkeit von entscheidender Bedeutung.
Bei einer Single-Leg-Transaktion handelt es sich um eine Transaktion, bei der eine Partei die Transaktion abschließt, die andere Partei sie jedoch nicht abschließt. Dies kommt normalerweise bei starken Marktschwankungen vor. Wenn nur eine Seite der Order erfolgreich ist, besteht für den Arbitrageur ein Exposure-Risiko.
Wenn der Preisunterschied über einen längeren Zeitraum besteht, werden die Mittel einer bestimmten Börse schnell aufgekauft, und Arbitrageure können ihre Arbitragegeschäfte möglicherweise nicht fortsetzen. Zu diesem Zeitpunkt müssen Arbitrageure schnell Gelder transferieren oder ihre Positionen anpassen.
Der Code ist kein echter Code und dient nur zu Demonstrationszwecken. Er berücksichtigt keine Aspekte wie die Anzahl der Märkte, API-Zugriffsfehler, asynchrone Auftragsbeschleunigung usw.
// 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); // 每秒钟执行一次
}
}
Lead-Lag-Arbitrage ist eine börsenübergreifende Arbitragestrategie, die auf der Verzögerungsreaktion des Marktes basiert. Durch die genaue Analyse von Preisunterschieden auf dem Markt und die schnelle Ausführung von Transaktionen können Arbitrageure auf dem Kryptowährungsmarkt stabile Gewinne erzielen. Der Erfolg dieser Strategie hängt allerdings nicht nur von der Ausgestaltung der Strategie selbst ab, sondern erfordert auch eine gute Umsetzung und ein sensibles Gespür für das richtige Timing der Märkte. Angesichts des zunehmenden Wettbewerbs auf den Märkten müssen Arbitrageure ihre Strategien und Techniken kontinuierlich optimieren und ihre Geschwindigkeit und Reaktionsfähigkeit verbessern, um die anhaltende Wirksamkeit von Arbitragemöglichkeiten aufrechtzuerhalten.