Battle of the Bots: In che modo i market maker lo combattono negli scambi di criptovalute

Nei mesi tra dicembre 2017 e marzo 2018, ho creato un bot che ha eseguito operazioni di criptovaluta per un valore di circa $ 50 milioni. Questa è la storia di come sono entrato nel market making, la teoria alla base degli algoritmi del bot e la concorrenza che è cresciuta tra i market maker.

FOMO

È novembre 2017 - Il prezzo del Bitcoin sta rapidamente salendo verso il segno di $ 10.000. Il suo aumento esponenziale del prezzo lo sta spingendo ulteriormente nella coscienza principale ogni settimana, attirando ancora più investitori, spingendo il prezzo più in alto.

Durante questo periodo, sono in vacanza con due amici. Entrambi questi amici avevano investito in Bitcoin quantità non insignificanti del proprio denaro e stavano approfittando dell'aumento del prezzo. Essendo l'unico dei tre che non aveva mai pensato di investire prima, mi sento come se mi stessi perdendo.

Quando torno a casa dal viaggio, una delle prime cose che faccio è trovare uno scambio di criptovaluta online e depositare $ 500 su un conto. Volendo cavalcare l'onda, il mio piano è semplice: acquistare Bitcoin per un valore di $ 500 e aumentare il mio investimento se vedo rendimenti.

Si diffonde

Prima di premere il grilletto sul mio investimento di $ 500, noto qualcosa di strano; lo scambio su cui stavo negoziando ha un ampio "spread". Per capire cos'è uno spread e perché questo è significativo, dobbiamo guardare alcune basi su come funziona uno scambio.

In genere quando pensiamo a un'attività negoziata in borsa, come un'azione, la pensiamo come se avesse un prezzo fisso al quale possiamo comprare o venderlo. Ad esempio, potremmo pensare a un titolo Apple (AAPL) con un prezzo di $ 100. In realtà sebbene non ci sia un unico prezzo, ma piuttosto ci sono due prezzi diversi:

  • Il prezzo dell'offerta. Questo è l'importo massimo che chiunque in borsa è disposto a pagare per un'attività.
  • Il prezzo richiesto. Questo è l'importo minimo per cui chiunque in borsa è disposto a vendere l'attività.

La maggior parte degli acquirenti è disposta a pagare meno di quanto i venditori siano disposti a vendere, quindi il prezzo di offerta di un bene sarà sempre inferiore al prezzo richiesto.

Nel caso delle azioni Apple, è probabile che questi due prezzi siano molto vicini tra loro. Il prezzo dell'offerta potrebbe essere $ 99,99 e il prezzo richiesto $ 100,01. La differenza tra questi due numeri ($ 0,02) è ciò che chiamiamo spread.

La diffusione è ridotta su titoli popolari e stabili come Apple. Questo perché ci sono sempre molte persone disposte ad acquistare le azioni, il che fa aumentare il prezzo dell'offerta, e molte sono disposte a vendere, il che spinge verso il basso il prezzo richiesto. La concorrenza tra acquirenti e venditori spinge l'offerta e chiede che i prezzi si avvicinino l'uno all'altro.

Quando ho iniziato a guardare gli scambi di Bitcoin, gli spread erano molto più grandi, spesso fino a $ 100. Bitcoin è stato scambiato a circa $ 10.000 durante questo periodo, il che significa che il suo spread potrebbe arrivare fino all'1% del suo valore totale (rispetto al solo 0,02% nell'esempio di Apple.

La dimensione dello spread su Bitcoin è stata una conseguenza del caos del mercato che stava emergendo a dicembre 2017. Gli investitori al dettaglio - tu, io, la persona media per strada - stavi invadendo il mercato. Di conseguenza, i prezzi sono stati così volatili che gli spread non si sono mai stabilizzati.

I grandi spread potrebbero sembrare una cosa negativa, e in una certa misura lo sono, ma offrono anche un'opportunità di profitto.

