Arbitragem Triangular

A arbitragem triangular envolve a exploração das discrepâncias nas taxas de câmbio entre três criptomoedas em uma mesma exchange. Os traders realizam uma série de transações para aproveitar as diferenças de preços entre os pares de criptomoedas, buscando lucrar com a arbitragem.

Exemplo de arbitragem triangular:

  1. O trader possui Bitcoin (BTC), Ethereum (ETH) e Litecoin (LTC).

  2. O preço do BTC/ETH é 50 ETH por BTC.

  3. O preço do ETH/LTC é 100 LTC por ETH.

  4. O preço do LTC/BTC é 0,005 BTC por LTC.

  5. O trader realiza uma série de transações: compra BTC com ETH, compra LTC com BTC e, finalmente, vende LTC por ETH.

  6. O trader lucra com a diferença entre as taxas de câmbio dos três pares.

Abaixo está um exemplo simplificado do código.

import ccxt  # biblioteca para interagir com exchanges

# Inicializando o exchange (binance, por exemplo)
exchange = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_SECRET',
})

def get_rate(symbol):
    """Obtém a última taxa de câmbio para um par de criptomoedas"""
    orderbook = exchange.fetch_order_book(symbol)
    return orderbook['bids'][0][0] if len(orderbook['bids']) > 0 else None

def execute_trade(amount, from_symbol, to_symbol):
    """Executa uma negociação em um exchange"""
    symbol = from_symbol + '/' + to_symbol
    rate = get_rate(symbol)
    if rate is None:
        return 0
    print(f"Trading {amount} {from_symbol} to {to_symbol} at rate {rate}")
    return amount / rate  # Retorna a quantidade de 'to_symbol' que obtemos

# Arbitragem triangular
def triangular_arbitrage(start_currency='BTC'):
    """Executa arbitragem triangular começando e terminando com start_currency"""
    currencies = ['BTC', 'ETH', 'XRP']
    start_index = currencies.index(start_currency)
    currencies = currencies[start_index:] + currencies[:start_index]  # Começa com a moeda inicial

    amount = 1.0  # Quantidade de moeda que estamos negociando
    for i in range(len(currencies) - 1):
        amount = execute_trade(amount, currencies[i], currencies[i+1])

    # Trocar a última moeda de volta para a moeda inicial
    amount = execute_trade(amount, currencies[-1], currencies[0])

    if amount > 1.0:
        print(f"Arbitragem triangular foi bem sucedida, lucro {amount - 1.0} {start_currency}")
    else:
        print(f"Arbitragem triangular não foi bem sucedida, perda {1.0 - amount} {start_currency}")

# Execute o código
triangular_arbitrage('BTC')

Last updated