How To Backtest A Trading System
Backtesting: Tolking Past Backtesting er en viktig komponent i effektiv trading-systemutvikling. Det oppnås ved å rekonstruere, med historiske data, handler som ville ha skjedd tidligere, ved bruk av regler som er definert av en gitt strategi. Resultatet gir statistikk som kan brukes til å måle strategiens effektivitet. Ved hjelp av disse dataene kan handelsmenn optimalisere og forbedre sine strategier, finne tekniske eller teoretiske feil, og få tillit til strategien deres før de påføres de virkelige markedene. Den underliggende teorien er at enhver strategi som fungerte bra i det siste, vil trolig fungere godt i fremtiden, og omvendt vil enhver strategi som har gått dårlig i fortiden, sannsynligvis utføre dårlig i fremtiden. Denne artikkelen tar en titt på hvilke applikasjoner som brukes til backtest, hva slags data er oppnådd, og hvordan man bruker den Data og verktøyene Backtesting kan gi rikelig med verdifull statistisk tilbakemelding om et gitt system. Noen universelle backtesting-statistikker inkluderer: Netto fortjeneste eller tap - Netto prosentvis gevinst eller tap. Tidsramme - Tidligere datoer der testingen skjedde. Universe - Aksjer som ble inkludert i backtestet. Volatilitetsmålinger - Maks prosent prosent opp og ned. Gjennomsnitt - Prosent gjennomsnittlig gevinst og gjennomsnittlig tap, gjennomsnittlige barer holdt. Eksponering - Andel av investert kapital (eller eksponert for markedet). Nivåer - Gevinst-til-tap-forhold. Årlig avkastning - Prosentavkastning over et år. Risikojustert avkastning - Prosentavkastning som en funksjon av risiko. Typisk vil backtesting programvare ha to skjermer som er viktige. Den første tillater handelsmannen å tilpasse innstillingene for backtesting. Disse tilpasningene inkluderer alt fra tidsperiode til provisjonskostnader. Her er et eksempel på en slik skjerm i AmiBroker: Den andre skjermen er den faktiske backtesting-resultatrapporten. Her finner du all statistikk som er nevnt ovenfor. Igjen, her er et eksempel på dette skjermbildet i AmiBroker: Generelt inneholder de fleste handelsprogramvarene lignende elementer. Enkelte avanserte programvare inkluderer også tilleggsfunksjonalitet til å utføre automatisk posisjonering, optimalisering og andre mer avanserte funksjoner. De 10 budene Det er mange faktorer som handlerne tar hensyn til når de vurderer handelsstrategier. Her er en liste over de 10 viktigste tingene å huske mens backtesting: Ta hensyn til de brede markedstrendene i tidsrammen der en bestemt strategi ble testet. For eksempel, hvis en strategi bare ble testet tilbake fra 1999-2000, kan det ikke gå bra på et bjørnmarked. Det er ofte en god ide å backtest over en lang tidsramme som omfatter flere forskjellige typer markedsforhold. Ta hensyn til universet der tilbakestesting skjedde. For eksempel, hvis et bredt markedssystem er testet med et univers bestående av tech-aksjer, kan det mislykkes å gjøre det bra i ulike sektorer. Som en generell regel, hvis en strategi er rettet mot en bestemt genre av lager, begrense universet til den genren, men i alle andre tilfeller opprettholde et stort univers for testformål. Volatilitetsforanstaltninger er ekstremt viktige å vurdere i utviklingen av et handelssystem. Dette gjelder spesielt for levererte kontoer, som er utsatt for marginanrop dersom egenkapitalen faller under et bestemt punkt. Traders bør søke å holde volatiliteten lav for å redusere risikoen og muliggjøre lettere overgang inn og ut av et gitt lager. Det gjennomsnittlige antall barer som holdes er også veldig viktig å se når man utvikler et handelssystem. Selv om de fleste backtesting programvare inkluderer provisjonskostnader i de endelige beregningene, betyr det ikke at du bør overse denne statistikken. Hvis det er mulig, kan det hende at gjennomsnittlig antall barer som holdes, reduserer provisjonskostnadene, og forbedrer din generelle avkastning. Eksponering er et dobbeltkantet sverd. Økt eksponering kan føre til høyere fortjeneste eller høyere tap, mens redusert eksponering betyr lavere fortjeneste eller lavere tap. Imidlertid er det generelt en god ide å holde eksponering under 70 for å redusere risiko og muliggjøre lettere overgang inn og ut av et gitt lager. Den gjennomsnittlige gevinstløpsstatistikken, kombinert med vinner-til-tap-forholdet, kan være nyttig for å bestemme optimal plassering og pengestyring ved hjelp av teknikker som Kelly-kriteriet. (Se Money Management ved hjelp av Kelly-kriteriet.) Traders kan ta større stillinger og redusere provisjonskostnader ved å øke sine gjennomsnittlige gevinster og øke deres vinner-til-tap-forhold. Årlig avkastning er viktig fordi den brukes som et verktøy for å benchmark en systemavkastning mot andre investeringssteder. Det er viktig ikke bare å se på den samlede årlige avkastningen, men også å ta hensyn til økt eller redusert risiko. Dette kan gjøres ved å se på den risikojusterte avkastningen, som står for ulike risikofaktorer. Før et handelssystem er vedtatt, må det overgå alle andre investeringssteder med like eller mindre risiko. Backtesting tilpasning er ekstremt viktig. Mange backtesting-applikasjoner har innspill for provisjonsbeløp, runde (eller brøkdelte) masse størrelser, tikkestørrelser, marginkrav, renter, slippage-forutsetninger, stillingsreguleringsregler, same-bar-utgangsreguleringer, (bak) stoppinnstillinger og mye mer. For å få de mest nøyaktige backtesting resultatene, er jeg viktig å justere disse innstillingene for å etterligne megleren som vil bli brukt når systemet går live. Backtesting kan noen ganger føre til noe kjent som overoptimalisering. Dette er en tilstand hvor resultatene avstemmes så høyt til fortiden at de ikke lenger er like nøyaktige i fremtiden. Det er generelt en god ide å implementere regler som gjelder for alle aksjer, eller et utvalg av målrettede aksjer, og er ikke optimalisert i den grad reglene ikke lenger er forståelige av skaperen. Backtesting er ikke alltid den mest nøyaktige måten å måle effektiviteten til et gitt handelssystem. Noen ganger har strategier som har gått bra i det siste, ikke lykkes i det nåværende. Tidligere resultater er ikke en indikasjon på fremtidige resultater. Pass på å papirhandel et system som har blitt suksessfullt testet før du går, for å være sikker på at strategien fortsatt gjelder i praksis. Konklusjon Backtesting er et av de viktigste aspektene ved å utvikle et handelssystem. Hvis det opprettes og tolkes ordentlig, kan det hjelpe handelsmenn å optimalisere og forbedre strategiene, finne tekniske eller teoretiske feil, samt få tillit til strategien deres før de påføres det til de virkelige verdensmarkeder. Ressurser Tradecision (tradecision) - High-end Trading System Development AmiBroker (amibroker) - Budsjett Trading System Development. Artikkel 50 er en forhandlings - og oppgjørsklausul i EU-traktaten som skisserer trinnene som skal tas for ethvert land som. Et første bud på et konkursfirma039s eiendeler fra en interessert kjøper valgt av konkursselskapet. Fra et basseng av tilbudsgivere. Beta er et mål for volatiliteten, eller systematisk risiko, av en sikkerhet eller en portefølje i forhold til markedet som helhet. En type skatt belastet kapitalgevinster pådratt av enkeltpersoner og selskaper. Kapitalgevinst er fortjenesten som en investor. En ordre om å kjøpe en sikkerhet til eller under en spesifisert pris. En kjøpsgrenseordre tillater handelsmenn og investorer å spesifisere. En IRS-regelen (Internal Revenue Service) som tillater straffefri uttak fra en IRA-konto. Regelen krever at. Selv om vårt strategisk etableringsramme har utviklet seg langt utover NT-begrensningene for mange år siden, finner jeg at jeg fortsatt bruker det fra tid til annen, for flere formål, og hvor vi startet, så kanskje jeg kan hjelpe du her. NinjaTrader har sikkert sine feil og mangler, men alle plattformer gjør det, og blant de vanlige handelshandelsplatformene der ute, tror jeg at NT er en av de mest intuitive og enkle, og en av de enkleste å bruke på en effektiv måte rett ut av esken . En av grunnene til dette er NTs strategiveiviser, som gjør det mulig for brukeren å bygge en strategi uten kjennskap til koding, ved hjelp av building blocks for entryexit-tilstand. Jeg gir et eksempel. La oss si at vi ønsker å bygge en strategi som går inn når EMA (eksponentielt glidende gjennomsnitt) i en periode på 15 kryss over SMA (enkelt glidende gjennomsnitt) i en periode på 15, og går ut på markedet nær hver dag. For å gjøre det åpner vi bare strategiveiviseren, tilordner vår strategi et navn og ble konfrontert med følgende skjermbilde, slik at vi kan definere opptil 10 forskjellige sett med forhold som, når de utløses, vil føre til en bestemt handling (vanligvis en oppføring eller utgang): Når vi klikker på tillegget, i toppvinduet ble det konfrontert med følgende skjerm: Som du kan se, har jeg bare valgt EMA til venstre, og SMA til høyre, og Ive har endret våre Periodeverdier for hver til 15. I sentrum har Ive endret rullegardinmenyen til CrossAbove. Hvis du trykker på ok, fyller du den øverste delen av det øverste skjermbildet. Jeg forteller det nå om å skrive inn Long, når denne utløseren oppstår, og klikk Ok: Og det er det. Vi klikker gjennom neste, strategibesparende komposisjoner, og var fri til å teste det for å fastslå sine handelsresultater i den historiske perioden ved hjelp av NT-plattformen. Gitt, dette er en endimensjonal strategi (og det ville absolutt ikke være lønnsomt), men det er et eksempel på hvor lett man kan lage en automatisert handelsstrategi, forutsatt at entryexit-logikken kan kvantifiseres ved hjelp av deres byggeblokkalternativer, som er ganske omfattende hvis du er kreativ. Til slutt kan vi gå gjennom en ekstra funksjon. La oss si at vi ikke var sikre på hvilke bevegelige gjennomsnittlige periodverdier som er optimale, i vår eksempelstrategi. La oss si at vi vil teste flere verdier for å hjelpe oss med å finne ut hvilke verdier som kan være ideelle. For å gjøre det, trykker vi bare tilbake og ble konfrontert med denne skjermen: Som du kan se, har jeg opprettet to variabler, og gitt navnene ovenfor. PeriodOne vil fungere som periodens verdi av vårt EMA-glidende gjennomsnitt, og PeriodTwo vil fungere som periodens verdi av vårt SMA-glidende gjennomsnitt. Nå klikker jeg neste og går tilbake til skjermbildet for inngangsbetingelser, og åpner igjen betingelsesbyggeren, og jeg endrer bare våre 15 verdier til våre nye variabelnavn verdier (henholdsvis PeriodOne og PeriodTwo): Hva dette gjør at vi kan gjøre, lanserer en optimalisering, som vil fortsette å teste forskjellige periodeværdier for begge disse bevegelige gjennomsnittene, og deretter vise resultatene av hver test, for vår inspeksjon. Jeg har gått videre og kjøre denne optimaliseringen, som tok bare et minutt eller to, ved hjelp av råolje og 15 minutters barøkninger som vårt datasett: Som du ser i kolonnen til høyre høyre Parameter, har den testet flere forskjellige kombinasjoner av periodeverdier, og har rangert alle resultater i henhold til den totale netto fortjenesten opptjent over den historiske perioden i vårt testområde (312015 til 112017, i dette tilfellet). Igjen er dette et eksepsjonelt enkelt eksempel, for å illustrere et poeng, men poenget er en gyldig en. spesielt i de tidlige faser, når du eksperimenterer og tester forskjellige ting, kan man gå fra ideen, til en backtest-resultater som viser nøyaktig hva denne ideen ville ha gitt over den historiske perioden, innen få minutter, selv uten programmeringskoding. I tillegg er det en View Code-knapp i noen av skjermbildene ovenfor, som lar deg se tydelig hvordan dine forskjellige utvalgte byggeblokker oversetter til brukbar kode, en flott måte å hjelpe deg med å lære kodingsprosessen over tid. Mitt råd Hoppe rett inn, eksperimentere, lek deg rundt. mye kan læres, raskt og effektivt, ved å gjøre det. spesielt for de som lærer best ved å gjøre. i motsetning til å skape lange, tankefulle, tørre instruksjons tekster. Jeg håper dette er nyttig. Nyt 660 Visninger Middot Vis Oppvoter midtpunkt Ikke for Reproduksjon Du spør hvordan du oppretter et handelssystem på NinjaTrader (NT) og test det igjen. Det kan gjøres, men det er ikke lett. Uten å gå inn i koding og programvare arkitekturdesign, kan jeg bare gi deg en generell ide om hvordan man kan gå om det. Det første trinnet er å skrive et handelssystem. Enkelt sagt består dette av flere deler: (i) skrive en modul som vil inneholde alle de ulike oppsettene for handler du vil utføre (Identifiser tilstanden som utgjør den optimale muligheten til å inngå handel. Dette vil avhenge av på dine kriterier, og du kan ha flere oppsett), (ii) skrive en modul som vil søke etter de oppsettene i dataene dine i sanntid, (iii) skrive en modul som vil katalogisere og lagre oppsettene som finnes i sanntidsdataene, og (iv) skrive en modul som vil utføre en handel basert på noen av disse innstillingene. Dette i seg selv er utfordrende da dette må gjøres i sanntid. I tillegg må du håndtere tilfellene der du finner flere oppsett som kan indikere handler i samme eller motsatte retninger (f. eks. Lang og kort). Du må også vurdere mål, lønnsomhetskriterier for oppstart, stoppe tap og etterfølgende kriterier. Sist men absolutt ikke minst, må du tenke på skalering inn og ut strategier med dine handelsoppsettskriterier. Som en side har jeg ikke engang nevnt verifikasjons - og feilhåndteringskomponenter i koden, som du må adressere også. For å gjøre dette effektivt må du tråkke denne koden. Problemet med å skrive dette i NT er at NT kun støtter en delmengde av C-språket, og gir for øyeblikket kun støtte for 3,5-rammen. Dette betyr at du må skrive den i C som en dll og referere den i NT-koden din. Nå som du har skrevet din dll for å identifisere en handel, må du skrive kode for å utføre handel. NT tilbyr en administrert og en ikke-administrert tilnærming til å gjøre dette. Jeg bruker for tiden og kodes NT, og jeg vil si at denne delen av NT ikke er godt dokumentert - i det minste har jeg ikke funnet det å være, men i all rettferdighet kan du få litt hjelp fra NT-personellet på deres supportforum. Du vil ønske å bruke uhåndtert tilnærming for dette for å få mest mulig fleksibilitet. Selvfølgelig vil du ønske å implementere noen database struktur i koden din for å logge handler. Denne delen av programmet vil også være utfordrende, fordi det er noen problemer du vil møte her. Hver handel må verifiseres, ordrene må sekvenseres og overvåkes ekstremt godt, og din posisjon må overvåkes nøye - spesielt hvis du også planlegger å gå inn i bransjer ved å reversere posisjoner. Nå som du har kommet så langt, kan du skrive en NT-strategi for å teste systemet ditt. Igjen vil den uhåndterte tilnærmingen være mest verdifull her, da den gir mest fleksibilitet for deg. Igjen, denne koden er vanskelig og ikke dokumentert spesielt godt. Det kan imidlertid gjøres. Gratulerer, du er nå ferdig med koding og kan begynne å teste koden din live. Du må kanskje endre koden din for å håndtere sanntidsforhold i live data. Avhengig av markedene du planlegger å handle, må du tenke på hvordan du skal håndtere handel under rapporter, holde posisjoner over natten, handelsgrenser, samt når handel er suspendert av børsen. Forutsatt at du har gjort alt dette, har du nå et testet handelssystem på NT. Som sagt, ikke lett, men det er absolutt gjennomførbart. Etter å ha gjort dette, være forberedt på timer og timer (og timer) av arbeid og testing. Da jeg startet, undervurderte jeg kraftig innsatsen. 1,5k Visninger middot Vis Oppvoter midtpunkt Ikke for Reproduksjon Hvordan backtest trading systemer og unngå kurve montering For å bedømme hvor godt et bestemt handelssystem skal fungere i fremtiden, vi backtest det på tidligere markedsdata. Backtesting gjelder et sett med handelsregler til historiske data for å anslå hvordan disse reglene ville ha utført hvis vi faktisk hadde handlet dem. Gode hypotetiske historiske resultater garanterer ikke at et sett med regler vil fungere godt i fremtiden. Imidlertid betyr dårlige hypotetiske historiske resultater nesten sikkert at et system ikke bør handles i sanntid. Den oppfattede verdien av backtesting er forankret i troen på at historiske tendenser gjentar. Traders har testet strategier på historiske data i generasjoner. Men øvelsen ble populær med adventen av personlige datamaskiner og spesialbygget systemtestingsprogramvare. som System Writer, som utviklet seg til TradeStation. Denne programvaren og en database med historiske data tillot dem uten en kodeskrivende bakgrunn for å teste handelssystemets ideer. Den bredere forståelsen og aksepten av handelssystemer, samt frustrasjonen mange opplevde da de forsøkte å bygge handelssystemer alene, hjalp markedet for tredjepartssystemer til å blomstre gjennom 1990-tallet. Futures Truth er et uavhengig selskap som har sporet kommersielt tilgjengelige handelssystemer siden 1980-tallet. For tiden sporer det mer enn 500 systemer. Futures Truth tester trading systemer i sanntid, ikke på historiske data. Dette forhindrer endring av regler over tid og bedre simulerer regelutførelse i faktiske markedsforhold, for eksempel perioder med høy volatilitet. Ifølge Futures Truth er bare om lag 45 av de spore systemene lønnsomme på lang sikt, mens bare 20 har hatt et godt risikovilkår. Imidlertid er disse tallene sannsynligvis bedre enn de bredere populationrsquos fordi bare de leverandørene som er helt trygge i sin logikk, slår den over til Futures Truth for sanntidsanalyse og offentlig kritikk. Så mange systemer feiler fordi de mangler en gyldig premiss. I stedet kommer inn - og utgangsparametrene fra datautvinning. Data mining skanner bare historiske data for regler som ville ha fungert tidligere. Ofte er slike regler tilpasset nettopp til fortiden og har ikke noe håp om å jobbe noe bedre enn tilfeldig på usynlige data. I stedet bør systemutvikling starte med en teori som kan testes, analyseres og finjusteres for applikasjon. Dette konseptet innebærer også et annet perspektiv på systemtesting selv: Målet med backtesting er ikke å produsere en samling hypotetisk fortjeneste og tapstatistikk. Det er å teste gyldigheten av teorien og nøyaktigheten av reglene for å ta utgangspunkt i premisset. Systemtesting er en flerfasettert prosess fra dataene til tidsskalaen, for å bestemme inntaksforutsetninger, kontraktsdetaljer og risikokontroll. Manglende på noen av disse kan ødelegge en ellers gyldig test mdash eller manipulere dem kan generere resultater som er langt bedre enn hva vi ville oppnå i sanntid. Du må gjøre det riktig hvis du håper å validere mdash eller når det er hensiktsmessig, ugyldiggjør mdash systemet ditt. Verktøy av handel Det er to elementer for backtesting: De riktige verktøyene mdash programvare og data mdash og en vitenskapelig metode for å utvikle systemer som bruker disse verktøyene. Letrsquos starter med å se på verktøyene i handelen. Mange alternativer er tilgjengelige for å teste dine ideer. De adskiller seg i det enkle å skifte ideer til kode og hvordan de håndterer detaljene, noe som kan ha stor innvirkning på resultatene. For eksempel, hvis et system går inn i en grenseordre, registrerer noen programvare en fylling hvis den prisen blir berørt. Imidlertid er det neppe en garanti for at en slik ordre ville ha blitt fylt ut i reell handel, og det er heller ingen garanti for at den blir vunnet. Entering on stops garanterer en oppføring, men ikke en pris. Et annet problem er å registrere reelle priser. Selv om mest profesjonelt utviklet programvare ikke lenger har dette problemet, er det fortsatt en bekymring for de som manuelt tester systemer i regneark, for eksempel Microsoft Excel. For eksempel, hvis et system kjøper på et stopp som er lik det nære pluss en tredjedel av gjennomsnittlig rekkevidde i løpet av de siste tre periodene, og hvis gjennomsnittlig rekkevidde er 10, så kjøper vi på nært pluss 3.333. Hvis vi handler E-mini SampP 500, handler den i 0,25 tick størrelser. Dette betyr at inngangsdifferensialet må runde opp til 3,50. En begynnelsehandler kan ikke innse dette hvis man manuelt knuser tall, og det var ikke så lenge siden at mange profesjonelle programmer gjorde samme feil. Over tid kan en slik feil gi opp til en betydelig forskjell. I det store bildet er imidlertid slike prosessuelle detaljer mindre. Det store problemet er data. Relaterte artiklerHvordan backtest trading system Hello. Jeg er en noobie-forhandler og så langt klarte jeg å få 5k forex demo konto ned til ca 4k i en måned. Jeg er ikke så fornøyd med resultatet, men likevel. Jeg leser om flere handelssystemer, inkludert rapirforex, fantastisk forex system, surfing, 123-froex, surefire forex trading og eksplosive fortjeneste for å nevne noen. Jeg vil gjerne teste dette systemet, og alle andre systemer jeg kan finne ved hjelp av historiske markedsdata. Jeg ser primært på et suksessforhold for ach-systemet. Jeg gjorde noe på nettet, men jeg kan ikke finne noe noe konstruktivt. Hvilken programvare ville jeg trenger å gjøre det. Hvor vil jeg få histiriske valutamarkedsdata. Noen bestemte nettsteder jeg burde chack ut. takk på forhånd. 30 januar 2005, 10:56 Medlem siden Nov 2004 Gå til spreadtrade2win et flott system og forum og alt gratis. 31 Jan 2005, 6:53 am Ble medlem Mar 2004 Opprinnelig skrevet av aberry Gå til spreadtrade2win et flott system og forum og alt gratis. God backtestting programvare, du trenger å gjøre noe programmering for å bruke det tho (som programmering går det ikke så skummelt) Opprinnelig postet av SOCRATES Det er mye diskusjon om handel nettsteder om temaet backtesting. Dette intrigerer og forvirrer meg enormt. Det er også mye diskusjon knyttet til systemer. Hva er disse systemene du snakker om Det virker for meg at du kanskje snakker om å verifisere effektiviteten til en bestemt programvare. Er det riktig Det synes også meg at du kan diskutere fordelene eller demirittene til bestemte metoder. Er det også riktig eller ikke Ja, jeg prøver å teste systemet på historiske data for å finne ut hvor nøyaktig det er i det lange løp. Systemet er ikke en programvare. Det er et handelssystem, det vil si å påpeke gode kjøpesignaler med høyest mulig nøyaktighet basert på tekniske analyser. Og, BTW, jeg er en programmerer ved utdanning, så programmering er ikke et problem for meg. Opprinnelig skrevet av SOCRATES Det er mye diskusjon om handel nettsteder om temaet backtesting. Dette intrigerer og forvirrer meg enormt. Det er også mye diskusjon knyttet til systemer. Hva er disse systemene du snakker om Det virker for meg at du kanskje snakker om å verifisere effektiviteten til en bestemt programvare. Er det riktig Det synes også meg at du kan diskutere fordelene eller demirittene til bestemte metoder. Er det også riktig eller ikke, jeg kan ikke snakke for andre plakater, jeg bruker personlig programvare for testing som et middel til å teste og lære om ulike strategier. Jeg er også en programmør ved handel, så det er en ganske kjent og komfortabel måte å teste ideer mot ekte data på. Jeg antar ikke at bare fordi en strategi jobbet i fortiden, vil det fungere i fremtiden, men jeg antar at det har større sjanse til å gjøre det.
Comments
Post a Comment