Monday, 18 December 2017

How to backtest handel system


Backtesting: Tolkning Tidigare Backtesting är en nyckelkomponent i effektiv handelssystemutveckling. Det uppnås genom att rekonstruera med historiska data, som skulle ha inträffat i det förflutna med hjälp av regler definierade av en given strategi. Resultatet erbjuder statistik som kan användas för att mäta strategins effektivitet. Med hjälp av dessa data kan handlare optimera och förbättra sina strategier, hitta tekniska eller teoretiska brister och få förtroende för sin strategi innan de appliceras på de verkliga marknaderna. Den bakomliggande teorin är att varje strategi som fungerade bra i det förflutna sannolikt kommer att fungera bra i framtiden, och omvänt sett är det sannolikt att någon strategi som utförde dåligt i det förflutna sannolikt kommer att fungera dåligt i framtiden. Den här artikeln tar en titt på vilka applikationer som används för att backtest, vilken typ av data som erhålls och hur man använder den Data och verktygen Backtesting kan ge mycket värdefull statistisk återkoppling om ett visst system. Några universella backtesting statistik inkluderar: Nettoresultat eller förlust - Nettoprocent vinst eller förlust. Tidsram - Tidigare datum då testingen inträffade. Universe - Lager som inkluderades i backtest. Volatilitetsåtgärder - Max procent upp och ner. Medeltal - Procentuell genomsnittlig vinst och genomsnittlig förlust, medelstänger hålls. Exponering - Andel av investerat kapital (eller exponerat för marknaden). Förhållanden - vinst-till-förlustförhållande. Årlig avkastning - Procentuell avkastning över ett år. Riskjusterad avkastning - Procentuell avkastning som en funktion av risken. Typiskt kommer backtesting programvara att ha två skärmar som är viktiga. Den första tillåter näringsidkaren att anpassa inställningarna för backtesting. Dessa anpassningar inkluderar allt från tidsperiod till provisionkostnader. Här är ett exempel på en sådan skärm i AmiBroker: Den andra skärmen är den faktiska backtestingresultatrapporten. Här kan du hitta all statistik som nämns ovan. Återigen, här är ett exempel på den här skärmen i AmiBroker: I allmänhet innehåller de flesta handelsprogrammen liknande element. Vissa avancerade program innehåller även extra funktionalitet för automatisk positionering, optimering och andra mer avancerade funktioner. De 10 buden Det finns många faktorer som handlare uppmärksammar när de backtesting handelsstrategier. Här är en lista över de 10 viktigaste sakerna att komma ihåg vid backtesting: Ta hänsyn till de brett marknadstrender inom tidsramen där en given strategi testades. Till exempel, om en strategi bara backtestades 1999-2000, kanske det inte går bra på en björnmarknad. Det är ofta en bra idé att backtest över en lång tidsram som omfattar flera olika typer av marknadsförhållanden. Ta hänsyn till universum där backtesting inträffade. Till exempel, om ett brett marknadssystem testas med ett universum bestående av tekniska lager, kan det misslyckas att fungera bra inom olika sektorer. Som en allmän regel, om en strategi riktar sig mot en viss genre av lager, begränsa universum till den genren, men i alla andra fall behålla ett stort universum för teständamål. Volatilitetsåtgärder är oerhört viktiga att överväga när man utvecklar ett handelssystem. Detta gäller särskilt för hyrda konton, som utsätts för marginalanrop om deras eget kapital sjunker under en viss punkt. Traders bör försöka hålla volatiliteten låg för att minska risken och möjliggöra enklare övergångar in och ut ur ett visst lager. Det genomsnittliga antalet barer som hålls är också mycket viktigt att titta på när man utvecklar ett handelssystem. Även om de flesta backtestingprogrammen innehåller provisionkostnader i de slutliga beräkningarna betyder det inte att du bör ignorera denna statistik. Om möjligt ökar ditt genomsnittliga antal barer som håller på att minska provisionskostnaderna och förbättra din totala avkastning. Exponering är ett dubbelkantigt svärd. Ökad exponering kan leda till högre vinst eller högre förluster, medan minskad exponering innebär lägre vinst eller lägre förluster. Men i allmänhet är det en bra idé att hålla exponeringen under 70 för att minska risken och möjliggöra enklare övergångar in och ut ur ett visst lager. Den genomsnittliga vinstlösningsstatistiken, kombinerad med vinst-till-förlustförhållandet, kan vara användbar för att bestämma optimal positionsstorlek och penninghantering med hjälp av tekniker som Kelly-kriteriet. (Se Money Management Använda Kelly-kriteriet.) Traders kan ta större positioner och minska provisionskostnaderna genom att öka sina genomsnittliga vinster och öka deras vinst-till-förlustförhållande. Årlig avkastning är viktig eftersom den används som ett verktyg för att benchmarka systemets avkastning mot andra investeringsplatser. Det är viktigt att inte bara titta på den totala årliga avkastningen utan också ta hänsyn till ökad eller minskad risk. Detta kan göras genom att titta på den riskjusterade avkastningen, som står för olika riskfaktorer. Innan ett handelssystem antas måste det överträffa alla andra placeringsplatser med lika eller mindre risk. Backtesting anpassning är oerhört viktigt. Många backtesting-applikationer har inmatning för provisionsbelopp, runda (eller fraktionerade) partstorlekar, fältstorlekar, marginalkrav, räntor, antaganden för släppning, positioneringsstorlekar, same-bar exit-regler, (bakåt) stoppinställningar och mycket mer. För att få de mest exakta backtestingresultaten är det viktigt att ställa in dessa inställningar för att efterlikna mäklaren som kommer att användas när systemet går live. Backtesting kan ibland leda till något som kallas överoptimering. Det här är ett villkor där prestanda resultat är så högt anpassat till det förflutna att de inte längre är lika exakta i framtiden. Det är generellt en bra idé att genomföra regler som gäller för alla lager eller en vald uppsättning riktade lager och är inte optimerade i den utsträckning reglerna inte längre är förståeliga av skaparen. Backtesting är inte alltid det mest exakta sättet att mäta effektiviteten hos ett visst handelssystem. Ibland misslyckas strategier som har fungerat bra tidigare i dag. Tidigare resultat är inte en indikation på framtida resultat. Var noga med att handla ett system som har testats framgångsrikt innan du går live för att vara säker på att strategin fortfarande gäller i praktiken. Slutsats Backtesting är en av de viktigaste aspekterna av att utveckla ett handelssystem. Om de skapas och tolkas ordentligt kan det hjälpa handlare att optimera och förbättra sina strategier, hitta några tekniska eller teoretiska brister, samt få förtroende för sin strategi innan de appliceras på den verkliga världsmarknaden. Resources Tradecision (medbeslutande) - High-end Trading System Development AmiBroker (amibroker) - Budget Trading System Development. Beta är ett mått på volatiliteten, eller systematisk risk, av en säkerhet eller en portfölj i jämförelse med marknaden som helhet. En typ av skatt som tas ut på kapitalvinster som uppkommit av individer och företag. Realisationsvinster är vinsten som en investerare. En beställning att köpa en säkerhet till eller under ett angivet pris. En köpgränsorder tillåter näringsidkare och investerare att specificera. En IRS-reglering (Internal Revenue Service) som tillåter utbetalningar av straff från ett IRA-konto. Regeln kräver det. Den första försäljningen av lager av ett privat företag till allmänheten. IPOs utfärdas ofta av mindre, yngre företag som söker. DebtEquity Ratio är skuldkvot som används för att mäta ett företags ekonomiska hävstångseffekt eller en skuldkvot som används för att mäta en individ. Hur man backtest handelssystem och undviker kurvmontering För att bedöma hur bra ett visst handelssystem ska fungera i framtiden, testar vi det på tidigare marknadsdata. Backtesting tillämpar en uppsättning handelsregler på historiska data för att uppskatta hur dessa regler skulle ha utförts om vi faktiskt hade handlat dem. Goda hypotetiska historiska resultat garanterar inte att en uppsättning regler kommer att fungera bra i framtiden. Men dåliga hypotetiska historiska resultat betyder nästan säkert att ett system inte bör handlas i realtid. Det uppfattade värdet av backtesting är förankrad i tron ​​att historiska tendenser upprepas. Traders har testat strategier på historiska data i generationer. Träningen blev emellertid populär med tillkomsten av persondatorer och systembyggd systemtestning. som System Writer, som utvecklats till TradeStation. Denna programvara och en databas med historiska data tillät dem utan kodskrivande bakgrund för att testa handelssystemets idéer. Den bredare förståelsen och acceptansen av handelssystemen, liksom den frustration som många mötte när man försökte bygga handelssystem på egen hand, hjälpte marknaden för tredjepartssystem att blomstra under 1990-talet. Futures Truth är ett oberoende företag som har spårat kommersiellt tillgängliga handelssystem sedan 1980-talet. För närvarande spårar det mer än 500 system. Futures Sanningstesthandelssystem i realtid, inte på historiska data. Detta förhindrar reglering av regler över tiden och bättre simulerar regelutförande under faktiska marknadsförhållanden, såsom perioder med hög volatilitet. Enligt Futures Truth är endast cirka 45 av de spårade systemen lönsamma på lång sikt, medan endast 20 har uppvisat ett bra riskräntor. Men dessa siffror är sannolikt bättre än de bredare populationrsquos eftersom bara de säljare som verkligen är säkra på sin logik övergår till Futures Truth för realtidsanalys och offentlig kritik. Så många system misslyckas eftersom de saknar en giltig förutsättning. Istället är parametrarna för in - och utträde härledda från data mining. Data mining skannar helt enkelt historiska data för regler som skulle ha fungerat tidigare. Ofta är sådana regler anpassade exakt till det förflutna och har inget hopp att arbeta bättre än slumpmässigt på osynliga data. I stället bör systemutveckling börja med en teori som kan testas, analyseras och finjusteras för applikation. Detta begrepp innebär också ett annat perspektiv på systemtestning själv: Målet med backtesting är inte att producera en samling hypotetisk resultat - och förluststatistik. Det är att testa validiteten av teorin och reglernas noggrannhet när det gäller att ta fram förutsättningen. Systemtestning är en mångfacetterad process från data, till tidsskala, för orderingångsantaganden, kontraktsdetaljer och riskkontroll. Att misslyckas vid någon av dessa kan förstöra en annars giltig testmdash eller att manipulera dem kan generera resultat som är mycket överlägsen än vad vi skulle uppnå i realtid. Du behöver göra det rätt om du hoppas kunna validera mdash eller när det är lämpligt, ogiltigförklara mdash ditt system. Verktyg av handel Det finns två element att backtesting: De rätta verktygen mdash programvara och data mdash och en vetenskaplig metod för att utveckla system med hjälp av dessa verktyg. Letrsquos börjar med att titta på verktygets verktyg. Många alternativ finns tillgängliga för att testa dina idéer. De skiljer sig åt med lätthet att göra idéer till kod och hur de hanterar detaljerna, vilket kan få stor inverkan på resultaten. Till exempel, om ett system går in i en gränsorder, registrerar vissa program en fyllning om det priset berörs. Det finns dock knappast någon garanti att en sådan order skulle ha fyllts i verklig handel, inte heller finns det en garanti som det vore. Inträde på stopp garanterar en post, men inte ett pris. Ett annat problem är att spela in reala priser. Medan mest professionellt utvecklad programvara inte längre har problemet, är det fortfarande ett problem för dem som manuellt testa system i kalkylblad, till exempel Microsoft Excel. Till exempel, om ett system köper på ett stopp som är lika med nära plus en tredjedel av medelintervallet under de senaste tre perioderna, och om medelintervallet är 10, så köper vi i slutet plus 3.333. Om vi ​​handlar E-mini SampP 500, handlar den i 0,25 fackstorlekar. Det betyder att inmatningsskillnaden måste runda upp till 3,50. En nybörjare kanske inte inser det här om man manuellt knackar siffror, och det var inte så länge sedan att många professionella program gjorde samma misstag. Med tiden skulle ett sådant fel kunna ge upphov till en stor skillnad. På den stora bilden är emellertid sådana processuella detaljer mindre. Det stora problemet är data. Relaterade artiklar Även om vår strategi för skapande av strategier har utvecklats långt utöver NTs gränser för många år, tycker jag att jag fortfarande använder det från tid till annan, för flera ändamål, och där vi började, så kanske jag kan hjälpa dig här. NinjaTrader har säkert sina buggar och brister, men alla plattformar gör det, och bland de vanliga detaljhandelsplattformarna där ute tycker jag att NT är en av de mest intuitiva och raka, och en av de enklaste att använda på ett effektivt sätt direkt ur lådan . En av anledningarna till detta är NTs strategiguiden, som tillåter en användare att bygga en strategi utan kännedom om kodning, med hjälp av entryexit-byggnadsblock. Jag ger ett exempel. Låt oss säga att vi vill bygga en strategi som går in när EMA (exponentiell glidande medelvärde) vid en period på 15 kors över SMA (enkelt glidande medelvärde) vid en tid av 15 år och går ut på marknaden närmast varje dag. För att göra det öppnar vi helt enkelt strategihanteraren, tilldelar vår strategi ett namn och konfronteras med följande skärm, vilket gör det möjligt för oss att definiera upp till 10 olika uppsättningar villkor, som vid utlösning leder till en specifik åtgärd (vanligtvis en post eller utgång): När vi klickar på tillägget i toppfönstret konfronterades följande skärm: Som du kan se har jag bara valt EMA till vänster och SMA till höger, och Ive har ändrat våra Periodvärden för var och en till 15. I centrum ändrade Ive rullgardinsvalet till CrossAbove. Om du trycker på ok fyller du den övre delen av den övre skärmdumpen. Jag säger nu att den ska gå in lång, när den här utlösaren inträffar och klicka på Ok: och det är det. Vi klickar igenom nästa, vår strategi sparar kompiler, och var fria att backtest det för att bestämma sina handelsresultat under den historiska perioden, med hjälp av NT-plattformen. Beviljas, det här är en endimensionell strategi (och det skulle verkligen inte vara lönsamt), men det är ett exempel på hur enkelt man kan skapa en automatiserad handelsstrategi, förutsatt att din entryexit-logik kan kvantifieras med hjälp av deras blockeringsalternativ, vilket är ganska omfattande om du är kreativ. Slutligen kan vi gå igenom en enda funktion. Låt oss säga att vi inte är säkra på vilka flytta-genomsnittliga periodvärden är optimala, i vår exempelstrategi. Låt oss säga att vi vill testa flera värden, för att hjälpa oss att bestämma vilka värden som kan vara idealiska. För att göra det, tryckte vi bara tillbaka och konfronterades med den här skärmen: Som du kan se skapade jag två variabler och gav dem namn ovan. PeriodOne kommer att fungera som periodvärdet för vårt EMA-glidande medelvärde, och PeriodTwo kommer att fungera som periodvärdet för vårt SMA-glidande medelvärde. Nu klickar jag på nästa och återgår till vår inställningsskärm och öppnar igen tillståndsbyggaren, och jag ändrar helt enkelt våra 15 värden till våra nya variabelnamnvärden (PeriodOne respektive PeriodTwo): Vad det här gör att vi kan göra, lanserar en optimering som kommer att fortsätta att backtest olika periodvärden för båda dessa glidande medelvärden och därefter visa resultaten av varje test, för vår granskning. Jag har gått framåt och kör denna optimering, som tog bara en minut eller två, med råolja och 15-minuters ökning av baren som vår dataset: Som du kan se i kolumnen till höger, har det testat flera olika kombinationer av periodvärden och har rankat alla resultat i enlighet med den totala nettoresultat som förvärvats under den historiska perioden i vårt testområde (312015 till 112017, i det här fallet). Återigen är detta ett exceptionellt enkelt exempel, för att illustrera en punkt, men poängen är en giltig. speciellt i de tidiga faserna, när du experimenterar och testar olika saker, kan man gå från idéfaser till ett backtestresultat som visar exakt vad den ideen skulle ha givit under den historiska perioden, inom bara några minuter, även utan någon programmeringskodande kunskap. Dessutom finns det en Visa Kod-knapp i några av skärmbilderna ovan, vilket gör att du tydligt kan se hur dina olika valda byggstenar översätter till fungerande kod, ett bra sätt att hjälpa dig att lära dig kodprocessen över tiden. Mitt råd Hoppa precis in, försök, lek runt. en hel del kan läras, snabbt och effektivt, genom att göra det. speciellt för dem som lär sig bäst genom att göra. i motsats till att jaga långa, tänkbara, torra instruktions texter. Jag hoppas att detta är till hjälp. Njut av 654 Visningar i mitten Visa Uppstodsmotiv Inte för reproduktion Du frågar hur man skapar ett handelssystem på NinjaTrader (NT) och testar det igen. Det kan göras men det är inte lätt. Utan att gå in i kodnings - och programvaruarkitekturdesign kan jag bara ge dig en allmän uppfattning om hur man kan gå på det. Det första steget är att skriva ett handelssystem. Enkelt uttryckt består detta av flera delar: (i) Skriv en modul som innehåller alla olika uppsättningar för de affärer du vill utföra (Identifiera villkor som utgör den bästa möjligheten att komma in i en handel. Detta beror på på dina kriterier, och du kan ha flera inställningar), (ii) skriv en modul som söker efter de inställningarna i din data i realtid, (iii) skriv en modul som kommer att katalogisera och spara de inställningar som finns i realtidsdata, och (iv) skriva en modul som kommer att utföra en handel baserad på någon av dessa inställningar. Detta i sig är utmanande eftersom det måste göras i realtid. Dessutom måste du hantera de fall där du hittar flera inställningar som kan indikera handlar i samma eller motsatta riktningar (t. ex. lång och kort). Du måste också överväga mål, lönsamhetskriterier för dina inställningar, sluta förlust och efterföljande kriterier. Sist men inte minst, du måste tänka på inskalning in och ut strategier med dina handelsuppsättningskriterier. Som en sida har jag inte ens nämnt verifierings - och felhanteringskomponenter i koden, som du också behöver adressera. För att göra detta effektivt måste du tråda den här koden. Problemet med att skriva detta i NT är att NT endast stöder en delmängd av C-språket och tillhandahåller för närvarande bara stöd för 3,5-ramverket. Det betyder att du måste skriva den i C som en dll och referera den i din NT-kod. Nu när du har skrivit din dll för att identifiera en handel, måste du skriva kod för att utföra handeln. NT erbjuder ett hanterat och ett omanövrerat tillvägagångssätt för att göra detta. Jag använder för närvarande och kodar NT, och jag kommer att säga att den här delen av NT inte är väl dokumenterad - åtminstone har jag inte funnit det, men i all rättvishet kan du få lite hjälp från NT-personalen på deras supportforum. Du kommer att vilja använda det omanagda tillvägagångssättet för att få den bästa flexibiliteten. Naturligtvis vill du implementera en databasstruktur i din kod för att logga in dina affärer. Den här delen av programmet kommer också att vara utmanande, för det finns några problem du kommer att stöta på här. Varje handel måste verifieras, beställningarna måste sekvenseras och övervakas extremt bra, och din position måste ses noggrant - speciellt om du också planerar att gå in i affärer genom att vända positioner. Nu när du har kommit så långt, kan du skriva en NT-strategi för att backa testet på ditt system. Återigen kommer det omanagda tillvägagångssättet att vara mest värdefullt här eftersom det ger dig mest flexibilitet. Återigen är den här koden knepig och inte dokumenterad särskilt bra. Det kan dock ske. Grattis, du har nu gjort kodning och kan börja testa din kod live. Du kommer kanske behöva ändra din kod för att hantera realtidsvillkor i levande data. Beroende på vilka marknader du planerar att handla, måste du tänka på hur du hanterar handel under rapporter, håller positioner över natten, handelsgränser, samt när handel avbryts av börsen. Förutsatt att du har gjort allt detta, har du nu ett backtestat handelssystem på NT. Som sagt, inte lätt men det är verkligen genomförbart. Har gjort detta, var beredd på timmar och timmar (och timmar) av arbete och testning. När jag började underskattade jag allvarligt den ansträngning som krävdes. 1,5k Visningar mitten Visa Upphöjningar mitten Inte för reproduktionHow att backtest trading system Hej. Jag är en noobie näringsidkare och hittills lyckades jag få 5k forex demo konto ner till ca 4k på en månad. Jag är inte så glad med resultatet, men ändå. Jag läste om flera handelssystem, inklusive rapirforex, fantastiska forex system, surfing, 123-froex, surefire forex trading och explosiva vinster för att nämna några. Jag skulle vilja prova det här systemet och alla andra system som jag kan hitta med historiska marknadsdata. Jag söker primärt ett framgångsförhållande för ach-systemet. Jag sökte på nätet, men jag kan inte hitta någonting något konstruktivt. Vilken mjukvara skulle jag behöva göra det. Var skulle jag få histiriska valutamarknadsdata. Några speciella webbplatser jag ska chack ut. Tack på förhand. 30 jan 2005, 10:56 Anmälde nov 2004 gå till spreadtrade2win ett bra system och forum och alla gratis. 31 jan 2005, 6:53 am Anställd mar 2004 Ursprungligen postat av aberry gå till spreadtrade2win ett bra system och forum och alla gratis. Bra backtestting programvara, måste du göra vissa programmering för att använda den tho (som programmering går inte så läskigt) Ursprungligen postat av SOCRATES Det finns mycket diskussion om handel webbplatser om ämnet backtesting. Detta fascinerar mig och förvirrar mig enormt. Det finns också mycket diskussion kring system. Vad är dessa system du pratar om Det verkar som om du kanske pratar om att verifiera effektiviteten hos en viss programvara. Är det rätt? Det verkar också för mig att du kan diskutera meriterna eller demiriterna av särskilda metoder. Är det också korrekt eller inte Ja, jag försöker testa systemet på historiska data för att ta reda på hur exakt det är på lång sikt. Systemet är inte en programvara. Det är ett handelssystem, det vill säga att det ska påpeka bra buysell signaler med högsta möjliga noggrannhet baserad på tekniska analyser. Och, BTW, jag är en programmerare av utbildning, så programmering är inte ett problem för mig. Ursprungligen postat av SOCRATES Det finns en hel del diskussion om handelswebbplatser om ämnet backtesting. Detta fascinerar mig och förvirrar mig enormt. Det finns också mycket diskussion kring system. Vad är dessa system du pratar om Det verkar som om du kanske pratar om att verifiera effektiviteten hos en viss programvara. Är det rätt? Det verkar också för mig att du kan diskutera meriterna eller demiriterna av särskilda metoder. Är det också korrekt eller inte, jag kan inte prata för andra affischer, jag använder personligen backtestingprogramvara som ett sätt att testa och lära mig om olika strategier. Jag är också en programmerare av handel så det är ett ganska bekant och bekvämt sätt att pröva idéer mot äkta data. Jag antar inte att bara för att en strategi fungerade tidigare skulle det fungera i framtiden men jag antar att det har större chans att göra det.

No comments:

Post a Comment