Wednesday, 18 October 2017

Byggmodeller för hög frekvens algoritm handelsstrategier använda matlab


Bitfinex tillkännagav idag starten av gruvkontrakt som en handelsprodukt på sin plattform. Totalt 100 THS (terahashes per sekund) med en utgång på 3 månader har gjorts tillgängliga för handel under namnet TH1BTC. De 100 THSna ingår i en större pool på 3500 THS så att fler gruvkontrakt kan bli tillgängliga i framtiden. Intressant, detta markerar första gången att det är möjligt att korta ett gruvkontrakt. Kortslutning av ett gruvkontrakt innebär att vi nu får ett belopp av Bitcoin (det pris vi säljer det till) och betalar därefter utdelning (i Bitcoin) under följande 3 månader tills avtalet löper ut i mitten av december. En vinst görs om summan av alla utdelningar som betalats ut (plus räntan vi betalat för att korta kontraktet) är mindre än vad vi fick i början när vi sålde kontraktet (till någon annan självklart). Detta innebär att priset för TH1BTC ska bero på 3 variabler (i minskande ordning av betydelse): Förändringen av gruvproblemet fram till den 15 december. Återstående tid till 15 december. Räntan (swap rate) Om svårigheter ökar utdelningsbetalningarna blir mindre eftersom 1 THS representerar en mindre del av hela nätverkshackmakten. Därför bör priset på ett kontrakt minska om svårigheten ökar. Ju närmare vi kommer till utgången, kan feber Bitcoins vara uppriktigt med totalt 1 THS. Därför bör priset på ett kontrakt minska ju närmare vi når utgången och nå ett pris på 0 vid utgången. Ju högre ränta desto dyrare är det att ange och hålla kontraktet över hela längden på 3 månader. Bitfinex erbjuder inte 90 dagars swappar. Därför ingår ett kontrakt med målet att hålla det tills slutet innehåller en del ränterisk eftersom någon gång måste en ny byte tas ut (med en potentiellt ogynnsam ränta). Detta är mindre av ett problem när du går lång (Bitcoin-priser är vanligtvis låga) än när du går kort (det finns bara högst 100 kontrakt tillgängliga totalt, ingen kortslutning). För att kompensera bör riskpriserna öka när växelkurserna ökar. Den stora okända är naturligtvis förändringen i minskruvproblemet under de närmaste 90 dagarna. I följande figur ser vi hur svårigheter förändrats under föregående 6 månader. Uppgifterna är från Tradeblock och det visar inte bara en grafisk representation av tidigare förändringar i svårigheten (svårigheten ändras var 14: e dag beroende på tidigare hash-hastighet. Mer information finns på wikien) men också en del grundläggande sammanfattningsstatistik. I genomsnitt har svårigheten ökat 27 under de senaste 30 dagarna och 77 under de senaste 60 dagarna. För att uppskatta det rimliga priset på en TH1BTC antar vi att svårigheten ökar i genomsnitt 15 per månad under de kommande tre månaderna. För närvarande är priset för att köpa ett kontrakt värt 1 THS 2 BTC. Poolavgiften är 3 och vi kommer att ignorera räntorna. Om vi ​​fyller i all information får vi följande resultat: Om vi ​​så länge följer ett kontrakt baserat på våra antaganden skulle vi göra en förlust på cirka 0,39 Bitcoin (lite mer i verkligheten sedan vi börjar gruva i mitten av september till mitten i december) eftersom de förväntade utdelningarna (månadsintäkter) inte kommer att täcka våra initiala kostnader för 2 BTC innan kontraktet löper ut. Å andra sidan skulle korta till ett pris av 2 Bitcoin ha genererat en vinst på cirka 0,39 Bitcoin per kontrakt. Tänk på att vi inte omfattade swapkostnader som för närvarande ligger runt 1 per dag (). Det finns två sätt att titta på resultaten. Antingen kan vi säga att priserna för TH1BTC för närvarande är övervärderade och borde vara närmare cirka 1,5 BTC. Om vi ​​antar svårigheter kommer att öka mer än 15 per månad så bör priserna vara ännu lägre än det. Eller vi kan säga att marknaden är effektiv och priserna är korrekta, vilket skulle innebära att marknaden förväntar sig svårigheter att minska i genomsnitt ca 2 per månad under de närmaste 90 dagarna. Hur som helst kommer resultaten att vara kända med säkerhet på 90 dagar. Kämpar för att återhämta sig från den senaste Bitcoin Flash-kraschen som härstammar från Bitfinex bara fyra dagar. Bitcoin-priserna tog ett annat dyk idag eftersom marginalhandlare fick sina positioner likvida på BTC-e. Händelsen startade klockan 1:36 (UTC1) när stora försäljningsorder började dyka upp på den tredje största västliga Bitcoin-utbytet BTC-e. Nedåtgående fart ökade stadigt, eftersom orderboken blev alltmer tunn, kraschade priser till en låg av USD 309 per Bitcoin klockan 13.43. Under de följande minuterna återhämtade priserna snabbt på tunn volym till cirka 442 USD, eftersom arbitragehandlare började utnyttja rabatten i förhållande till andra börser. BTC-e är en av de få stora börserna som erbjuder marginhandel till sina kunder via MetaTrader-plattformen sedan november 2013, men detaljerna om vem som exakt tillhandahåller de medel som behövs för marginalhandel har varit oklara. Formen och speciellt tidpunkten för kraschen pekar mot att marginalhandlare är likvida (eller stoppa order som utförs), som liknar vad som hände på Bitfinex för några dagar sedan. Men till skillnad från Bitfinex som är transparent om öppna byta positioner. BTC-e tillhandahåller inte viktiga data som skulle behövas för att ge en mer noggrann analys och så kan detta senaste uttalande endast betraktas som en bra gissning. Till skillnad från Bitfinex, som bygger på en dold algoritm i ett försök att styra orderflödet. BTC-e verkar inte ha några speciella skyddsåtgärder för att mildra sådana händelser. Fallet under 400 berodde främst på brist på bud i orderboken och inte på grund av att marknaden trodde att det verkliga värdet var under 400, eftersom återstoden tillbaka till över 440 bara några minuter senare visade sig i grunden. Att stoppa handeln under extremt nedåtgående volatilitet kunde därför lätt avvärja blodsutgjutningen bland marginhandlare genom att ge andra marknadsaktörer mer tid att tjocka upp orderboken. Uppdatering 4:58 PM (UTC1): BrCapoeira publicerade på Reddit ett intressant diagram baserat på data från Metatrader-plattformen: Denna graf innebär att en enda stor order var orsaken till denna händelse. Huruvida den här ordern skapades på grund av ett marginalanrop, är ett enkelt misstag, att manipulera marknaden eller att öppna en stor kort position oklart. Sunt förnuft skulle föreslå att det troligen var resultatet av en marginalanrop av en enda stor näringsidkare. Mitt tidigare inlägg på detta ämne har tagits upp under diskussioner i efterdyningarna av den senaste Bitcoin flash-kraschen. Coindesk var en av de första som tog upp den och sedan dess började olika inlägg om öppenhet och eventuellt ansvar för utbyten för att aktivt hantera orderutförande visas. Som ett resultat av dessa händelser fortsatte Josh Rossi, vice vd för affärsutveckling vid Bitfinex, att Reddit öppet tog upp några av de problem som väcktes mot utbytet. Fakta som vi vet är att det fanns några stora försäljningsorder kort före kraschen påbörjades, till exempel en 500-säljorder på Bitstamp kl 9.49 (UTC1), cirka 6 minuter innan en stor säljorder på Bitfinex utlöste kraschen. Uppgifterna berättar emellertid inte om det var insiderhandel, någon form av marknadsmanipulation. eller ett enkelt misstag. Faktum är att efter Bitcoin-flashkraschen minskade öppna växlingspositioner från cirka 28m till 24m vilket indikerar att 8400 marginella positioner stängdes (antagande i genomsnitt 475) på ett sätt (marginalanrop) eller en annan (stopporderträff). Uppgifterna berättar inte för oss vad förhållandet är men enligt Josh endast ca 650 Bitcoins såldes som ett resultat av marginalanrop. Som korrekt påpekad av Jonathan Levin. Faktum är att det börjar ungefär 24 timmar innan bitcoin-flashkraschen fram till själva kraschen ytterligare 1000 bitcoins togs ut i korta positioner och ca 2500 shorts stängdes därefter under kraschen. Huruvida dessa shorts öppnades för att säkra befintliga positioner, som ett skadligt försök att utlösa ett marginalanrop eller ett sätt att förutse marknaden med hjälp av privat information kan inte bestämmas av tillgängliga data (det ser emellertid ut märkligt misstänkt). Vad var oväntat Personligen är den intressanta punkten inte att Bitcoin flash kraschade. Plötsliga prisfluktuationer hände tidigare och kommer att hända i framtiden, särskilt i illikvida marknader som Bitcoin. Den intressanta punkten är Bitfinex medverkan och hur de aktivt hanterade orderkörning utan att informera marknadsaktörerna i förväg. Bitfinex-matchningsmotorn stoppades inte under hela kraschen, men den saktade ned (men ingenstans så illa som den ökända 70-minuters orderlagringen på den nuvarande MtGox-utbytet under kraschen år 2012). Men vad Bitfinex gjorde var att de introducerade någonting som de nu hänvisar till som hastighetsstötar. Vad det innebär är att de i huvudsak flaggar order de anser vara ogiltiga eller potentiellt farliga och sakta ner dem avsiktligt. Vid första anblicken kan det tyckas som en bra idé. Vem vill inte att ett filter ska ta bort eller sakta ner onda order, men som så ofta med sådana saker är djävulen i detalj. Problemet är att Bitfinex inte (och eventuellt aldrig kommer) offentliggöra hur exakt de kategoriserar en order som 8220bad8221 och 8220slow it down8221. Om en marknadsaktör bestämmer sig för att lägga upp en stor försäljningsorder mot en tunn orderbok, då fattas hans beslut. Huruvida hans åtgärd var avsedd eller inte, är det inte upp till bytet att bestämma. Det kan vara att denna marknadsaktör helt enkelt var den första personen som reagerade på en stor händelse och är helt villig att bära de extra kostnaderna för den resulterande slippningen i väntan på en stor prisrörelse. Det finns helt enkelt inte ett sätt att noggrant klassificera order a priori som 8220good8221 eller 8220bad8221 eftersom det automatiskt skulle ta del av alla framtida händelser. Vad kan förbättras Misstag (8220fat finger8221, algoritm som går till havs) händer, marginaler blir kallade och människor försöker spela systemet på alla möjliga sätt. Logiskt måste det finnas skyddsåtgärder för att skydda marknaderna och dess deltagare. Bitfinex var definitivt medveten om potentiellt giftigt orderflöde och beredda motåtgärder. Det enda de glömde var att informera sina kunder om de dolda säkerhetsfunktionerna. Att dölja dessa skyddsåtgärder från allmänheten ger osäkerhet på marknaden (särskilt nu när vi vet att de existerar och ibland gör någonting) och lägger i grunden alla aktörers tillit till Bitfinex händer. Vid denna tidpunkt kan en näringsidkare bara hoppas att Bitfinex alltid kommer att agera i sina kunders bästa avsikter. Detta hopp kan vara meningslöst, eftersom Bitfinex gör pengar från handelsavgifter, oberoende av om en näringsidkare faktiskt gör några pengar. Man behöver inte tänka länge för att inse den dolda potentialen för missbruk i ett sådant system. Den viktigaste anledningen till att Josh varför Bitfinex inte avser att publicera sin algoritm är att undvika att ge handlare möjligheten att utnyttja det är falskt och följande visar varför. Det är de officiella marknadsbreddbrytare som används av NASDAQ, publiceras online och helt transparent för alla marknadsaktörer. Dessa regler är verkligen inte perfekta men de är enkla, transparenta och arbetar för en av världens största aktiemarknader. Nu har jag stor respekt för de personer som arbetar på Bitfinex-plattformen, men jag tvivlar på att de lyckades komma fram med en algoritm som skyddar marknadsaktörerna bättre än de som används av en större börshandel med mer än 900 miljoner aktier per dag i genomsnitt . Och om de gjorde det är nu chansen för Bitfinex att bevisa det för världen och eventuellt skriva historia genom att lära de stora pojkarna hur man ska driva en utbyte. När det gäller offentliga utbyten är öppenhet ett måste, inte bara för Bitfinex utan för varje utbyte. Marknadsaktörerna måste veta exakt vad som händer när de lägger order och borde under inga omständigheter behöva förlita sig på god tro ensam. Skyddsåtgärder är viktiga för att olyckor inträffar och marknadskrasch men det är inte upp till utbytet att engagera sig i sekretessdiskriminering. Det finns olika sätt att skydda finansmarknaderna och ingen av dem är perfekta. Att lägga till komplexitet ökar vanligtvis chansen för oavsiktliga biverkningar och därför verkar ett enkelt, öppet tillvägagångssätt mer lämpligt än en dold, komplex. För två dagar sedan reducerade BitMEX sina handelsavgifter till 0 och firade det genom att släppa en grundläggande marknad som gjorde bot på Github. BitMEX driver för närvarande en handelsutmaning till den 29 augusti 2014 för att marknadsföra sin nya plattform. Att frigöra en markeringsmarkering är förmodligen ett intressant och effektivt sätt att öka API-trafiken och stresstest plattformen lite. Självklart kunde jag inte motstå och ta en titt. Marknadsförare är en gaffel av Liquidbot. som var original utformad för att köra på den nu föråldrade MtGox-utbytet. Det fanns några mindre förändringar (ny API-klass för att ansluta till BitMEX, några ytterligare utskrifter till konsol, ändringar för anpassning för terminskontrakt och ett stort och onödigt utskrift till konsolen vid start) men inga signifikanta förändringar i handelslogiken. Algoritmen använder REST och kontrollerar endast för ändringar var 60: e sekund. Detta diskvalificerar redan boten eftersom det är viktigt för långsamt att reagera på pågående förändringar i orderboken. BitMEX begränsar begäran till REST API till 150 per 5 minuter så att du kan försöka minska 60 sekunder till något som 3 men det vann8217t ändra det faktum att så snart marknaderna börjar röra sig kommer du att träffa gränsen och fastna med öppna positioner. För att vara rättvis ger BitMEX boten mer som en marknadsföringsstunt och uttrycker uttryckligen att byte till WebSocket kommer att vara mycket fördelaktigt eftersom det tillåter uppdateringar i realtid. Sammantaget är algoritmen solid skriftlig, tekniskt fungerar och är lätt att installera, men det vann dig att tjäna pengar på lång sikt. Om någon ser allvarligt på att använda denna bot rekommenderar jag följande små ändringar för att göra koden mer användbar: 1. Byt till Webbplats 2. Avsluta position på nära håll: 3. Bygga order som börjar från mittpunkten: Dessutom rekommenderar jag att man mäter volatilitet på något sätt och anpassa avståndet mellan order dynamiskt och storlek. Under testningen var API alltid responsivt och korrekt. Volymen på utbytet är fortfarande låg men plattformens grunder ser lovande ut. Denna bot är ett roligt verktyg för att introducera användare till världen av marknadstillverkning och algoritmisk handel men det won8217t står en chans mot etablerade algoritmer. Obs! Om du funderar på att använda denna algoritm, kom ihåg att marknadsföring är ett heltidsjobb. Något mindre än fullständigt engagemang, snabb reaktionstid och 100 oppetid leder till att du förlorar pengar. Redigera: Följ upp efterkanten här Idag tog Bitcoin-priserna ett dyk som marginhandlare på en av de största börserna Bitfinex fick sina order likviderade. För många nära marknadsobservatörer och mer sofistikerade handlare kom det inte som en överraskning. I själva verket har långa positioner byggt upp kontinuerligt under de senaste månaderna i avvaktan på en ny bubbla i Bitcoin-priserna och uppnådde så mycket som 30 miljoner i utestående byta positioner på Bitfinex. Nu skulle detta inte vara ett problem i sig själv så länge som det finns tillräckligt med kapital som stöder lånet. Tyvärr var de flesta av dessa långa positioner angivna runt 600 8211 640 USDBTC och säkerheten lämnades oftast i Bitcoins själv. Nedanstående diagram visar snyggt uppbyggnaden av långa positioner, toppande runt den 14 juli med nära 32 miljoner i swappar. När du kör lite snabb matte baserat på underhållsmarginalen för Bitfinex på 13 och med Bitcoin som säkerhet ser vi att marginalsamtal bör börja runt 520 8211 540 USDBTC-märket. I går kom priserna nära och idag hoppade de äntligen över klippan. Problemet är att när marginalsamtal har ställts in har du en kaskad effekt som rippar genom orderboken, vilket gör att ännu fler order kommer att nå punkten utan återgång och ökar det nedåtgående momentet ytterligare. Sådana händelser är inte begränsade till Bitcoin-utbyten men kan också uppstå vid större utbyten, t. ex. under 2010-kraschen i USA. Orsaket till en sådan flashkrasch kan variera och går från fetfelfel till programmeringsfel till kaskad marginalanrop. Det är intressant att se hur utbytet hanterar dessa händelser. I USA har Nasdaq implementerat marknadsledda strömbrytare som kommer att få handel att stoppa under sådana extrema förhållanden. Bitcoinmarknaderna är ännu inte så avancerade och brukar fortsätta att handla. Om vi ​​tittar på orderåtgärden på Bitfinex idag ser vi något mycket märkligt: ​​Det verkar (och det här är bara ett giss eftersom det inte finns någon officiell kommentar från utbytet) som om Bitfinex kör en algoritm för att hantera marginalanrop. Algoritmen börjar sälja men begränsar sig till 10 prisminskningar inom 1 minut. Om priserna sjunker mer än 10 i 1 minut kommer det att sluta sälja och vänta på att köporder ska komma in. När en gång återkommer en viss mängd beställningar i orderboken börjar algoritmen sälja igen tills alla marginalanrop är uppfyllda. Redigera: LeMogawai var den första som pekade ut det här i det här inlägget och matchar min personliga observation vid tidpunkten för evenemanget. Detta verkar vara ett intressant sätt att ta itu med cascading margin calls men kan också betraktas som gränsöverskridande marknadsmanipulation från utbytessidan. Genom att sprida ut försäljningsorderna över tiden reduceras nedåtgående moment, men handlare hamnar ihop mot utbytet självt och inte på marknaden längre. Utbytet har en informationsfördel vid den tiden och är därför mer sannolikt att vinst än de handlare. Lyckligtvis varade detta bara i ca 10 minuter, varefter kontrollen gavs tillbaka till marknaden. Andra börser som också erbjuder marginhandel som BTC-e och OKcoin har nu en bra position och kan lära av dagens händelser. Genomförandet av ett system som mer liknar brytare av stora börser som Nasdaq kan vara ett smart första drag. Nyligen jobbar jag med att få min nya handelsplattform på väg. Den här nya versionen bygger på Python, använder MySQL för att hålla en databas över alla tidsserier av olika virtuella valutor med automatisk återfyllning från BitcoinCharts och integrerar de tre stora börserna MtGox, BTC-E och Bitstamp. Plattformen kommer att användas som sätt att backtest vissa strategier och engagera sig i automatisk handel. Under det att jag bestämde mig för att dra några data från BTC mot USD från BitcoinCharts och baserat på idéerna i ett papper från Hashem och Timmermann (1995) infördes en enkel handelsstrategi. Tanken är att förutse tecknet för t1-periodens avkastning baserat på en regression, som beräknas på ett automatiskt val av tekniska indikatorer under den sista n-perioden fram till t. Sedan, efter att t1 hänt, uppdaterar vi modellen och försöker förutsäga t2 med all tillgänglig data för de sista n perioderna fram till t1 och så vidare. För min kandidatexamen undersökte jag fyra olika tekniska handelsregler på Forex-marknaderna. Det använder MCS och SPA-testet för att söka efter giltiga modeller bland olika parametrar som inte är föremål för data-snooping. Med hänsyn till realistiska transaktionskostnader finner vi inget bevis på meravkastning, vilket överensstämmer med marknadseffektiviteten. Med den här koden bör du kunna leta efter Bitcoin arbitrage möjligheter inom BTC-e. Den använder idén om ett pris och tillämpar triangulär arbitrage, med beaktande av kostnader och spridning. Anledningen till att jag lägger upp detta här är trots att det fungerar, chansen är att du kommer att vara för långsam för att konkurrera med andra investerare som gör detsamma. Eventuella förbättringar skulle vara att ta hänsyn till orderbokens djup och dela upp affärerna dynamiskt och försöka undergräva andra näringsidkare som gör detsamma. Om du också ställer upp allt på en dedikerad server nära den fysiska platsen för BTC-e-matchningsmotorn bör drastiskt minska fördröjningen och ge dig en potentiell kant. Post navigationBasics of Algorithmic Trading: Begrepp och exempel En algoritm är en specifik uppsättning tydliga instruktioner som syftar till att utföra en uppgift eller process. Algoritmisk handel (automatiserad handel, blackbox trading eller helt enkelt algo-trading) är processen med att använda datorer som är programmerade att följa en definierad uppsättning instruktioner för att placera en handel för att generera vinst med en hastighet och frekvens som är omöjligt för en mänsklig näringsidkare. De definierade reglerna baseras på tid, pris, kvantitet eller någon matematisk modell. Bortsett från vinstmöjligheter för näringsidkaren gör algo-trading marknaderna mer likvida och gör handel mer systematisk genom att utesluta emotionella mänskliga effekter på handelsverksamheten. Antag att en näringsidkare följer dessa enkla handelsvillkor: Köp 50 aktier i ett lager när dess 50-dagars glidande medelvärde går över 200-dagars glidande genomsnitt Säljer aktier i aktierna när dess 50-dagars glidande medelvärde går under det 200-dagars glidande genomsnittet Med hjälp av denna uppsättning av två enkla instruktioner är det enkelt att skriva ett datorprogram som automatiskt kommer att övervaka aktiekursen (och de glidande medelindikatorerna) och placera köp - och säljordern när de definierade villkoren är uppfyllda. Näringsidkaren behöver inte längre hålla koll på levande priser och grafer eller lägga in orderen manuellt. Det algoritmiska handelssystemet gör det automatiskt för honom genom att korrekt identifiera handelsmöjligheten. (För mer om glidande medelvärden, se: Enkla rörliga genomsnittsvärden gör trenden uppe.) Algo-trading ger följande fördelar: Handlar utförda till bästa möjliga priser. Instant och exakt orderingång (därmed höga chanser att genomföras på önskade nivåer). tidsbestämd korrekt och omedelbart för att undvika betydande prisförändringar. Minskade transaktionskostnader (se exempel på genomförandebrist nedan). Samtidig automatiserad kontroll av flera marknadsförhållanden. Minskad risk för manuella fel vid placering av handel. Backtest algoritmen baserat på tillgänglig historisk och realtidsdata. möjligheter till misstag av mänskliga handlare baserade på känslomässiga och psykologiska faktorer Den största delen av dagens algohandel är HFT, som försöker kapitalisera att placera ett stort antal order med mycket snabba hastigheter över flera marknader och flera beslut parametrar, baserat på förprogrammerade instruktioner. (För mer om handel med högfrekventa handelar, se: Strategier och hemligheter hos högfrekvenshandeln). Algo-trading används i många former av handels - och investeringsverksamhet, bland annat: Mid till långsiktiga investerare eller köpsidor (pensionsfonder , fonder, försäkringsbolag) som köper aktier i stora mängder men inte vill påverka lagerpriserna med diskreta investeringar i stor volym. Kortfristiga näringsidkare och sälja sidodeltagare (marknadsmäklare, spekulanter och arbitrageurs) dra nytta av automatiserad handelstillverkning och allmäna handelshjälpmedel för att skapa tillräcklig likviditet för säljare på marknaden. Systematiska handlare (trendföljare, parhandlare, hedgefonder etc.) finner det mycket effektivare att programmera sina handelsregler och låta programmet handla automatiskt. Algoritmisk handel ger ett mer systematiskt tillvägagångssätt för aktiv handel än metoder baserade på en mänsklig handlare intuition eller instinkt. Algoritmiska handelsstrategier Alla strategier för algoritmisk handel kräver en identifierad möjlighet som är lönsam när det gäller förbättrat resultat eller kostnadsminskning. Följande är vanliga handelsstrategier som används i algo-trading: De vanligaste algoritmiska handelsstrategierna följer trender i glidande medelvärden. kanalbrytningar. prisnivå rörelser och relaterade tekniska indikatorer. Dessa är de enklaste och enklaste strategierna för att genomföra genom algoritmisk handel, eftersom dessa strategier inte innebär att man gör några förutsägelser eller prisprognoser. Trader initieras baserat på förekomsten av önskvärda trender. som är enkla och raka att implementera genom algoritmer utan att komma in i komplexiteten av prediktiv analys. Ovanstående exempel på 50 och 200 dagars glidande medelvärde är en populär trendstrategi. (För mer om strategier för trendhandel, se: Enkla strategier för att kapitalisera på trender.) Att köpa ett dubbelt noterat lager till ett lägre pris på en marknad och samtidigt sälja det till ett högre pris på en annan marknad ger prisskillnaden som riskfri vinst eller arbitrage. Samma operation kan replikeras för aktier kontra futuresinstrument, eftersom prisskillnaderna existerar från tid till annan. Genomföra en algoritm för att identifiera sådana prisskillnader och placera orderna möjliggör lönsamma möjligheter på ett effektivt sätt. Indexfonder har definierat perioder av ombalansering för att få sina innehav i nivå med sina respektive referensindex. Detta skapar lönsamma möjligheter för algoritmiska handlare, som utnyttjar förväntad handel som erbjuder 20-80 basispoäng vinst beroende på antalet aktier i indexfonden, precis innan indexfonden ombalanseras. Sådana branscher initieras via algoritmiska handelssystem för snabb genomförande och bästa priser. Många bevisade matematiska modeller, som den delta-neutrala handelsstrategin, som tillåter handel på kombination av alternativ och dess underliggande säkerhet. där handeln placeras för att kompensera positiva och negativa delta så att portföljen delta hålls noll. Medelåtervändningsstrategin bygger på idén att de höga och låga priserna på en tillgång är ett temporärt fenomen som regelbundet återgår till deras medelvärde. Att identifiera och definiera ett prisklass och en implementeringsalgoritm baserad på det gör det möjligt att placera affärer automatiskt när priset på tillgången bryter in och ut ur sitt definierade intervall. Volymvägd genomsnittsprisstrategi bryter upp en stor order och släpper dynamiskt bestämda mindre bitar av ordern till marknaden med hjälp av aktiespecifika historiska volymprofiler. Syftet är att genomföra ordern nära Volymvägd Medelpris (VWAP) och därigenom dra nytta av genomsnittspriset. Tidsvägd genomsnittsprisstrategi bryter upp en stor order och släpper dynamiskt bestämda mindre bitar av ordern till marknaden med jämnt fördelade tidsluckor mellan start - och sluttid. Syftet är att genomföra ordern nära genomsnittskursen mellan start - och sluttiderna och därigenom minimera marknadseffekterna. Till dess att ordern är fullt fylld fortsätter denna algoritm att skicka delbeställningar, enligt det definierade deltagandekvoten och enligt volymen på marknaden. Den relaterade stegstrategin skickar order till en användardefinierad procentandel av marknadsvolymer och ökar eller minskar denna delaktighet när aktiekursen når användardefinierade nivåer. Strategin för genomförandet av underskottet syftar till att minimera genomförandekostnaden för en order genom att handla i realtidsmarknaden och därigenom spara på beställningskostnaden och dra nytta av möjlighetskostnaden för försenat genomförande. Strategin kommer att öka den riktade delaktighetsgraden när aktiekursen rör sig positivt och sänker den när aktiekursen rör sig negativt. Det finns några speciella klasser av algoritmer som försöker identifiera händelser på andra sidan. Dessa sniffningsalgoritmer, som till exempel används av en försäljningssida-marknadsförare, har den inbyggda intelligensen för att identifiera existensen av några algoritmer på köpsidan av en stor order. Sådan upptäckt genom algoritmer kommer att hjälpa marknadsmakaren att identifiera stora ordermöjligheter och möjliggöra för honom att få fördel genom att fylla orderen till ett högre pris. Detta identifieras ibland som high-tech front-running. (För mer om högfrekvent handel och bedrägliga rutiner, se: Om du köper aktier online, är du involverad i HFT.) Tekniska krav för algoritmisk handel Genomföra algoritmen med ett datorprogram är den sista delen, klubbad med backtesting. Utmaningen är att omvandla den identifierade strategin till en integrerad datoriserad process som har tillgång till ett handelskonto för beställning. Följande behövs: Datorprogrammeringskunskap för att programmera den nödvändiga handelsstrategin, anställda programmörer eller färdiga handelsprogramvaror Nätverksanslutning och tillgång till handelsplattformar för orderingång Tillgång till marknadsdata feeds som kommer att övervakas av algoritmen för möjligheter att placera order Förmågan och infrastrukturen att backtest systemet en gång byggt innan den går live på reala marknader Tillgängliga historiska data för backtesting, beroende på komplexiteten av regler som implementeras i algoritmen Här är ett omfattande exempel: Royal Dutch Shell (RDS) är listat på Amsterdam Fondbörs (AEX) och London Stock Exchange (LSE). Låter bygga en algoritm för att identifiera arbitrage möjligheter. Här är några intressanta observationer: AEX handlar i euro, medan LSE handlar i Sterling Pounds På grund av en timmes tidsskillnad öppnar AEX en timme tidigare än LSE, följt av att båda börserna handlar samtidigt för de närmaste timmarna och sedan endast handlar i LSE under Den sista timmen när AEX stängs Kan vi undersöka möjligheten till arbitragehandel på Royal Dutch Shell-börsen som är noterad på dessa två marknader i två olika valutor Ett datorprogram som kan läsa aktuella marknadspriser Prismatningar från både LSE och AEX A-valutahastighet för GBP-EUR-växelkurs Beställa placeringsförmåga som kan styra ordern till rätt utbyte Backtestningskapacitet på historiska prismatningar Dataprogrammet ska utföra följande: Läs det inkommande prismatningen av RDS-lager från båda börserna Använda tillgängliga valutakurser . konvertera priset på en valuta till andra Om det finns en tillräckligt stor prissammanhang (diskontering av mäklarkostnaderna) som leder till ett lönsamt tillfälle, placerar du köpsordern på lägre prissättning och säljarorder på högre prissättning. Om beställningarna utförs som Önskad, arbitrage vinsten kommer att följa Enkel och lätt Men övningen av algoritmisk handel är inte så enkelt att underhålla och genomföra. Kom ihåg, om du kan placera en algo-genererad handel, så kan andra marknadsaktörer. Följaktligen fluktuerar priserna i milli - och till och med mikrosekunder. I det ovanstående exemplet, vad händer om din köphandel blir verkställd, men sälja handel, eftersom försäljningspriserna ändras när din order träffar marknaden. Du kommer att sluta sitta med en öppen position. göra din arbitrage strategi värdelös. Det finns ytterligare risker och utmaningar: till exempel riskerar systemfel, nätverksanslutningsfel, tidsintervaller mellan handelsorder och utförande, och viktigast av allt, ofullkomliga algoritmer. Ju mer komplexa en algoritm krävs, desto strängare backtesting behövs innan den tas i bruk. Kvantitativ analys av algoritmernas prestanda spelar en viktig roll och bör granskas kritiskt. Det är spännande att gå till automation med hjälp av datorer med en uppfattning att tjäna pengar utan problem. Men man måste se till att systemet är noggrant testat och att gränserna är nödvändiga. Analytiska handlare bör överväga att lära sig programmering och byggsystem på egen hand, för att vara övertygade om att implementera rätt strategier på idiotsäkert sätt. Försiktig användning och noggrann testning av algo-handel kan skapa lönsamma möjligheter. Handbokens vägledning till kvantitativ handel I den här artikeln ska jag presentera dig för några av de grundläggande begreppen som åtföljer ett end-to-end kvantitativt handelssystem. Detta inlägg kommer förhoppningsvis att tjäna två publikgrupper. Den första kommer att vara individer som försöker få ett jobb hos en fond som en kvantitativ näringsidkare. Den andra kommer att vara individer som vill försöka ställa in sin egen detaljhandel algoritmiska handelsaffär. Kvantitativ handel är ett extremt sofistikerat område av kvantfinansiering. Det kan ta betydande tid att få den kunskap som krävs för att skicka en intervju eller bygga upp egna handelsstrategier. Inte bara det men det kräver omfattande programkompetens, åtminstone på ett språk som MATLAB, R eller Python. Men eftersom handelsfrekvensen i strategin ökar blir de tekniska aspekterna mycket mer relevanta. Att vara bekant med CC kommer därför att vara av största vikt. Ett kvantitativt handelssystem består av fyra huvudkomponenter: Strategi Identifiering - Hitta en strategi, utnyttja en kant och bestämma om handelsfrekvens Strategi Backtesting - Få data, analysera strategins prestanda och avlägsna företeelser Exekutionssystem - Länka till en mäklare, automatisera handeln och minimera transaktionskostnader Riskhantering - Optimal kapitaltilldelning, satsstorlekKellykriterium och handelspsykologi Börja med att ta en titt på hur man identifierar en handelsstrategi. Strategiidentifiering Alla kvantitativa handelsprocesser börjar med en första forskningsperiod. Denna forskningsprocess omfattar att hitta en strategi för att se om strategin passar in i en portfölj av andra strategier du kan springa, att få all data som behövs för att testa strategin och försöka optimera strategin för högre avkastning och lägre risk. Du måste faktor i dina egna kapitalkrav om du kör strategin som detaljhandlare och hur eventuella transaktionskostnader kommer att påverka strategin. I motsats till populär tro är det faktiskt ganska enkelt att hitta lönsamma strategier genom olika offentliga källor. Akademiker publicerar regelbundet teoretiska handelsresultat (om än för det mesta brutto av transaktionskostnader). Kvantitativa finansbloggar diskuterar strategier i detalj. Handels tidskrifter kommer att skissera några av de strategier som används av fonder. Du kanske ifrågasätter varför individer och företag är angelägna om att diskutera sina lönsamma strategier, särskilt när de vet att andra som tränger handeln kan stoppa strategin från att arbeta på lång sikt. Anledningen till detta är att de inte ofta diskuterar de exakta parametrar och inställningsmetoder som de har utfört. Dessa optimeringar är nyckeln till att göra en relativt medelmåttig strategi till en mycket lönsam. Faktum är att ett av de bästa sätten att skapa dina egna unika strategier är att hitta liknande metoder och sedan utföra din egen optimeringsprocedur. Här är en liten lista över platser att börja leta efter strategidéer: Många av de strategier du kommer att titta på kommer att hamna i kategorierna av medelåtervändning och trend-eftermomentum. En medelåterkallande strategi är en som försöker utnyttja det faktum att ett långsiktigt medelvärde på en prisserie (som spridningen mellan två korrelerade tillgångar) existerar och att kortsiktiga avvikelser från detta medel kommer att återgå till sist. En momentumstrategi försöker exploatera både investorspsykologi och stor fondstruktur genom att ta en tur på en marknadsutveckling, som kan samla fart i en riktning och följa trenden tills den återgår. En annan mycket viktig aspekt av kvantitativ handel är frekvensen av handelsstrategin. Lågfrekvenshandel (LFT) refererar i allmänhet till vilken strategi som helst som innehar tillgångar längre än en handelsdag. På motsvarande sätt refererar högfrekvenshandel (HFT) till en strategi som innehar tillgångar intradag. Ultrahögfrekvenshandel (UHFT) avser strategier som håller tillgångar i storleksordningen sekunder och millisekunder. Som detaljhandlare är HFT och UHFT säkert möjliga, men endast med detaljerad kunskap om handelsteknikstaket och orderbokdynamiken. Vi kommer inte att diskutera dessa aspekter i någon större utsträckning i denna inledande artikel. När en strategi eller uppsättning strategier har identifierats behöver den nu testas för lönsamhet på historiska data. Det är domänen för backtesting. Strategi Backtesting Målet med backtesting är att bevisa att strategin som identifierats via ovanstående process är lönsam när den tillämpas på både historisk och out-of-sample data. Detta ställer förväntan på hur strategin kommer att fungera i den verkliga världen. Backtesting är emellertid inte en garanti för framgång, av olika skäl. Det är kanske det mest subtila området för kvantitativ handel eftersom det medför många fördomar, vilket måste noggrant övervägas och elimineras så mycket som möjligt. Vi kommer att diskutera de gemensamma typerna av förspänning, inklusive blickfrekvens. överlevnadskompetens och optimering bias (även känd som data-snooping bias). Andra områden av betydelse inom backtesting inkluderar tillgänglighet och renlighet av historiska data, factoring i realistiska transaktionskostnader och beslut om en robust backtesting-plattform. Tja diskutera transaktionskostnaderna ytterligare i avsnittet Execution Systems nedan. När en strategi har identifierats är det nödvändigt att erhålla de historiska uppgifterna genom vilka man utför testning och kanske förfining. Det finns ett betydande antal datasäljare över alla tillgångsklasser. Deras kostnader varierar i allmänhet med dataens kvalitet, djup och aktualitet. Den traditionella utgångspunkten för inledande kvanthandlare (åtminstone i detaljhandeln) är att använda den fria datasatsen från Yahoo Finance. Jag brukar inte bo på leverantörer för mycket här, men jag vill hellre koncentrera mig på de allmänna frågorna när det gäller historiska dataset. De viktigaste problemen med historiska data är noggrannhet, överlevnadsperspektiv och justering för företagsåtgärder som utdelning och lageravsnitt: Noggrannhet gäller dataens övergripande kvalitet - om det innehåller några fel. Fel kan ibland vara lätta att identifiera, till exempel med ett spikfilter. som kommer att välja felaktiga spikes i tidsseriedata och korrigera dem. Vid andra tillfällen kan de vara mycket svåra att upptäcka. Det är ofta nödvändigt att ha två eller flera leverantörer och sedan kontrollera alla sina uppgifter mot varandra. Survivorship bias är ofta en funktion av gratis eller billiga dataset. En dataset med överlevnadsperspektiv innebär att den inte innehåller tillgångar som inte längre handlar. För aktier betyder detta delistedbankrupt-aktier. Denna bias innebär att varje aktiehandelstrategi som testas på en sådan dataset kommer troligen att fungera bättre än i den verkliga världen, eftersom de historiska vinnarna redan har förhandlats fram. Företagsåtgärder omfattar logistikverksamhet som bedrivs av företaget som vanligtvis orsakar en stegfunktionsförändring i råpriset, som inte ska inkluderas i beräkningen av prisavkastningen. Justeringar för utdelning och lageravdelningar är de vanliga synderna. En process som kallas backjustering är nödvändig för att utföras vid var och en av dessa åtgärder. Man måste vara mycket försiktig om att inte förvirra en aktiesplit med en sann avkastningsjustering. Många en näringsidkare har fångats ut av en företagsaktion För att kunna genomföra ett backtestförfarande är det nödvändigt att använda en mjukvaruplattform. Du har valet mellan dedikerad backtest-programvara, till exempel Tradestation, en numerisk plattform som Excel eller MATLAB eller en fullständig anpassad implementering i ett programmeringsspråk som Python eller C. Jag kommer inte att bo för mycket på Tradestation (eller liknande), Excel eller MATLAB, som jag tror på att skapa en full in-house teknik stack (av skäl som beskrivs nedan). En av fördelarna med att göra det är att backtestprogrammet och exekveringssystemet kan integreras tätt, även med extremt avancerade statistiska strategier. För HFT-strategier är det viktigt att använda en anpassad implementering. Vid backtesting av ett system måste man kunna kvantifiera hur bra det fungerar. Branschstandardvärdena för kvantitativa strategier är den maximala drawdownen och Sharpe-förhållandet. Den maximala drawdownen karakteriserar den största topp-till-droppfallet i kontotkapitalkurvan under en viss tidsperiod (vanligtvis årligen). Detta är oftast citerat som en procentandel. LFT-strategier tenderar att ha större drawdowns än HFT-strategier, på grund av ett antal statistiska faktorer. En historisk backtest visar den senaste maximala drawdownen, vilket är en bra guide för strategins framtida dragningsprestanda. Den andra mätningen är Sharpe-förhållandet, som är heuristiskt definierat som genomsnittet av meravkastningen dividerat med standardavvikelsen för de överskjutande avkastningarna. Här avser meravkastning strategins avkastning över ett förutbestämt riktmärke. såsom SP500 eller en 3-månaders statsskuldräkning. Notera att den årliga avkastningen inte är en åtgärd som brukar utnyttjas, eftersom den inte tar hänsyn till strategins volatilitet (till skillnad från Sharpe-förhållandet). En gång har en strategi blivit tillbakaprövad och anses vara fri från biaser (så mycket som möjligt), med en bra Sharpe och minimerade drawdowns, är det dags att bygga ett exekveringssystem. Exekveringssystem Ett exekveringssystem är det sätt på vilket listan över affärer som genereras av strategin skickas och exekveras av mäklaren. Trots att handelsgenerationen kan vara semi - eller till och med helt automatiserad kan exekveringsmekanismen vara manuellt, halvmanuell (dvs ett klick) eller helt automatiserat. För LFT-strategier är manuella och halvmanuala tekniker vanliga. För HFT-strategier är det nödvändigt att skapa en helt automatiserad exekveringsmekanism, som ofta kommer att vara tätt kopplad till handelsgenerern (på grund av strategins och teknikens beroende). Viktiga överväganden när man skapar ett exekveringssystem är gränssnittet till mäklaren. minimering av transaktionskostnader (inklusive provisioner, släpp och spridning) och divergens av live-systemets prestanda från backtested-prestanda. Det finns många sätt att ansluta till en mäklare. De sträcker sig från att ringa upp din mäklare via telefon till en helautomatiserad högpresterande applikationsprogrammeringsgränssnitt (API). Helst vill du automatisera utförandet av dina affärer så mycket som möjligt. Detta frigör dig för att koncentrera dig på ytterligare forskning, samt låta dig köra flera strategier eller till och med strategier med högre frekvens (i själva verket är HFT väsentligen omöjligt utan automatisk utförande). Den gemensamma backtestingprogrammet som beskrivs ovan, såsom MATLAB, Excel och Tradestation, är bra för lägre frekvens, enklare strategier. Det kommer emellertid att vara nödvändigt att konstruera ett internt exekveringssystem skrivet i ett högprestandaspråk som C för att göra någon riktig HFT. Som en anekdote, i fonden var jag anställd vid, vi hade en 10 minuters handel slinga där vi skulle ladda ner nya marknadsdata var 10: e minut och sedan utföra handlar baserat på den informationen i samma tidsram. Detta använde ett optimerat Python-skript. För allt som närmar sig minut - eller andrafrekvensdata tror jag att CC skulle vara mer idealiskt. I en större fond är det ofta inte kvantetransaktörens domän att optimera utförandet. Men i mindre butiker eller HFT-företag är handlarna exekutörerna och så är en mycket bredare kompetens ofta önskvärd. Ha det i åtanke om du vill vara anställd av en fond. Din programmering färdigheter kommer att vara lika viktigt, om inte mer så än din statistik och ekonometrisk talanger Ett annat stort problem som faller under genomförandebanan är att minimera transaktionskostnaden. Det finns generellt tre komponenter till transaktionskostnader: Provisioner (eller skatt), vilka är de avgifter som tas ut av mäklaren, utbytet och SEC (eller liknande statligt tillsynsorgan) slippa, vilket är skillnaden mellan vad du menade att din order skulle vara fylld i jämförelse med vad den faktiskt fylldes på spridning, vilket är skillnaden mellan budpriset för säkerheten som handlas. Observera att spridningen inte är konstant och är beroende av den nuvarande likviditeten (dvs tillgängligheten av buysell-order) på marknaden. Transaktionskostnader kan göra skillnaden mellan en extremt lönsam strategi med ett bra Sharpe-förhållande och en extremt olönsam strategi med ett fruktansvärt Sharpe-förhållande. Det kan vara en utmaning att korrekt förutsäga transaktionskostnaderna från en backtest. Beroende på frekvensen av strategin behöver du tillgång till historisk utbytesdata, som inkluderar kryssningsdata för budpris. Hela teamet av quants är dedikerade till optimering av genomförandet i de större fonderna, av dessa skäl. Tänk på scenariot där en fond måste avlasta en betydande mängd affärer (varför skälen att göra det är många och varierade). Genom att dumpa så många aktier på marknaden kommer de snabbt att sänka priset och får inte få optimal utförande. Därmed finns algoritmer som drar in foderorder på marknaden, men då löper fonden risken att glida. Dessutom ökar andra strategier på dessa nödvändigheter och kan utnyttja ineffektiviteten. Detta är domänen för fondstrukturen arbitrage. Det sista huvudproblemet för exekveringssystemen gäller divergens av strategins prestanda från backtested prestanda. Detta kan hända av ett antal skäl. Weve har redan diskuterat framåtblickande bias och optimeringsförskjutning i djupet, när vi överväger backtests. Vissa strategier gör det emellertid inte lätt att testa för dessa biaser före utplacering. Detta sker i HFT mest övervägande. Det kan finnas buggar i exekveringssystemet såväl som handelsstrategin själv som inte dyker upp på en backtest men visar sig i live trading. Marknaden kan ha varit föremål för en regeringsändring efter utplaceringen av din strategi. Nya regleringsmiljöer, förändrade investerarnas känslor och makroekonomiska fenomen kan alla leda till avvikelser i hur marknaden beter sig och därmed lönsamheten i din strategi. Riskhantering Det sista stycket i det kvantitativa handelspusslet är processen för riskhantering. Risken inkluderar alla tidigare förevändningar som vi har diskuterat. Det inkluderar teknikrisk, till exempel servrar som är samlokaliserade vid växeln, utvecklar plötsligt en hårddiskfel. Det inkluderar mäklarrisk, som att mäklaren blir konkurs (inte så galen som det låter, med tanke på den senaste skrämningen med MF Global). Kort sagt täcker det nästan allt som eventuellt skulle kunna störa handelens genomförande, av vilket det finns många källor. Hela böcker ägnas åt riskhantering för kvantitativa strategier, så jag vill inte försöka klargöra alla möjliga riskkällor här. Riskhantering omfattar också det som kallas optimal kapitaltilldelning. vilket är en gren av portföljteori. Det här är det sätt på vilket kapital tilldelas en uppsättning olika strategier och till affärer inom dessa strategier. Det är ett komplext område och bygger på lite icke-trivial matematik. Industristandarden med vilken optimal kapitalallokering och hävstångseffekt av strategierna är relaterade kallas Kelly-kriteriet. Eftersom det här är en introduktionsartikel, kommer jag inte att hålla mig vid beräkningen. Kelly-kriteriet gör vissa antaganden om den statistiska karaktären av avkastningen, vilket ofta inte är sant på finansmarknaderna, så handlare är ofta konservativa när det gäller genomförandet. En annan viktig del av riskhanteringen är att hantera sin egen psykologiska profil. Det finns många kognitiva fördomar som kan krypa in till handel. Även om detta är visserligen mindre problematiskt med algoritmisk handel om strategin lämnas ensam. En gemensam bias är det för förlustaversion där en förlorande position inte kommer att stängas ut på grund av smärtan att behöva inse en förlust. På samma sätt kan vinster tas för tidigt eftersom rädslan för att förlora en vinst som redan uppnåtts kan vara för stor. En annan vanlig bias är känd som nyhetsförspänning. Detta manifesterar sig när näringsidkare lägger för stor vikt vid de senaste händelserna och inte på längre sikt. Då är det naturligtvis det klassiska paret av emotionella fördomar - rädsla och girighet. Dessa kan ofta leda till under - eller överhantering, vilket kan orsaka uppblåsning (dvs kontotkapitalrubriken till noll eller sämre) eller minskad vinst. Som det kan ses är kvantitativ handel ett extremt komplext, om än mycket intressant, område för kvantitativ finansiering. Jag har bokstavligen skratst bort ämnets yta i den här artikeln och det börjar redan bli ganska lång. Hela böcker och papper har skrivits om problem som jag bara har givit en mening eller två mot. Av den anledningen är det nödvändigt att innan en ansökan om kvantitativa fondshandelstillfällen genomföras, utförs en omfattande grundstudie. Du behöver åtminstone en omfattande bakgrund i statistik och ekonometri med stor erfarenhet av implementering via ett programmeringsspråk som MATLAB, Python eller R. För mer sofistikerade strategier vid högre frekvensänden är din färdighetssätt sannolikt att inkludera Linux-kärnan modifiering, CC, montering programmering och nätverks latent optimering. Om du är intresserad av att försöka skapa dina egna algoritmiska handelsstrategier, skulle mitt första förslag vara att bli bra på programmeringen. Min preferens är att bygga så mycket av data grabber, strategi backtester och exekveringssystem så enkelt som möjligt. Om din egen kapital ligger på linjen skulle du inte sova bättre på natten och veta att du har testat ditt system fullt ut och är medveten om sina fallgropar och specifika problem. Att outsourca detta till en leverantör, kan potentiellt spara tid på kort sikt, vara extremt dyrt på lång sikt. Bara Komma igång med kvantitativ handel

No comments:

Post a Comment