Saturday, 9 December 2017

Maskininlärningsalternativ handel


Det här inlägget beskriver 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, så är jag glad att berätta allt. Min handel var mestadels i Russel 2000 och DAX-futureskontrakt. Nyckeln till min framgång tror jag inte var i en sofistikerad ekonomisk ekvation utan snarare i den övergripande algoritmdesignen som sammanfogade många enkla komponenter och använde maskininlärning för att optimera för maximal lönsamhet. Du behövde inte behöva veta någon sofistikerad terminologi här eftersom när Jag satte in mitt program, det var allt baserat på intuition Andrew Ng: s 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 översynssida för MOOCs. Först vill jag 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 ett fåtal kontrakt i taget T Han menade att slumpmässig lycka från någon viss handel var ganska snygg. Resultatet blev att jag aldrig förlorade 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å nybörjare 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 hjälp av programvaran T4 I d ville ha några anpassade orderinmatnings snabbtangenter, så efter att ha upptäckt T4 hade ett API tog jag ut 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 se riktiga beställningar som dyker 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 och registrera marknadsuppdateringar med tidsstämplar. Jag slutade använda 4 veckor värda av de senaste marknadsdata för att träna och testa mitt system på . Med en grundläggande ram i stället hade jag fortfarande uppgift att räkna ut hur man gör ett lönsamt handelssystem. Som det visar sig skulle min algoritm bryta ner i två distinkta komponenter, som jag kommer att utforska i sin tur. Att pröva prisrörelser och. Att göra lönsamma 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 inbjudan 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 jag handlade såväl som marknaderna för korrelerade värdepapper. Att göra exakt prisförskjutningsprognoser. 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åddes av varje möjligt värde av varje indikator, jag behövde en formel som skulle konvertera ett indikatorvärde till en prissättning. För att uppnå detta spårade jag spådda pris i 50 hinkar som berodde på det intervall som Indikatorns värde sjönk i Detta skapade unika förutsägelser för varje skopa 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 Ställ in optimiseraren 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 ger vi nu det ytterligare prissättning jag kunde 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 räknar priserna inte räcker. Du kanske tror att med den här kanten på marknaden var jag gyllene 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 det 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 direkt. Systemet skulle skicka ordern, vänta ca 20 millisekunder och då var det bara om erbjudandet var där, det ansågs vara 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å handelsutföringsströmmen som tillhandahålls av 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. To 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 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 gjorde jag mig säker på att Producerar åtminstone resultat som var statistiskt likartade i de mätvärden som jag trodde var viktiga. Att skapa lönsamma affärer. Med en ordningssimuleringsmodell 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 man ska 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å var över en viss tröskel som skulle innebära att mitt system borde ha ett aktivt bud erbjudande där - under tröskeln så skulle inga 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örspänningar 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 riskminskning har det verkligen ingen betydelse för framtida händelser på marknaden. Därför min Programmet ignoreras helt och hållet denna information Det är samma koncept 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 var 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 handlare kommer att köpa fler aktier i händelsen Att den ursprungliga handeln går emot dem Det här medför 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 jag började jobba på mitt program det tog mig ungefär 6 månader innan jag fick det till lönsamhet 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 Tistics och hänvisar till mig som en detaljhandel investerare att quants skulle glädjande plocka bort Detta är en ganska olycklig kommentar som helt enkelt inte baseras i verkligheten Inställning som åt sidan 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. Termen statistisk arbitrage stat-arb omfattar en mängd olika investeringsstrategier som vanligtvis syftar till att utnyttja ett statistiskt jämviktsförhållande mellan två eller flera värdepapper. Den allmänna principen är att eventuell avvikelse från jämvikten Är en tillfällig effekt och att satsningar bör placeras på processen återvända till det s jämvikt. Huvudgränsen för stat-arb-parhandelstypstrategier är att när divergensen från jämvikt växer blir handeln mer önskvärd, men vid något tillfälle divergensen Kommer att bli så stor att man måste erkänna att jämviktsförhållandet inte längre existerar, modellen är bruten. Naturligtvis är det önskvärt Att uppskatta kraften i de statistiska verktyg som används för att bestämma dessa relationer och att bedöma varaktigheten av observerad jämvikt ur provet. Denna post kommer att undersöka kraften i de statistiska testerna i relation till parhandel för följande statistiska tester ADF, BVR , HURST, PP, PGFF, JO-T och JO-E. Den allmänna principen är den för två bestånd och de utgör en stationär och per definition betyder det att man återgår till par om följande ekvation håller. Om det är mellan och då och är co - integrerad, är medelvärdet reversionskoefficient Ett statistiskt test måste utföras för att kontrollera om detta är känt som ett rotorns test Om serien innehåller enhetsrot är den inte lämplig för parhandel Ett annat test på restprocessen Man kan frestas att uppskatta AR 1 restmodellen och kontrollera att man använder den konventionella linjära regressionsmetoden som beräknar standard-t-förhållandet. Men det visades av Dicky och Fuller 1979 att T-förhållandet följer inte t-fördelningen, sålunda behövs icke-standardiserade signifikanstester känd som enhetstesttester. Som med varje modell finns det avvägning vid bestämning av träningsfönsterstorleken, för långt ett fönster och modellen kan innehålla irrelevanta Data och vara långsam för att anpassa sig till de senaste händelserna, för korta fönster och modellen svarar bara på de senaste händelserna och glömmer snabbt om tidigare händelser. Denna handel är problematisk vid samintegrationstestning, det visades i Clegg, M Januari 2014 På Persistens av samfördelning i parhandel, som för en fast fönsterstorlek minskar kraften hos de flesta enhetstesttest, vilket tenderar att vara 1 underifrån, för 250 datapunkter med spärren av samintegrationstest upptäcker endast samintegration mindre än 25 av de Tid. Det här är meningslöst, desto långsammare är processen att återställa, desto mer datapunkter kommer att behövas för att se reversionen. Det är något oönskat att kraften hos enhetens rottest varierar beroende på egenskaperna hos t Hans underliggande process, men det är inte nödvändigt för framgångsrik parhandel att alla samintegrerade par är identifierade som att den varierande effektegenskapen hos enhetsrottesterna i stor utsträckning är irrelevant. Vad är mer intressant är den falska positiva frekvensen, så par identifierade som medelvärde Återvända när de inte är och hur långvariga resultaten är. Generera 1000 samintegrerade tidsserier med och jämnt fördelade i uppsättningen och i uppsättningen enligt Clegg liknar det de typer av stockpar som uppträder i verkligheten. Repetera detta för Olika längder av tidsserier och test för att se hur många tidsserier som är korrekt klassificerade som samintegrerad genomsnittlig återställning med olika test för olika pValues. In de flesta försök överträffar PP och PGFF de andra metoderna när processen kraftigt återställdes med mindre än 0 85 testen PP, PGFF, JO-E och JO-T identifierade processen korrekt som samintegrerad medelvärde som återställde mer än 75 av tiden vid pValue 0 01 För några av weaken R återvändande par med större än 0 95 prestanda för de statistiska testerna är otrevlig med bara 250 datapunkter. Det är värt att komma ihåg att 250 datapunkter är ungefärligt antal handelsdagar om ett år och kanske ger en indikation på hur mycket Historiska data behövs i en parhandelsstrategi. Följa positiva test. Följ samma procedur som beskrivs för noggrannhetstestet men valde i uppsättningen att generera tidsserier som inte är samintegrerade. Se vilken procentandel av banorna som felaktigt rapporteras som co - Integrerad genomsnittlig återställning. Jag har aldrig sett detta diagram i en textbok och blev förvånad över resultaten, både HURST och BVR rapporterar mer falska positiva som ökar Ju mer processen exploderar desto mer sannolikt testet var att visa en falsk positiv. Tack Andra tester uppträder på ett rimligt sätt med få falska positiva. Denna del av handledningen om att använda NEAT-algoritmen förklarar hur genen korsas på ett meningsfullt sätt att behålla sin topologiska informa Tion och hur gruppering genomgås i arter kan användas för att skydda svaga genomer med ny topologisk information från att de förstas utrotas från genpoolen innan deras viktutrymme kan optimeras. Den första delen av denna handledning finns här. Innovation Numbers. Part 1 visade två mutationer, länk mutate och nod mutera som båda tillförde nya gener till genomet Varje gång en ny gen skapas genom en topologisk innovation ökas ett globalt innovationsnummer och tilldelas den genen. Den globala innovationsnumret är Spårning av varje gens historiska ursprung Om två gener har samma innovationsnummer måste de representera samma topologi även om vikterna kan vara olika. Detta utnyttjas under genövergången. Genomsökning av genvägar. Genenöverföringar tar två modergener som låter dem ringa A Och B och skapar ett nytt genom kan vi kalla det barnet som tar de starkaste generna från A och B, vilket kopierar vilken topologisk struktur som helst Ures längs vägen. Under crossovergenerna från båda genomerna är uppradade med hjälp av deras innovationsnummer För varje innovationsnummer väljes genen från den mest passande förälder och införs i barngenomet Om båda modergenerna har samma fitness är genen Slumpmässigt vald från endera föräldern med lika sannolikhet Om innovationsnumret endast är närvarande i en förälder så är detta känt som en ojämn eller överdriven gen och representerar en topologisk innovation, den är också införd i barnet. Bilden nedan visar övergångsprocessen för Två genomer av samma fitness. Sektering tar alla genomerna i en given genompool och försöker dela dem i olika grupper som kallas art. Genomerna i varje art kommer att ha liknande egenskaper. En metod att mäta likheten mellan två genomer är nödvändig, Om två genomer är lika de är från samma art En naturlig åtgärd att använda skulle vara en vägd summa av antalet ojämnliga överskott gener representerar Ng topologiska skillnader och skillnaden i vikter mellan matchande gener Om den viktade summan ligger under ett visst tröskelvärde är genomerna av samma art. Fördelen med att dela genomerna i arter är att under det genetiska utvecklingssteget, där genomer med låg kondition slängs Avlägsnas helt från genompumpen i stället för att ha varje genomkamp för det s plats mot varje annat genom i hela genompoolen kan vi göra det kämpa för det s ställe mot genomer av samma art På så sätt arter som bildas av en ny topologisk innovation Som kanske inte har en hög kondition ännu på grund av att inte ha det s vikt optimerade kommer att överleva culling. Summary of whole process. Create en genom pool med n slumpmässiga genomer. Ta varje genom och ansöka om problem simulering och beräkna genomet fitness. Assign Varje gen till en art. In varje art cull genomerna avlägsna några av de svagare genomerna. Breed varje art slumpmässigt välj genomerna i arten att antingen Crossover eller mutate. Repeat all of the above. Post navigation. 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å åt det eller snarare Kan någon dela sin erfarenhet och få grundläggande tips om hur man går till 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 medan man gör det här. asked 1 feb 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 statistik och maskininlärning först och oroa dig för hur du applicerar dem på ett visst problem. Det finns ingen gratis lunch här. Dataanalysen är hårt arbete. Läs Elements of Statistical Learning. Pdf finns gratis på webbplatsen och don T börja 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 mm som är ett helt annat område. Du har ett handtag på 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 förutsägelse, dvs att Utbildnings - och testförutsägningsfelet kommer att vara lågt 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 man försöker tillämpa något esoteriskt. Bara att lägga till en underhållande uppdatering. Jag kom nyligen över den här mästarens avhandling En novel 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 buy-and-hold Efter nästan 200 sidor når de grundläggande slutsatsen Inget handelssystem kunde överträffa referensvärdet vid användning av transaktionskostnader. Det betyder inte att det Jag kan inte göra det jag har tillbringat någon gång genom att granska deras metoder för att se huruvida tillvägagångssättet är giltigt, men det ger vissvis några bevis till förmån för den kostnadsfria lunchteorem. Svarade den 1 februari 11 på 18 48. Jase Som en av Författarna till den nämnda masterprojektet kan 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, utesluter det inte Förekomsten 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å dess Praktisk tillämpning i spelande igen så kanske det här är all modern alkemi Andr Christoffer Andersen 30 april 13 på 10 01.My råd till dig Det finns flera maskinlärande artificiella 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 vanligast utforskade metoderna för aktiemarknadsutsikterna, men om du gör viss data mining på Predict Wall Street Kan också göra vissa känslighetsanalyser också. Stanna någon gång att lära sig om olika ML AI-tekniker, hitta några 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 kombinera Förutsägelser av varje algoritm i en sammansatt förutsägelse som liknar vad vinnarna av NetFlix-priset gjorde. Några resurser Här är några resurser som du kanske vill loo K in. Chatter Den allmänna konsensusen bland handlare är att Artificiell intelligens är en voodoo-vetenskap, du kan 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. Samma människor kommer 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 för att skapa strategier Det är en mycket tråkig process och det är inte lätt. Minimizing Overfitting Som vi har hört förut är en grundläggande fråga med AI-algoritmer överfitting aka datamining bias givet en uppsättning data, din AI-algoritm Kan 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 allo Vill du upptäcka när din algoritm potentiellt börjar ö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 marknadsutsikter. Ensemble Learning ger dig möjlighet 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 Lärande är användbart för handel.1 För det första de som nämnts tidigare har vissa statistiska metoder fokuserat på att arbeta med levande dataset. Det betyder att du vet att du bara observerar ett urval av data och du vill extrapolera. Du måste således hantera i prov och ur Provproblem, övermontering osv. Från denna synpunkt är data-mining mer inriktad på döda dataset, dvs du kan se nästan alla data , Du har ett problem som bara är ett problem än statistisk inlärning. Eftersom statistisk inlärning handlar om att arbeta med levande dataset, måste de tillämpade matematik som handlar om dem 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 i X comes from the innovation xi , which is ii d. The goal of statistical learning is to build a methodology L ith as inputs a partial observation pi of X and progressively adjust an estimate hat theta of theta , so that we will know all that is needed on X. If you think about using statistical learning to find the parameters of a linear regression we can model the state space like this underbrace yx end right left begin ab 1 1 0 0 end right cdot underbrace x 1 epsilon end right which thus allows to observe y, xn at any n here theta a, b.Then you need to find a way to progressively build an estimator of theta using our observations Why not a gradient descent on the L2 distance between y and the regression C hat a, hat bn sum yk - hat a , xk h at b 2.Here gamma is a weighting scheme. Usually a nice way to build an estimator is to write properly the criteria to minimize and implement a gradient descent that will produce the learning scheme L. Going back to our original generic problem we need some applied maths to know when couple dynamical systems in X, hat theta converge, and we need to know how to build estimating schemes L that converge towards the original theta. To give you pointers on such mathematical results. Now we can go back to the second aspect of statistical learning that is very interesting for quant traders strategists.2 The results used to prove the efficiency of statistical learning methods can be used to prove the efficiency of trading algorithms To see that it is enough to read again the coupled dynamical system that allows to write statistical learning left M F rho Mn, xi L pi Mn , n end right. Now M are market variables, rho is underlying PnL, L is a trading strategy Just replace minimizing a criteria by max imizing the PnL. See for instance Optimal split of orders across liquidity pools a stochatic algorithm approach by Gilles Pags, Sophie Laruelle, Charles-Albert Lehalle in this paper, authors show who to use this approach to optimally split an order across different dark pools simultaneously learning the capability of the pools to provide liquidity and using the results to trade. The statistical learning tools can be used to build iterative trading strategies most of them are iterative and prove their efficiency. The short and brutal answer is you don t First, because ML and Statistics is not something you can command well in one or two years My recommended time horizon to learn anything non-trivial is 10 years ML not a recipe to make money, but just another means to observe reality Second, because any good statistician knows that understanding the data and the problem domain is 80 of the work That s why you have statisticians focusing on Physics data analysis, on genomics, on sabermetrics etc For the record, Jerome Friedman, co-author of ESL quoted above, is a physicist and still holds a courtesy position at SLAC. So, study Statistics and Finance for a few years Be patient Go your own way. Mileage may vary. answered Feb 9 11 at 4 41.I totally agree Just because you know machine learning and statistics, it does not imply that you know how to apply it to finance Dr Mike Aug 10 11 at 20 25.Also an important thing to remember is you won t be trading against people, you will be trading against other artificial intelligence algorithms who are watching your trades pile in, and are furiously calculating the odds that the collective yous would be spooked out by a manufactured decline and taking that minor loss in creating a spike dip and fool all those AI s into stopping out, and then rolling the dip back into it and ride the wave, earning your losses The stock market is a zero sum game, treat it like entering a pro boxing match, if you aren t a 20 year veteran, you re going to lo se Eric Leschinski Feb 13 16 at 1 56.One basic application is predicting financial distress. Get a bunch of data with some companies that have defaulted, and others that haven t, with a variety of financial information and ratios. Use a machine learning method such as SVM to see if you can predict which companies will default and which will not. Use that SVM in the future to short high-probability default companies and long low-probability default companies, with the proceeds of the short sales. There is a saying Picking pennies up in front of steam rollers You re doing the equivalent of selling an out-of-the-money put In this case, you ll make tiny profits for years, then get totally cleaned out when the market melts down every 10 years or so There is also an equivalent strategy that buys out-of-the-money puts they lose money for years, then make a killing when the market melts down See Talab s The Black Swan Contango Jun 5 11 at 22 20.Remember that international companies have spent hund reds of billions of dollars and man hours on the very best and brightest artificial intelligence minds over the last 40 years I ve spoken to some of the towers of mind responsible for the alphas over at Citadel and Goldman Sachs, and the hubris from novices to think they can put together an algorithm that will go toe to toe with them, and win, is almost as silly as a child telling you he s going to jump to the moon Good luck kid, and watch out for the space martians Not to say new champions can t be made, but the odds are against you Eric Leschinski Feb 13 16 at 2 00.One possibility worth exploring is to use the support vector machine learning tool on the Metatrader 5 platform Firstly, if you re not familiar with it, Metatrader 5 is a platform developed for users to implement algorithmic trading in forex and CFD markets I m not sure if the platform can be extended to stocks and other markets It is typically used for technical analysis based strategies i e using indicators based on hist orical data and is used by people looking to automate their trading. The Support Vector Machine Learning Tool has been developed by one of the community of users to allow support vector machines to be applied to technical indicators and advise on trades A free demo version of the tool can be downloaded here if you want to investigate further. As I understand it, the tool uses historical price data to assess whether hypothetical trades in the past would have been successful It then takes this data along with the historical values from a number of customisable indicators MACD, oscillators etc , and uses this to train a support vector machine Then it uses the trained support vector machine to signal future buy sell trades A better desciption can be found at the link. I have played around with it a little with some very interesting results, but as with all algorithmic trading strategies I recommend solid back forward testing before taking it to the live market. answered Dec 10 12 at 11 59.Sorr y, but despite being used as a popular example in machine learning, no one has ever achieved a stock market prediction. It does not work for several reasons check random walk by Fama and quite a bit of others, rational decision making fallacy, wrong assumptions , but the most compelling one is that if it would work, someone would be able to become insanely rich within months, basically owning all the world As this is not happening and you can be sure all the bank have tried it , we have good evidence, that it just does not work. Besides How do you think you will achieve what tens of thousands of professionals have failed to, by using the same methods they have, plus limited resources and only basic versions of their methods. answered Jun 4 15 at 7 47.Just an aside regarding your most compelling reason strategies have capacity limits, i e levels beyond which your market impact would exceed the available alpha, even assuming you had unlimited capital I m not sure what you mean by a stock ma rket prediction index futures ETF s , but certainly there are plenty of people making short-term predictions, and benefitting from them, every day in markets afekz Nov 23 15 at 13 19.I echo much of what Shane wrote In addition to reading ESL, I would suggest an even more fundamental study of statistics first Beyond that, the problems I outlined in in another question on this exchange are highly relevant In particular, the problem of datamining bias is a serious roadblock to any machine-learning based strategy.

No comments:

Post a Comment