Diciamo che Bitcoin ha un prezzo di offerta di $ 9,900 e un prezzo di domanda di $ 10.000, dandogli uno spread di $ 100. Se sei in grado di acquistare 1 bitcoin per $ 9,900 e poi venderlo subito dopo a $ 10.000, hai appena realizzato un profitto di $ 100.

Creatori e acquirenti

Se stai pensando che questo sembra troppo bello per essere vero, allora hai ragione. Un motivo per cui potresti essere scettico di quanto sopra deriva dalla domanda: che dire delle commissioni di cambio? Per vedere come le commissioni si adattano a questo, dobbiamo fare un'altra leggera deviazione nel funzionamento degli scambi.

Supponiamo che tu voglia acquistare bitcoin, che viene scambiato con un prezzo di offerta di $ 9,900 e un prezzo di domanda di $ 10.000. Esistono due modi in cui puoi procedere:

Innanzitutto potresti inviare un ordine del produttore. Qui è dove specifichi un prezzo ovunque fino al prezzo richiesto, quindi tra $ 0 e $ 10.000 - e una quantità che sei disposto ad acquistare. Il tuo ordine resta in borsa fino a quando qualcuno arriva e decide di accettarti. Questo potrebbe accadere millisecondi o giorni dopo, a seconda di quanto è alto il prezzo e il volume sullo scambio.

In alternativa, è possibile inviare un ordine dell'acquirente. Questo è esattamente l'opposto di un ordine del produttore e ti permetterà di acquistare bitcoin all'istante. Il trucco però è che il tuo ordine dell'acquirente è abbinato al prezzo più basso di tutti gli ordini del produttore di vendita. Naturalmente, questo sarà al prezzo richiesto, perché questo è il prezzo più basso per cui chiunque è disposto a vendere.

Prima di andare avanti, ci sono un paio di cose importanti da notare sugli ordini del produttore e dell'acquirente:

  1. Ogni volta che bitcoin viene venduto o acquistato, ci saranno un produttore e un ordine acquirente coinvolti. Non puoi negoziare con due produttori o due acquirenti.
  2. Se decidi di seguire il percorso del produttore, dovrai offrire un prezzo pari o superiore al prezzo di offerta per avere buone probabilità che un venditore prenda il tuo ordine.
  3. Infine, gli ordini dei produttori aggiungono ciò che chiamiamo liquidità in un mercato; forniscono più opzioni per gli altri in borsa per acquistare e vendere. Il loro nome deriva dal fatto che fanno liquidità. Contrariamente a questo, gli ordini dell'acquirente tolgono liquidità dal mercato, in quanto rimuovono gli ordini del produttore dallo scambio.

Quest'ultimo punto è cruciale, perché aiuta a spiegare la struttura delle commissioni della maggior parte degli scambi. Poiché gli scambi vogliono massimizzare la liquidità, in genere addebitano commissioni sugli ordini dell'acquirente più elevate rispetto agli ordini degli acquirenti. Alcuni scambi, incluso quello che stavo usando, fanno pagare solo le commissioni dell'acquirente: ci sono commissioni dello 0% sugli ordini del produttore.

Torna al nostro esempio precedente. Se siamo in grado di acquistare Bitcoin a $ 9,900 e vendere a $ 10.000 utilizzando solo gli ordini del produttore, allora abbiamo $ 100 di puro profitto per ogni Bitcoin che effettuiamo transazioni.

La necessità di utilizzare gli ordini del produttore non è solo per evitare le commissioni, ma deriva anche dal fatto che se acquistassimo utilizzando un ordine acquirente, dovremmo pagare il prezzo richiesto: $ 10.000. Se poi vendessimo tramite un ordine acquirente, dovremmo vendere al prezzo di offerta - $ 9,900 - perdendoci $ 100.

Quindi, utilizzando gli ordini del produttore, possiamo praticamente garantire profitti acquistando al prezzo di offerta e vendendo al prezzo richiesto. C'è un ultimo problema, tuttavia, che ha rappresentato la più grande sfida per creare un algoritmo che potrebbe farlo a livello di programmazione.

