Wednesday 15 November 2017

Testing 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 des 30 14 kl 22: 20 Testing og analyse av algoritmiske handelsstrategier i MATLAB (del 1) - Introduksjon 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. MatlabTrading Dette innlegget handler om hvor viktig 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 parallelliseringen 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 kjøringen av 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 det lettere for våre kjære lesere å søke etter informasjon om en ressurs og ha krysslips 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.

No comments:

Post a Comment