Les ressources ont été chargées... Je charge...

Introduction à la suite de Lead-Lag dans les monnaies numériques (2)

Auteur:Le foin, Créé à partir de: 2024-12-18 11:16:41, Mis à jour à partir de: 2024-12-18 16:54:28

Le déménagement de l'appartement

Dans le premier article, on a probablement expliqué comment le phénomène du lead-lag est appliqué, mais cet article traite principalement du levier de décalage entre les bourses. Son principe de base est de tirer parti de l'effet de retard de prix entre les différents bourses ("effet lead-lag"), car la liquidité du marché, la vitesse de transaction et le retard du réseau diffèrent d'un échange à l'autre, ce qui entraîne souvent des prix différents pour la même monnaie sur différents échanges. Les courtiers peuvent rapidement profiter d'un profit sans risque en surveillant ces variations de prix.

Comment tirer parti de l'effet Lead-Lag?

1. Surveillance des différences de prix

Tout d'abord, les négociants doivent surveiller en temps réel les différences de prix entre les différents échanges, en particulier les prix de vente et les prix d'achat. En suivant le prix de vente d'un échange A par rapport au prix d'achat d'un échange B, il peut être considéré qu'il y a une opportunité d'effet de levier si le prix de vente d'un échange A est inférieur au prix d'achat d'un échange B. Par exemple, le prix de vente d'un échange A est de 10 000 USDT et le prix d'achat d'un échange B est de 10 100 USDT, ce qui représente une opportunité de profit potentiel.

2. Exécution inter-échanges

