Compartilhe este artigo

Negociação de alta frequência na Coinbase Exchange

Após ler sobre negociação de alta frequência em Flash Boys, de Michael Lewis, Andrew Barisser criou seu próprio bot de negociação de Bitcoin . Aqui estão suas descobertas.

bots retro

Andrew Barisser é um engenheiro de software e Criptomoeda na Assembly. Anteriormente, ele era um estudante de pós-graduação em biofísica na UCSB, onde ele diz que um "fascínio corrosivo" pelo Bitcoin o levou ao software. Neste artigo, ele compartilha lições aprendidas ao criar seu próprio bot de negociação de Bitcoin nas "águas infestadas de tubarões" da nova bolsa da Coinbase.

Recentemente comecei a negociar bitcoins algoritmicamente na nova bolsa Coinbase. Depois de ler sobre negociação de alta frequência no livroMeninos Flashpor Michael Lewis, decidi que eu mesmo tentaria, embora de uma forma mais desajeitada e amadora.

A História Continua abaixo
Não perca outra história.Inscreva-se na Newsletter Crypto Daybook Americas hoje. Ver Todas as Newsletters

A experiência tem sido fascinante, tanto em nível técnico quanto em sentido estratégico. Escrever lógica que controla o dinheiro em si é uma coisa estranha. Soltá-la pela primeira vez, sabendo que qualquer bug poderia literalmente jogar dinheiro fora, foi assustador.

Bitcoin é um sistema incrivelmente aberto que é particularmente amigável para desenvolvedores sem nome. As bolsas têm APIs abertas que permitem que qualquer um, literalmente qualquer um, negocie. Não há acesso premium, nem credenciais caras de pregão. É totalmente aberto – eu adoro isso.

Águas infestadas de tubarões

Conforme eu projetei meu bot de negociação, percebi quanta profundidade estratégica há nesses tipos de jogos. As bolsas já estãoabundantecom bots de negociação; essas são águas infestadas de tubarões. Os bots dançam em volta uns dos outros em um redemoinho caótico. Eles empregam tantas estratégias diversas. É como se tantos micróbios competissem no lodo primordial.

Ao entrar nesse ambiente, tive que estar imediatamente ciente da existência de outros bots.

Os traders algorítmicos precisam ocupar um nicho específico. Eles lucram com as ineficiências do mercado. Em um mercado perfeito, o que eles fazem não seria lucrativo.

É precisamente porque os Mercados, no seu estado nativo, são não idealmente suave, contínuo e bem funcional, para que os traders algorítmicos possam extrair qualquer valor. Ao retificar os pequenos erros, as pequenas instâncias de deslizamento que ocorrem nos Mercados, ONE -se obter pequenos lucros.

Se um grande tubarão é a força inigualável do próprio mercado, os pequenos peixes-sugadores que o seguem, limpando os restos, mantendo as coisas arrumadas, são os traders algorítmicos. Eles também têm seu lugar.

O gráfico de profundidade da Coinbase, um objeto de fixação para formadores de mercado.
O gráfico de profundidade da Coinbase, um objeto de fixação para formadores de mercado.

Outro paradoxo é que não posso revelar minha estratégia de negociação sem comprometê-la.

Em pequena medida, explicar minha estratégia seria um convite aos concorrentes, para os quais o custo marginal de configuração do software é muito baixo. Muito mais ameaçador, no entanto, se a estratégia exata do meu bot fosse conhecida,poderia ser depredado.

Se você pudesse sempre prever cada passo dele, você poderia enganá-lo para desistir de dinheiro de novo e de novo. Essa é outra coisa que mantém minha paranoia viva, o medo de que alguém lá fora observe meu bot e, no vai e vem de suas ordens, descubra sua estratégia.

Imagino-me voltando ao meu bot e vendo seu saldo vazio, porque algum gênio o manipulou algoritmicamente, drenando centavos a cada ciclo.

Quase todas essas ordens limitadas são de bots.
Quase todas essas ordens limitadas são de bots.

Criação de mercado 101