Come accennato in precedenza, un ordine del produttore ha bisogno di un ordine dell'acquirente per arrivare e "prenderlo" prima che possa avvenire uno scambio. Gli ordini dell'acquirente "prenderanno sempre" il prezzo migliore. Se desideri acquistare Bitcoin tramite un ordine del produttore, quindi affinché gli ordini dell'acquirente corrispondano al tuo ordine, dovrai fare un'offerta appena sopra il prezzo dell'offerta. Quanto al di sopra del prezzo di offerta offerto non ha importanza, può essere di un importo inferiore a un singolo centesimo, ad es. $ 9,900.01.

Il primo passo per scrivere un bot per la creazione di un mercato è quindi quello di essere in grado di inserire ordini di acquisto (creatore) appena sopra il prezzo di offerta corrente. Ciò richiede una richiesta API per verificare il prezzo dell'offerta e un'altra per inviare il tuo ordine.

In teoria, va bene fare un'offerta solo un centesimo al di sopra del prezzo di offerta. In pratica, tuttavia, nel tempo che intercorre tra il controllo del prezzo dell'offerta e l'invio dell'ordine, il prezzo dell'offerta cambierà spesso. Per garantire che il tuo ordine sia superiore a tutti gli altri ordini di acquisto e quindi imposti il ​​nuovo prezzo di offerta, è spesso consigliabile fare un'offerta 5-10 ¢ al di sopra del prezzo di offerta corrente.

Questo assicura che, se arriva un ordine di vendita (acquirente), verrà confrontato con il nostro ordine di acquisto (produttore) e avremo acquistato comunque un numero considerevole di Bitcoin senza perdere nulla a spese.

Possiamo quindi fare l'esatto contrario di quello che abbiamo appena fatto, dal lato della vendita. Controlliamo il prezzo attuale e chiediamo diversi centesimi al di sotto di quello. Questo assicura che se arriva un ordine di acquisto (acquirente), questo viene confrontato con il nostro ordine di vendita (produttore).

Avremo appena realizzato un profitto ordinato approssimativamente uguale allo spread (la differenza tra i prezzi bid e ask) moltiplicato per la quantità di bitcoin che siamo stati in grado di scambiare.

concorrenza

