Enkel Bevegelse Gjennomsnittet Backtesting
Enkle bevegelige gjennomsnitt - Trading backtests Hvilke bevegelige gjennomsnittlige parametere er de beste Dette nettstedet har et hav av flytte gjennomsnittlige backtests som jeg gjennomførte for DAX, SP500 og også USDEU (Forex). Disse tester ble gjort ved hjelp av forskjellige signalstrategier: simpleexponential og crossover varianter og forskjellige indekser for en tidsperiode på 1000 handelsdager. I motsetning til andre nettsteder testet jeg alle bevegelige gjennomsnittlige dagvinduverdier fra 1 til 1000 dager, for overgangsstrategiene også i kombinasjon. Disse dataene er også unqiue da jeg prøvde å utføre realistiske tester, simulerer buysell spredningen og skatter for sammenligning med en referanse (buy hold) strategi. En rask reagerende vindusverdi ser bra ut i teorien og med en enkel test. Men spredningen, avgifter og avgifter vil ødelegge all ytelse i praktisk anvendelse. Det er derfor disse realistiske tester er så verdifulle. Jeg håper dette nettstedet kan hjelpe deg med handler, nyt det. Overblikk: Denne gratis utdanningswebsiden er ment å tillate deg å sammenligne populære tekniske handelsstrategier så vitenskapelig som mulig gjennom backtesting. Generelt er det ganske vanskelig å konsekvent slå markedet, og du bør være skeptisk til noe som forteller deg noe annet. Dette nettstedet gir deg mulighet til å backtest noen vanlige tekniske strategier for å se hvordan de ville ha utført mot markedet og lar deg skjerme for aksjene som oppfyller dine trading kriterier. Strategier som backtest godt, garanterer selvfølgelig ikke suksess fremover, men kan ha en høyere sannsynlighet for å klare seg godt. Backtesting gjør det også mulig å se markedsforholdene der en bestemt strategi vil fungere bra. For eksempel, hvis du er sikker på at markedet vil være rekkevidde bundet fremover, kan du finne ut hvilke strategier som fungerer best i denne type markedet. Dette gjøres ved backtesting over historiske tidsrammer som var avstandsbundet og se hvilke strategier som er best. Backtesting hjelper deg også å se hvilke strategiparametere som er mest robuste over ulike tidsperioder. For eksempel gir et 10-stopp-tap en 5-stop-tap 9 historiske tidsperioder ut av 10 Således kan backtesting gi verdifull handelsinnsikt, selv om det ikke kan garantere fremtiden. Noen interessante ting du kan oppdage: Kombinasjonen av aktiv handel og kommisjoner kan tørke deg ut selv om du har en god prosentandel av vinnende handler. Virkelig stramme stopper kan alvorlig skade din langsiktige lønnsomhet og ikke redusere drawdown så mye du kan forvente Strategier du trodde ville være gode som konsekvent underperform markedet. Veibeskrivelse (Single Stock Backtesting): Velg aksjen du vil sikkerhetskopiere din tekniske strategi på. Startkapital: Mengde penger du starter med Stoploss: Punkt hvor du vil komme deg ut av en posisjon som beveger seg mot deg. En vanlig stopp betyr at du kommer ut av posisjonen din hvis aksjen faller en prosentandel under hvor du kjøpte den. Trappstopp: La oss si at du kjøper en aksje på 10 og legger en 10 stoppestopp. Hvis aksjen faller 10 uten å gå høyere, vil du selge på 9. Men hvis aksjen går opp til 15 og deretter ned 10 til 13,5, vil du selge på 13,5 og låse inn noen av gevinsten. Mål: Selg når lageret ditt oppnår en viss prosentvis gevinst (Kan slå av ved å velge Dont Use Target) Start DateEnd Date: Velg de historiske datoene mellom hvilke du vil teste strategien. Signaler: Signaler innebærer kryssinger eller forhold mellom pris og tekniske indikatorer. For eksempel, det gylne krysset, kjøp når 50 dagers enkelt glidende gjennomsnitt (sms) krysser over 200 dagers sma og selger når 50 dagene krysser under 200 dagene (dødskorset). Følgende lenker forklarer noen populære tekniske indikatorer: Få TradesGraph: Få handler vil bokstavelig talt vise deg handlingene du ville ha gjort hvis du gikk tilbake i tid med et sammendrag av ytelse inkludert. De statistiske testene: Test for å se om gjennomsnittlig daglig avkastning av strategien er den samme som gjennomsnittlig daglig avkastning på SampP 500 eller den samme som gjennomsnittlig daglig avkastning for kjøp og hold over tidsperioden. Vi ønsker å vite hvor trygg vi kan være å avvise at de to avkastningene er de samme. Jo høyere tillit jo mer sikker på at du kan være at strategien din egentlig er bedre enn SampP 500 eller kjøp og hold. Grafen teller verdien av porteføljen over tid med et medfølgende sammendrag av ytelsen. Veibeskrivelse (PortTester Beta): Dette er for backtesting en strategi som du vil søke på porteføljen når aksjer når dine tekniske kjøp og salgssignaler. I den første tekstboksen, skriv inn tickers for kurven av aksjer du vil sikkerhetskopiere din tekniske strategi på. Skriv inn hver ticker skilt av et mellomrom. Aksjer som for tiden er tilgjengelige, inkluderer de 30 dow-aksjene, 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. For å inkludere alle 30 i backtest, skriv bare DJIA som er standard. Mål Antall åpne posisjoner: Dette er antall aksjer du vil ha posisjon i og ikke mer. For eksempel, la oss si at du vil målrette mot 2 åpne posisjoner. Når backtester finner et kjøpssignal i en av aksjene du legger i kurven, sier GE, antar det at GE ble kjøpt. Det vil nå se etter 1 lager for å kjøpe når det er et kjøpssignal, sier BAC. Du har nå en portefølje med 2 åpne posisjoner (GE og BAC) og backtester vil ikke kjøpe mer før et selgesignal selger en av aksjene. En diversifisert portefølje skal sannsynligvis ha 10 eller flere aksjer, men dette krever mye databehandlingskraft til backtest. Dermed vil en liten portefølje som standard på 5 åpne posisjoner være nok til å få en følelse av strategys ytelse. Av oppmerksomhet, for investorer med en liten del av kapitalen si 10.000, er det dyrt å handle et stort antall stillinger med 20 provisjoner for rundturer. ETF er en billig måte å bli diversifisert. Startkapital: Mengde penger du starter med Handelskommisjonen: Beløpet du betaler TDAmeritrade, SOGO, ScottTrade, etc for å handle på lager. Stillingstørrelse: Slik bestemmer du å forplikte seg til hvert lager i porteføljen din. For øyeblikket er det bare ett alternativ (Lik likestilling) tilgjengelig. Dette betyr at hvis jeg har 10.000 og jeg vil legge inn 2 stillinger, vil jeg sette 5000 i hver mindre provisjon. Med andre ord vil kontanter tilgjengelig være like oppdelt i nye stillinger til jeg når målet mitt antall åpne stillinger. Andre muligheter som kommer vil være lik antall aksjer, og volatilitetsbaserte posisjonstørrelsesregler. Stoploss: Punkt hvor du vil komme deg ut av en posisjon som beveger seg mot deg. La oss si at du kjøper en aksje på 10 og legger inn en 10 tilbakestilling. Hvis aksjen faller 10 uten å gå høyere, vil du selge på 9. Men hvis aksjen går opp til 15 og deretter ned 10 til 13,5, vil du selge på 13,5 og låse inn noen av gevinsten. Startdato og dato: Velg de historiske datoene mellom hvilke du vil teste strategien. Backtester vil starte ved startdatoen i historiske data og vil søke gjennom aksjene du valgte til den finer et kjøpssignal. Hvis ingen kjøpssignaler blir funnet på den første dagen, flyttes backtesteren til neste dag og søker gjennom alle aksjene i kurven til et kjøpssignal er funnet der aksjene antas å bli kjøpt til nær pris justert for splitt og utbytte. Så snart en aksje er kjøpt, vil backtesteren se etter å selge den aksjen når et salgssignal kommer. Det fortsetter også å se for å kjøpe aksjer til målet antall åpne stillinger er nådd. Samtidig vil det selge eventuelle eksisterende stillinger dersom et salgssignal oppstår. Verdien av porteføljen beregnes hver dag til sluttdatoen. Signaler: Signaler innebærer kryssinger eller forhold mellom pris og tekniske indikatorer. For eksempel, det gylne krysset, kjøp når 50 dagers enkelt glidende gjennomsnitt (sms) krysser over 200 dagers sma og selger når 50 dagene krysser under 200 dagene (dødskorset). Få TradesGraph: Få handler vil bokstavelig talt vise deg handlingene du ville ha gjort hvis du gikk tilbake i tid med et sammendrag av ytelse inkludert. Grafen teller verdien av porteføljen over tid med et medfølgende sammendrag av ytelsen. Ansvarsfraskrivelse: stockbacktest støtter ikke eller anbefaler noen av strategiene eller verdipapirene på dette nettstedet. Innholdet på dette nettstedet er til informasjonsformål og skal ikke tas som investeringsråd. stockbacktest skal ikke holdes ansvarlig for eventuelle feil på dette nettstedet eller tiltak som er tatt ut fra innholdet på denne nettsiden. Bakkestesting av en flytende gjennomsnittsoverskridelse i Python med pandas I den forrige artikkelen om Research Backtesting Environments I Python With Pandas opprettet vi en objektorientert forskning - basert backtesting miljø og testet det på en tilfeldig prognose strategi. I denne artikkelen vil vi gjøre bruk av maskineri vi introduserte for å utføre forskning på en faktisk strategi, nemlig Moving Average Crossover på AAPL. Flytte Gjennomsnittlig Crossover Strategy Den Moving Average Crossover teknikken er en ekstremt kjent, forenklet momentum strategi. Det regnes ofte som Hello World-eksempelet for kvantitativ handel. Strategien som skissert her er langvarig. To separate enkle bevegelige gjennomsnittsfiltre opprettes, med varierende tilbakekallingsperioder, av en bestemt tidsserie. Signaler for å kjøpe eiendelen oppstår når det kortere tilbakegangsgjenomsnittet overstiger det lengre tilbakegående glidende gjennomsnittet. Hvis det lengre gjennomsnittet senere overgår kortere gjennomsnitt, blir aktiva solgt tilbake. Strategien fungerer bra når en tidsserie går inn i en periode med sterk trend og så sakte reverserer trenden. For dette eksempelet har jeg valgt Apple, Inc. (AAPL) som tidsserien, med en kort oversikt over 100 dager og en lang tilbakekalling på 400 dager. Dette er eksemplet fra zipline algoritmiske handelsbiblioteket. Således, hvis vi ønsker å implementere vår egen backtester, må vi sikre at den samsvarer med resultatene i zipline, som et grunnleggende middel for validering. Gjennomføring Sørg for å følge den tidligere opplæringen her. som beskriver hvordan det opprinnelige objekthierarkiet for backtesteren er konstruert, ellers vil koden under ikke fungere. For denne bestemte implementeringen har jeg brukt følgende biblioteker: Implementeringen av macross. py krever backtest. py fra den forrige opplæringen. Det første trinnet er å importere de nødvendige modulene og objektene: Som i den tidligere opplæringen skal vi subclass strategisk abstrakt baseklasse for å produsere MovingAverageCrossStrategy. som inneholder alle detaljer om hvordan man genererer signaler når de bevegelige gjennomsnittene av AAPL krysser over hverandre. Objektet krever en shortwindow og en longwindow å operere. Verdiene er satt til standardverdier på henholdsvis 100 dager og 400 dager, som er de samme parametrene som brukes i hovedeksempelet på zipline. De bevegelige gjennomsnittene opprettes ved å bruke pandas rollingmean-funksjonen på stolpene. Sluttprisen på AAPL-aksjen er avsluttet. Når de individuelle bevegelige gjennomsnittene er blitt konstruert, genereres signalet Serie ved å sette kolonnen lik 1,0 når det korte glidende gjennomsnittet er større enn det lange glidende gjennomsnittet, eller 0,0 ellers. Herfra kan stillingsordrene genereres for å representere handelssignaler. MarketOnClosePortfolio er subclassed fra Portfolio. som finnes i backtest. py. Det er nesten identisk med implementeringen beskrevet i den tidligere opplæringen, med unntak av at handlingene nå utføres på nært hold, i stedet for en åpen til åpen basis. For detaljer om hvordan porteføljeobjektet er definert, se den forrige opplæringen. Ive forlot koden for fullstendig og å holde denne opplæringen selvstendig: Nå som MovingAverageCrossStrategy og MarketOnClosePortfolio-klassene er definert, vil en hovedfunksjon bli kalt for å knytte alle funksjonalitetene sammen. I tillegg vil utførelsen av strategien bli undersøkt via en kurve av egenkapitalkurven. Pandas DataReader-objektet laster ned OHLCV-priser på AAPL-lager for perioden 1. januar 1990 til 1. januar 2002, hvoretter signalene DataFrame er opprettet for å generere langvarige signaler. Deretter genereres porteføljen med en startkapital på 100 000 USD og avkastningen beregnes på egenkapitalkurven. Det endelige trinnet er å bruke matplotlib til å tegne en tofigurert plot av begge AAPL-prisene, overlaid med de bevegelige gjennomsnittene og buysell-signaler, samt egenkapitalkurven med de samme buysell-signalene. Plottingskoden er tatt (og endret) fra zipline implementeringseksemplet. Kodenes grafiske utgang er som følger. Jeg benyttet seg av IPython Paste-kommandoen for å sette dette direkte inn i IPython-konsollen mens du var i Ubuntu, slik at den grafiske utgangen forblir i visning. Den rosa oppturen representerer kjøp av aksjen, mens de svarte downticks representerer å selge den tilbake: Som det kan sees, mister strategien penger over perioden, med fem rundturer. Dette er ikke overraskende gitt AAPLs oppførsel i perioden, noe som var på en liten nedadgående trend, etterfulgt av en signifikant oppgang i 1998. Reflekteringsperioden for de bevegelige gjennomsnittssignalene er ganske stor og dette påvirket resultatet av den endelige handel , som ellers kan ha gjort strategien lønnsom. I etterfølgende artikler vil vi skape et mer sofistikert middel til å analysere ytelse, samt å beskrive hvordan man optimaliserer tilbakekallingsperioder for de enkelte bevegelige gjennomsnittssignaler. Bare Komme i gang med Kvantitativ TradingMoving Gjennomsnittlig Crossover Strategy På denne siden Jeg liker å sammenligne et par bevegelige gjennomsnittsovergangssystemer. En bruker to enkle bevegelige gjennomsnitt (smas) og den andre bruker tre smas. Noen gang tenkt på å bruke et dobbeltgjørende gjennomsnittssystem for handel Hvis du vurderer å bruke dobbeltflytende gjennomsnittsoverskridelser til både å angi og avslutte handler, kan du vurdere å teste et tredobbelt MA-system også. Sammenlign dem side ved side på forskjellige aksjer eller andre handelsinstrumenter, samt ulike tidsperioder eller tidsrammer. Test forskjellige bevegelige gjennomsnittsperioder, men vær forsiktig så du ikke stole på optimaliserte eller kurvpassende resultater. Men siden noen av mine besøkende ikke vet hva dette er, kan vi gå over noen grunnleggende først. HVORDAN EN FLYGGEMIDDEL GJENNOMRÅDE Bildet til høyre er et eksempel på et dobbeltflytende gjennombrudd. Det ville starte et kjøpssignal (bullish crossover). Et raskere bevegelige gjennomsnitt (8 sma - blå) krysser over et langsommere gjennomsnitt (13 sma - gul). Legg merke til at signalet ikke er bekreftet til stengens lukke. Dette betyr at den faktiske oppføringen (i live trading) ville være et sted i den neste linjen. Sannsynligvis i nærheten av åpningen av baren. Hvis du ikke har gjort noen backtesting ennå, vil denne typen enkelt system trolig være en av de første som du skal teste, siden det krever svært lite programmeringsferdigheter. Uansett, hvis du går nedover denne banen, finner du at åpningsprisen for den neste linjen etter krysset, er hvor backtesting programvare (avhengig av innstillingen) vil plassere de simulerte handler. Som er rimelig, fordi hvis du faktisk handlet ved hjelp av automatisert handelsprogramvare. Dette er en nær tilnærming av hvor handelen din skulle finne sted. Med et typisk stopp-omvendt system vil denne lange oppføringen ikke bli avsluttet før den blå, raskere MA krysset under den gule, langsommere MA. Denne MA bearish crossover går ikke bare ut av handel, men starter også en kort handel i motsatt retning. Så, med dual moving gjennomsnittlige crossover systemer, er handelsmannen alltid i en handel, lang eller kort. La oss se på et intradageksempel i løpet av en dag. DUBBEL BEVIKKING AVERAGE CROSSOVER Vel bruk et 5-minutters diagram med SPY med to enkle glidende gjennomsnitt for første eksempel: Rask (8 sma - grønn) og Langsom (13 sma gul). Jeg valgte denne dagen, fordi jeg ønsket å illustrere det som er veldig typisk for praktisk talt enhver glidende gjennomsnittsovergangsstrategi. Den første lange handelen etter klokken 11.00 går veldig bra og faktisk får en god tilbaketrekning. Avkjøringen rundt kl. 12.45 er lønnsom. Men, Id ønsker at du skal observere, er den hakkede priskonkurransen mellom kl. 12:00 og 3:00. Dette er hvor doble MA-systemer virkelig kan miste profittene dine ned. MAs bare whipsaw frem og tilbake forårsaker tre tap på rad, sannsynligvis fordampe fortjenesten fra første handel. Hvis en person handlet denne metoden på denne dagen, ville de heldigvis ha sett en mer anstendig vinnende handel på 2:30. Den gode delen av dette systemet vises på første handel og siste handel. Mens glidende gjennomsnittsoverskridelser mislykkes miserably under hakkete prishandlinger, fungerer de veldig bra under trending pris handling. Hvis du backtest disse enkle stopp - og reverssystemene, og inspiserer en som kommer ut med en fortjeneste, vil du mest sannsynlig finne at vinneren er mindre enn 50, men gjennomsnittlig vinneren vil være større enn gjennomsnittlig taperen. Det er fordi flytende gjennomsnittsovergangssystemer er i hovedsak trendhandelssystemer. Og trend trading systemer har nesten alltid denne karakteristikken for en liten prosentandel av vinnere og et godt ave. win til ave. loss forhold. I diagrammene under L Long, S Short og Ex Exit. TRIPLE MOVING AVERAGE CROSSOVER Hittil har diskusjonen senteret rundt et stop-revers type system, hvorved et signal for en utgang, produserer også en handel i motsatt retning. Men hvis vi introduserer et tredje glidende gjennomsnitt for systemet, kan det være en periode med nøytralitet. Med andre ord skjer ingen handel - du er i kontanter. For dette eksempelet skulle du bruke et 3-minutters diagram og tre enkle bevegelige gjennomsnitt: 4 sma, 10 sma og 50 sma. Reglene er veldig enkle. Hvis den langsomme linjen (50 sma) stiger, og den raske linjen (4 sma) krysser over midtlinjen (10 sma), er det et kjøpesignal. Utgangssignalet kommer når den raske linjen krysser under midtlinjen. Reglene er motsatte for korte oppføringer. Det er lett å se at dette systemet ligner på å ta handelen ut av trenden med en høyere tidsramme. Et alternativ til dette systemet ville være å bare ta lange oppføringer, når både de raske og midtre glidende gjennomsnittene er over den langsomme sma. Vær oppmerksom på at når du arbeider med tre grader av frihet (3 variabler), i stedet for to som i eksempelet ovenfor, gjør du systemet mer komplekst og dermed skaper mange flere mulige kombinasjoner for å teste. Selvfølgelig gjør backtesting programvare dette et snap, men husk at å legge til filtre og kompleksitet gjør ikke alltid et bedre system. Ofte kan et enklere system være mer robust under testing. Et eksempel er nedenfor. Hvis du er interessert i å flytte gjennomsnitt, kan du også sjekke ut siden min om hvordan du bruker flytteverdier som et tilbakestilt stopp.
Comments
Post a Comment