Por outro lado, a estratégia do meu bot é extremamente conservadora e seria difícil de jogar. É basicamente um market Maker sofisticado. Ele fornece liquidez para a bolsa Coinbase. Isso significa que ele LOOKS para o livro de ordens e observa onde as ordens são finas. Talvez haja muito pouca profundidade de ordens no lado da compra.

Ele pode colocar ordens de limite, como pequenas armadilhas, em profundidades variadas nos lados de compra e venda. Ele varia a maneira exata como faz isso com base nas condições recentes do mercado. Se uma grande negociação for executada repentinamente, ela pode sobrecarregar a disponibilidade de ofertas com o melhor preço. Uma oferta tão grande pode então acionar uma das minhas ofertas, à espreita, a um preço mais vantajoso.

Este é o básico sobre criação de mercado. É praticamente a estratégia menos opinativa que existe, embora eu tenha temperado minha própria implementação com alguma lógica adicional de previsão de preço. No geral, é uma estratégia extremamente chata.

A criação de mercado também fornece utilidade social real. Quanto mais profunda a liquidez fornecida pelos criadores de mercado, mais difícil é causar picos erráticos no preço. Os criadores de mercado também reduzem o spread bid-ask, um conceito que a maioria das pessoas T conhece: um testamento para praticantes bem-sucedidos em Wall Street.

Outras estratégias de bot

Outros bots empregam estratégias amplamente variadas. Alguns retificam o spread entre exchanges separadas, uma estratégia completamente dependente da velocidade. Se alguém depositar 1.000 BTC na Bitfinex, o preço na Coinbase despenca em sincronia porque alguém correu para executar uma ordem de mercado.

Outras estratégias giram em torno de enganar outros bots, para as quais há táticas infinitas. Elas geralmente envolvem posturas elaboradas, enganando a lógica dos outros em erros fatais. Outras ainda são projetadas para intimidar seres Human com ordens massivas de compra ou venda. Tenho certeza de que ainda há outras abundantes das quais não tenho ideia.

Em um nível prático, meu bot deve ser muito QUICK. Se ele for atrasado mesmo por alguns segundos entre o cancelamento e a colocação de ordens, as condições de mercado podem fazer com que as novas ordens se tornem inapropriadas.

Os pedidos que faço Siga uma lógica sólida assumindo que o bot tem uma compreensão correta do estado do livro de ordens. Esta suposição não se mantém por muito tempo. Em um segundo, uma enxurrada de ordens significativas poderia ter distorcido oreallivro de ordens, de modo que as novas ordens que criei agora estão completamente erradas.

Também devo estar atento a bots hostis, que podem fazer e remover rapidamente grandes pedidoscom a intenção de enganar outros bots. Quanto mais rápido meu bot puder manter a consciência do livro de ordens, menos suscetível ele será a tais táticas. Meu bot tem até lógica adicional para evitar que seja enganado por paredes de volume falsas de outros bots.

Velocidade Human vs velocidade do bot

Na busca por velocidade, tive que pensar em detalhes técnicos com os quais não estava muito familiarizado. Tive que paralelizar muitas funções mundanas e chatas. T posso cancelar pedidos obsoletos em série, levaria muito tempo para minhas solicitações JSON irem e FORTH pela Internet.

Porque Coinbasenão oferece um único endpoint de API para cancelar todos os pedidos simultaneamente,algo que eu estava pedindo, eu os cancelo com muitas solicitações separadas em paralelo. Da mesma forma, a Coinbase não tem um ponto de extremidade para criar várias ordens de uma vez. Então, preciso emitir várias solicitações simultaneamente. Uma solução síncrona levaria vários segundos, o que é muito tempo.

É engraçado como o senso Human de tempo é totalmente inapropriado para o dos bots. Até mesmo uma fração de segundo pode ser irremediavelmente longa. Tentar metade do esforço, ou se mover metade da velocidade, T garante metade dos lucros; eles rendem zero (ou pior). Mergulhando na negociação algorítmica, é preciso habitar o ciclo de vida de um bot, estendendo o próprio conceito de tempo para milissegundos. É nessa escala que ainda vejo meu bot como burro e lento.

Pelo menos a conscientização do bot sobre o livro de pedidos é muito rápida. Ele transmite um feed websocket de novos pedidos. Cada item é uma permutação do livro de pedidos, então devo manter o estado do livro e fazer pequenas alterações conforme elas chegam.

