Battle of the Bots: Hvordan markedsproducenter bekæmper det på krypteringsudvekslinger

I månederne mellem december 2017 og marts 2018 byggede jeg en bot, der udførte cirka 50 millioner dollars værdipapirer til at fremstille cryptocurrency. Dette er historien om, hvordan jeg kom ind i markedsforetagendet, teorien bag botens algoritmer og den konkurrence, der voksede mellem markedsproducenter.

FOMO

Det er november 2017 - Bitcoin's pris stiger hurtigt mod $ 10.000-mærket. Dens eksponentielle prisstigning skubber den videre ind i mainstream-bevidstheden hver uge, tiltrækker endnu flere investorer og skubber prisen yderligere op.

I løbet af denne tid er jeg på ferie med to venner. Begge disse venner havde investeret ikke ubetydelige mængder af deres egne penge i Bitcoin og tjente på den stigende pris. Som den eneste af de tre, der ikke engang havde overvejet at investere før, føler jeg at jeg går glip af.

Når jeg kommer hjem fra rejsen, er en af ​​de første ting, jeg gør, at finde en online cryptocurrency-udveksling og deponere $ 500 på en konto. Når jeg ønsker at køre på bølgen, er min plan enkel: Køb $ 500 værdi af Bitcoin, og øg min investering, hvis jeg ser afkast.

Spreder sig

Inden jeg trækker på triggeren på min $ 500-investering, bemærker jeg imidlertid noget mærkeligt; den udveksling, som jeg handlede med, har en stor 'spredning'. For at forstå, hvad en spredning er, og hvorfor det er vigtigt, er vi nødt til at se på nogle grundlæggende om, hvordan en udveksling fungerer.

Når vi tænker på et børshandlet aktiv, som en aktie, tænker vi typisk på det som en fast pris, som vi kan købe eller sælge til. For eksempel kan vi tænke på en Apple (AAPL) aktie med en pris på $ 100. I virkeligheden er der dog ikke en enkelt pris, men der er snarere to forskellige priser:

  • Budprisen. Dette er det maksimale beløb, som enhver på børsen er villig til at betale for et aktiv.
  • Spørgsprisen. Dette er et minimumsbeløb, som enhver på børsen er villig til at sælge aktivet for.

De fleste købere er villige til at betale mindre, end sælgere er villige til at sælge for, og derfor vil et aktivs budpris altid være under anmodningsprisen.

I tilfælde af Apple-aktien vil disse to priser sandsynligvis være meget tæt på hinanden. Budprisen kan være $ 99,99 og anmodningsprisen $ 100,01. Forskellen mellem disse to tal ($ 0,02) er, hvad vi kalder spredningen.

Spredningen er lille på et populært, stabilt lager som Apple. Dette skyldes, at der altid er masser af mennesker, der er villige til at købe aktien, hvilket får budprisen til at stige og masser, der er villige til at sælge, hvilket presser ned prisprisen. Konkurrence blandt både købere og sælgere skubber budet og beder priser tæt på hinanden.