Une fois une opportunité d'effet de levier découverte, l'intermédiaire devrait acheter un actif sur un échange à un prix de vente inférieur (comme l'échange A) et le vendre sur un échange à un prix d'achat plus élevé (comme l'échange B). Cette opération peut être effectuée par automatisation API pour assurer une exécution rapide et maximiser les différences de prix. Cependant, lors de l'exécution des transactions, les coûts de transaction (comme les frais de traitement et les points de glissement) et les chocs de prix doivent être pris en compte.

Si l'on prend en compte les points de glissement et les frais de service, les coûts réels d'achat et les revenus de vente dépassent les prévisions.

3. La mise à l'échelle

La dernière étape de l'effet de levier est l'équilibrage. Par exemple, après un certain temps, le prix d'achat de l'échange A est de 10,100 USDT, le prix de vente de l'échange B est de 10,150 USDT, et lorsque le décalage de prix diminue de 100 USDT à 50 USDT, le processus d'équilibrage se termine automatiquement. Bien sûr, dans certains cas, le décalage peut continuer à s'étendre, il est possible de continuer à opérer, sachant que les fonds sont épuisés.

Problèmes et stratégies pour les résoudre

1. Aucune opportunité de démarrage

En raison du grand nombre de négociants et de négociants, la différence de prix entre les différents marchés n'est pas très grande, sinon elle sera rapidement compensée.

La stratégie de résolution:

  • Attendre la formation naturelle de la différence de prix: Le marché de la crypto-monnaie est très volatile, avec généralement de courtes différences de prix, et la patience est la meilleure façon de résoudre ce problème.
  • Utilisez la stratégie des créateursL'opération consiste à acheter et vendre des commandes sur un carnet d'ordres d'un échange et à les retirer en fonction des changements de prix, si l'une des parties effectue une transaction, l'autre partie effectue une transaction.
  • Surveiller plus de paires de transactionsLes devises classiques ne peuvent pas être considérées comme des monnaies traditionnelles, dont les opportunités d'effet de levier ont souvent été captées par un grand nombre de courtiers, ce qui a entraîné une diminution des différences de prix. Les devises froides et les nouvelles monnaies haussières, qui peuvent générer des écarts plus importants en raison de leur faible liquidité et de leur faible concurrence, sont des opportunités d'effet de levier intéressantes.
  • Choisir une petite bourseLes petites bourses sont généralement plus sujettes à des différences de prix plus importantes en raison de la faible liquidité et de l'ajustement des prix plus lent.
  • Choisissez une bourse à haut plafondCertains échanges ont besoin d'une certification KYC stricte, comme Upbit en Corée. Ces échanges sont difficiles d'accès pour les traders ordinaires, et les opportunités d'exploitation sont plus nombreuses, bien sûr.

2. Les différences de prix et de surveillance sont trop importantes

Les échecs de prise d'ordres sont fréquents, lorsque les procédures trouvent une différence de prix pour placer une commande, ce qui entraîne souvent des pertes. Dans ce cas, la rapidité de réponse et la rapidité d'exécution sont essentielles.

La stratégie de résolution:

  • Optimiser la localisation du réseau et du serveurPar exemple, choisir de travailler sur de petits échanges moins liquides peut ralentir la réaction du marché et ainsi prendre le dessus.
  • Traitement asynchrone avec le WebSocket: l'utilisation d'un code asynchrone et d'un WebSocket pour connecter le marché, permettant de recevoir des informations de prix en temps réel et de réagir rapidement, évitant ainsi les occasions de manquement dues à un retard d'information.

3 - Une seule jambe

Les transactions monolégères impliquent que l'une des parties effectue une transaction et que l'autre ne parvient pas à la réaliser, ce qui se produit généralement dans des conditions de fluctuation rapide du marché. Si une seule des commandes est réussie, le courtier risque de s'échapper.

La stratégie de résolution:

  • Mettre en place des mécanismes raisonnables pour arrêter les pertes: Lorsque des transactions à un seul pied se produisent, un stop-loss peut être mis en place, et un solde rapide est un moyen efficace de réduire les risques.
  • Utilisez le prix du marchéLe problème est que les prix des transactions sont incontrôlables et peuvent être perçus comme des pertes.

4. Les bourses individuelles sont bondées

Lorsqu'un écart existe pendant une longue période, les fonds d'un échange sont rapidement achetés et le négociant peut ne pas pouvoir poursuivre les opérations d'effet de levier.

La stratégie de résolution:

  • Opération de transfert de monnaie• Utiliser les méthodes de transfert de monnaie entre les bourses pour transférer des fonds et continuer à tirer des bénéfices. • Éviter ainsi que les fonds ne s'accumulent sur le marché unique et augmenter la liquidité des fonds.
  • Attendre que les prix changent: Compte tenu du coût du temps d'échange, attendre que la différence de prix revienne est une option.

Le code de démonstration

Le code n'est pas du code de disque réel et est uniquement utilisé pour la démonstration, si vous ne prenez pas en compte le nombre de disques, les erreurs d'accès aux API, l'accélération des commandes en désynchronisation, etc.


// symbol 是套利的交易对,比如 BTC/USDT
let symbol = "BTC_USDT";

// 设置手续费、滑点、开仓和平仓的利润率
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));

    // 计算套利机会(基于利润率)
    // profitAB: 从交易所0买入,从交易所1卖出
    const profitAB = (tickers[1].bid - tickers[0].ask) / tickers[0].ask - fee * 2 - slippage * 2;
    // profitBA: 从交易所1买入,从交易所0卖出
    const profitBA = (tickers[0].bid - tickers[1].ask) / tickers[1].ask - fee * 2 - slippage * 2;

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

    // 根据利润判断是否执行套利操作
    if (profitAB > entryThreshold) {  // 当利润大于开仓阈值时开仓
        Log(`套利机会:从交易所0买入BTC,从交易所1卖出,利润:${profitAB} USDT`);
        executeArbitrage(0, 1, tickers[0].ask, tickers[1].bid, profitAB);  // 从交易所0买入并在交易所1卖出
    } else if (profitBA > entryThreshold) {
        Log(`套利机会:从交易所1买入BTC,从交易所0卖出,利润:${profitBA} USDT`);
        executeArbitrage(1, 0, tickers[1].ask, tickers[0].bid, profitBA);  // 从交易所1买入并在交易所0卖出
    } else if (profitAB < exitThreshold) {  // 如果价差回归,平仓
        Log(`平仓:从交易所0买入并在交易所1卖出的套利机会,利润已回归至平仓阈值`);
        closeArbitrage(0, 1, tickers[0].ask, tickers[1].bid); // 执行平仓操作
    } else if (profitBA < exitThreshold) { 
        Log(`平仓:从交易所1买入并在交易所0卖出的套利机会,利润已回归至平仓阈值`);
        closeArbitrage(1, 0, tickers[1].ask, tickers[0].bid); // 执行平仓操作
    } 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();
    
    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(symbol, buyPrice * (1 + slippage), amount);

    // 在卖出交易所挂单卖出
    Log(`在交易所${sellExchangeIndex} 下单卖出 ${amount} BTC @ ${sellPrice}`);
    sellExchange.Sell(symbol, 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();

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

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

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

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

Résumé

Le lead-lag est une stratégie d'optimisation inter-échange basée sur la réaction au retard du marché. En analysant avec précision les différences de prix du marché et en exécutant rapidement les transactions, le courtier peut réaliser des profits stables sur le marché de la monnaie numérique. Cependant, le succès de cette stratégie ne dépend pas seulement de la conception de la stratégie elle-même, mais nécessite également une bonne exécution et une maîtrise sensible du moment du marché.


Plus de