Backtesting Trading Strategier In Matlab


Mens jeg liker hvor dette spørsmålet går, foreslår jeg å gjøre det litt mer konkret. Hvilke deler av backtesting-prosessen ønsker du å lære? Dette kan variere alt fra bare å estimere en normal avkastning, hvor porteføljen returnerer fra strategien din er allerede gitt til å implementere en full porteføljedannelsesregel algoritmisk. ndash Constantin Des 30 14 kl 21:06 For å være ærlig vet jeg ikke mye om backtesting. Jeg ble fortalt at jeg må backtest nye strategier eller forbedre dagens i løpet av min praktik. Så jeg vil gjerne vite litt mer om emnet før du starter. Hva er de forskjellige delene av det. ndash Maxime 30. desember 14 kl 21:31 Den generelle ideen For aksjer i aksjer vil en enkel backtest vanligvis bestå av to trinn: Beregning av porteføljens avkastning som følge av din porteføljedannelsesregel (eller handelsstrategi) Risikojustering av porteføljens avkastning ved hjelp av en eiendomsprisemodell Trinn 2 er ganske enkelt en regresjon og beregningsmessig veldig enkel i Matlab. Hva er vanskeligere er implementeringen av trinn 1, som vil kreve at du er veldig komfortabel i Matlab, og det er forskjellige måter å gjøre dette på. Hvis du vet hvordan du gjør en OLS-regresjon i Matlab, bør du fokusere på alle typer matrise manipulasjoner. Gjennomføring i Matlab Porteføljedannelse og returberegning For å gi deg et eksempel på hvordan en primitive handelsstrategi kan implementeres i Matlab, antar vi månedlige avkastningsdata og en enhetlig holdingsperiode på en måned på n eiendeler over k perioder hvor jeg er i og k i. Hvis du ikke antar noen endringer i sammensetningen av lageruniverset, er returmatrisen X av dimensjonene k ganger n. X begynner x amp dots amp x amp dots amp x amps dots amp amps vdots amp ddots amp vdots amp ddots amp vdots x amp dots amp x amp dots amp x vdots amp ddots amp vdots amp ddots amp vdoter x amp dots amp x amp dots amp x end Hvor returnerer beregnes som x frac -1. Forutsatt at ditt valgkriterium er en slags lagerkarakteristikk som er tilgjengelig ved månedlig frekvens, vil du også ha en karakteristikkmatrise C. Du kan deretter skrive en algoritme som identifiserer de oppføringene i C som oppfyller ditt valgkriterium (f. eks. Overstige en bestemt terskel ) og erstatte de tilsvarende oppføringene (hvor jeg og t er de samme) av en indikatormatrise I (som er initialisert som nullmatrise ved hjelp av nullfunksjonen) med dem. Du kan da multiplisere oppføringene av I av de av returmatrisen X for å oppnå en matrise R som angir avkastningen som følge av dine beholdninger. Du kan deretter beregne gjennomsnittet av de ikke-null-oppføringene for hver rad av R for å få din vektor av porteføljenes avkastning. Risikojustering og identifikasjon av unormale avkastninger I trinn 2 sammenligner du denne vektoren med den normale avkastningen oppnådd fra regresjonsestimering av en eiendomsprisemodell som den fama-franske modellen. Ved å trekke den normale returvektoren fra porteføljen din returnerer du vektoren, avgjør du om din handelsstrategi har resultert i en positiv unormal avkastning, som er det du søker etter. Anbefalinger Hvis du er ny på Matlab, foreslår jeg personlig at du gjør deg kjent med det for å implementere denne forenklede strategien før du slapper av noen av de forenklende forutsetningene (for eksempel enhetlig holdbarhet og periodicitet) og fortsetter til mer sofistikerte implementeringer. Igjen, det jeg vil understreke er at dette krever at du er veldig komfortabel med Matlab og spesielt de forskjellige måtene å manipulere matriser, noe som kan ta litt tid. Hvis du ikke er pålagt å bruke Matlab for internship og ønsker å få resultater raskt, kan du gjøre trinn 1 i Excel i stedet, noe som er kjedelig, men krever ikke den (verdt) innledende investeringen du må gjøre for Matlab. For å bli kjent med Matlab, er jeg sikker på at du allerede har oppdaget den ekstremt gode dokumentasjonen som følger med den. Det, for meg, er den enkleste verdifulle ressursen og sannsynligvis mer nyttig enn noen flere finansspesifikke ressurser (som jeg vil vente til du er kjent med Matlab selv). Alt som trengs for å bestemme normal avkastning er en OLS-regresjon og en rudimentær forståelse av eiendomsprisemodeller. besvart 30. desember kl. 22: 20Strategy Backtesting Strategi backtesting er et viktig verktøy for å se om strategien din fungerer eller ikke. Backtesting programvare simulerer strategien din for historiske data og gir en backtesting rapport, som lar deg gjennomføre riktig trading system analyse. 64-bitersversjonen lar deg laste inn så mye data som du trenger for selv den mest nøyaktige backtesting. For teknisk informasjon om denne funksjonen, se på den relaterte Wiki-siden. Nøyaktighet er nøkkelen MultiCharts er en løsning skapt spesielt for strategiutvikling og backtesting. Vår filosofi er at strategi-backtesting bør være like realistisk som moderne teknologi tillater. Multicharts 64-bit gjør det mulig å håndtere store mengder Tick-by-Tick-data for presis backtesting. Realistisk backtesting Selv om ingen tilnærming kan være 100 perfekt, har vi gjort alt for å nøyaktig gjenskape forbi markedsforhold og ordreutførelse for strategihandel. Typiske backtesting-motorer har mange antagelser og snarveier, noe som resulterer i urealistisk testing og upålitelige resultater. MultiCharts er en handelsplattform på institusjonsnivå som minimerer antagelser og vurderer mange faktorer. Avansert tech Strategi backtesting trenger ofte mye data, og programvare som er i stand til å behandle det. Multi-threading brukes når du behandler strategioptimalisering i MultiCharts. Den sprer flere oppgaver i forskjellige kjerner, slik at de fullfører mye raskere. 64-biters versjon av MultiCharts lar deg laste inn år og år med kryssdata for detaljerte prisbevegelser. Lett å lese Du kan endre hvordan signalene dine vises på diagrammet ditt, bare noen få klikk. Avslutningsordrer kan kobles til med en synlig linje til alle relaterte oppføringsordrer linjen blir grønn hvis handelen var lønnsom, rød hvis ikke. Hvis du ikke liker disse fargene, eller noe annet visuelt aspekt, kan du enkelt endre det. Velg valuta for backtesting Basisvaluta tillater beregning av fortjeneste og tap under strategien, med en spesifisert valuta for Forex-par eller ikke-amerikanske symboler. Hvis du tester din strategi på et symbol som er basert i en annen valuta enn din meglerkonto, kan du kanskje bruke en valutaomregning. For å gjøre resultatene så nær perfekt som mulig, bruker vi faktiske valutakurser for hver dag. All valutaomregning foregår bak kulissene for å gjøre handelen så enkel som mulig. Vi bruker våre servere til å be om data i bakgrunnen og utføre nødvendige beregninger. Alle viktige faktorer som inngår i vår Backtesting-programvare vurderer følgende viktige faktorer: likviditet, tick-by-tick-prisendringer, prisforskjeller, prisforskjeller, provisjon, slipp, startkapital, rente og handelsstørrelse. Tager likviditet i betraktning Når MultiCharts-motoren kontrollerer en strategi, anerkjenner den at ikke alle grenseordrer vil bli fylt på grunn av mangel på likviditet. Av denne grunn har du mulighet til å fylle bestillinger når et prismål blir truffet, eller når det overskrides med et bestemt antall poeng (pips). Mer informasjon er på vår Wiki-side. Spør, bud og handelspriser Backtesting tar i betraktning at ekte kjøp skjer ved forespørselspriser, ekte salg på budpriser. Dette gjør vår backtesting simulering så realistisk som mulig. Presis Strategi Backtesting kan gi brukeren en mer realistisk emulasjon. For å sikkerhetskopiere høyfrekvente strategier som statistisk arbitrage, kan brukeren måtte ta hensyn til de historiske budsjettdataene i tillegg til de historiske handelsdataene. Tick-by-tick simulering Bar Magnifier er viktig for å øke presisjonen under backtesting. MultiCharts kan konstruere større barer ut av mindre komponenter andre og minutt barer ut av flått, time og dag barer ut av minutter. Du kan gjenskape eksakte prisbevegelser innenfor hver linje ved å bruke Bar Magnifier. For eksempel kan Bar Magnifier usynlig laste minutter som utgjør timen, og strategien vil bli testet i minuttene for minutt. Lær mer tekniske detaljer her. Strategier for umiddelbar praksis MultiCharts backtesting-motoren emulerer til og med markeds-, stopp-, grense-, stoppgrenser og en-kanseller-andre (OCO) - ordrer. Profittmål, stopp og tapestopp er også standard backtesting-funksjoner. I tillegg kommer MultiCharts med mer enn 80 EasyLanguage-strategier, slik at du kan øve backtesting. MatlabTrading Dette innlegget handler om hvor viktig det er å bruke ulike typer optimaliseringsmetoder som genetisk algoritmer og parallellisering for å få resultater raskere. Genetisk algoritmer optimalisering Til tross for at det genetiske (evolusjonære) algoritmenprinsippet er veldig godt forklart i MathWorks webinarer, er eksemplene imidlertid kun brukt for optimalisering av valg av en strategigruppe fra et sett. Dette er et godt eksempel på bruken av disse algoritmene, men det skjer at det er behov for å sette mange variabler med betydelige intervaller for en strategi, du går ikke forbi med en iterasjon og parallellisering av prosesser 8211 beregninger kan ta flere dager . Det er sikkert strategier i sluttfasen av optimalisering. når vi nesten vet at handelsstrategien er vellykket, kan vi vente i flere dager eller leie hele klyngen - resultatet kan være verdt det. Men hvis vi må estimere resultatene av en omfangsrik strategi og bestemme om det er verdt det å bruke tiden, så kan genetiske algoritmer være perfekt egnet. Vi gir mulighet til å bruke tre metoder for å optimalisere strategien i WFAToolbox: Linjær metode 8211 Det er en vanlig sorteringsmodus hvor du vil se alle mellomliggende (suboptimale) resultater. Det gir maksimal nøyaktighet. Parallell metode 8211 alle kjerne av CPUen din vil bli brukt. Det tillater ikke å se mellomresultater, men øker operasjonen betydelig. Det gir maksimal nøyaktighet under økning av beregningshastighet. Genetisk metode 8211 Den bruker den evolusjonære optimaliseringsalgoritmen. Det gjør det mulig å se suboptimale verdier, men gir resultatet nær det beste. Det er ikke en veldig nøyaktig metode, men den er presis nok til den første strategien. Veldig fort. Vi blir ofte spurt om WFAToolbox - Walk-Forward Analysis Toolbox for MATLAB har muligheten til å bruke GPU i beregninger. Dessverre er GPU ikke egnet for alle oppgaver, og bruken er svært spesifikk. For å kunne bruke det, må du justere logikken og koden til hver strategi for grafisk kjernestesting. Dessverre, på grunn av slik ikke-universalitet av metoden kan man ikke bruke GPU i WFAToolbox. Fortsatt del 2 av diskusjonen om problemer og løsninger i testing og analyse av algoritmisk handelsstrategi i MATLAB, inviterer deg til å lese dette innlegget om problem med utilgjengelighet av visualisering av prosessene i moderne programvare løsninger for testing av handelssystemer. Visualisering av testprosessen I min arbeidserfaring analyserte jeg ofte andre populære plattformer for tradingstrategi testing. slik som TradeStation. MetaStock. Multicharts etc., og jeg var alltid overrasket over hvor lite oppmerksomhet ble betalt til visualisering av testprosessen. Saken er at når vi ikke ser resultatene av de mellomliggende, suboptimale verdiene av optimaliserte parametere, kaster vi ofte bort gull sammen med smuss. Saken er på grunn av en altfor bred prøvetaking, justerer strategien parametrene slik vi enten ser en perfekt strategi som feiler i virkeligheten eller ser en eller to avtaler, som angivelig er de beste fordi det ble valgt slike tidsintervalldata der beste handelsstrategi vil være buy-and-hold, men hvorfor er det da andre strategier som er nødvendige for Visualisering av handelsstrategiprøveprosessen i MATLAB (foreslått i webinar) Som et resultat, uten å se mellomresultater, må vi 171blindly187 endre parametrene for å prøve for å få bedre data eller se den i noen 3D eller 4D (farge er den fjerde dimensjonen), som foreslått i webinars. Analysen av verdier i det N-dimensjonale rommet kan definitivt være et alternativ, men har flere begrensninger: Hva om det er mer enn 4 dimensjoner Når du ser hvilke signaler og hvilken frekvens de vises i prisklassen, har du nesten alle nødvendig visuell representasjon av strategien din: transaksjonsfrekvensen, deres lønnsomhet (inntektskurve), nøyaktigheten av åpningen, likheten med andre suboptimale verdier etc. som ikke kan sies om ytelsen i det N-dimensjonale rommet der all nyttig informasjon er faktisk at den optimale verdien ikke bare er en, men det finnes et stort utvalg av suboptimale verdier på ett eller flere områder. Mens optimalisering av en strategi i WFAToolbox 8211 Walk-Forward Analysis Toolbox for MATLAB174. Når en ny optimal verdi er funnet, vises handelsstrategisignalene i perioden i prøve og ut av prøven umiddelbart i diagrammet, slik at du alltid kan kontrollere hvilket utvalg av alternativer du bør tilordne, og du kan også stoppe optimaliseringen uten å vente på slutten av testen, da det blir klart at noe gikk galt eller alt er bra. Hei, jeg heter Igor Volkov. Jeg har utviklet algoritmiske handelsstrategier siden 2006 og har jobbet i flere hedgefond. I denne artikkelen vil jeg diskutere problemer som oppstår på veien for MATLABs handelsstrategiutvikler under testing og analyse, samt å tilby mulige løsninger. Jeg har brukt MATLAB for testing av algoritmestrategier siden 2007, og jeg har kommet til den konklusjon at dette ikke bare er det mest praktiske forskningsverktøyet, men også den mest kraftige fordi det gjør det mulig å bruke komplekse statistiske og økonometriske modeller, nevrale nettverk, maskinlæring, digitale filtre, fuzzy logikk, osv. ved å legge til verktøykasse. MATLAB-språket er ganske enkelt og godt dokumentert, så selv en ikke-programmerer (som meg) kan mestre den. Hvordan det hele startet. Det var 2008 (hvis jeg ikke tar feil) da det første webinaret om algoritmisk handel i MATLAB med Ali Kazaam ble utgitt, og dekket emnet for å optimalisere enkle strategier basert på tekniske indikatorer, etc. til tross for en ganske 8220chaotic8221-kode, var verktøyene interessante nok til å bruke. De tjente som utgangspunkt for forskning og forbedring av en test - og analysemodell som ville tillate å bruke all kraft i verktøykasser og frihet for MATLAB-handlinger under opprettelsen av egne handelsstrategier, samtidig som det ville tillate å kontrollere prosessen av testing og de innhentede dataene og deres etterfølgende analyse ville velge en effektiv portefølje av robuste handelssystemer. Deretter har Mathworks webinarer blitt oppdatert hvert år og gradvis introdusert flere og flere interessante elementer. Dermed ble det første webinaret på parhandel (statistisk arbitrage) ved hjelp av Econometric Toolbox holdt i 2010, selv om verktøykassen for testing og analyse forblir den samme. I 2013 dukket opp Trading Toolbox fra Mathworks som tillot å koble MATLAB til forskjellige meglere for utførelse av deres applikasjoner. Selv om det var automatiske løsninger for gjennomføring av transaksjonene, kunne MATLAB betraktes som et system for å utvikle handelsstrategier med en full syklus: fra data lastet til gjennomføring av automatiserte handelsstrategier. Hvorfor bør hver Algotrader gjenopprette hjulet Mathworks har imidlertid ikke tilbudt en komplett løsning for testing og analyse av strategiene 8211 de kodene som du kunne komme deg ut av webinarer, var de eneste elementene i en full systemtest, og det var nødvendig å endre dem , tilpass dem, og legg dem til GUI for enkel bruk. Det var veldig tidkrevende, og stiller dermed et spørsmål: Uansett hva strategien var, må den gå gjennom samme prosess med testing og analyse, som gjør at den kan klassifiseres som stabil og brukbar 8211 så hvorfor skal hver algotrader gjenoppfinne hjulet og skrive Hisher egen kode for riktig testing strategier i MATLAB Så ble det besluttet å lage et produkt som vil tillate å utføre hele prosessen forbundet med testing og analyse av algoritmiske trading strategier ved hjelp av et enkelt og brukervennlig grensesnitt. Først og fremst vil jeg svare på følgende spørsmål: Hva skjedde med bloggen 1. Jev Kuznetsov er ikke eieren lenger Bloggen ble kjøpt fra vår venn, Jev Kuznetsov, som har flyttet til sin andre blogg tradingwithpython. blogspot. Han konkluderte med at Python er bedre enn MATLAB for handel, som jeg syntes å være falsk. MATLAB er fortsatt en av verdens beste programvare for algoritmiske handelsformål IMHO (jeg har noen fakta om dette skjønt for fremtidig diskusjon). 2. Vi har endret merket Fra dette øyeblikket vil bloggen bli kalt MatlabTrading, som er mye mer forståelig med hensyn til emnene den vil inkludere. Videre er domenenavnet endret til matlabtrading i stedet for den første matlab-trading. blogspot. selv om det gamle domenet fortsatt jobber omdirigere fra det primære domenenavnet. Hva skjer med bloggen 1. Flere innlegg og artikler Vi håper å bringe livet til denne bloggen ved å legge ut relevant innhold en eller to ganger i uken. I de første månedene vil vi legge ut de artikler og videoer som vi allerede har gjort for å gjøre det lettere for våre kjære lesere å søke etter informasjon om en ressurs og ha krysskobling på dem. Da har vi planer om å skrive innlegg om praktiske aspekter ved algoritmisk handel i MATLAB. Hvordan lage moderne automatiske handelsstrategier som: Statistisk arbitrageparhandel betyr reversering av markedsnøytrale handelsstrategier basert på cointegration bollinger band kalman filter etc for varer, aksjer og Forex. Trend etter strategier med Jurik Moving Gjennomsnittlig og andre sofistikerte digitale filtre Forutsette strategier med maskinlæring (Support Vector Machines) og andre metoder Opprette robuste handelsstrategier ved hjelp av visuell fremoverprøving av pengehåndtering for å reinvestere kapitalen din (Vitenskap om hvordan du får 1M fra 10K i et år med maksimal, men estimert risiko og svettebelønninger). Kanskje etter å ha lest dette, har du trodd at dette kommer til å bli en annen dum artikkel for de fattige gutta som søker å bli rik gjennom handel på forex og alt det. Vel, det er helt feil. Vi jobber i MATLAB, og flertallet av oss er forskere og eksperter i det aspektet, så alt er seriøst. 2. Mer interaktivitet Jeg vil være glad hvis vi alle kan forholde seg gjennom kommentarer i innlegg. Abonner på våre nyheter for å bli varslet om de nyeste innleggene og hendelsene. Senere har vi planer om å lage Google Hangouts-webinarer. Ikke gå glipp av det, klikk på Følg-knappen øverst til høyre for å bli med i fellesskapet vårt. Hva vil du lese i våre blogginnlegg Hvilke emner kan du foreslå Vennligst skriv her i kommentarer. I mitt forrige innlegg kom jeg til en konklusjon at nærtliggende parhandel ikke er like lønnsom i dag som det pleide å være før 2010. En leser påpekte at det kunne være at gjennombruddsmessige karakterer bare skiftet mot kortere tidsskalaer . Jeg kommer til å dele den samme ideen, så jeg bestemte meg for å teste denne hypotesen. Denne gangen er bare ett par testet: 100 SPY vs -80 IWM. Backtest utføres på 30 sekunders bardata fra 11.2011 til 12.2012. Reglene er enkle og ligner på strategien jeg testet i det siste innlegget: hvis strekningen av paret overstiger 1 på z-poeng, handler du den neste linjen. Resultatet ser veldig pent ut: Jeg anser dette for å være nok bevis på at det fortsatt er nok av gjennomsnittlig reversering på 30-sekunders skala. Hvis du tror at dette diagrammet er for godt til å være sant, er det dessverre faktisk tilfelle. Ingen transaksjonskostnader eller budspørsmål ble tatt i betraktning. Faktisk ville jeg tvile på at det ville være noe overskudd igjen etter å ha trukket alle handelsutgifter. Likevel, denne typen diagrammer er gulrøtten som dangler foran nesen min, holder meg i gang. Dårlige nyheter alle, ifølge mine beregninger, (som jeg håper er feil) er det klassiske parhandelen død. Noen mennesker vil sterkt være uenige, men her er det jeg fant: La oss ta en hypotetisk strategi som fungerer på en kurv av etfs: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Fra disse etfs 90 unik par kan bli laget. Hvert par er konstruert som et marked-nøytralt spredning. Strategiregler: På hver dag beregner z-score for hvert par basert på 25-dagers standardavvik. Hvis z-score gt-terskel, gå kort, lukk neste dag Hvis z-score lt-terskelen går lang, lukk neste dag For å holde det enkelt, er beregningen gjort uten kapitalstyring (man kan ha opptil 90 par i porteføljen på hver dag). Transaksjonskostnader tas heller ikke i betraktning. For å si det enkelt, følger denne strategien en dags betydning for å gjenopprette naturen av markedsneutrale sprekker. Her simuleres resultatene for flere terskler: Uansett hvilken terskel som brukes, er strategien svært lønnsom i 2008, ganske god i 2009 og helt verdiløs fra begynnelsen av 2010. Dette er ikke første gang jeg kom over denne endringen i gjennombrudd oppførsel i etfs. Uansett hva jeg har prøvd, hadde jeg ikke lykke til å finne en parhandelsstrategi som ville fungere på ETFs i løpet av 2010. Min konklusjon er at disse typer enkle stat-arb-modeller bare ikke kutter det lenger. Suksessfull Backtesting av Algorithmic Trading Strategies - Del I Denne artikkelen fortsetter serien om kvantitativ handel, som startet med Beginners Guide og Strategy Identification. Begge disse lengre, mer involverte artiklene har vært veldig populære, så jeg fortsetter i denne venen og gir detaljer om temaet strategi backtesting. Algoritmisk backtesting krever kunnskap om mange områder, inkludert psykologi, matematikk, statistikk, programvareutvikling og marketexchange mikrostruktur. Jeg kunne ikke håpe å dekke alle disse emnene i en artikkel, så jeg skal dele dem i to eller tre mindre biter. Hva skal vi diskutere i denne delen Jeg begynner med å definere backtesting og da vil jeg beskrive grunnleggende om hvordan det utføres. Da vil jeg belyse de forspenninger vi berørte i Beginners Guide to Quantitative Trading. Neste vil jeg presentere en sammenligning av de ulike tilgjengelige backtesting programvare alternativene. I etterfølgende artikler vil vi se nærmere på detaljer om strategibestemmelser som ofte knapt nevnes eller ignoreres. Vi vil også vurdere hvordan å gjøre backtesting prosessen mer realistisk ved å inkludere idiosyncrasies av en trading utveksling. Da vil vi diskutere transaksjonskostnader og hvordan du skal modellere dem riktig i en backtest-innstilling. Vi vil ende med en diskusjon om utførelsen av våre backtests og endelig gi et eksempel på en felles kvantstrategi, kjent som en gjennomsiktig parhandel. La oss begynne med å diskutere hva backtesting er og hvorfor vi bør utføre det i vår algoritmiske handel. Hva er Backtesting Algoritmisk handel står bortsett fra andre typer investeringsklasser fordi vi på en mer pålitelig måte kan gi forventninger om fremtidig ytelse fra tidligere resultater, som en konsekvens av rikelig datatilgjengelighet. Prosessen som dette utføres er kjent som backtesting. Enkelt sagt blir backtesting utført ved å eksponere din spesifikke strategialgoritme til en strøm av historiske økonomiske data, noe som fører til et sett med handelssignaler. Hver handel (som vi vil bety her for å være en rundtur med to signaler) vil ha en tilknyttet fortjeneste eller tap. Akkumuleringen av denne fortjenesten i løpet av strategien din vil føre til total fortjeneste og tap (også kjent som PL eller PnL). Det er essensen av ideen, selv om djevelen selvfølgelig alltid er i detaljene. Hvilke hovedårsaker til backtesting av en algoritmisk strategi Filtrering - Hvis du husker fra artikkelen om strategiidentifikasjon. Vårt mål i den første undersøkelsen var å sette opp en strategipipeline og deretter filtrere ut en strategi som ikke oppfyller visse kriterier. Backtesting gir oss en annen filtreringsmekanisme, da vi kan eliminere strategier som ikke oppfyller våre ytelsesbehov. Modellering - Backtesting gjør det mulig for oss å (trygt) teste nye modeller av bestemte markedsfenomener, for eksempel transaksjonskostnader, ordreruting, latens, likviditet eller andre markedsmiljøstrukturproblemer. Optimalisering - Selv om strategioptimalisering er full av forstyrrelser, gir backtesting oss mulighet til å øke ytelsen til en strategi ved å endre mengden eller verdiene av parametrene knyttet til den strategien og omberegne ytelsen. Verifisering - Våre strategier er ofte hentet eksternt, via vår strategipipeline. Backtesting en strategi sikrer at den ikke har blitt implementert feil. Selv om vi sjelden vil få tilgang til signaler generert av eksterne strategier, har vi ofte tilgang til resultatene som Sharpe Ratio og Drawdown egenskaper. Dermed kan vi sammenligne dem med vår egen implementering. Backtesting gir en rekke fordeler for algoritmisk handel. Det er imidlertid ikke alltid mulig å returtest en strategi. Generelt, ettersom frekvensen av strategien øker, blir det vanskeligere å korrekt modellisere markedets og børsens mikrostruktureeffekter. Dette fører til mindre pålitelige backtests og dermed en vanskeligere vurdering av en valgt strategi. Dette er et spesielt problem hvor eksekveringssystemet er nøkkelen til strategien, som med ultrahøyfrekvente algoritmer. Dessverre er backtesting fulle av forstyrrelser av alle typer. Vi har rørt noen av disse problemene i tidligere artikler, men vi vil nå diskutere dem i dybden. Forstyrrelser som påvirker strategien Backtests Det er mange forstyrrelser som kan påvirke ytelsen til en backtested strategi. Dessverre har disse forutsetningene en tendens til å oppblåse ytelsen i stedet for å forringe den. Dermed bør du alltid vurdere en backtest å være en idealisert øvre grense på den faktiske utførelsen av strategien. Det er nesten umulig å eliminere forstyrrelser fra algoritmisk handel, så det er vår jobb å minimere dem så godt vi kan for å ta informerte beslutninger om våre algoritmiske strategier. Det er fire store forstyrrelser som jeg ønsker å diskutere: Optimalisering Bias. Forsiktig Bias. Overlevelsesforstyrrelser og psykisk toleranse. Optimalisering Bias Dette er trolig den mest lumske av alle backtest-forstyrrelser. Det innebærer å justere eller introdusere ytterligere handelsparametere til strategiens ytelse på backtest datasettet er veldig attraktivt. Men når leve kan resultatene av strategien være markant annerledes. Et annet navn for denne bias er kurvepassing eller data-snooping bias. Optimeringsforstyrrelser er vanskelig å eliminere ettersom algoritmiske strategier ofte involverer mange parametere. Parametre i dette tilfellet kan være inngangskriterier, tilbakekallingsperioder, gjennomsnittsperioder (dvs. den bevegelige gjennomsnittlige utjevningsparameteren) eller volatilitetsmålingsfrekvensen. Optimaliseringsforstyrrelser kan minimeres ved å holde antall parametere til et minimum og øke mengden datapunkter i treningssettet. Faktisk må man også være forsiktig med sistnevnte, da eldre treningssteder kan bli gjenstand for et tidligere regime (for eksempel et lovgivningsmiljø) og dermed ikke er relevant for din nåværende strategi. En metode for å redusere denne bias er å utføre en følsomhetsanalyse. Dette betyr at parametrene varierer trinnvis og plotter ytelsesytelsen. Lyd, grunnleggende begrunnelse for parametervalg bør med alle andre faktorer anses å føre til en jevnere parameteroverflate. Hvis du har en veldig hoppende ytelsesflate, betyr det ofte at en parameter ikke reflekterer et fenomen og er en gjenstand for testdataene. Det er en stor litteratur om multidimensjonale optimaliseringsalgoritmer, og det er et svært aktivt forskningsområde. Jeg vil ikke dvele på det her, men hold det i bakhodet når du finner en strategi med en fantastisk backtest Look-Ahead Bias Look-ahead bias blir introdusert i et backtesting system når fremtidige data ved et uhell er inkludert i et punkt i simulering der dataene ikke ville ha vært tilgjengelige. Hvis vi kjører backtesten kronologisk, og vi når tidpunkt N, forekommer fremtidsforspenning hvis data er inkludert for noe punkt Nk, hvor k0. Look-ahead bias feil kan være utrolig subtil. Her er tre eksempler på hvordan fremtidsforstyrrelser kan innføres: Tekniske feil - Arrayvektorer i kode har ofte iteratorer eller indeksvariabler. Feilreguleringer av disse indeksene kan føre til en forutgående forspenning ved å inkorporere data ved Nk for ikke-null k. Parameterberegning - Et annet vanlig eksempel på fremtidsforspenning skjer når man beregner optimale strategiparametere, for eksempel med lineære regresjoner mellom to tidsserier. Hvis hele datasettet (inkludert fremtidige data) brukes til å beregne regresjonskoeffisientene, og dermed på en retroaktiv måte brukes til en handelsstrategi for optimalisering, blir fremtidige data innarbeidet, og en forutgående forspenning eksisterer. MaximaMinima - Visse handelsstrategier gjør bruk av ekstreme verdier i en hvilken som helst tidsperiode, for eksempel å inkorporere høye eller lave priser i OHLC-data. Men siden disse maksimalminimalverdiene bare kan beregnes i slutten av en tidsperiode, innføres en blikkprøveforventning hvis disse verdiene brukes - i løpet av den nåværende perioden. Det er alltid nødvendig å lagre highlow-verdier med minst en periode i enhver handelsstrategi som bruker dem. Som med optimaliseringsforstyrrelser, må man være svært forsiktig med å unngå introduksjonen. Det er ofte den viktigste grunnen til at handelsstrategier undergraver sine backtests betydelig i live trading. Survivorship Bias Survivorship bias er et spesielt farlig fenomen og kan føre til betydelig oppblåst ytelse for bestemte strategityper. Det oppstår når strategier testes på datasett som ikke inkluderer hele universet av tidligere eiendeler som kan ha blitt valgt på et bestemt tidspunkt, men bare vurdere de som har overlevd til nåværende tid. For eksempel, vurder å teste en strategi for et tilfeldig utvalg av aksjer før og etter 2001-markedet. Noen teknologilager gikk konkurs, mens andre klarte å holde seg flytende og til og med blomstre. Hvis vi hadde begrenset denne strategien bare til aksjer som gjorde det gjennom markedsutvinningsperioden, ville vi innføre en overlevelsesforstyrrelser fordi de allerede har demonstrert deres suksess for oss. Faktisk er dette bare et annet spesifikt tilfelle av fremtidsforspenning, da fremtidig informasjon blir innlemmet i tidligere analyse. Det er to hovedveier for å redusere overlevelsesforstyrrelser i strategistøttene dine: Survivorship Bias Free Datasets - I tilfelle av egenkapitaldata er det mulig å kjøpe datasett som inkluderer avnoterte enheter, selv om de ikke er billige og bare pleier å bli benyttet av institusjonelle firmaer . Spesielt er Yahoo Finance-data ikke overlevert bias gratis, og dette brukes ofte av mange forhandlere av algo-handelsfolk. Man kan også handle på aktivaklasser som ikke er tilbøyelige til overlevelse, slik som visse varer (og deres fremtidige derivater). Bruk mer nylige data - For aksjer reduserer bruk av et nyere datasett muligheten for at aksjeseleksjonen er vektet til overlevende, ganske enkelt fordi det er mindre sannsynlighet for total avnotering av aksjer i kortere tidsperioder. Man kan også begynne å bygge et personlig overlevelses-bias-datasett ved å samle inn data fra nåværende punkt videre. Etter 3-4 år vil du ha et solidt overlevelses-bias-fritt sett med aksjedata for å backtest videre strategier. Vi vil nå vurdere visse psykologiske fenomener som kan påvirke din trading ytelse. Psykologisk toleranse Bias Disse spesielle fenomenene diskuteres ikke ofte i forbindelse med kvantitativ handel. Det diskuteres imidlertid mye med hensyn til mer skjønnsmessige handelsmetoder. Det har forskjellige navn, men jeg bestemte meg for å kalle det psykisk toleranseforstyrrelser fordi det fanger essensen av problemet. Når du oppretter backtests over en periode på 5 år eller mer, er det enkelt å se på en oppadgående egenkapitalkurve, beregne den sammensatte årlige avkastningen, Sharpe-forholdet og til og med trekkegenskaper og være fornøyd med resultatene. Som et eksempel kan strategien ha en maksimal relativ drawdown på 25 og en maksimal trekkvarighet på 4 måneder. Dette ville ikke være atypisk for en momentumstrategi. Det er greit å overbevise seg om at det er lett å tolerere slike perioder med tap fordi det generelle bildet er rosenrødt. Men i praksis er det langt vanskeligere Hvis historiske trekk på 25 eller flere forekommer i backtestene, så vil du med all sannsynlighet se perioder med tilsvarende drawdown i live trading. Disse periodene med drawdown er psykologisk vanskelig å tåle. Jeg har observert første hånd hva en utvidet drawdown kan være, i en institusjonell setting, og det er ikke hyggelig - selv om backtestene tyder på at slike perioder vil oppstå. Grunnen til at jeg har betegnet det er en forspenning er at ofte en strategi som ellers ville lykkes, blir stoppet fra handel i tider med utvidet drawdown og dermed vil føre til betydelig underprestering i forhold til en backtest. Selv om strategien er algoritmisk i naturen, kan psykologiske faktorer fremdeles ha stor innflytelse på lønnsomheten. Takeaway er å sikre at hvis du ser drawdowns av en viss prosentandel og varighet i backtestene, bør du forvente at de skal skje i live tradingmiljøer, og må fortsette for å oppnå lønnsomhet en gang til. Programvarepakker for Backtesting Programvarelandskapet for strategi backtesting er enorm. Løsninger spenner fra fullstendig integrert institusjonell sofistikert programvare til programmeringsspråk som C, Python og R, hvor nesten alt må skrives fra bunnen av (eller passende plugins oppnådd). Som kvanthandlere er vi interessert i balansen mellom å være i stand til å eie vår handelssteknologistakk versus hastigheten og påliteligheten til vår utviklingsmetode. Her er de viktigste hensynene til programvarevalg: Programmeringsevner - Valget av miljø vil i stor grad komme ned til din evne til å programmere programvare. Jeg vil hevde at å være i kontroll over den totale stabelen vil ha større effekt på din langsiktige PL enn å outsourcing så mye som mulig til leverandørprogramvare. Dette skyldes ulemperrisikoen for å ha eksterne feil eller idiosyncrasier som du ikke klarer å fikse i leverandørprogramvare, noe som ellers lett kunne løses hvis du hadde mer kontroll over din tech stack. Du vil også ha et miljø som oppnår den rette balansen mellom produktivitet, tilgjengelighet for bibliotek og utførelseshastighet. Jeg lager min egen personlige anbefaling nedenfor. Execution CapabilityBroker Interaction - Visse backtesting programvare, for eksempel Tradestation, binder direkte med en megling. Jeg er ikke en fan av denne tilnærmingen, da redusering av transaksjonskostnader ofte er en stor del av å få et høyere Sharpe-forhold. Hvis du er bundet til en bestemt megler (og Tradestation tvinger deg til å gjøre dette), vil du få en vanskeligere overgang til ny programvare (eller en ny megler) hvis behovet oppstår. Interaktive meglere gir en API som er robust, om enn med et litt stødig grensesnitt. Tilpasning - Et miljø som MATLAB eller Python gir deg stor fleksibilitet når du oppretter algo-strategier, da de gir fantastiske biblioteker til nesten alle matematiske operasjoner som er tenkelige, men tillater også omfattende tilpasning der det er nødvendig. Strategi Kompleksitet - Visse programmer bare ikke kutte ut for tunge nummer crunching eller matematisk kompleksitet. Excel er et slikt stykke programvare. Selv om det er bra for enklere strategier, kan det egentlig ikke takle mange eiendeler eller mer kompliserte algoritmer, med fart. Bias Minimization - Låner et bestemt stykke programvare eller data seg mer til handelsforstyrrelser Du må sørge for at hvis du vil lage all funksjonalitet selv, at du ikke introduserer feil som kan føre til forstyrrelser. Hastighet for utvikling - Man bør ikke bruke måneder og måneder til å implementere en backtest-motor. Prototyping bør bare ta noen uker. Pass på at programvaren din ikke hindrer fremgangen din i stor grad, bare for å få tak i noen ekstra prosentpoeng av eksekveringshastighet. C er elefanten i rommet her Utførelseshastighet - Hvis strategien din er helt avhengig av eksekveringsaktualitet (som i HFTUHFT), vil et språk som C eller C være nødvendig. Imidlertid vil du være opptatt av Linux-kjerneoptimalisering og FPGA-bruk for disse domenene, som ligger utenfor rammen av denne artikkelen. Kostnad - Mange av programvaremiljøene du kan programmere algoritmiske handelsstrategier med, er helt gratis og åpen kildekode. Faktisk gjør mange hedgefond bruk av åpen kildekode-programvare for hele algo trading stacks. I tillegg er Excel og MATLAB begge relativt billige, og det finnes til og med gratis alternativer til hver. Nå som vi har listet opp kriteriene som vi trenger å velge programvareinfrastruktur, vil jeg kjøre gjennom noen av de mer populære pakkene og hvordan de sammenligner: Merk: Jeg skal bare inkludere programvare som er tilgjengelig for de fleste forhandlere og programvareutviklere, da dette er leseren av nettstedet. Mens annen programvare er tilgjengelig, for eksempel de mer institusjonelle verktøyene, føler jeg at disse er for dyrt for å bli brukt effektivt i en detaljhandel, og jeg har ingen erfaring med dem. Backtesting Software Comparison Beskrivelse: Språk på høyt nivå designet for utviklingshastighet. Bredt utvalg av biblioteker for nesten enhver programmatisk oppgave å tenke seg. Oppnå bredere aksept i hedgefond og investeringsbank samfunn. Ikke helt så fort som CC for eksekveringshastighet. Gjennomføring: Python plugins finnes for større meglere, som Interactive Brokers. Derfor kan backtest og exekveringssystem alle være en del av samme tech stack. Tilpassing: Python har et veldig sunt utviklingssamfunn og er et modent språk. NumPySciPy gir rask vitenskapelig databehandling og statistisk analyseverktøy som er relevant for kvanthandel. Strategi Kompleksitet: Mange plugins eksisterer for de viktigste algoritmer, men ikke helt like stort et kvant-fellesskap som eksisterer for MATLAB. Bias Minimization: Samme bias minimeringsproblemer eksisterer som for alle høynivå språk. Trenger å være ekstremt forsiktig med testing. Utviklingshastighet: Pythons største fordel er utviklingshastighet, med robust innebygget testingskapasitet. Utføringshastighet: Ikke like rask som C, men vitenskapelige databehandlingskomponenter er optimalisert, og Python kan snakke med innfødt C-kode med visse plugins. Kostnad: FreeOpen Kilde Beskrivelse: Eldre språk på høyt nivå designet for hastighet av utførelse. Bredt utvalg av kvantitative finans - og numeriske biblioteker. Hardere å feilsøke og tar ofte lengre tid å implementere enn Python eller MATLAB. Ekstremt utbredt i både kjøp og salg. Utførelse: De fleste meglerprogrammer er skrevet i C og Java. Dermed finnes mange plugins. Tilpasning: CC gir direkte tilgang til underliggende minne, og dermed kan ultrahøyfrekvensstrategier implementeres. Strategi Kompleksitet: C STL gir et bredt utvalg av optimaliserte algoritmer. Nesten enhver spesialisert matematisk algoritme besitter en fri, åpen kildekode-CC-implementering på nettet. Bias Minimization: Forsiktig forspenning kan være vanskelig å eliminere, men ikke vanskeligere enn andre høyt språk. Gode ​​feilsøkingsverktøy, men man må være forsiktig når man arbeider med underliggende minne. Utviklingshastighet: C er ganske ordentlig i forhold til Python eller MATLAB for samme algoritme. Flere linjer av kode (LOC) fører ofte til større sannsynlighet for feil. Utføringshastighet: CC har ekstremt hurtig eksekveringshastighet og kan være godt optimalisert for spesifikke beregningsarkitekturer. Dette er hovedgrunnen til å utnytte det. Kostnad: Ulike kompilatorer: LinuxGCC er gratis, MS Visual Studio har forskjellige lisenser. Ulike strategier vil kreve forskjellige programvarepakker. HFT og UHFT strategier vil bli skrevet i CC (i disse dager utføres de ofte på GPUer og FPGAer), mens lavfrekvente retningsbestemte egenkapitalstrategier er enkle å implementere i TradeStation, på grunn av alt i en art av programvarebrokerage. Min personlige preferanse er for Python, da den gir riktig grad av tilpasning, utviklingshastighet, testingskapasitet og eksekveringshastighet for mine behov og strategier. Hvis jeg trenger noe raskere, kan jeg slippe inn til C direkte fra mine Python-programmer. En metode favorisert av mange kvanthandlere er å prototype deres strategier i Python og deretter konvertere de langsommere utførelseseksjonene til C på en iterativ måte. Til slutt er hele algoet skrevet i C og kan stå alene for handel. I de neste artiklene om backtesting vil vi se på enkelte problemer rundt implementeringen av et algoritmisk trading backtesting system, samt hvordan å innlemme effektene av handelsutveksling. Vi vil diskutere måling av strategisk ytelse og til slutt konkludere med en eksempelstrategi. Bare Komme i gang med kvantitativ TradingBacktesting Bekreft dine økonomiske modeller med historiske data Backtesting er et rammeverk som bruker historiske data til å validere finansielle modeller, inkludert handelsstrategier og risikostyringsmodeller. Avhengig av målene for validering, bruker finansiell profesjon mer enn en indikator eller metode for å måle effektiviteten av finansielle modeller. Backtesting utføres rutinemessig i trading og risikostyring. Som et resultat er det en rekke dedikerte backtesting-teknikker som er spesifikke for disse to områdene. I handel omfatter felles backtesting teknikker: In-sample vs testing utenfor prøving Walk-forward analyse eller walk-forward optimalisering Instrument nivå analyse versus portefølje nivå vurdering I risikostyring, er backtesting generelt brukt til verdi-at - risk (VaR) og er også kjent som VaR-backtesting. Det finnes ulike VaR-backtesting teknikker som: Basler trafikklys test Binomial test Kupiecs andel av feil test Kupiecs tid til første feil test Christoffersens betinget dekning blandet test Christoffersens betinget dekning uavhengighet test Haas tid mellom feil eller blandet Kupiec test Haas tid mellom feil uavhengighet test Velg ditt land Mens jeg liker hvor dette spørsmålet går, foreslår jeg å gjøre det litt mer konkret. Hvilke deler av backtesting-prosessen ønsker du å lære? Dette kan variere alt fra bare å estimere en normal avkastning, hvor porteføljen returnerer fra strategien din er allerede gitt til å implementere en full porteføljedannelsesregel algoritmisk. ndash Constantin Des 30 14 kl 21:06 For å være ærlig vet jeg ikke mye om backtesting. Jeg ble fortalt at jeg må backtest nye strategier eller forbedre dagens i løpet av min praktik. Så jeg vil gjerne vite litt mer om emnet før du starter. Hva er de forskjellige delene av det. ndash Maxime 30. desember 14 kl 21:31 Den generelle ideen For aksjer i aksjer vil en enkel backtest vanligvis bestå av to trinn: Beregning av porteføljens avkastning som følge av din porteføljedannelsesregel (eller handelsstrategi) Risikojustering av porteføljens avkastning ved hjelp av en eiendomsprisemodell Trinn 2 er ganske enkelt en regresjon og beregningsmessig veldig enkel i Matlab. Hva er vanskeligere er implementeringen av trinn 1, som vil kreve at du er veldig komfortabel i Matlab, og det er forskjellige måter å gjøre dette på. Hvis du vet hvordan du gjør en OLS-regresjon i Matlab, bør du fokusere på alle typer matrise manipulasjoner. Gjennomføring i Matlab Porteføljedannelse og returberegning For å gi deg et eksempel på hvordan en primitive handelsstrategi kan implementeres i Matlab, antar vi månedlige avkastningsdata og en enhetlig holdingsperiode på en måned på n eiendeler over k perioder hvor jeg er i og k i. Hvis du ikke antar noen endringer i sammensetningen av lageruniverset, er returmatrisen X av dimensjonene k ganger n. X begynner x amp dots amp x amp dots amp x amps dots amp amps vdots amp ddots amp vdots amp ddots amp vdots x amp dots amp x amp dots amp x vdots amp ddots amp vdots amp ddots amp vdoter x amp dots amp x amp dots amp x end Hvor returnerer beregnes som x frac -1. Forutsatt at ditt valgkriterium er en slags lagerkarakteristikk som er tilgjengelig ved månedlig frekvens, vil du også ha en karakteristikkmatrise C. Du kan deretter skrive en algoritme som identifiserer de oppføringene i C som oppfyller ditt valgkriterium (f. eks. Overstige en bestemt terskel ) og erstatte de tilsvarende oppføringene (hvor jeg og t er de samme) av en indikatormatrise I (som er initialisert som nullmatrise ved hjelp av nullfunksjonen) med dem. Du kan da multiplisere oppføringene av I av de av returmatrisen X for å oppnå en matrise R som angir avkastningen som følge av dine beholdninger. Du kan deretter beregne gjennomsnittet av de ikke-null-oppføringene for hver rad av R for å få din vektor av porteføljenes avkastning. Risikojustering og identifikasjon av unormale avkastninger I trinn 2 sammenligner du denne vektoren med den normale avkastningen oppnådd fra regresjonsestimering av en eiendomsprisemodell som den Fama-franske modellen. Ved å trekke den normale returvektoren fra porteføljen din returnerer du vektoren, avgjør du om din handelsstrategi har resultert i en positiv unormal avkastning, som er det du søker etter. Anbefalinger Hvis du er ny på Matlab, foreslår jeg personlig at du gjør deg kjent med det for å implementere denne forenklede strategien før du slapper av noen av de forenklende forutsetningene (for eksempel enhetlig holdbarhet og periodicitet) og fortsetter til mer sofistikerte implementeringer. Igjen, det jeg vil understreke er at dette krever at du skal være veldig komfortabel med Matlab og spesielt de forskjellige måtene å manipulere matriser, noe som kan ta litt tid. Hvis du ikke er pålagt å bruke Matlab for internship og ønsker å få resultater raskt, kan du gjøre trinn 1 i Excel i stedet, noe som er kjedelig, men krever ikke den (verdt) innledende investeringen du må gjøre for Matlab. For å bli kjent med Matlab, er jeg sikker på at du allerede har oppdaget den ekstremt gode dokumentasjonen som følger med den. Det, for meg, er den enkleste verdifulle ressursen og sannsynligvis mer nyttig enn noen flere finansspesifikke ressurser (som jeg vil vente til du er kjent med Matlab selv). Alt som trengs for å bestemme normal avkastning er en OLS-regresjon og en rudimentær forståelse av eiendomsprisemodeller. besvart 30. desember kl. 22: 20Successful Backtesting of Algorithmic Trading Strategies - Del I Denne artikkelen fortsetter serien om kvantitativ handel, som startet med Beginners Guide og Strategy Identification. Begge disse lengre, mer involverte artiklene har vært veldig populære, så jeg fortsetter i denne venen og gir detaljer om temaet strategi backtesting. Algoritmisk backtesting krever kunnskap om mange områder, inkludert psykologi, matematikk, statistikk, programvareutvikling og marketexchange mikrostruktur. Jeg kunne ikke håpe å dekke alle disse emnene i en artikkel, så jeg skal dele dem i to eller tre mindre biter. Hva skal vi diskutere i denne delen Jeg begynner med å definere backtesting og da vil jeg beskrive grunnleggende om hvordan det utføres. Then I will elucidate upon the biases we touched upon in the Beginners Guide to Quantitative Trading. Next I will present a comparison of the various available backtesting software options. In subsequent articles we will look at the details of strategy implementations that are often barely mentioned or ignored. We will also consider how to make the backtesting process more realistic by including the idiosyncrasies of a trading exchange . Then we will discuss transaction costs and how to correctly model them in a backtest setting. We will end with a discussion on the performance of our backtests and finally provide an example of a common quant strategy, known as a mean-reverting pairs trade . Lets begin by discussing what backtesting is and why we should carry it out in our algorithmic trading. What is Backtesting Algorithmic trading stands apart from other types of investment classes because we can more reliably provide expectations about future performance from past performance, as a consequence of abundant data availability. The process by which this is carried out is known as backtesting . In simple terms, backtesting is carried out by exposing your particular strategy algorithm to a stream of historical financial data, which leads to a set of trading signals . Each trade (which we will mean here to be a round-trip of two signals) will have an associated profit or loss. The accumulation of this profitloss over the duration of your strategy backtest will lead to the total profit and loss (also known as the PL or PnL). That is the essence of the idea, although of course the devil is always in the details What are key reasons for backtesting an algorithmic strategy Filtration - If you recall from the article on Strategy Identification. our goal at the initial research stage was to set up a strategy pipeline and then filter out any strategy that did not meet certain criteria. Backtesting provides us with another filtration mechanism, as we can eliminate strategies that do not meet our performance needs. Modelling - Backtesting allows us to (safely) test new models of certain market phenomena, such as transaction costs, order routing, latency, liquidity or other market microstructure issues. Optimisation - Although strategy optimisation is fraught with biases, backtesting allows us to increase the performance of a strategy by modifying the quantity or values of the parameters associated with that strategy and recalculating its performance. Verification - Our strategies are often sourced externally, via our strategy pipeline . Backtesting a strategy ensures that it has not been incorrectly implemented. Although we will rarely have access to the signals generated by external strategies, we will often have access to the performance metrics such as the Sharpe Ratio and Drawdown characteristics. Thus we can compare them with our own implementation. Backtesting provides a host of advantages for algorithmic trading. However, it is not always possible to straightforwardly backtest a strategy. In general, as the frequency of the strategy increases, it becomes harder to correctly model the microstructure effects of the market and exchanges. This leads to less reliable backtests and thus a trickier evaluation of a chosen strategy. This is a particular problem where the execution system is the key to the strategy performance, as with ultra-high frequency algorithms. Unfortunately, backtesting is fraught with biases of all types. We have touched upon some of these issues in previous articles, but we will now discuss them in depth. Biases Affecting Strategy Backtests There are many biases that can affect the performance of a backtested strategy. Unfortunately, these biases have a tendency to inflate the performance rather than detract from it. Thus you should always consider a backtest to be an idealised upper bound on the actual performance of the strategy. It is almost impossible to eliminate biases from algorithmic trading so it is our job to minimise them as best we can in order to make informed decisions about our algorithmic strategies. There are four major biases that I wish to discuss: Optimisation Bias . Look-Ahead Bias . Survivorship Bias and Psychological Tolerance Bias . Optimisation Bias This is probably the most insidious of all backtest biases. It involves adjusting or introducing additional trading parameters until the strategy performance on the backtest data set is very attractive. However, once live the performance of the strategy can be markedly different. Another name for this bias is curve fitting or data-snooping bias. Optimisation bias is hard to eliminate as algorithmic strategies often involve many parameters. Parameters in this instance might be the entryexit criteria, look-back periods, averaging periods (i. e the moving average smoothing parameter) or volatility measurement frequency. Optimisation bias can be minimised by keeping the number of parameters to a minimum and increasing the quantity of data points in the training set. In fact, one must also be careful of the latter as older training points can be subject to a prior regime (such as a regulatory environment) and thus may not be relevant to your current strategy. One method to help mitigate this bias is to perform a sensitivity analysis . This means varying the parameters incrementally and plotting a surface of performance. Sound, fundamental reasoning for parameter choices should, with all other factors considered, lead to a smoother parameter surface. If you have a very jumpy performance surface, it often means that a parameter is not reflecting a phenomena and is an artefact of the test data. There is a vast literature on multi-dimensional optimisation algorithms and it is a highly active area of research. I wont dwell on it here, but keep it in the back of your mind when you find a strategy with a fantastic backtest Look-Ahead Bias Look-ahead bias is introduced into a backtesting system when future data is accidentally included at a point in the simulation where that data would not have actually been available. If we are running the backtest chronologically and we reach time point N, then look-ahead bias occurs if data is included for any point Nk, where k0. Look-ahead bias errors can be incredibly subtle. Here are three examples of how look-ahead bias can be introduced: Technical Bugs - Arraysvectors in code often have iterators or index variables. Incorrect offsets of these indices can lead to a look-ahead bias by incorporating data at Nk for non-zero k. Parameter Calculation - Another common example of look-ahead bias occurs when calculating optimal strategy parameters, such as with linear regressions between two time series. If the whole data set (including future data) is used to calculate the regression coefficients, and thus retroactively applied to a trading strategy for optimisation purposes, then future data is being incorporated and a look-ahead bias exists. MaximaMinima - Certain trading strategies make use of extreme values in any time period, such as incorporating the high or low prices in OHLC data. However, since these maximalminimal values can only be calculated at the end of a time period, a look-ahead bias is introduced if these values are used - during - the current period. It is always necessary to lag highlow values by at least one period in any trading strategy making use of them. As with optimisation bias, one must be extremely careful to avoid its introduction. It is often the main reason why trading strategies underperform their backtests significantly in live trading. Survivorship Bias Survivorship bias is a particularly dangerous phenomenon and can lead to significantly inflated performance for certain strategy types. It occurs when strategies are tested on datasets that do not include the full universe of prior assets that may have been chosen at a particular point in time, but only consider those that have survived to the current time. As an example, consider testing a strategy on a random selection of equities before and after the 2001 market crash. Some technology stocks went bankrupt, while others managed to stay afloat and even prospered. If we had restricted this strategy only to stocks which made it through the market drawdown period, we would be introducing a survivorship bias because they have already demonstrated their success to us. In fact, this is just another specific case of look-ahead bias, as future information is being incorporated into past analysis. There are two main ways to mitigate survivorship bias in your strategy backtests: Survivorship Bias Free Datasets - In the case of equity data it is possible to purchase datasets that include delisted entities, although they are not cheap and only tend to be utilised by institutional firms. In particular, Yahoo Finance data is NOT survivorship bias free, and this is commonly used by many retail algo traders. One can also trade on asset classes that are not prone to survivorship bias, such as certain commodities (and their future derivatives). Use More Recent Data - In the case of equities, utilising a more recent data set mitigates the possibility that the stock selection chosen is weighted to survivors, simply as there is less likelihood of overall stock delisting in shorter time periods. One can also start building a personal survivorship-bias free dataset by collecting data from current point onward. After 3-4 years, you will have a solid survivorship-bias free set of equities data with which to backtest further strategies. We will now consider certain psychological phenomena that can influence your trading performance. Psychological Tolerance Bias This particular phenomena is not often discussed in the context of quantitative trading. However, it is discussed extensively in regard to more discretionary trading methods. It has various names, but Ive decided to call it psychological tolerance bias because it captures the essence of the problem. When creating backtests over a period of 5 years or more, it is easy to look at an upwardly trending equity curve, calculate the compounded annual return, Sharpe ratio and even drawdown characteristics and be satisfied with the results. As an example, the strategy might possess a maximum relative drawdown of 25 and a maximum drawdown duration of 4 months. This would not be atypical for a momentum strategy. It is straightforward to convince oneself that it is easy to tolerate such periods of losses because the overall picture is rosy. However, in practice, it is far harder If historical drawdowns of 25 or more occur in the backtests, then in all likelihood you will see periods of similar drawdown in live trading. These periods of drawdown are psychologically difficult to endure. I have observed first hand what an extended drawdown can be like, in an institutional setting, and it is not pleasant - even if the backtests suggest such periods will occur. The reason I have termed it a bias is that often a strategy which would otherwise be successful is stopped from trading during times of extended drawdown and thus will lead to significant underperformance compared to a backtest. Thus, even though the strategy is algorithmic in nature, psychological factors can still have a heavy influence on profitability. The takeaway is to ensure that if you see drawdowns of a certain percentage and duration in the backtests, then you should expect them to occur in live trading environments, and will need to persevere in order to reach profitability once more. Software Packages for Backtesting The software landscape for strategy backtesting is vast. Solutions range from fully-integrated institutional grade sophisticated software through to programming languages such as C, Python and R where nearly everything must be written from scratch (or suitable plugins obtained). As quant traders we are interested in the balance of being able to own our trading technology stack versus the speed and reliability of our development methodology. Here are the key considerations for software choice: Programming Skill - The choice of environment will in a large part come down to your ability to program software. I would argue that being in control of the total stack will have a greater effect on your long term PL than outsourcing as much as possible to vendor software. This is due to the downside risk of having external bugs or idiosyncrasies that you are unable to fix in vendor software, which would otherwise be easily remedied if you had more control over your tech stack. You also want an environment that strikes the right balance between productivity, library availability and speed of execution. I make my own personal recommendation below. Execution CapabilityBroker Interaction - Certain backtesting software, such as Tradestation, ties in directly with a brokerage. I am not a fan of this approach as reducing transaction costs are often a big component of getting a higher Sharpe ratio. If youre tied into a particular broker (and Tradestation forces you to do this), then you will have a harder time transitioning to new software (or a new broker) if the need arises. Interactive Brokers provide an API which is robust, albeit with a slightly obtuse interface. Customisation - An environment like MATLAB or Python gives you a great deal of flexibility when creating algo strategies as they provide fantastic libraries for nearly any mathematical operation imaginable, but also allow extensive customisation where necessary. Strategy Complexity - Certain software just isnt cut out for heavy number crunching or mathematical complexity. Excel is one such piece of software. While it is good for simpler strategies, it cannot really cope with numerous assets or more complicated algorithms, at speed. Bias Minimisation - Does a particular piece of software or data lend itself more to trading biases You need to make sure that if you want to create all the functionality yourself, that you dont introduce bugs which can lead to biases. Speed of Development - One shouldnt have to spend months and months implementing a backtest engine. Prototyping should only take a few weeks. Make sure that your software is not hindering your progress to any great extent, just to grab a few extra percentage points of execution speed. C is the elephant in the room here Speed of Execution - If your strategy is completely dependent upon execution timeliness (as in HFTUHFT) then a language such as C or C will be necessary. However, you will be verging on Linux kernel optimisation and FPGA usage for these domains, which is outside the scope of this article Cost - Many of the software environments that you can program algorithmic trading strategies with are completely free and open source. In fact, many hedge funds make use of open source software for their entire algo trading stacks. In addition, Excel and MATLAB are both relatively cheap and there are even free alternatives to each. Now that we have listed the criteria with which we need to choose our software infrastructure, I want to run through some of the more popular packages and how they compare: Note: I am only going to include software that is available to most retail practitioners and software developers, as this is the readership of the site. While other software is available such as the more institutional grade tools, I feel these are too expensive to be effectively used in a retail setting and I personally have no experience with them. Backtesting Software Comparison Description: High-level language designed for speed of development. Wide array of libraries for nearly any programmatic task imaginable. Gaining wider acceptance in hedge fund and investment bank community. Not quite as fast as CC for execution speed. Execution: Python plugins exist for larger brokers, such as Interactive Brokers. Hence backtest and execution system can all be part of the same tech stack. Customisation: Python has a very healthy development community and is a mature language. NumPySciPy provide fast scientific computing and statistical analysis tools relevant for quant trading. Strategy Complexity: Many plugins exist for the main algorithms, but not quite as big a quant community as exists for MATLAB. Bias Minimisation: Same bias minimisation problems exist as for any high level language. Need to be extremely careful about testing. Development Speed: Pythons main advantage is development speed, with robust in built in testing capabilities. Execution Speed: Not quite as fast as C, but scientific computing components are optimised and Python can talk to native C code with certain plugins. Cost: FreeOpen Source Description: Mature, high-level language designed for speed of execution. Wide array of quantitative finance and numerical libraries. Harder to debug and often takes longer to implement than Python or MATLAB. Extremely prevalent in both the buy - and sell-side. Execution: Most brokerage APIs are written in C and Java. Thus many plugins exist. Customisation: CC allows direct access to underlying memory, hence ultra-high frequency strategies can be implemented. Strategy Complexity: C STL provides wide array of optimised algorithms. Nearly any specialised mathematical algorithm possesses a free, open-source CC implementation on the web. Bias Minimisation: Look-ahead bias can be tricky to eliminate, but no harder than other high-level language. Good debugging tools, but one must be careful when dealing with underlying memory. Development Speed: C is quite verbose compared to Python or MATLAB for the same algorithmm. More lines-of-code (LOC) often leads to greater likelihood of bugs. Execution Speed: CC has extremely fast execution speed and can be well optimised for specific computational architectures. This is the main reason to utilise it. Cost: Various compilers: LinuxGCC is free, MS Visual Studio has differing licenses. Different strategies will require different software packages. HFT and UHFT strategies will be written in CC (these days they are often carried out on GPUs and FPGAs ), whereas low-frequency directional equity strategies are easy to implement in TradeStation, due to the all in one nature of the softwarebrokerage. My personal preference is for Python as it provides the right degree of customisation, speed of development, testing capability and execution speed for my needs and strategies. If I need anything faster, I can drop in to C directly from my Python programs. One method favoured by many quant traders is to prototype their strategies in Python and then convert the slower execution sections to C in an iterative manner. Eventually the entire algo is written in C and can be left alone to trade In the next few articles on backtesting we will take a look at some particular issues surrounding the implementation of an algorithmic trading backtesting system, as well as how to incorporate the effects of trading exchanges. We will discuss strategy performance measurement and finally conclude with an example strategy. Just Getting Started with Quantitative TradingMatlabTrading This post is about how important is to use different types of optimisation methods such as genetic algorithms and parallelisation to get results faster. Genetisk algoritmer optimalisering Til tross for at det genetiske (evolusjonære) algoritmenprinsippet er veldig godt forklart i MathWorks webinarer, er eksemplene imidlertid kun brukt for optimalisering av valg av en strategigruppe fra et sett. Dette er et godt eksempel på bruken av disse algoritmene, men det skjer at det er behov for å sette mange variabler med betydelige intervaller for en strategi, du går ikke forbi med en iterasjon og parallellisering av prosesser 8211 beregninger kan ta flere dager . Det er sikkert strategier i sluttfasen av optimalisering. når vi nesten vet at handelsstrategien er vellykket, kan vi vente i flere dager eller leie hele klyngen - resultatet kan være verdt det. Men hvis vi må estimere resultatene av en omfangsrik strategi og bestemme om det er verdt det å bruke tiden, så kan genetiske algoritmer være perfekt egnet. Vi gir mulighet til å bruke tre metoder for å optimalisere strategien i WFAToolbox: Linjær metode 8211 Det er en vanlig sorteringsmodus hvor du vil se alle mellomliggende (suboptimale) resultater. Det gir maksimal nøyaktighet. Parallell metode 8211 alle kjerne av CPUen din vil bli brukt. Det tillater ikke å se mellomresultater, men øker operasjonen betydelig. Det gir maksimal nøyaktighet under økning av beregningshastighet. Genetisk metode 8211 Den bruker den evolusjonære optimaliseringsalgoritmen. Det gjør det mulig å se suboptimale verdier, men gir resultatet nær det beste. Det er ikke en veldig nøyaktig metode, men den er presis nok til den første strategien. Veldig fort. Vi blir ofte spurt om WFAToolbox - Walk-Forward Analysis Toolbox for MATLAB har muligheten til å bruke GPU i beregninger. Dessverre er GPU ikke egnet for alle oppgaver, og bruken er svært spesifikk. For å kunne bruke det, må du justere logikken og koden til hver strategi for grafisk kjernestesting. Dessverre, på grunn av slik ikke-universalitet av metoden kan man ikke bruke GPU i WFAToolbox. Fortsatt del 2 av diskusjonen om problemer og løsninger i testing og analyse av algoritmisk handelsstrategi i MATLAB, inviterer deg til å lese dette innlegget om problem med utilgjengelighet av visualisering av prosessene i moderne programvare løsninger for testing av handelssystemer. Visualisering av testprosessen I min arbeidserfaring analyserte jeg ofte andre populære plattformer for tradingstrategi testing. slik som TradeStation. MetaStock. Multicharts etc., og jeg var alltid overrasket over hvor lite oppmerksomhet ble betalt til visualisering av testprosessen. Saken er at når vi ikke ser resultatene av de mellomliggende, suboptimale verdiene av optimaliserte parametere, kaster vi ofte bort gull sammen med smuss. Saken er på grunn av en altfor bred prøvetaking, justerer strategien parametrene slik vi enten ser en perfekt strategi som feiler i virkeligheten eller ser en eller to avtaler, som angivelig er de beste fordi det ble valgt slike tidsintervalldata der beste handelsstrategi vil være buy-and-hold, men hvorfor er det da andre strategier som er nødvendige for Visualisering av handelsstrategiprøveprosessen i MATLAB (foreslått i webinar) Som et resultat, uten å se mellomresultater, må vi 171blindly187 endre parametrene for å prøve for å få bedre data eller se den i noen 3D eller 4D (farge er den fjerde dimensjonen), som foreslått i webinars. Analysen av verdier i det N-dimensjonale rommet kan definitivt være et alternativ, men har flere begrensninger: Hva om det er mer enn 4 dimensjoner Når du ser hvilke signaler og hvilken frekvens de vises i prisklassen, har du nesten alle nødvendig visuell representasjon av strategien din: transaksjonsfrekvensen, deres lønnsomhet (inntektskurve), nøyaktigheten av åpningen, likheten med andre suboptimale verdier etc. som ikke kan sies om ytelsen i det N-dimensjonale rommet der all nyttig informasjon er faktisk at den optimale verdien ikke bare er en, men det finnes et stort utvalg av suboptimale verdier på ett eller flere områder. Mens optimalisering av en strategi i WFAToolbox 8211 Walk-Forward Analysis Toolbox for MATLAB174. Når en ny optimal verdi er funnet, vises handelsstrategisignalene i perioden i prøve og ut av prøven umiddelbart i diagrammet, slik at du alltid kan kontrollere hvilket utvalg av alternativer du bør tilordne, og du kan også stoppe optimaliseringen uten å vente på slutten av testen, da det blir klart at noe gikk galt eller alt er bra. Hei, jeg heter Igor Volkov. Jeg har utviklet algoritmiske handelsstrategier siden 2006 og har jobbet i flere hedgefond. I denne artikkelen vil jeg diskutere problemer som oppstår på veien for MATLABs handelsstrategiutvikler under testing og analyse, samt å tilby mulige løsninger. Jeg har brukt MATLAB for testing av algoritmestrategier siden 2007, og jeg har kommet til den konklusjon at dette ikke bare er det mest praktiske forskningsverktøyet, men også den mest kraftige fordi det gjør det mulig å bruke komplekse statistiske og økonometriske modeller, nevrale nettverk, maskinlæring, digitale filtre, fuzzy logikk, osv. ved å legge til verktøykasse. MATLAB-språket er ganske enkelt og godt dokumentert, så selv en ikke-programmerer (som meg) kan mestre den. Hvordan det hele startet. Det var 2008 (hvis jeg ikke tar feil) da det første webinaret om algoritmisk handel i MATLAB med Ali Kazaam ble utgitt, og dekket emnet for å optimalisere enkle strategier basert på tekniske indikatorer, etc. til tross for en ganske 8220chaotic8221-kode, var verktøyene interessante nok til å bruke. De tjente som utgangspunkt for forskning og forbedring av en test - og analysemodell som ville tillate å bruke all kraft i verktøykasser og frihet for MATLAB-handlinger under opprettelsen av egne handelsstrategier, samtidig som det ville tillate å kontrollere prosessen av testing og de innhentede dataene og deres etterfølgende analyse ville velge en effektiv portefølje av robuste handelssystemer. Deretter har Mathworks webinarer blitt oppdatert hvert år og gradvis introdusert flere og flere interessante elementer. Dermed ble det første webinaret på parhandel (statistisk arbitrage) ved hjelp av Econometric Toolbox holdt i 2010, selv om verktøykassen for testing og analyse forblir den samme. I 2013 dukket opp Trading Toolbox fra Mathworks som tillot å koble MATLAB til forskjellige meglere for utførelse av deres applikasjoner. Selv om det var automatiske løsninger for gjennomføring av transaksjonene, kunne MATLAB betraktes som et system for å utvikle handelsstrategier med en full syklus: fra data lastet til gjennomføring av automatiserte handelsstrategier. Hvorfor bør hver Algotrader gjenopprette hjulet Mathworks har imidlertid ikke tilbudt en komplett løsning for testing og analyse av strategiene 8211 de kodene som du kunne komme deg ut av webinarer, var de eneste elementene i en full systemtest, og det var nødvendig å endre dem , tilpass dem, og legg dem til GUI for enkel bruk. Det var veldig tidkrevende, og stiller dermed et spørsmål: Uansett hva strategien var, må den gå gjennom samme prosess med testing og analyse, som gjør at den kan klassifiseres som stabil og brukbar 8211 så hvorfor skal hver algotrader gjenoppfinne hjulet og skrive Hisher egen kode for riktig testing strategier i MATLAB Så ble det besluttet å lage et produkt som vil tillate å utføre hele prosessen forbundet med testing og analyse av algoritmiske trading strategier ved hjelp av et enkelt og brukervennlig grensesnitt. Først og fremst vil jeg svare på følgende spørsmål: Hva skjedde med bloggen 1. Jev Kuznetsov er ikke eieren lenger Bloggen ble kjøpt fra vår venn, Jev Kuznetsov, som har flyttet til sin andre blogg tradingwithpython. blogspot. Han konkluderte med at Python er bedre enn MATLAB for handel, som jeg syntes å være falsk. MATLAB er fortsatt en av verdens beste programvare for algoritmiske handelsformål IMHO (jeg har noen fakta om dette skjønt for fremtidig diskusjon). 2. Vi har endret merket Fra dette øyeblikket vil bloggen bli kalt MatlabTrading, som er mye mer forståelig med hensyn til emnene den vil inkludere. Videre er domenenavnet endret til matlabtrading i stedet for den første matlab-trading. blogspot. selv om det gamle domenet fortsatt jobber omdirigere fra det primære domenenavnet. Hva skjer med bloggen 1. Flere innlegg og artikler Vi håper å bringe livet til denne bloggen ved å legge ut relevant innhold en eller to ganger i uken. I de første månedene vil vi legge ut de artikler og videoer som vi allerede har gjort for å gjøre det lettere for våre kjære lesere å søke etter informasjon om en ressurs og ha krysskobling på dem. Da har vi planer om å skrive innlegg om praktiske aspekter ved algoritmisk handel i MATLAB. Hvordan lage moderne automatiske handelsstrategier som: Statistisk arbitrageparhandel betyr reversering av markedsnøytrale handelsstrategier basert på cointegration bollinger band kalman filter etc for varer, aksjer og Forex. Trend etter strategier med Jurik Moving Gjennomsnittlig og andre sofistikerte digitale filtre Forutsette strategier med maskinlæring (Support Vector Machines) og andre metoder Opprette robuste handelsstrategier ved hjelp av visuell fremoverprøving av pengehåndtering for å reinvestere kapitalen din (Vitenskap om hvordan du får 1M fra 10K i et år med maksimal, men estimert risiko og svettebelønninger). Kanskje etter å ha lest dette, har du trodd at dette kommer til å bli en annen dum artikkel for de fattige gutta som søker å bli rik gjennom handel på forex og alt det. Vel, det er helt feil. Vi jobber i MATLAB, og flertallet av oss er forskere og eksperter i det aspektet, så alt er seriøst. 2. Mer interaktivitet Jeg vil være glad hvis vi alle kan forholde seg gjennom kommentarer i innlegg. Abonner på våre nyheter for å bli varslet om de nyeste innleggene og hendelsene. Senere har vi planer om å lage Google Hangouts-webinarer. Ikke gå glipp av det, klikk på Følg-knappen øverst til høyre for å bli med i fellesskapet vårt. Hva vil du lese i våre blogginnlegg Hvilke emner kan du foreslå Vennligst skriv her i kommentarer. I mitt forrige innlegg kom jeg til en konklusjon at nærtliggende parhandel ikke er like lønnsom i dag som det pleide å være før 2010. En leser påpekte at det kunne være at gjennombruddsmessige karakterer bare skiftet mot kortere tidsskalaer . Jeg kommer til å dele den samme ideen, så jeg bestemte meg for å teste denne hypotesen. Denne gangen er bare ett par testet: 100 SPY vs -80 IWM. Backtest utføres på 30 sekunders bardata fra 11.2011 til 12.2012. Reglene er enkle og ligner på strategien jeg testet i det siste innlegget: hvis strekningen av paret overstiger 1 på z-poeng, handler du den neste linjen. Resultatet ser veldig pent ut: Jeg anser dette for å være nok bevis på at det fortsatt er nok av gjennomsnittlig reversering på 30-sekunders skala. Hvis du tror at dette diagrammet er for godt til å være sant, er det dessverre faktisk tilfelle. Ingen transaksjonskostnader eller budspørsmål ble tatt i betraktning. Faktisk ville jeg tvile på at det ville være noe overskudd igjen etter å ha trukket alle handelsutgifter. Likevel, denne typen diagrammer er gulrøtten som dangler foran nesen min, holder meg i gang. Dårlige nyheter alle, ifølge mine beregninger, (som jeg håper er feil) er det klassiske parhandelen død. Noen mennesker vil sterkt være uenige, men her er det jeg fant: La oss ta en hypotetisk strategi som fungerer på en kurv av etfs: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Fra disse etfs 90 unik par kan bli laget. Hvert par er konstruert som et marked-nøytralt spredning. Strategiregler: På hver dag beregner z-score for hvert par basert på 25-dagers standardavvik. Hvis z-score gt-terskel, gå kort, lukk neste dag Hvis z-score lt-terskelen går lang, lukk neste dag For å holde det enkelt, er beregningen gjort uten kapitalstyring (man kan ha opptil 90 par i porteføljen på hver dag). Transaksjonskostnader tas heller ikke i betraktning. For å si det enkelt, følger denne strategien en dags betydning for å gjenopprette naturen av markedsneutrale sprekker. Her simuleres resultatene for flere terskler: Uansett hvilken terskel som brukes, er strategien svært lønnsom i 2008, ganske god i 2009 og helt verdiløs fra begynnelsen av 2010. Dette er ikke første gang jeg kom over denne endringen i gjennombrudd oppførsel i etfs. Uansett hva jeg har prøvd, hadde jeg ikke lykke til å finne en parhandelsstrategi som ville fungere på ETFs i løpet av 2010. Min konklusjon er at disse typer enkle stat-arb-modeller bare ikke kutter den lenger.

Comments

Popular Posts