Da jeg først begyndte at se på Bitcoin-udvekslinger, var spændene meget større, ofte op til $ 100. Bitcoin handlede med omkring 10.000 $ i løbet af denne periode, hvilket betyder, at dens spredning kunne være op til 1% af den samlede værdi (sammenlignet med kun 0,02% i Apple-eksemplet.

Størrelsen på spredningen på Bitcoin var en konsekvens af markedskoset, der opstod i december 2017. Detailinvestorer - du, mig, den gennemsnitlige person på gaden - flød ind på markedet. Priserne var så ustabile, at spændene aldrig kunne stabilisere sig.

Store spreads lyder måske som en dårlig ting, og i en udstrækning er de det, men de giver også en mulighed for at få overskud.

Lad os sige, at Bitcoin har en budpris på $ 9.900 og en anmodningspris på $ 10.000, hvilket giver det en spredning på $ 100. Hvis du er i stand til at købe 1 bitcoin for $ 9.900 og derefter sælge den umiddelbart efter til $ 10.000, har du lige tjent 100 $.

Makere og takers

Hvis du tænker, at dette lyder for godt til at være sandt, har du ret. En af grundene til, at du måske er skeptisk overfor ovenstående, kommer fra spørgsmålet: hvad med valutagebyrer? For at se, hvordan gebyrer passer ind i dette, er vi nødt til at tage en lille omvej til, hvordan børser fungerer.

Lad os sige, at du vil købe bitcoin, som handler med en budpris på $ 9.900 og en anmodningspris på $ 10.000. Der er stort set to måder, du kan gå omkring på:

For det første kunne du indsende en producentordre. Det er her du specificerer en pris hvor som helst op til den anmodede pris - så mellem $ 0 og $ 10.000 - og en mængde, du er villig til at købe. Din ordre sidder på børsen, indtil nogen kommer med og beslutter at tage dig op i den ordre. Dette kan ske millisekunder eller dage senere, afhængigt af hvor høj din pris er og volumen på børsen.

Alternativt kan du indsende en takerordre. Dette er det modsatte af en producentordre og giver dig mulighed for at købe bitcoin med det samme. Fangsten er dog, at din takerordre matches med det laveste pris af alle sælgerordrer. Naturligvis vil dette være til den anmodede pris, fordi dette er det laveste, som nogen er villig til at sælge for.

Inden vi går videre, er der et par vigtige ting at bemærke omkring producent- og takerordrer:

  1. Hver gang bitcoin sælges eller købes, vil der være en producent og en takerordre involveret. Du kan ikke handle med to producenter eller to takere.
  2. Hvis du beslutter dig for at gå producentruten, bliver du nødt til at tilbyde en pris, der svarer til eller derover, budprisen for at have en god chance for, at en sælger tager din ordre.
  3. Endelig tilføjer producentordrer, hvad vi kalder likviditet, til et marked; de giver flere muligheder for andre på børsen til at købe og sælge. Deres navn kommer fra det faktum, at de gør likviditet. I modsætning til dette tager takterordrer likviditet ud af markedet, da de fjerner producentordrer fra børsen.

Dette sidste punkt er afgørende, fordi det hjælper med at forklare den gebyrstruktur, som de fleste børser har. Da børser ønsker at maksimere likviditeten, opkræver de typisk højere gebyrer på takterordrer, end de gør på producentordrer. Nogle udvekslinger, inklusive den, jeg brugte, opkræver kun takeafgift: Der er 0% gebyrer på producentordrer.

Tilbage til vores tidligere eksempel. Hvis vi er i stand til at købe Bitcoin til $ 9.900 og sælge til $ 10.000 ved hjælp af producentordrer alene, så har vi $ 100 rent fortjeneste for hver Bitcoin, vi handler.

Behovet for at bruge producentordrer er ikke kun for at undgå gebyrer, men kommer også fra det faktum, at hvis vi købte ved hjælp af en takerordre, ville vi skulle betale anmodningsprisen - $ 10.000. Hvis vi derefter solgte via en takerordre, bliver vi nødt til at sælge til budprisen - $ 9.900 - og miste os $ 100.

Så ved hjælp af producentordrer kan vi stort set garantere overskud ved at købe til budprisen og sælge til anmodningsprisen. Der er dog et sidste problem, som udgjorde den største udfordring ved at lave en algoritme, der kunne gøre dette programmatisk.

Som vi berørte tidligere, har en producentordre brug for en takerordre for at komme med og 'tage' den, før en handel kan finde sted. Tagerordrer 'tager' den bedste pris. Hvis du vil købe Bitcoin via en producentordre, skal du tage bud lige over budprisen for at modtagerordrer kan matche mod din ordre. Hvor meget over den budpris, du tilbyder, betyder ikke noget, det kan være med et beløb, der er så lille som en enkelt cent, f.eks. $ 9,900.01.

Det første trin i at skrive en markedsfremstillingsbot er derfor at være i stand til at sætte køb (producent) ordrer lige over den aktuelle pris. Dette kræver en API-anmodning om at kontrollere budprisen, og en anden for at indsende din ordre.

I teorien er det fint at bare byde en cent over budprisen. I praksis dog i tiden mellem kontrol af budprisen og indgivelse af din ordre, ændres budprisen ofte. For at sikre, at din ordre ligger højere end alle de andre købsordrer, og så indstiller den nye budpris, anbefales det ofte at byde 5–10 ¢ over den aktuelle budpris.

Dette sikrer, at hvis en (taker) salgsordre kommer ind, vil den blive matchet med vores (producent) købsordre, og vi har købt så meget Bitcoin uden at miste noget til gebyrerne.

Vi kan derefter gøre det nøjagtige modsætning til det, vi lige har gjort, på salgssiden. Vi tjekker den aktuelle prispris og byder flere cent derunder. Dette sikrer, at hvis en (taker) købsordre kommer ind, bliver den matchet med vores (producent) salgsordre.

Vi har netop opnået en ryddig fortjeneste, der er nogenlunde lig med spændet (forskellen mellem pris- og budpriser) ganget med hvor meget bitcoin vi var i stand til at handle.

Konkurrence

Hvis du stadig tænker, at dette er for let til at være sandt, er du stadig korrekt. Hver gang der er en åbenlyst mulighed for profit, hænger de handlende ind, og det skaber konkurrence. Det mest åbenlyse eksempel på dette kan ses ved at se på den konkurrence, der skabes af markedsproducenter, der kaster sig indbyrdes for at sætte budprisen. (Husk, at du skal have din købsordre til budprisen for at udføre en handel, næste gang en sælgers takerordre kommer ind)

Tilbage i december 2017 var konkurrencen så intens, at budprisen typisk ville ændre sig flere gange i sekundet. Ofte ville det kun stige med et eller to cent, da handlende kæmpede mellem hinanden for at maksimere den tid, de satte budprisen, mens de også ville tilbyde en så lav pris som muligt.

Min bot begyndte først at kontrollere budprisen og bud 1 ¢ højere. Fornuftigt som det første virkede, fandt jeg, at når min ordre gik, ofte ville jeg være flere cent under den (konstant skiftende) budpris.

For at komme omkring dette og sikre, at så mange som muligt af mine ordrer ville slå den aktuelle budpris, foretog jeg målinger af, hvor meget budprisen typisk ville ændre hver 100ms. Dette gjorde det muligt for min bot at tilbyde en pris, der var tilstrækkelig højere end budprisen (~ 5 ¢ højere), så andre erhvervsdrivende ikke ville slå min pris, da min ordre blev behandlet.

Jeg begyndte også at overveje, hvordan størrelsen på spredningen ville påvirke, hvor meget jeg var villig til at tilbyde i forhold til den aktuelle budpris. Som vi så tidligere, er fortjenesten fra enhver handel direkte proportional med størrelsen på spredningen. Dette gjorde det endnu vigtigere at slå budprisen, når spredningen var stor. På grund af dette skrev jeg en formel, der varierede, hvor meget højere end den budpris, jeg ville tilbyde, baseret på størrelsen på spredningen også.

Jeg har hidtil talt mest om købsaspektet ved at skabe marked, men at sælge fungerer nøjagtigt det samme. Så snart du har købt din Bitcoin, skal du downloade den til den (højere) anmodningspris. Der vil være konkurrence på anmodningsprisen, ligesom der var på budprisen, og så skal du underbudge dine konkurrenter ved at tilbyde en salgspris, der er flere cent lavere end den aktuelle pris.

Tilbage i slutningen af ​​2017 / begyndelsen af ​​2018 var der dog typisk meget mindre konkurrence på anmodningsprisen. På det tidspunkt antog jeg, at det skyldtes, at der var større efterspørgsel end udbuddet til Bitcoin, hvilket forklarede, hvorfor der var mere konkurrence blandt købere end sælgere.

Markedsmanipulation

Markedsmanipulation refererer til en række ondskabsfulde taktikker, som erhvervsdrivende anvender på markeder for at opnå en urimelig fordel. Som et ureguleret marked var (og er de stadig) modne cryptocentraler modne med markedsmanipulation. Den mest hyppige form for manipulation var det, der kaldes forfalskning, handlingen med at placere ordrer blot for at ændre udseendet på markedsforhold.

For at give et eksempel på, hvordan dette fungerer, skal du overveje eksemplet fra tidligere med $ 9.900 budpris og $ 10.000 anmodningspris. Vores spredning her er $ 100, hvilket giver en god mulighed for at markedsføre. Hvis der dog kommer nogen og afgiver en købsordre til en pris af $ 9.999,99, falder spredningen til kun 1 ¢. Med en så lille spredning ser det ud til at være umuligt at drage fordel af markedsfremstillingen, og al aktivitet stopper.

En køber, der afgiver en producentordre 1 ¢ under prisprisen, er ikke i sig selv markedsmanipulation. Faktisk, hvis din udveksling ikke opkræver producentgebyrer, er dette en hurtig og effektiv måde at købe Bitcoin på. Problemet var imidlertid, at hver gang disse købsordrer dukkede op, ville de typisk være for det mindste mulige beløb; 0,00001 Bitcoin, værd ca. 10 ¢.

Årsagen til, at en anden markedsproducent muligvis afgiver en sådan lille købsordre, lige under prisprisen, er genialt. Hvis en anden market maker netop har været i stand til at købe Bitcoin til budprisen, har de et incitament til at sælge det til anmodningsprisen så hurtigt som muligt. Jo længere tid det tager dem at sælge deres Bitcoin, desto større er risikoen for, at anmodningsprisen (og dermed spredningen) bevæger sig, og at deres fortjeneste varierer.

Sikker på, du kan sige, at der er lige så stor chance for, at prisen stiger i denne tid, som der er for, at den falder. En market maker er dog ligeglad med dette; deres job er ikke at spekulere i pris, det er at komme ind og ud så hurtigt som muligt.

For at forhindre, at prisen falder, og for at stoppe konkurrencen på salgssiden i at skubbe anmodningsprisen ned, lægger markedsproducenten deres salgsordre lige under anmodningsprisen, og indsætter en ('forfalsket') købsordre lige under den nye spørg pris. Denne sidstnævnte ordre vil have en så lille ordrestørrelse som muligt (0,00001 Bitcoin).

Dette har to effekter:

  1. Ingen andre sælgere kan slå denne sælgers anmodningspris. Hvis du går 1 ¢ under anmodningsprisen, er du ved budprisen, og udveksling tillader ikke sælgere at placere producentordrer til eller under budprisen.
  2. Det reducerer spredningen til kun 1 ¢. Når et marked, der fremstiller bot ser en sådan lille spredning, slukkes det sandsynligvis midlertidigt, da der ikke er nogen fortjeneste.

Dette andet punkt er afgørende, da det forklarer, hvorfor praktisk talt alle markeder, der fremstiller bots slukker, når en forfalsket købsordre går lige under anmodningsprisen. I virkeligheden, selvom spredningen ser ud til at være kun 1 ¢, er der stadig mulighed for at blive haft.

Lad os sige, at den næste sælgers takerordre kommer ind for 1 Bitcoin. Den første 0.00001 Bitcoin vil blive solgt til market maker med den forfalskede ordre, hvorved denne ordre fjernes fra børsen. Den næste 0.99999 Bitcoin vil blive solgt til ordren til den nye budpris, den højeste pris under den forfalskede ordre.

En af de største forbedringer, jeg lavede til min bot, var at lade den ignorere forfalskede ordrer i beregningen af ​​spredningen. Selvom anmodningsprisen muligvis kun er 1 ¢ højere end budprisen, ville min bot se forbi forfalskede ordrer for at finde ud af, hvad spredningen ville være, hvis ikke for de forfalskede ordrer (som stadig kan være $ 50 - $ 100). Hvis denne spredning var stor nok til at give en mulighed, ville den konkurrere om at placere den højeste pris købsordre efter enhver forfalsket ordre. Da sælgers takerordrer kom ind, betød det, at et par cent værd af Bitcoin ville blive solgt til spooferne, og derefter resten til mig.

2018

De første par måneder af 2018 var turbulente. Efter Bitcoin's stigning til $ 20.000 i december var hjulene begyndt at gå af, og prisen faldt hurtigt.

Selvom det er dårligt for investorer, gav dette enorme muligheder for markeds beslutningstagere. De høje volumenniveauer på både købs- og salgssiden (hvilket betød, at flere modtagerordrer kom ind) øgede massen af ​​handler pr. Dag, som en effektiv markedsproducent kunne udføre.

Denne mulighed var dog relativt kortvarig. Efter vanviddet i januar og februar begyndte mængderne at tørre op, hvilket betyder færre muligheder for at få overskud. På trods af de faldende handelsmængder steg antallet af markedsproducenter fortsat, da nye bots trådte ind på børsen.

Flere markedsproducenter på børser førte til mere konkurrence på tilbuds- og anbudspriser, hvilket igen begrænsede spændene. De yderligere konkurrenter betød også, at ordrer typisk ville være til budprisen i en kortere periode, da der var flere konkurrenter, der var klar til at overgå dig, så snart din ordre var blevet sendt.

På grund af den øgede konkurrence og færre muligheder for at profitere, havde jeg slået alle mine bots fra i marts og har ikke tændt for dem siden. Forhøjede producentgebyrer på mange børser har afskrækket mig fra at komme tilbage i markedet for at lave spil, men der er sandsynligvis stadig mulighed derude for alle, der er kloge nok til at vælge deres øjeblikke.

Alt i alt havde jeg handlet omkring 50 millioner dollars værdi af Bitcoin mellem december 2017 og marts 2018 med en ROI på 20,2.