Thursday 26 October 2017

Maskin Learning In Handelsstrategier


Först skulle du fokusera på att samla in så mycket data som möjligt och lägga in en enda stor tabellform. Det här skulle vara historisk prissättning. Kanske förstärker detta med tidningsartiklar, blogginlägg, sekreteringsansökningar till ordräkningsvektorer mm med hjälp av naturliga språkbehandlingstekniker Du skulle sedan träna en övervakad algoritm för köpförsäljningsbeslut. Lämpliga algoritmer är logistikregression snabbaste och slumpmässiga skogar mest exakta. Det finns andra, såsom stödvektormaskiner, ökade beslutsträd, 3-lags neurala nätverk, men dessa erbjuder inte så bra noggrannhet som slumpmässiga skogar och ofta långsammare eller lika mycket som logistisk regression. Enligt min mening skulle det bästa valet helt enkelt vara logistisk regression, och den bästa implementeringen är vowpal wabbit - extremt snabb, kan hantera stora mängder data - 1 terabyte i timmen på en maskin, ännu snabbare i kluster - och öppen källkod Det här gör det också möjligt att tydligt se vilka indikatorer som kolumnerna i tabellen är predictive. Y Du kan också lägga till tidningsartiklar etc direkt som text till det här med hjälp av hashing-tricket. Detta är också implementerat i vowpal-wabbit, och du kan också hantera mycket stora friformsartiklar i en enda rad. Hade gjort ovanstående Till den punkt som du inte längre kan samla in mer datakällor är det dags att flytta till funktionalitetsstadiet. Du har redan gjort lite av det här när du gjorde saker, men du använde standardtekniker - det var inte tänkt att hitta dina egna metoder. Det finns två val på denna punkt - manuellt och automatiskt. Uppsiktigt uppfattar personer på egen hand sina egna egenskaper. Det handlar det om när handlarna spenderar större delen av sin tid - de så kallade strategierna eller reglerna. Dessa testas mot data - kallas backtesting. An annan, nyare, automatisk metod har också nyligen blivit tillgänglig - oövervakad djup inlärning Oövervakad lärande fanns före, men det var av den grunda sorten och fungerade inte bra i praktiken Djupt lärande neurala nätverk med autoen kodare är en ny metod som uppfann för bara 6 år sedan som fungerar riktigt bra Det här dokumentet är en demonstration av det. I själva verket kan man, genom att kasta massor av datorer i problemet, automatiskt skapa strategier. Ju större det neurala nätverket desto bättre gör det - men därmed krävs fler datorer Detta är enligt min mening bättre billigare än att försöka hyra massor av kreativa analytiska hårdvariga människor.17 9k Visningar Visa uppsteg Inte för reproduktion. Jag är faktiskt i början av att göra min automatiserade handel System, svaret på din fråga är hur vill du tjäna pengar, vill du daytrade eller köpa och hålla över tiden, vad är dina mätvärden kommer att vara för att överväga en bra handelsinvestering Du behöver veta om marknaden du är Kommer att tjäna, i ditt fall börsen Om du ska göra en lärande algo för lastbilstrafik bör du veta de möjliga variablerna som är inblandade i trucking tillsammans med vilka potentiella fallgropar du ska köra i nto. You kan få alla svaren i världen, men om du inte är en mycket smart kodare som kan ta in nästan infinerade variabler och beskriva deras betydelse och relation till varandra. Data är också en övervägning, hur många lager ska du spåra Vilken typ av data behöver du Dessa flöden kommer att gå in i tusentals månad potentiellt. Efter att ha gått ner den här vägen för det gångna året är det ett stort jobb och hinder för tillträde. Du behöver få kunskapen och planera din strategi.4 2k Visningar Visa Uppsatser inte för reproduktion. Sla Slaff studerade vid University of Colorado Boulder. Här är en enkel enkel steg-för-steg guide om att använda en maskinlärande algoritm för handel. Det är en grundläggande översikt och bör ge dig den information du behöver för att bygga din own.5k Views View Upvotes Inte för reproduktion. Jag är inte så säker på om den här frågan passar in här. Jag har nyligen börjat, läst och läst om maskininlärning. Kan någon kasta lite ljus på hur man ska gå om det eller hellre kan någon dela det deras ex perience och få grundläggande tips om hur man ska gå om det eller att börja använda det för att se några resultat från dataset. Hur ambitiöst låter det här. Också nämna om standardalgoritmer som bör prövas eller ses när du gör detta. 11 på 18 35. Det verkar vara en grundläggande felaktighet att någon kan komma med och lära sig några maskininlärning eller AI-algoritmer, sätta upp dem som en svart låda, slå och gå tillbaka medan de går i pension. My råd till dig. Läs mer Statistik och maskininlärning först och oroa dig för hur man applicerar dem på ett visst problem. Det finns ingen gratis lunch här. Dataanalys är ett hårt arbete. Läs Elementen av Statistisk Lärande. PDF är gratis tillgänglig på hemsidan och börjar inte försöka bygga en modell tills du förstår åtminstone de första 8 kapitlen. När du förstår statistiken och maskininlärningen behöver du lära dig att backtest och bygga en handelsmodell, redovisa transaktionskostnader etc som är ett helt annat område. du ha Jag har ett hand om både analysen och finansen, då är det något uppenbart hur man applicerar det. Hela punkten hos dessa algoritmer försöker hitta ett sätt att passa en modell till data och producera låg bias och varians i prediktionen, dvs att Träning och test prediktionsfel kommer att vara låg och liknande Här är ett exempel på ett handelssystem med hjälp av en stödvektormaskin i R men bara kom ihåg att du kommer att göra dig själv en stor missnöje om du inte spenderar tid för att förstå grunderna innan du försöker att tillämpa något esoteriskt. Bara att lägga till en underhållande uppdatering kom jag nyligen över den här mästarens avhandling En novell algoritmisk handelsram för tillämpning av evolution och maskinlärning för portföljoptimering 2012 Det är en omfattande översyn av olika metoder för maskininlärning jämfört med köp och - Håll Efter nästan 200 sidor når de grundläggande slutsatsen Inget handelssystem kunde överträffa referensvärdet vid användning av transaktionskostnader. menar att det inte kan göras Jag har inte tillbringat någon gång genom att granska deras metoder för att se huruvida tillvägagångssättet är giltigt, men det ger visserligen några bevis till förmån för den kostnadsfria lunchteoremen. svarade den 1 februari 11 på 18 48. Jase Som en av författarna till den ovannämnda mästarens avhandling kan jag citera mitt eget arbete och säga att om någon faktiskt uppnår lönsamma resultat finns det inget incitament att dela dem eftersom det skulle negera deras fördel. Även om våra resultat kan ge stöd till marknadshypotesen hindrar inte existensen av system som fungerar Det kan vara som sannolikhetsteori Det är spekulerat att genombrott inom sannolikhetsteorin har hänt flera gånger men aldrig delat. Det kan bero på att det är praktiskt att spela i spel. All modern alkemi Andr Christoffer Andersen 30 april 13 på 10 01.My råd till dig Det finns flera maskinlärande konstgjorda intelligens ML AI-grenar där ute. Jag har bara försökt genetisk programmering och vissa neurala nätverk, och jag tycker personligen att lärandet från erfarenhetsgren verkar ha den mest potentiella GP GA och neurala nät verkar vara de vanligaste undersökta metoderna för aktiemarknadsutsikterna, men om du gör viss data mining på förutse Wall Street kan du också göra några känslighetsanalyser. Stanna lite tid att lära dig om de olika ML AI-teknikerna, hitta lite marknadsdata och försök att implementera några av dessa algoritmer. Var och en kommer att ha sina styrkor och svagheter, men du kanske kan att kombinera prognoserna för varje algoritm till en kompositprediktion som liknar vad vinnarna av NetFlix-priset gjorde. Några resurser Här är några resurser som du kanske vill titta på. Chatter Den allmänna konsensusen bland handlare är att artificiell intelligens är en voodoo Vetenskap, kan du inte göra en dator förutsäga aktiekurserna och du är säker på att förlora dina pengar om du försöker göra det Ändå kommer samma personer att berätta för dig att bara Om det enda sättet att tjäna pengar på aktiemarknaden är att bygga och förbättra din egen handelsstrategi och följ den noggrant vilket inte är en dålig idé. Tanken med AI-algoritmer är inte att bygga Chip och låta honom handla för dig, Men att automatisera processen att skapa strategier Det är en väldigt tråkig process och det är inte lätt. Minimizing Overfitting Som vi tidigare hört, är en grundläggande fråga med AI-algoritmer överfitting aka datamining bias givet en uppsättning data, kan din AI-algoritm hitta ett mönster som är särskilt relevant för träningsuppsättningen men det kan inte vara relevant i testuppsättningen. Det finns flera sätt att minimera överfitting. Använd en valideringssats det ger inte feedback till algoritmen, men det låter dig upptäcka när Din algoritm kan börja överföras, dvs du kan sluta träna om du överfitterar för mycket. Använd online maskininlärning eliminerar i stor utsträckning behovet av backtestning och det är mycket användbart för algoritmer som försöker göra E-market predictions. Ensemble Learning ger dig ett sätt att ta flera maskininlärningsalgoritmer och kombinera sina förutsägelser. Antagandet är att olika algoritmer kan ha överfit data i något område, men den korrekta kombinationen av deras förutsägelser kommer att ha bättre förutsägbar effekt. Två Aspekter av statistisk inlärning är användbara för handel.1 Först de som nämnts tidigare har vissa statistiska metoder fokuserat på att arbeta med levande dataset. Det betyder att du vet att du endast observerar ett urval av data och du vill extrapolera. Du måste sålunda hantera i prov och ur provproblem, övermontering och så vidare. Datautvinning är mer inriktad på döda dataset, dvs du kan se nästan alla data, du har ett enda provproblem än statistisk inlärning. Eftersom statistisk inlärning handlar om att arbeta på levande dataset, de tillämpade matematik som handlar om dem måste fokusera på ett tvåskaligt problem. Lämnade XF theta Xn, xi L pi Xn, n-änden där X är det multidimensionella tillståndsutrymmet för att studera du har i det dina förklarande variabler och de som ska förutsäga, F innehåller dynamiken i X som behöver några parametrar theta Slumpmässigheten av X kommer från innovationen xi, vilket är ii d. Målet med statistisk inlärning är att bygga en metod L ith som inputs en partiell observation pi av X och gradvis justera en estimat hat theta av theta, så att vi kommer att veta allt som behövs på X. Om du funderar på att använda statistisk inlärning för att hitta parametrarna för en linjär regression kan vi modellera tillståndsutrymmet som denna underbrace yx slutet höger vänster börja ab 1 1 0 0 sluta rätt cdot underbrace x 1 epsilon sluta höger vilket gör det möjligt att Observera y, xn vid någon n här theta a, b. Sedan behöver du hitta ett sätt att gradvis bygga en estimator av theta med hjälp av våra observationer Varför inte en gradient nedstigning på L2 avståndet mellan y och regressionen C ha en, hatt bn summa yk - hat a, xk h vid b 2.Här gamma är ett viktningsschema. Normalt är ett bra sätt att bygga en estimator att korrekt skriva kriterierna för att minimera och genomföra en gradient nedstigning som kommer att producera inlärningssystemet L. Gå tillbaka till vårt ursprungliga generiska problem behöver vi lite Tillämpade matematik att veta när par dynamiska system i X, hat theta konvergerar och vi behöver veta hur man bygger upp estimeringsscheman L som konvergerar mot den ursprungliga theta. To ge dig tips på sådana matematiska resultat. Nu kan vi gå tillbaka till andra aspekt av statistisk inlärning som är mycket intressant för quant traders strategists.2 Resultaten som används för att bevisa effektiviteten hos statistiska inlärningsmetoder kan användas för att bevisa effektiviteten hos handelsalgoritmer För att se att det är tillräckligt att läsa igen det kopplade dynamiska systemet som tillåter för att skriva statistisk inlärning lämnade MF rho Mn, xi L pi Mn, n-änden right. Now M är marknadsvariabler, rho är underliggande PnL, L är en handelsstrategi. Just ersätt minimera ett kriterium med max Imizing PnL. See till exempel Optimal delning av order över likviditetspooler visar en stokatisk algoritm tillvägagångssätt av Gilles Pags, Sophie Laruelle, Charles-Albert Lehalle i detta dokument, författare som vem använder denna metod för att optimalt dela upp en order över olika mörka pooler samtidigt lära förmågan hos poolerna att ge likviditet och använda resultaten för att handla. De statistiska inlärningsverktygen kan användas för att bygga iterativa handelsstrategier. De flesta av dem är iterativa och bevisar deras effektivitet. Det korta och brutala svaret är du inte. För det första, för att ML och statistik är inte något du kan kommunicera bra om ett eller två år Min rekommenderade tidshorisont för att lära mig något som är mindre trivialt är 10 år ML inte ett recept att tjäna pengar, men bara ett annat sätt att observera verkligheten För det andra, för att någon bra statistiker vet Att förstå data och problemdomän är 80 av arbetet Det är därför du har statistiker som fokuserar på fysikdataanalys, genomik, på sabermetri Osv. För rekordet är Jerome Friedman, medförfattare till ESL citerad ovan, en fysiker och har fortfarande en artig position hos SLAC. Så, studera statistik och finans för några år Var patient Tack själv. Många kan variera. Feb 9 11 på 4 41. Jag håller fullständigt med bara för att du vet maskininlärning och statistik betyder det inte att du vet hur man ansöker det för att finansiera Dr Mike 10 aug 11 på 20 25. Också en viktig sak att komma ihåg är du vann T handla mot människor, du kommer att handla mot andra artificiella intelligensalgoritmer som tittar på dina affärer staplar in och är rasande beräknar oddsen att kollektivet skulle bli spooked ut av en tillverkad nedgång och ta den mindre förlusten med att skapa en spik Doppa och lura alla dessa AIs till att stoppa och rulla sedan in i det och köra vågan, tjäna dina förluster Börsen är ett nollbelopp spel, behandla det som att gå in i en pro boxning match om du är 20 år veteran, kommer du att gå se Eric Leschinski 13 februari 16 på 1 56. En grundläggande applikation förutsäger finansiell nöd. Få ett gäng data med några företag som har default, och andra som har t, med en mängd finansiell information och nyckeltal. Använd en maskininlärningsmetod Till exempel SVM för att se om du kan förutsäga vilka företag som kommer att bli vanliga och vilka som inte kommer att använda. Använda SVM i framtiden till korta sannolikhet för standardföretag och långa sannolikhet för standardföretag, med intäkterna från den korta försäljningen. Det finns en Säger att du plockar upp pennies upp framför ångvalsar Du gör likvärdigt med att sälja en out-of-the-money-satsning I det här fallet kommer du göra små vinster i åren, sedan bli helt städad när marknaden smälter ner vart tionde år eller så Det finns också en likvärdig strategi som köper out of the money gör att de förlorar pengar i åratal och gör då en död när marknaden smälter ner. Se Talabs Svarta Swan Contango 5 juni 11 på 22 20.Remember det internationella Företag har spenderat hund Röda miljarder dollar och manstimmar på de allra bästa och ljusaste artificiella intelligenserna i de senaste 40 åren har jag pratat med några av tornets torn som ansvarar för alfaserna över på Citadel och Goldman Sachs och hubrisen från nybörjare till att tänka de kan sätta ihop en algoritm som kommer att gå tå till tå med dem och vinna, är nästan lika dumt som ett barn säger att han ska hoppa till månen Lycka barn och se upp för rymdmartierna Inte att säga nya Mästare kan inte göras men oddsen är emot dig Eric Leschinski 13 feb 16 kl 2 00. En möjlighet att utforska är att använda stödverktyget för maskinverktyg på Metatrader 5-plattformen. För det första, om du inte känner till det, har Metatrader 5 är en plattform som utvecklats för användarna att genomföra algoritmisk handel på forex och CFD-marknader. Jag är inte säker på om plattformen kan utökas till aktier och andra marknader. Det används vanligtvis för tekniskt analysbaserade strategier, dvs med hjälp av indikatorer baserade på hist Oriska data och används av personer som vill automatisera sin handel. Supportvektorns maskinverktyg har utvecklats av en av användarnas användare för att tillåta stödvektormaskiner att appliceras på tekniska indikatorer och ge råd om handel. En fri demoversion av verktyget kan laddas ner här om du vill undersöka ytterligare. Om jag förstår det använder verktyget historiska prisdata för att bedöma huruvida hypotetiska affärer i det förflutna skulle ha varit framgångsrika. Det tar sedan dessa data tillsammans med de historiska värdena från ett antal anpassningsbara Indikatorer MACD, oscillatorer etc och använder detta för att träna en stödvektormaskin. Sedan använder den utbildad supportvektormaskinen för att signalera framtida köpförsäljningsverksamheter. En bättre beskrivning finns på länken. Jag har spelat med lite med några mycket Intressanta resultat, men som med alla algoritmiska handelsstrategier rekommenderar jag solid back forward testning innan jag tar den till live market. answered dec 10 12 på 11 59.Sorr Y, men trots att det används som ett populärt exempel på maskininlärning har ingen någonsin uppnått en aktiemarknadsprediktion. Det fungerar inte av flera skäl. Kontrollera slumpmässig promenad av Fama och en hel del andra, rationella beslutsfattande felaktighet, felaktiga antaganden , men det mest övertygande är att om det skulle fungera skulle någon kunna bli vansinnigt rik inom några månader, eftersom den egentligen äger hela världen. Eftersom detta inte händer och du kan vara säker på att hela banken har provat det, har vi goda bevis , Att det bara inte fungerar. Besides Hur tror du att du kommer att uppnå vad tiotusentals yrkesverksamma har misslyckats med, med samma metoder som de har, plus begränsade resurser och bara grundläggande versioner av deras metoder. Svarade den 4 juni 15 på 7 47. Bara en sida om dina mest övertygande skäl strategier har kapacitet begränsningar, dvs nivåer bortom vilken din marknadsverkan skulle överskrida den tillgängliga alf, även om du antar obegränsat kapital jag är inte säker på vad du menar av en aktiema rket prediktionsindex futures ETF s men säkert det finns gott om människor som gör kortsiktiga förutsägelser och dra nytta av dem varje dag på marknaderna avekz 23 nov kl. 13 på 13 19. Jag echo mycket av vad Shane skrev Förutom att läsa ESL, Jag skulle föreslå en ännu mer grundläggande studie av statistiken först Utöver det är problemen som jag beskrivit i en annan fråga om denna utbyte mycket relevant. Speciellt är problemet med datamining bias ett allvarligt vägar mot varje maskinbaserad strategi. Detta inlägg Kommer att redogöra för vad jag gjorde för att göra ca 500k från högfrekvent handel från 2009 till 2010 Eftersom jag handlade helt självständigt och inte längre kör mitt program är jag glad att berätta allt Min handel var mestadels i Russel 2000 och DAX futures kontrakt. Nyckeln Till min framgång tror jag inte i en sofistikerad ekonomisk ekvation utan snarare i den övergripande algoritmdesignen som bundet samman många enkla komponenter och använde maskininlärning för att optimera för max prof itability Du behöver inte veta någon sofistikerad terminologi här eftersom när jag installerade mitt program var det allt baserat på intuition Andrew Ngs fantastiska maskinlärarkurs var ännu inte tillgänglig - btw om du klickar på den här länken kommer du att tas till mitt aktuella projekt CourseTalk , En granskningsplats för MOOCs. First Jag vill bara visa att min framgång inte bara var resultatet av lycka. Mitt program gjorde 1000-4000 trades per dag halvt halvt, halvt kort och kom aldrig i positioner på mer än några kontrakt vid En tid Detta innebar att slumpmässig lycka från någon viss handel var ganska snygg Resultatet blev jag aldrig förlorat mer än 2000 på en dag och aldrig haft en förlorande månad. EDIT Dessa siffror är efter betalning av provisioner. Och här är diagrammet för att ge dig en känsla av den dagliga variationen. Notera detta utesluter de senaste 7 månaderna eftersom - som siffrorna slutade gå upp - jag förlorade min motivation för att komma in i dem. Min trading background. Prior Att ställa in mitt automatiserade handelsprogram Jag hade 2 års erfarenhet som en manuell dagförare Detta var tillbaka 2001 - det var de första dagarna med elektronisk handel och det fanns möjligheter för scalpers att tjäna bra pengar jag kan bara beskriva vad jag gjorde Som besläktad med att spela ett videospel med en förmodad kant Att vara framgångsrik menade att vara snabb, vara disciplinerad och ha ett bra intuitivt mönsterigenkänningsförmåga jag kunde göra runt 250k, betala min studielån och få pengar kvar Win. Over Under de närmaste fem åren skulle jag starta två igångsättningar och hämta några programmeringsförmågor under vägen. Det skulle inte vara förrän i slutet av 2008 att jag skulle komma tillbaka till handeln. Med pengar som låg låg från försäljningen av min första start, handel erbjöd hopp om några snabba pengar medan jag tänkte på mitt nästa drag. Under 2008 var jag manuellt dagshandelsutgångar med programvara som heter T4. Jag ville ha några anpassade orderinmatnings snabbtangenter, så efter att jag upptäckte att T4 hade ett API tog jag utmaningen Av att lära C det programmeringsspråk som krävs för att använda API: n och fortsatte och byggde upp några hotkeys. Efter att mina fötter blivit våta med API hade jag snart större förväntningar. Jag ville lära mig att datorn skulle handla för mig. API gav både en ström av Marknadsdata och ett enkelt sätt att skicka order till utbytet - allt jag behövde var att skapa logiken i mitten. När är det en skärmdump av ett T4-handelsfönster Vad var coolt är det när jag fick mitt program att fungera kunde jag titta på datahandeln på exakt samma gränssnitt Att titta på riktiga beställningar som poppade in och ut sig själva med mina riktiga pengar var både spännande och skrämmande. Utformningen av min algoritm. Från början var mitt mål att installera ett system så att jag kunde vara rimligt co Nfident jag d tjäna pengar innan jag någonsin gjort några levande affärer För att åstadkomma detta behövde jag bygga en handelssimuleringsram som skulle - så exakt som möjligt - simulera live trading. While trading in live-mode krävde bearbetning marknadsuppdateringar strömmade genom API, simuleringsläge krävs läsning av marknadsuppdateringar från en datafil För att samla in dessa data installerar jag den första versionen av mitt program för att helt enkelt ansluta till API: n och registrera marknadsuppdateringar med tidsstämplar. Jag slutade använda 4 veckors värde av de senaste marknadsdata för att träna och testa mitt system på . Med en grundläggande ram på plats hade jag fortfarande uppgiften att räkna ut hur man gör ett lönsamt handelssystem. Det visar sig att min algoritm skulle bryta ner i två distinkta komponenter, som jag kommer att utforska i sin tur. Att pröva prisrörelser och. Trades. Predicting prisrörelser. Kanske en uppenbar del av något handelssystem kan förutse var priserna kommer att flytta och mitt var inget undantag jag definierade den nuvarande pris som medelvärdet av insidan och inbjudandet och jag satte målet att förutsäga var priset skulle vara de närmaste 10 sekunderna. Min algoritm skulle behöva komma fram med denna förutsägelse moment för stund under handelsdagen. Skapa optimering Indikatorer. Jag skapade en handfull indikatorer som visade sig ha en meningsfull förmåga att förutsäga kortvariga prisrörelser. Varje indikator producerade ett tal som var antingen positivt eller negativt. En indikator var användbar om oftare än inte ett positivt tal motsvarade marknaden går upp Och ett negativt tal motsvarade marknaden som gick ner. My system gjorde det möjligt för mig att snabbt bestämma hur mycket prediktiv förmåga någon indikator hade så att jag kunde experimentera med många olika indikatorer för att se vad som fungerade Många av indikatorerna hade variabler i formlerna Som producerade dem och jag kunde hitta de optimala värdena för dessa variabler genom att göra sida vid sida jämförelser av resultat uppnådda med olika värden. Dikatörer som var mest användbara var alla relativt enkla och baserade på de senaste händelserna på marknaden, som jag handlade såväl som marknaderna för korrelerade värdepapper. Att göra exakt prisförskjutningsprognos. Det var inte tillräckligt med indikatorer som bara förutspådde en upp - eller nerprisrörelse. Jag behövde veta exakt hur mycket prisrörelsen förutspådades av varje möjligt värde för varje indikator, jag behövde en formel som skulle konvertera ett indikatorvärde till ett prissättningsförslag. För att uppnå detta spårade jag spådda pris i 50 hinkar som berodde på det intervall som indikatorvärdet föll i Det här producerade unika förutsägelser för varje hink som jag då kunde grafera i Excel Som du kan se förväntar sig prisförändringen som indikatorvärdet ökar. Baserat på ett diagram som det här kunde jag göra en formel för att passa kurvan I början gjorde jag denna kurva montering manuellt men jag skrev snart upp en kod för att automatisera denna process. Notera att inte alla indikatorkurvorna hade samma s Hape Observera också att skoporna var logaritmiska fördelade för att sprida datapunkterna jämnt. Slutligen notera att negativa indikatorvärden och deras motsvarande nedåtriktade prisspecifikationer vändes och kombineras med de positiva värdena. Min algoritm behandlas upp och ner exakt samebindingsindikatorerna för en enda förutsägelse. En viktig sak att tänka på var att varje indikator inte var helt oberoende. Jag kunde inte helt enkelt lägga upp alla förutsägelser som varje indikator gjorde individuellt. Nyckeln var att räkna ut det extra prediktiva värdet som varje indikator hade bortom det som redan förutspåddes Det var inte svårt att genomföra, men det innebar att om jag var kurvmontering flera indikatorer samtidigt var jag tvungen att ändra mig skulle man påverka andras förutsägelser. För att kurva passa alla indikatorer samtidigt konfigurera optimeringsenheten för att bara steg 30 på vägen mot de nya förutsägelsekurvorna med varje passering Med det här 30 hoppet hittade jag Att förutsägelsekurvorna skulle stabilisera inom några passeringar. Med varje indikator som nu ger oss det s extra prissättning kan jag helt enkelt lägga till dem för att producera en enda förutsägelse av var marknaden skulle vara på 10 sekunder. Varför förutse priserna inte räcker. Du kanske tror att med den här kanten på marknaden var jag guld. Men du måste komma ihåg att marknaden består av bud och erbjudanden - det är inte bara ett marknadspris. Framgång i högfrekvent handel kommer till att få bra priser och det är inte så lätt. Följande faktorer gör att det är svårt att skapa ett lönsamt system. Med varje handel var jag tvungen att betala provisioner till både min mäklare och utbytet. Spridningsskillnaden mellan högsta bud och lägsta erbjudande innebar att om jag bara skulle köpa och Sälja slumpmässigt jag skulle förlora massor av pengar. Mest av marknadsvolymen var andra robotar som bara skulle utföra en handel med mig om de trodde att de hade någon statistisk kant. Att se ett erbjudande garanterade inte att jag kunde köpa det. tiden min köporder kom till utbytet var det mycket möjligt att det erbjudandet skulle ha blivit avbrutet. Som en liten marknadsaktör var det inget sätt att jag kunde tävla på hastighet ensam. Bygga en fullständig handelssimulering. Så hade jag ett ramverk som tillät mig att backtest och optimera indikatorer Men jag var tvungen att gå bortom det här. Jag behövde en ram som skulle göra det möjligt för mig att backtest och optimera ett fullständigt handelssystem en där jag skickade order och kom i positioner I det här fallet skulle jag optimera för totalt PL och I viss utsträckning genomsnittlig PL per handel. Detta skulle vara svårare och på något sätt omöjligt att modellera exakt men jag gjorde så gott som möjligt Jag kunde här vara några av de problem som jag hade att göra med. När en order skickades till marknaden i simulering Jag var tvungen att modellera fördröjningstiden. Det faktum att mitt system såg ett erbjudande innebar inte att det kunde köpa det genast. Systemet skulle skicka ordern, vänta ca 20 millisekunder och då bara om erbjudandet var kvar där, ansågs det som ett Exekverad handel Detta var inexakt eftersom den verkliga fördröjningstiden var inkonsekvent och orapporterad. När jag lade bud eller erbjudanden fick jag titta på handelsexekveringsströmmen från API: n och använda dem för att mäta när min order skulle ha blivit verkställd mot att göra det rätt jag var tvungen att spåra positionen för min order i kön. Det är först i första ut-systemet. Jag kunde inte göra det perfekt, men jag gjorde en bästa approximation. För att förfina min orderexekveringsimulering gjorde jag mina loggfiler från Live trading via API och jämföra dem med loggfiler som produceras genom simulerad handel från exakt samma tidsperiod som jag kunde få min simulering till den punkt som det var ganska noggrant och för de delar som var omöjliga att modellera exakt var jag säker på att producerar åtminstone resultat som statistiskt liknar de mätvärden som jag trodde var viktiga. Att skapa lönsamma affärer. Med en ordningsimuleringsmodell på plats kunde jag nu skicka order i simuleringsläge och se en simulerad PL men hur skulle m y systemet vet när och var att köpa och sälja. Prisförskjutningarna var en utgångspunkt men inte hela historien. Vad jag gjorde var att skapa ett poängsystem för var och en av fem prisnivåer på bud och erbjudande. Dessa inkluderade en nivå över insidan bjuda på en köporder och en nivå under det inbjudna erbjudandet för en försäljningsorder. Om poängen till en viss prisnivå översteg ett visst tröskelvärde skulle det innebära att mitt system borde ha ett aktivt bud erbjudande där - under tröskeln är det några aktiva beställningar bör avbrytas Baserat på detta var det inte ovanligt att mitt system skulle blinka ett bud på marknaden och sedan omedelbart avbryta det. Även om jag försökte minimera detta så är det irriterande för alla som tittar på skärmen med mänskliga ögon - inklusive mig. prisnivå poäng beräknades baserat på följande faktorer. Priset flytta förutsägelse som vi diskuterade tidigare. Prisnivån i fråga Inner nivåer menade att större prisförskjutningar förutsägelser krävdes. Antalet kontrakter framför min Order i kön Mindre var bättre. Antalet kontrakt bakom min order i kön Mer var bättre. Dessa faktorer tjänade till att identifiera säkra ställen att erbjuda budet. Prissättningen för prisrörelsen var inte tillräcklig eftersom den inte tog hänsyn till det faktum att när jag satte ett bud fylldes jag inte automatiskt - jag blev bara fylld om någon sålde till mig där Verkligheten var att det faktum att någon som säljer till mig till ett visst pris ändrade statistiska odds för handeln. De variabler som användes i detta steg Alla var föremål för optimering Detta gjordes på exakt samma sätt som jag optimerade variabler i prisrörindikatorerna, förutom i det här fallet optimerade jag för bottenlinjen P L. Vad mitt program ignorerades. När handel som människor har vi ofta kraftfulla känslor och fördomar som kan leda till mindre än optimala beslut Tydligt ville jag inte kodifiera dessa förspänningar Här är några faktorer som mina system ignorerades. Priset som en position infördes - I ett handelskontor är det ganska vanligt att höra konversation om det pris som någon är lång eller kort som om det skulle påverka deras framtida beslutsfattande. Även om detta har någon giltighet som en del av en strategi för riskreducering har det verkligen ingen betydelse för framtida händelser på marknaden. Därför min programmet ignoreras helt och hållet den här informationen Det är samma begrepp som att ignorera nedsatta kostnader. Går kort mot att lämna en lång position - Vanligtvis skulle en näringsidkare ha olika kriterier som bestämmer var man ska sälja en lång position kontra vart man ska gå kort. Men från mitt algoritmperspektiv var det ingen anledning att göra skillnad Om min algoritm förväntade sig en nedåtgående flyttförsäljning var en bra idé, oavsett om det var för länge, kort eller platt. En fördubbling av strategi - Det här är en gemensam strategi där näringsidkare kommer att köpa fler aktier i händelse att den ursprungliga handeln går emot dem Detta resulterar i att ditt genomsnittliga inköpspris är lägre och det betyder när eller om lagret vänder dig om du kommer att ställas in för att göra din mamma Ögon tillbaka på nolltid Enligt min åsikt är det här verkligen en hemsk strategi om du inte är Warren Buffet Du är lurad på att du mår bra för att de flesta av dina affärer kommer att bli vinnare Problemet är när du förlorar dig förlorar stor Den andra effekten är det Gör det svårt att bedöma om du verkligen har en kant på marknaden eller bara blir lycklig Att kunna övervaka och bekräfta att mitt program faktiskt hade en kant var ett viktigt mål. Eftersom min algoritm fattade beslut på samma sätt oavsett var det gick in i en handel eller om det för tillfället var länge eller kort satt det ibland och tog några stora förlorande affärer utöver några stora vinnande affärer Men du borde inte tro att det inte fanns någon riskhantering. För att hantera risken tillämpade jag ett maximalt Positionsstorlek på 2 kontrakt i taget, av och till stöttas upp på högvolymdagar Jag hade också en maximal daglig förlustgräns för att skydda mot eventuella oförutsedda marknadsförhållanden eller en bugg i min programvara Dessa gränser verkställdes i min kod bu t också i backend genom min mäklare Som det hände jag aldrig stött på några betydande problem. Running algoritmen. Från det ögonblick som jag började jobba på mitt program det tog mig ungefär 6 månader innan jag fick det till lönsamheten och började springa det live Även om det var rättvist, var en betydande tid att lära sig ett nytt programmeringsspråk. När jag arbetade för att förbättra programmet såg jag ökad vinst för var och en av de närmaste fyra månaderna. Varje vecka skulle jag ombilda mitt system baserat på de föregående 4 veckorna värt av Data som jag hittade här slog den rätta balansen mellan att fånga nya marknadsbeteendeutvecklingar och att försäkra min algoritm hade tillräckligt med data för att skapa meningsfulla mönster. När träningen började ta mer och mer tid splittrade jag det så att det kunde utföras av 8 virtuella maskiner som använde amazon EC2 Resultaten samlades sedan på min lokala maskin. Höjdpunkten för min handel var oktober 2009 när jag gjorde nästan 100k Efter detta fortsatte jag att spendera de närmaste fyra månaderna t Rying för att förbättra mitt program trots minskad vinst varje månad Tyvärr vid denna punkt antar jag att jag implementerade alla mina bästa idéer eftersom ingenting jag försökte verkade hjälpa till mycket. Med frustrationen att inte kunna göra förbättringar och inte ha en känsla av tillväxt, jag Började tänka på en ny riktning jag mailade 6 olika högfrekventa handelsföretag för att se om de skulle vara intresserade av att köpa min programvara och anställa mig för att arbeta för dem. Ingen svarade. Jag hade några nya idriftsättningsförslag som jag ville jobba på så jag följde aldrig upp. UPDATE - Jag publicerade detta på Hacker News och det har fått mycket uppmärksamhet. Jag vill bara säga att jag inte förespråkar någon som försöker göra något så här själv nu. Du skulle behöva ett team av riktigt smarta människor med en rad erfarenheter att ha något hopp om att konkurrera Även när jag gjorde det tror jag att det var väldigt sällsynt för individer att uppnå framgång, även om jag hade hört talas om andra. Det finns en kommentar högst upp på sidan som nämner manipulerad sta tistik och hänvisar till mig som en detaljhandel investerare att quants skulle glatt hämta det här är en ganska olycklig kommentar som helt enkelt inte är baserad i verkligheten. Att sätta bort det finns några intressanta kommentarer. UPDATE 2 - Jag har skrivit en uppföljning FAQ som svarar Några vanliga frågor jag fått från handlare om detta inlägg.

No comments:

Post a Comment