Trading System Maskin Learning


Skriven 238w sedan Uppvoted by Vladimir Novakovski startade Quora maskininlärningsteam, 2012-2014. Först skulle du fokusera på att samla så mycket data som möjligt och lägga in en enda stor tabellform. Detta skulle vara historisk prisdata. Kanske öka detta med tidningsartiklar, blogginlägg, sek filering omvandlas till Word Count Vectors etc med hjälp av naturliga språk bearbetning tekniker Du skulle sedan träna en övervakad algoritm för köp sälja beslut Lämpliga algoritmer är logistisk regression snabbaste och slumpmässiga skogar mest exakta vanligtvis Det finns andra, såsom stöd vektor maskiner, förstärkt besluts träd, 3-lags neurala nätverk, men dessa erbjuder inte lika god 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 en timme på en maskin, ännu snabbare i kluster - och öppen så urce Detta gör det också möjligt att tydligt se vilka indikatorer som kolumnerna i tabellen är predictive. You 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 hantera mycket stora gratisformulär text artiklar i en enda rad också. Hade gjort ovan till den punkt som du inte längre kan samla in mer datakällor, det är dags att flytta till funktionen teknik scenen Du har redan gjort något av detta när du gjorde nlp saker men du använde standardtekniker, det vill säga att du inte tänker hitta dina egna metoder. Det finns två val just nu - manuellt och automatiskt. I själva verket upplever människor på egen hand sina egna egenskaper. Det handlar det som handlarna ägnar mestadels av sin tid - de så kallade strategierna eller reglerna Dessa testas mot data - kallad backtesting. En annan, nyare, authomatisk metod har också nyligen blivit tillgänglig - oövervakad djup inlärning. Unsupervised learning existed before, but it was of t han grunda variation och fungerade inte bra i praktiken Djupt lärande neurala nätverk som använder autoenkodare är en ny metod som uppfann för bara 6 år sedan som fungerar riktigt bra. Detta papper är en demonstration av det. I själva verket genom att kasta massor av datorer i problemet är det s möjligt att automatiskt bilda strategier Ju större det neurala nätverket desto bättre gör det, men det krävs mer datorer. Det är enligt min mening bättre billigare än att försöka hyra massor av mycket kreativa analytiska hårdvariga människor.18k Visningar Visa uppsteg Inte för reproduktion. Jag är faktiskt i början av att göra mitt automatiserade handelssystem, svaret på din fråga är hur vill du tjäna pengar, vill du daytrade eller köpa och hålla över tiden, vilka mätvärden kommer att vara för med tanke på en bra handelsinvestering Du behöver veta om den marknad du ska tjäna, i ditt fall börsen Om du ska göra ett lärandealgo för lastbilstrafik bör du veta varan Ible-variabler som är inblandade i lastbilar tillsammans med vilka potentiella fallgropar du kommer att springa in. Du kan få alla svaren i världen, men om du inte är en väldigt 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 inträde Du behöver få kunskapen och planera din strategi.4 2k Visningar Visa uppsteg inte för reproduktion. Ta Slaff studerat 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 att handla det är en grundläggande översikt och borde ge dig den information du behöver för att bygga din egen. 5k Visningar Visa uppsteg Inte för reproduktion. 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 var t racing helt självständigt och kör inte längre mitt program Jag är glad att berätta allt Min handel var mestadels i Russel 2000 och DAX futures kontrakt. Nyckeln till min framgång tror jag inte var i en sofistikerad ekonomisk ekvation utan snarare i den övergripande algoritmen design som knyts samman många enkla komponenter och använt maskininlärning för att optimera för maximal lönsamhet. Du behövde inte behöva veta någon sofistikerad terminologi här, för 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 handlar per dag halvt år , halv kort och kom aldrig i positioner på mer än ett fåtal kontrakt i taget. Det innebar att slumpmässig lycka från någon viss handel var ganska snygg. Resultatet blev jag aldrig förlorad mor e ä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 sätta upp mitt automatiserade handelsprogram Jag hade 2 års erfarenhet som en handledare dag 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 av mina studielån och få pengar kvar Win. Over Under de närmaste fem åren skulle jag starta två nystartade program och hämta vissa 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 dag för handel framtid med hjälp av programvara som kallas T4 Jag hade önskat några anpassade orderinmatnings snabbtangenter, så efter att ha upptäckt 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 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 för att jag ska tjäna pengar innan jag någonsin gjort några levande affärer För att uppnå detta behövde jag bygga upp en handelssimuleringsram som skulle - så noggrant 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 price movements. Perhaps en uppenbar del av något handelssystem är att kunna förutsäga 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 var förutspådad av varje möjligt värde av 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 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 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 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 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å 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ördomar som kan leda till mindre än optimala beslut Tydligt vill 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 öga 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 faktiskt 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, ibland stötte upp på högvolymdagar Jag hade också en maximal daglig förlustgräns för att skydda mot eventuella oväntade marknadsförhållanden eller ett fel i min programvara Dessa gränser har verkställts 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ö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 minskade 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 har fått från handlare om denna post. Machine Learning Trading Systems. SPDR SP 500 ETF SPY är en av de mest omsatta ETF-produkterna på marknaden, med cirka 200Bn i tillgångar och en genomsnittlig omsättning på knappt 200M aktier varje dag Så sannolikheten för att kunna utveckla ett pengeslagande handelssystem med hjälp av allmänt tillgänglig information kan tyckas vara smal att ingen. För att ge oss en stridschans kommer vi att fokusera på ett försök att förutse överflyttningen över natten i SPY med hjälp av data från den föregående dag s session. In tillägg till de öppna höga låga och nära priserna för föregående dag session har vi valt ett antal andra rimliga variabler för att bygga ut den vektor som vi ska använda i vår maskininlärningsmodell. Den dagliga volymen. Förra dagens slutkurs. 200-dagars, 50-dagars och 10-dagars glidande medelvärden av slutkursen. De 252 dagars höga och låga priserna på SPY-serien. Vi kommer att försöka bygga en modell som förutser den dagliga avkastningen i ETF, dvs O t 1 - C t C t. I denna övning använder vi dagliga data från början av SPY-serien fram till slutet av 2014 för att bygga modellen, som vi sedan kommer att testa på data utanför data från och med jan 2015-aug 2016 I ett högfrekvent sammanhang skulle en betydande tid spenderas utvärdering, rengöring och normalisering av data. Här står vi inför mycket mindre problem av det slaget. skulle standardisera inmatningsdata för att utjämna påverkan av variabler som kan mätas på vågar med mycket olika storleksordningar. Men i detta exempel mäts alla ingångsvariablerna, med undantag för volymen, i samma skala och så är standardisering sannolikt onödigt. Först är in-sample data loa ded och används för att skapa en träningsuppsättning av regler som kartar funktionen vektorn till den variabla av intresse, över natten return. In Mathematica 10 Wolfram introducerade en serie maskininlärningsalgoritmer som inkluderar regression, närmaste granne, neurala nätverk och slumpmässiga skogar, tillsammans med funktionalitet för att utvärdera och välja bästa möjliga maskininlärningsteknik. Dessa anläggningar gör det väldigt enkelt att skapa en klassificerings - eller prediktionsmodell med maskininlärningsalgoritmer, såsom det här handskriftsigenkänningsexemplet. Vi skapar en prediktiv modell på SPY-träningsetet, vilket gör att Mathematica kan välj den bästa maskininlärningsalgoritmen. Det finns ett antal alternativ för Predict-funktionen som kan användas för att styra funktionen urval, algoritm typ, prestandatyp och mål, istället för att helt enkelt acceptera standardvärdena, som vi har gjort här. vår maskininlärningsmodell laddar vi data utanför provet från januari 2015 till aug 2016 och skapar ett testuppsättning. Vi Därefter skapar du ett PredictionMeasurement-objekt med hjälp av den närmaste grannmodellen som kan användas för vidare analys. Det finns inte mycket dispersion i modellprognoserna, som alla har positivt värde. En vanlig teknik är i så fall att subtrahera medelvärdet från varje prognos och vi kan också standardisera dem genom att dividera med standardavvikelsen. Spridningsgraden av faktiska kontra prognos över natten i SPY ser nu ut så här. Det finns fortfarande en uppenbar brist på spridning i prognosvärdena jämfört med den faktiska avkastningen på natten, som vi kan korrigeras genom standardisering Det verkar i vilket fall som helst vara ett litet, icke-linjärt förhållande mellan prognos och faktiska värden, vilket håller lite hopp om att modellen kan visa sig vara användbar. Från prognos till handel. Det finns olika metoder för att använda en prognosmodell i samband med att skapa ett handelssystem Den enklaste vägen, som vi kommer att ta här, är att tillämpa en tröskelport och konvertera de filtrerade prognoserna direkt in i en handelssignal Men andra tillvägagångssätt är möjliga, till exempel genom att förutse prognoserna från flera modeller för att skapa ett prognos-ensemble. Använda prognoserna som ingångar till en genetisk programmeringsmodell. Följa prognoserna i inmatningsskiktet i en neuralt nätverksmodell utformad speciellt för att generera handelssignaler, snarare än prognoser. I det här exemplet kommer vi att skapa en handelsmodell genom att tillämpa ett enkelt filter på prognoserna, bara utesluta de värden som överskrider ett angivet tröskelvärde. Detta är ett vanligt trick som används för att isolera signalen i modellen från bakgrundsbrus Vi accepterar endast de positiva signalerna som överstiger tröskelnivån och skapar ett långsiktigt handelssystem, dvs vi ignorerar prognoser som ligger under tröskelnivån. Vi köper SPY på slutet när prognosen överstiger tröskelvärdet och avslutar någon lång position vid Nästa dag s öppen Denna strategi ger följande proforma resultat. Systemet har några ganska attraktiva funktioner, inklusive en vinnhastighet av över 66 och en CAGR på över 10 för perioden utanför testperioden. Det är uppenbarligen det här är en mycket grundläggande illustration som vi skulle vilja faktor i handelskommittéer och den glidning som uppkommit i och externa positioner i post - och pre - marknadsperioder, vilket kommer att påverka resultatet negativt. Naturligtvis har vi knappt börjat skrapa ytan när det gäller de variabler som skulle kunna beaktas för att inkluderas i funktionsvektorn och som kan öka modellens förklarande kraft. I andra ord är det i själva verket bara början på en långvarig och besvärlig forskningsprocess. Men det här enkla exemplet bör vara tillräckligt för att ge läsaren en smak av vad som är inblandat i att bygga en prediktiv handelsmodell med maskininlärningsalgoritmer.

Comments