Se stai ancora pensando che sia troppo facile per essere vero, allora hai ancora ragione. Ogni volta che c'è un'ovvia opportunità di guadagno, i trader si accumulano e questo crea concorrenza. L'esempio più ovvio di ciò può essere visto guardando la concorrenza creata dai market maker che si spingono l'uno contro l'altro per stabilire il prezzo dell'offerta. (Ricorda, devi avere il tuo ordine di acquisto al prezzo di offerta per eseguire uno scambio, la prossima volta che arriva l'ordine di acquisto di un venditore)

Nel dicembre 2017, la concorrenza era così intensa che il prezzo dell'offerta cambiava generalmente più volte al secondo. Spesso aumenterebbe solo di uno o due centesimi, poiché i trader hanno combattuto l'uno con l'altro per massimizzare il tempo in cui hanno fissato il prezzo dell'offerta, pur volendo offrire il prezzo più basso possibile.

Inizialmente il mio bot ha iniziato a controllare il prezzo dell'offerta e l'offerta 1 ¢ più alta. Per quanto ragionevole sembrasse questo, ho scoperto che, al momento del mio ordine, sarei stato spesso di molti centesimi al di sotto del prezzo di offerta (in costante evoluzione).

Per ovviare a questo, e per garantire che il maggior numero possibile dei miei ordini avrebbe battuto il prezzo di offerta corrente, ho preso le misure di quanto il prezzo di offerta in genere cambierebbe ogni 100 ms. Ciò ha consentito al mio bot di offrire un prezzo sufficientemente superiore al prezzo di offerta (~ 5 ¢ superiore), in modo che altri operatori non avrebbero battuto il mio prezzo durante l'elaborazione del mio ordine.

Ho anche iniziato a considerare in che modo la dimensione dello spread influirebbe su quanto ero disposto a offrire rispetto all'attuale prezzo di offerta. Come abbiamo visto in precedenza, il profitto derivante da qualsiasi operazione commerciale è direttamente proporzionale all'entità dello spread. Ciò ha reso ancora più importante battere il prezzo dell'offerta quando lo spread era elevato. Per questo motivo, ho scritto una formula che variava molto di più rispetto al prezzo di offerta che avrei offerto, in base anche alla dimensione dello spread.

Finora ho parlato principalmente dell'aspetto dell'acquisto del market making, ma la vendita funziona esattamente allo stesso modo. Non appena hai acquistato il tuo Bitcoin, devi scaricarlo al prezzo (più alto) di richiesta. Ci sarà concorrenza sul prezzo di domanda, così come lo era sul prezzo di offerta, e quindi devi sottovalutare i tuoi concorrenti offrendo un prezzo di vendita inferiore di molti centesimi rispetto al prezzo di domanda corrente.

Alla fine del 2017 / inizio 2018, tuttavia, c'era in genere molta meno concorrenza sul prezzo richiesto. Ho ipotizzato all'epoca che ciò fosse dovuto alla maggiore domanda che all'offerta di Bitcoin, spiegando perché tra gli acquirenti c'era più concorrenza che venditori.

Manipolazione del mercato

La manipolazione del mercato si riferisce a una varietà di tattiche malevoli che gli operatori utilizzano nei mercati per ottenere un vantaggio ingiusto. In quanto mercato non regolamentato, gli scambi di criptovaluta erano (e sono ancora) maturi con la manipolazione del mercato. La forma più frequente di manipolazione era quella che viene chiamata spoofing, l'atto di effettuare ordini semplicemente per modificare l'aspetto delle condizioni di mercato.

Per fare un esempio di come funziona, considera l'esempio precedente con il prezzo di offerta di $ 9,900 e il prezzo di domanda di $ 10.000. La nostra diffusione qui è di $ 100, che rappresenta una buona opportunità per fare mercato. Se qualcuno arriva comunque e fa un ordine di acquisto con un prezzo di $ 9.999,99, lo spread si riduce a un solo 1 ¢. Con uno spread così ridotto, sembra impossibile trarre profitto dal market making e tutte le attività si fermano.

Un acquirente che effettua un ordine del produttore 1 ¢ al di sotto del prezzo richiesto non è di per sé manipolazione del mercato. In effetti, se il tuo scambio non addebita le commissioni del produttore, questo è un modo rapido ed efficiente per acquistare Bitcoin. Il problema era tuttavia che ogni volta che venivano visualizzati questi ordini di acquisto, sarebbero stati generalmente per il minor numero possibile; 0,00001 Bitcoin, del valore di circa 10 ¢.

Il motivo per cui un altro market maker potrebbe effettuare un ordine di acquisto così piccolo, proprio sotto il prezzo richiesto, è geniale. Se un altro market maker è appena stato in grado di acquistare Bitcoin al prezzo di offerta, allora hanno un incentivo a venderlo al prezzo richiesto il più presto possibile. Più tempo impiegano a vendere i loro Bitcoin, maggiore è il rischio che il prezzo richiesto (e quindi lo spread) si muova e che il loro profitto vari.

Certo, potresti dire che ci sono tante possibilità che il prezzo salga in questo momento quanto ce ne sia. Un market maker non si preoccupa di questo; il loro lavoro non è speculare sul prezzo, è entrare e uscire il più rapidamente possibile.

Per impedire che il prezzo scenda e per impedire alla concorrenza sul lato della vendita di abbassare il prezzo richiesto, il market maker inserisce l'ordine di vendita appena al di sotto del prezzo richiesto e inserisce un ordine di acquisto ("contraffatto") appena sotto il nuovo chiedere il prezzo. Quest'ultimo ordine avrà una dimensione dell'ordine quanto più piccola possibile (0.00001 Bitcoin).

Questo ha due effetti:

  1. Nessun altro venditore può battere il prezzo richiesto da quel venditore. Se vai 1 ¢ al di sotto del prezzo richiesto, sei al prezzo di offerta e gli scambi non consentono ai venditori di effettuare ordini del produttore al di sotto o al prezzo di offerta.
  2. Riduce lo spread a solo 1 ¢. Quando un bot che produce mercato vede uno spread così piccolo, probabilmente si spegnerà temporaneamente, poiché non ci sono profitti da realizzare.

Questo secondo punto è cruciale, in quanto spiega perché praticamente tutti i robot che effettuano il mercato si spengono quando un ordine di acquisto contraffatto scende appena al di sotto del prezzo richiesto. In realtà, anche se lo spread sembra essere solo 1 ¢, ci sono ancora opportunità da avere.

Diciamo che l'ordine dell'acquirente del prossimo venditore arriva per 1 Bitcoin. Il primo 0.00001 Bitcoin sarà venduto al market maker con l'ordine di spoofing, eliminando tale ordine dallo scambio. Il prossimo 0.99999 Bitcoin sarà venduto all'ordine al nuovo prezzo di offerta, l'ordine con il prezzo più alto sotto l'ordine di spoofing.

Uno dei maggiori miglioramenti che ho apportato al mio bot è stato quello di consentirgli di ignorare gli ordini falsificati nel calcolo dello spread. Anche se il prezzo richiesto potrebbe essere solo 1 ¢ superiore al prezzo di offerta, il mio bot guarderebbe oltre gli ordini falsificati, per scoprire quale sarebbe lo spread se non fosse per gli ordini falsificati (che potrebbero comunque essere $ 50– $ 100). Se questo spread fosse abbastanza grande da presentare un'opportunità, sarebbe in competizione per piazzare l'ordine di acquisto più costoso dopo qualsiasi ordine falsificato. Quando arrivarono gli ordini degli acquirenti, ciò significava che alcuni centesimi di Bitcoin sarebbero stati venduti agli spoofer, e poi il resto a me.

2018

I primi mesi del 2018 sono stati turbolenti. Dopo che Bitcoin è salito a $ 20k a dicembre, le ruote avevano iniziato a staccarsi e il prezzo stava scendendo rapidamente.

Sebbene negativo per gli investitori, ciò ha offerto enormi opportunità ai market maker. Gli alti livelli di volume sia dal lato del buy che del sell (il che significava l'arrivo di più ordini di acquirenti) hanno aumentato enormemente la quantità di operazioni al giorno che un market maker efficiente potrebbe eseguire.

Questo periodo di opportunità è stato di breve durata. Dopo la frenesia di gennaio e febbraio, i volumi hanno iniziato a prosciugarsi, il che significa meno opportunità di profitto. Nonostante il calo dei volumi commerciali, il numero di market maker ha continuato ad aumentare, con l'ingresso di nuovi bot nello scambio.

Un maggior numero di market maker negli scambi ha portato a una maggiore concorrenza sui prezzi di offerta e domanda, restringendo a loro volta gli spread. I concorrenti aggiuntivi significavano inoltre che gli ordini sarebbero stati generalmente al prezzo di offerta per un periodo di tempo più breve, poiché c'erano più concorrenti pronti a offrirti un'offerta non appena il tuo ordine era stato inoltrato.

A causa della maggiore concorrenza e delle minori opportunità di guadagno, entro marzo avevo disattivato tutti i miei robot e da allora non li ho più riaccesi. L'aumento delle commissioni dei produttori in molti scambi mi ha impedito di tornare sul mercato facendo il gioco, ma probabilmente ci sono ancora opportunità là fuori per chiunque sia abbastanza intelligente da scegliere i propri momenti.

Tutto sommato, ho scambiato circa $ 50 milioni di Bitcoin tra dicembre 2017 e marzo 2018, con un ROI di 20,2.