Tuesday, 7 November 2017

Enkel glidande medelvärde backtesting


Enkla rörliga medelvärden - Trading backtests Vilka rörliga medelparametrar är bäst Den här sidan har ett hav av rörliga genomsnittliga backtests som jag utförde för DAX, SP500 och även USDEU (Forex). Dessa tester gjordes med hjälp av olika signalstrategier: simpleexponential - och crossover-varianter och olika index för en tidsperiod på 1000 handelsdagar. I motsats till andra webbplatser testade jag alla glidande medelvärden för dagfönster från 1 till 1000 dagar, för övergångsstrategierna i kombination också. Dessa data är också unqiue när jag försökte utföra realistiska tester som simulerar buysell spridningen och skatterna för jämförelse med en referens (buy hold) strategi. Ett snabbt reagerande fönstervärde ser bra ut i teorin och med ett enkelt test. Men spridningen, avgifter och skatter kommer att förstöra alla prestationer i praktisk tillämpning. Det är därför dessa realistiska tester är så värdefulla. Jag hoppas att den här webbplatsen kan hjälpa dig med dina affärer, njut av det. Överblick: Denna gratis utbildningswebbplats är avsedd att låta dig jämföra populära tekniska handelsstrategier så vetenskapligt som möjligt genom backtesting. I allmänhet är det ganska svårt att konsekvent slå marknaden och du bör vara skeptisk till någonting som berättar annars. På den här webbplatsen kan du säkerhetskopiera några vanliga tekniska strategier för att se hur de skulle ha utfört mot marknaden och låter dig skärpa för de aktier som uppfyller dina handelsvillkor. Strategier som backtest väl, garanterar inte framgångar framöver, men kan ha en högre sannolikhet att lyckas. Backtesting gör det också möjligt för dig att se marknadsförutsättningarna där en viss strategi kommer att fungera bra. Till exempel, om du är säker på att marknaden kommer att vara intervallbunden framöver, kan du ta reda på vilka strategier som fungerar bäst på denna typ av marknad. Detta görs genom backtesting över historiska tidsramar som var intervallbundna och att se vilka strategier som är bäst. Backtesting hjälper dig också att se vilka strategiparametrar som är mest robusta över olika tidsperioder. Exempelvis överträffar en 10-stoppförlust en 5-stopp-förlust 9 historiska tidsperioder av 10 Således kan backtesting ge värdefulla handelsinsatser, även om det inte kan garantera framtiden. Några intressanta saker du kan upptäcka: Kombinationen av aktiv handel och kommissioner kan torka ut dig, även om du har en bra andel av vinnande affärer. Verkligen snäva efterföljande stopp kan allvarligt skada din långsiktiga lönsamhet och minska inte utbetalningen så mycket du kan förvänta dig Strategier du trodde skulle vara bra som konsekvent underpresterar marknaden Riktlinjer (Single Stock Backtesting): Välj det lager du vill backtest din tekniska strategi på. Startkapital: Mängden pengar du börjar med Stoploss: Peka på vilken du vill komma ur en position som rör sig mot dig. Ett regelbundet stopp betyder att du kommer att komma ur din position om aktien faller en viss procentandel under var du köpte den. Lågstopp: Låt oss säga att du köper ett lager på 10 och lägger in ett 10 stoppstopp. Om lagret faller 10 utan att någonsin gå högre, kommer du att sälja vid 9. Men om lagret går upp till 15 då ner 10 till 13,5 kommer du sälja till 13,5 och låsa in någon av vinsten. Mål: Sälj när ditt lager uppnår en viss procentuell vinst (kan stängas av genom att välja Dont Use Target) StartdatumEndatum: Välj de historiska datum mellan vilka du vill testa strategin. Signaler: Signaler innebär övergångar eller relationer mellan pris och tekniska indikatorer. Till exempel, det gyllene korset, köper när 50 dagars enkla glidande medelvärdet (SMA) passerar över 200 dagars sma och säljs när 50 dagarna korsar under 200 dagarna (dödskorset). Följande länkar förklarar några populära tekniska indikatorer: Få TradesGraph: Få affärer kommer bokstavligen att visa dig de affärer du skulle ha gjort om du gick tillbaka i tiden med en sammanfattning av prestanda som ingår. De statistiska testen: Test för att se om den genomsnittliga dagliga avkastningen på strategin är densamma som den genomsnittliga dagliga avkastningen på SampP 500 eller densamma som den genomsnittliga dagliga avkastningen på köp och håll över tiden. Vi vill veta hur säkert vi kan vara att avvisa att de två avkastningarna är desamma. Ju högre förtroendet desto säkrare kan du vara, att din strategi är faktiskt bättre än SampP 500 eller köp och håll. Diagrammet visar portföljens värde över tiden med en sammanfattad sammanfattning av resultatet. Vägbeskrivning (PortTester Beta): Detta är för att backtesting en strategi som du skulle tillämpa på din portfölj när lagren når dina tekniska köp och säljsignaler. I den första textrutan anger du tickerna för den korg av bestånd du vill backtest din tekniska strategi på. Ange varje ticker separerad av ett mellanslag. Aktier som för tillfället är tillgängliga inkluderar de 30 dow lager, AA AXP BA BAC CAT CSCO CVX DD DIS GE HD HPQ IBM INTC JNJ JPM KFT KO MCD MMM MRK MSFT PFE PG T TRV UTX VZ WMT XOM. För att inkludera alla 30 i backtestet, skriv bara DJIA som är standard. Mål antal öppna positioner: Det här är antalet aktier du vill ha en position i och inte mer. Låt oss säga att du vill rikta in 2 öppna positioner. När backtester hittar en köpsignal i en av de lager du lägger i korgen, säger GE, det antar att GE köptes. Det kommer nu att leta efter ytterligare 1 lager att köpa när det finns en köpsignal, säg BAC. Du har nu en portfölj med 2 öppna positioner (GE och BAC) och backtester kommer inte att köpa längre tills en säljsignal säljer en av aktierna. En diversifierad portfölj ska antagligen ha 10 eller fler aktier, men det tar mycket datorstyrka att backtest. Således är en liten portfölj som standard på 5 öppna positioner tillräcklig för att få en känsla av strategys prestanda. Observera, för investerare med en liten del av kapitalet säga 10 000, är ​​det dyrt att handla ett stort antal positioner med 20 provisioner för resebyråer. ETF är ett billigt sätt att bli diversifierad. Startkapital: Mängden pengar du börjar med Trading Commission: Belopp du betalar TDAmeritrade, SOGO, ScottTrade, etc för att handla ett lager Placering Storleksanpassning: Så här bestämmer du dig för att begära en viss summa pengar till varje aktie i din portfölj. För närvarande finns bara ett alternativ (Likvärdig tilldelning av pengar) tillgängligt. Det betyder att om jag har 10 000 och jag vill gå in i två positioner, lägger jag 5000 i varje mindre provision. Med andra ord är tillgängliga medel lika fördelade på nya positioner tills jag når mitt mål n antal öppna positioner. Andra alternativ som kommer kommer att vara lika antal aktier och volatilitetsbaserade positioneringsregler. Stoploss: Punkt där du vill komma ur en position som rör sig mot dig. Låt oss säga att du köper ett lager på 10 och sätter i 10 trailing stopp. Om lagret faller 10 utan att någonsin gå högre, kommer du att sälja vid 9. Men om lagret går upp till 15 då ner 10 till 13,5 kommer du sälja till 13,5 och låsa in någon av vinsten. Startdatum och datum: Välj de historiska datum mellan vilka du vill testa strategin. Backtesteren börjar vid startdatumet i historiska data och kommer att söka igenom de lager du valt tills det böter en köpsignal. Om inga köpssignaler hittas den första dagen flyttar backtesteren till nästa dag och söker igenom alla lager i korgen tills en köpsignal finns i vilken beståndet antas köpas till den snabba priset justerat för splittring och utdelning. Så snart ett lager är köpt, kommer backtestaren att se att sälja den aktien när en säljsignal kommer. Det fortsätter också att se till att köpa aktier tills målet antal öppna positioner nås. Samtidigt kommer det att sälja alla befintliga positioner om en försäljningssignal inträffar. Portföljens värde beräknas varje dag fram till slutdatumet. Signaler: Signaler innebär övergångar eller relationer mellan pris och tekniska indikatorer. Till exempel, det gyllene korset, köper när 50 dagars enkla glidande medelvärdet (SMA) passerar över 200 dagars sma och säljs när 50 dagarna korsar under 200 dagarna (dödskorset). Få TradesGraph: Få affärer kommer bokstavligen att visa dig de affärer du skulle ha gjort om du gick tillbaka i tid med en sammanfattning av prestanda som ingår. Diagrammet visar portföljens värde över tiden med en sammanfattad sammanfattning av resultatet. Ansvarsbegränsning: stockbacktest stöder inte eller rekommenderar någon av strategierna eller säkerheterna på denna sida. Innehållet på denna sida är av informativa skäl och ska inte tas som investeringsrådgivning. stockbacktest ska inte hållas ansvarigt för eventuella fel på den här webbplatsen eller åtgärder som vidtas baserat på innehållet på denna webbplats. Bäst testning av ett rörligt medelvärde Crossover i Python med pandor I den tidigare artikeln om Forskning Backtesting Environments I Python With Pandas skapade vi en objektorienterad forskning baserad backtesting miljö och testade den på en slumpmässig prognosstrategi. I den här artikeln kommer vi att använda sig av den maskin som vi introducerade för att utföra forskning om en faktisk strategi, nämligen Moving Average Crossover på AAPL. Flyttande genomsnittlig Crossover-strategi Den Moving Average Crossover-tekniken är en extremt välkänd förenklad momentumstrategi. Det anses ofta Hello World-exemplet för kvantitativ handel. Strategin som skisseras här är långsiktig. Två separata enkla glidande medelfilter skapas, med varierande återkänningsperioder, för en viss tidsserie. Signaler för att köpa tillgången inträffar när det kortare återgåande glidande medlet överstiger det längre återkommande glidmedlet. Om det längre genomsnittet därefter överstiger det kortare genomsnittet säljs tillgången tillbaka. Strategin fungerar bra när en tidsserie går in i en period med stark trend och sedan sakta tillbaka trenden. I det här exemplet har jag valt Apple, Inc. (AAPL) som tidsserier, med en kort lookback på 100 dagar och en lång återgång på 400 dagar. Detta är exemplet från zipline algoritmiska handelsbiblioteket. Således, om vi vill implementera vår egen backtester måste vi se till att den matchar resultaten i zipline, som ett grundläggande sätt att validera. Genomförande Se till att du följer den tidigare handledningen här. som beskriver hur den ursprungliga objekthierarkin för backtesteren är konstruerad, annars fungerar inte koden nedan. För detta specifika genomförande har jag använt följande bibliotek: Implementeringen av macross. py kräver backtest. py från föregående handledning. Det första steget är att importera de nödvändiga modulerna och objekten: Som i föregående handledning kommer vi att subklassera abstraktionsklassen Strategi för att producera MovingAverageCrossStrategy. som innehåller alla detaljer om hur man genererar signalerna när de rörliga medelvärdena av AAPL passerar över varandra. Objektet kräver en shortwindow och en longwindow att fungera för. Värdena har ställts till standardvärden på 100 dagar respektive 400 dagar, vilka är samma parametrar som används i huvudexemplet för zipline. De glidande medelvärdena skapas genom att använda pandas rollingmean-funktionen på staplarna. Slutkursen för AAPL-aktien. När de individuella rörliga medeltalen har konstruerats genereras signalen Serie genom att kolumnen är lika med 1,0 när det korta glidande medlet är större än det långa glidande medlet eller 0,0 annars. Från detta kan positioneringsorder genereras för att representera handelssignaler. MarketOnClosePortfolio är subclassed från Portfolio. som finns i backtest. py. Det är nästan identiskt med det genomförande som beskrivs i den föregående handledningen, med det undantaget att handeln nu utförs på nära håll, snarare än en öppen till öppen basis. Mer information om hur Portfolio-objektet definieras finns i föregående handledning. Ive lämnade koden för fullständighet och för att hålla denna handledning fristående: Nu när klasserna MovingAverageCrossStrategy och MarketOnClosePortfolio har definierats kommer en huvudfunktion att kallas för att binda alla funktioner tillsammans. Dessutom kommer strategins resultat att undersökas via en kurva av aktiekurvan. Pandas DataReader-objekt laddar ner OHLCV-priser på AAPL-lager för perioden 1 januari 1990 till 1 januari 2002, vid vilken tidpunkt signalerna DataFrame skapas för att generera de långsiktiga signalerna. Därefter genereras portföljen med en initialkapital på 100 000 USD och avkastningen beräknas på egenkapitalkurvan. Det slutgiltiga steget är att använda matplotlib för att rita en tvåsiffrigt plot av båda AAPL-priserna, överlagrade med de glidande medelvärdena och buysell-signalerna, såväl som kapitalkurvan med samma buysell-signaler. Plottingskoden tas (och modifieras) från exempelsegmentet för zipline. Kodens grafiska utgång är enligt följande. Jag använde kommandot IPython-klistra för att placera detta direkt i IPython-konsolen i Ubuntu, så att den grafiska produktionen förblev i sikte. De pink upticksna representerar att köpa beståndet, medan de svarta downtickarna representerar att sälja tillbaka: Som det kan ses, förlorar strategin pengar under perioden, med fem rundturer. Detta är inte förvånande med tanke på AAPL: s beteende under perioden, vilket var en liten nedåtgående trend följt av en signifikant uppgång som började 1998. Utsläppsperioden för de rörliga genomsnittssignalerna är ganska stor och detta påverkade slutproduktens vinst , vilket annars kan ha gjort strategin lönsam. I efterföljande artiklar kommer vi att skapa ett mer sofistikerat sätt att analysera prestanda, samt beskriva hur man optimerar utkikningsperioderna för de individuella rörliga genomsnittssignalerna. Just Komma igång med Kvantitativ TradingMoving Genomsnittlig Crossover-strategi På den här sidan Tycker du om att ta dig igenom en jämförelse av ett par glidande medelvärdesövergripande system. Man använder två enkla glidande medelvärden (smas) och den andra använder tre smas. Har du någonsin funderat på att använda ett dubbelrörligt genomsnittligt system för handel Om du anser att du använder dubbla glidande medelvärdeövergångar för både inmatning och utträde, kan du överväga att testa ett trippel MA-system också. Jämför dem sida om sida på olika lager eller andra handelsinstrument samt olika tidsperioder eller tidsramar. Testa olika glidande medelperioder, men var försiktig så du inte lita på optimerade eller kurvpassande resultat. Men eftersom några av mina besökare inte vet vad det här är, kan vi gå över några grunder först. VAD RÖRAR GEMENSKAPSVERKNINGEN Bilden till höger är ett exempel på ett dubbelrörande medelvärde. som skulle initiera en köp signal (bullish crossover). Ett snabbare glidande medelvärde (8 sma - blå) passerar över ett långsammare medelvärde (13 sma - gul). Observera att signalen inte är bekräftad tills baren stängs. Det betyder att den faktiska posten (i live trading) skulle vara någonstans inom nästa stapel. Mest troligt nära öppningen av den fältet. Om du inte har gjort några backtesting ännu, kommer det här typen av enkelt system förmodligen att vara en av de första som ska testas, eftersom det kräver mycket lite programmeringsförmåga. Hur som helst, om du går ner den här vägen kommer du att finna att öppningspriset för nästa stapel efter korset, är där backtestingprogram (beroende på inställningen) kommer att placera de simulerade branscherna. Vilket är rimligt, för om du faktiskt handlade med hjälp av automatiserad handelsprogramvara. Detta är en nära approximation av var din handel skulle äga rum. Med ett typiskt stoppomvändningssystem skulle denna långa ingång inte avslutas förrän den blåa, snabbare MA korsade under den gula, långsammare MA. Denna MA bearish crossover lämnar inte bara handeln utan initierar även en kort handel i motsatt riktning. Så, med dubbla rörliga genomsnittliga crossover-system, är handlaren alltid i handel, lång eller kort. Låt oss titta på ett intradagsexempel under en dag. DUBBEL RÖDNING AVERAGE CROSSOVER Använd ett 5-minuters diagram över SPY med två enkla glidgängder för det första exemplet: Snabbt (8 sma-grönt) och Slow (13 sma-gul). Jag valde den här dagen eftersom jag ville illustrera vad som är väldigt typiskt för praktiskt taget alla glidande medelvärdesövergripande strategier. Den första långa handeln efter klockan 11.00 går mycket bra och får faktiskt en bra återbetalning. Utgången vid klockan 12:45 är lönsam. Men, att Id gillar att du ska observera är den prickiga prissatsen mellan 12:00 och 3:00. Det är här dubbla MA-system kan verkligen mala dina vinster ner. MAsna piskar bara fram och tillbaka och orsakar tre förluster i rad, förmodligen avdunstar vinsten från den första handeln. Om en person handlade med den här metoden på denna dag, lyckligtvis hade de sett en mer anständig vinnande handel vid 2:30. Den goda delen av detta system visas på den första handeln och den sista handeln. Medan glidande genomsnittliga övergångar misslyckas olyckligt under häftiga prisåtgärder, fungerar de mycket bra under trending prisåtgärder. Om du backtestar dessa enkla stopp - och backsystem och inspekterar en som kommer ut med en vinst, kommer du troligen att finna att vinsten är mindre än 50, men den genomsnittliga vinnaren blir större än den genomsnittliga förloraren. Det beror på att glidande genomsnittliga crossover-system är i huvudsak trendsystem. Och trend trading system har nästan alltid denna egenskap av en liten andel av vinnarna och ett bra ave. win till ave. loss-förhållandet. I diagrammen nedan L Long, S Short och Ex Exit. TRIPLE MOVING AVERAGE CROSSOVER Hittills har diskussionen koncentrerats kring ett stopp omvänd typsystem, varigenom en signal för en utgång gör också en handel i motsatt riktning. Men om vi introducerar ett tredje glidande medelvärde till systemet kan det finnas en period av neutralitet. Med andra ord, ingen handel sker - du är i kontanter. För det här exemplet skulle man använda ett 3-minuters diagram och tre enkla glidande medelvärden: 4 sma, 10 sma och 50 sma. Reglerna är mycket enkla. Om den långsamma linjen (50 sma) stiger, och den snabba linjen (4 sma) passerar över mittlinjen (10 sma), är det en köpsignal. Utgångssignalen kommer när den snabba linjen passerar under mittlinjen. Reglerna är motsatta för korta inmatningar. Det är lätt att se, att det här systemet liknar att ta hand om utvecklingen av en högre tidsram. Ett alternativ till detta system skulle vara att endast ta långa inträden, då både de snabba och mellersta glidande medelvärdena ligger över den långsamma sma. Var medveten om att när du hanterar tre grader av frihet (3 variabler), snarare än två som i ovanstående exempel, gör du systemet mer komplext och skapar därför många fler möjliga kombinationer för att testa. Självklart gör backtesting programvara det här, men kom ihåg att lägga till filter och komplexitet gör inte alltid ett bättre system. Ofta kan ett enklare system vara robustare under testning. Ett exempel är nedan. Om du är intresserad av glidande medelvärden, kanske du också vill kolla in min sida om hur man använder glidande medelvärden som ett efterföljande stopp.

No comments:

Post a Comment