Esse processo também é paralelizado. É realmente incrível o quão rápido isso é, há cerca de 20 permutações de ordem por segundo.

Então meu bot fornece principalmente liquidez. Ele ganha uma quantia pequena, mas constante, com isso. Ele mantém quantias aproximadamente iguais de bitcoins e dólares, então mudanças bruscas de preço podem deixá-lo com perdas em uma determinada denominação. Mas, no geral, ele está tendo lucros decentes em comparação com uma cesta 50/50 de bitcoins/USD.

[post-citação]

Meu bot tem melhor desempenho quando o volume é alto, mas as oscilações de preço são baixas. Como um provedor de liquidez, ele suaviza as ondulações erráticas que ocorreriam sem os formadores de mercado. Nisso, ele está fornecendo uma função útil, portanto, os períodos de alto volume são os mais lucrativos. Em alguns casos, oscilações bruscas, para frente e para FORTH, podem fazer com que meu bot persista em manter o ativo errado. Portanto, é possível perder dinheiro.

Descobri que regimes de baixo volume são os mais perigosos. Meu bot busca estimar a taxa de negociação e moderar a profundidade de suas ordens de acordo. Isso limita o risco de ser pego em grandes oscilações, ao custo de ter suas ordens executadas com menos frequência.

Também descobri que há uma quantidade significativa de ruído em torno do meu saldo. Conforme o preço oscila, meu bot perde dinheiro periodicamente. Ele pode estar perdendo dinheiro 45% do tempo. Mas se estiver ganhando nos outros 55%, ele WIN muito no longo prazo.

Dadas essas probabilidades, medir o bot em umfreqüente base ONE a observar mais casos de perda versuspouco frequenteobservações.

É como verificar seu portfólio de ações. Se você tivesse uma estratégia garantida retornando 10% ao ano, mas com uma quantidade normal de ruído, você observaria perdas quase 50% do tempo se observasse seu saldo com frequência suficiente, mesmo empregando uma estratégia bem-sucedida. A lei dos grandes números só funciona... em escalas de tempo mais longas.

Embora a princípio esse bot fosse apenas uma distração, percebi que o que ele faz, embora de forma simplista, é realmente necessário. Um dos maiores problemas com Bitcoin é o maneira como é negociado. A falta de liquidez das trocas é um grande problema.

Compare a negociação de Bitcoin com a de qualquer ativo financeiro real, e você observará um mundo de diferença. O pessoal financeiro extrai um valor tremendo na manutenção de Mercados eficientes em outros ativos.

Isso não acontece magicamente. O Bitcoin precisa de Mercados com melhor funcionamento se quiser atrair jogadores sérios. Também é uma oportunidade de lucro.

Mesmo com os volumes de negociação atuais, muito valor pode ser capturado suavizando as flutuações do mercado. Se o Bitcoin crescesse, a necessidade de liquidez também aumentaria. Aprendi que infraestrutura T é apenas servidores e repositórios do github. São também intermediários financeiros que fazem os Mercados funcionarem. O simples fato de que eu poderia me envolver nisso, como ninguém, ilustra a maravilhosa abertura do Bitcoin.

Este post apareceu originalmente emMédio. Foi republicado aqui com permissão.

Imagem de botsvia Shutterstock


Isenção de responsabilidade:Este artigo não deve ser visto como um conselho financeiro ou uma recomendação de investimento. Por favor, faça sua própria pesquisa extensiva antes de tomar decisões de investimento.

Nota: As opiniões expressas nesta coluna são do autor e não refletem necessariamente as da CoinDesk, Inc. ou de seus proprietários e afiliados.

Andrew Barisser

Andrew Barisser é um engenheiro de software e Criptomoeda na Assembly. Anteriormente, ele era um estudante de pós-graduação em biofísica na UCSB, onde uma fascinação corrosiva com Bitcoin o levou ao software. Ele também serviu no Peace Corps na África. Além da ciência e do Bitcoin, ele ama línguas estrangeiras, escrever e contemplar a volatilidade.

Picture of CoinDesk author Andrew Barisser