Hur man optimerar handelssystemet. NOTE Det här är ganska avancerat ämne. Läs först tidigare AFL-handledning. Idén bakom en optimering är enkel Först måste du ha ett handelssystem, det här kan vara en enkel glidande genomsnittlig crossover, till exempel i nästan alla system där är några parametrar som medelvärde som bestämmer hur visat system beter sig, dvs är lämpligt för långsiktig eller kort sikt, hur reagerar det på mycket volatila bestånd etc. Optimeringen är processen att hitta optimala värden för de parametrar som ger högsta vinsten från systemet för en viss symbol eller en portfölj med symboler AmiBroker är ett av de få program som låter dig optimera ditt system på flera symboler samtidigt. För att optimera ditt system måste du definiera från en upp till tio parametrar som ska optimeras. Du bestämmer vad är ett minimum och maximalt tillåtet värde för parametern och i vilka steg detta värde ska uppdateras AmiBroker utför sedan flera backtester systemet använder A LL möjliga kombinationer av parametervärden När denna process är klar visar AmiBroker listan över resultat sorterade efter nettovinst. Du kan se värdena för optimeringsparametrar som ger det bästa resultatet. Skrivning AFL-formel. Optimering i backtester stöds via ny funktion kallas optimera Syntaxen för denna funktion är som följer. variabel optimera Beskrivning, standard min max step. variable - är normal AFL-variabel som får tilldelas värdet som returneras genom att optimera funktionen Med normal backtesting, scanning, exploration och comentary modes återställs funktionen som standard värde, så ovanstående funktionssamtal motsvarar variabel standard. I optimeringsläget optimerar funktionen avkastning successiva värden från min till max inkluderat med steg-stegning. Beskrivningen är en sträng som används för att identifiera optimeringsvariabeln och visas som ett kolumnnamn i optimeringsresultatlistan. default är ett standardvärde som optimerar avkastning vid prospektering , indikator, kommentera, skanna och normala backtestlägen. min är ett minimivärde av variabeln som är optimerad. max är ett maximalt värde för variabeln som optimeras. step är ett intervall som används för att öka värdet från min till max. AmiBroker stöder upp till 64 samtal för att optimera funktionen, därför upp till 64 optimeringsvariabler, notera att om du använder en uttömmande optimering så är det väldigt bra att begränsa antalet optimeringsvariabler till bara några. Varje samtal för att optimera generera maximala stegoptimeringsloppar och flera samtal för att optimera multiplicera antalet körningar som behövs. Exempelvis kan optimering av två parametrar med 10 steg kräva 10 10 100 optimeringsslingor. Kalloptimera funktionen endast en gång per variabel i början av din formel, eftersom varje samtal genererar en ny optimeringslopp. Multiple-symbol optimering stöds fullt ut av AmiBroker. Maximum sökutrymme är 2 64 10 19 10 000 000 000 000 000 000 kombinationer.1 Enkelvariabel optimering. sigavg Optimera S antenn genomsnitt 9 2 20 1.Buy Cross MACD 12 26, Signal 12 26 sigavg Sälj Cross Signal 12 26 sigavg, MACD 12 26,2 Tvåvariabel optimering lämplig för 3D-kartläggning. per Optimera per 2 5 50 1 Nivå Optimera nivå 2 2 150 4.Kryss kors CCI per, - Level Sälj Korsnivå, CCI per.3 Flera 3 variabel optimering. mfast Optimera MACD Fast 12 8 16 1 mslow Optimera MACD Slow 26 17 30 1 sigavg Optimera Signalmedelvärde 9 2 20 1.Buy Cross MACD mfast , mslow Signal mfast, mslow, sigavg Sälj kryssignal mfast, mslow, sigavg, MACD mfast, mslow. Efter att ha kommit in i formeln klickar du bara på Optimera-knappen i det automatiska analysfönstret. AmiBroker börjar testa alla möjliga kombinationer av optimeringsvariabler och rapportera resultaten i listan Efter att optimeringen har gjorts visas listan över resultat sorterat efter nettovinsten. Eftersom du kan sortera resultaten med någon kolumn i resultatlistan är det enkelt att få de optimala värdena för parametrar för lägsta drawdown, lägsta antal affärer, största prof den faktor, lägsta marknadsexponering och högsta riskjusterad årlig avkastning De sista kolumnerna i resultatlistan presenterar värdena för optimeringsvariabler för given test. När du bestämmer vilken kombination av parametrar som passar dina behov är det bästa du behöver göra att ersätta standard värden för att optimera funktionssamtal med optimala värden I nuvarande steg måste du skriva dem manuellt i formulärredigeringsfönstret den andra parametern för att optimera funktionssamtal. Visar 3D animerade optimeringsscheman. För att visa 3D optimeringsschema måste du köra två - variabel optimering först Två variabla optimeringar behöver en formel som har 2 Optimera funktionssamtal Ett exempel på två variabla optimeringsformler ser ut som this. per Optimera per 2 5 50 1 Nivå Optimera nivå 2 2 150 4.Buy Cross CCI per, - Level Sälj Cross Nivå, CCI per. Efter inmatning av formuläret måste du klicka på Optimera knappen. När optimeringen är klar bör du klicka på nedåtpilen på Optimera-knappen och välja Visa 3D-optimeringsgraf Om några sekunder visas en färgstark tredimensionell yta i ett 3D-kartvisningsfönster Ett exempel på 3D-diagram som genereras med ovanstående formel visas nedan. Som standard visar 3D-diagrammen värden på nettovinst mot optimeringsvariabler. Du kan men plott 3D-ytskiktet för en kolumn i optimeringsresultattabellen Klicka bara på kolumnrubriken för att sortera den blå pilen kommer att visas vilket indikerar att optimeringsresultaten sorteras efter vald kolumn och sedan välja Visa 3D optimeringsgraf igen. Genom att visualisera hur ditt system s parametrar påverkar handelsprestanda kan du lättare bestämma vilka parametervärden som producerar bräckliga och vilka ger robust systemprestanda. Robusta inställningar är regioner i 3D-grafen som visar gradvis snarare än abrupta förändringar i ytan. 3D-optimeringskartor är ett utmärkt verktyg för att förhindra kurv - passande kurvmontering eller överoptimering inträffar när systemet är mer komplext än det behöver vara och al Jag komplexiteten var inriktad på marknadsförhållanden som aldrig kan hända igen. Radikala förändringar eller spikar i 3D optimeringsdiagrammen visar tydligt överoptimeringsområden. Du borde välja parameterregion som producerar en bred och bred platå på 3D-diagram för ditt verkliga handelsparametrar. Parametersatser Producerande vinstspikar fungerar inte på ett tillförlitligt sätt i verklig handel. 3D-kartvisnings kontroller. AmiBroker s 3D-kartvisare erbjuder totalt visningsförmåga med full grafrotation och animering. Nu kan du se dina systemresultat från alla tänkbara perspektiv. Du kan styra positionen och andra parametrar av diagrammet med hjälp av musen, verktygsfältet och tangentbordsgenvägarna, oavsett vad du tycker är lättare för dig. Nedan hittar du listan.- Rotera - håll ner VÄNSTER musknapp och flytta i XY riktningar - för att zooma in, zooma ut - hålla ner HÖGER musknapp och flytta i XY riktningar - Flytta översätt - håll ner VÄNSTER musknapp och CTRL-tangent och flytta i XY riktningar - för att animera - håll nere VÄNSTER musknapp, dra snabbt och släpp knappen medan du drar. SÄTTA - animera automatisk rotera LÄNKAR PIL SÖK - vrid vänster vänster HÖGER PIL SÖK - rotera vert höger UPP PIL NÄRSTÄLLNING - vrid horisonten NER PIL SÖK - vrid horisonten ner NUMPAD PLUS - Nära Zooma in NUMPAD - MINUS - Våg Zooma ut NUMPAD 4 - Flytta till vänster NUMPAD 6 - Flytta åt höger NUMPAD 8 - Flytta upp NUMPAD 2 - Flytta ner PAGE UP - Vattennivå upp PAGE DOWN - Vattennivån ner. Smart, inte uttömmande optimering. AmiBroker nu erbjuder smidig, icke-uttömmande optimering utöver regelbunden och uttömmande sökning. Utomgående sökning är användbar om antalet parametrar i ett givet handelssystem är helt enkelt för stort för att vara genomförbart för uttömmande sökning. Utökad sökning är helt bra så länge det är rimligt att använda det Låt oss säga att du har 2 parametrar vardera från 1 till 100 steg 1 Det är 10000 kombinationer - perfekt OK för uttömmande sökning Nu med 3 parametrar har du 1 miljon kombinationer - det är fortfarande OK för uttömmande sår ch men kan vara långvarig Med 4 parametrar har du 100 miljoner kombinationer och med 5 parametrar 1 100 har du 10 miljarder kombinationer I så fall skulle det vara för tidskrävande att kontrollera dem alla, och detta är det område där icke-uttömmande smart - sökmetoder kan lösa det problem som inte kan lösas inom rimlig tid med uttömmande sökning. Det är helt enkelt den enklaste instruktionen hur man använder nytt, icke-uttömmande optimeringsmedel i det här fallet CMA-ES.1 Öppna din formel i Formula Editor.2 Lägg till det här enkel linje längst upp i din formula. OptimizerSetEngine cmae du kan också använda spso eller trib here.3 Valfritt Välj ditt optimeringsmål i Automatisk analys, Inställningar, Walk-forward-fliken, Optimeringsmålfält Om du hoppar över det här steget kommer det att optimera för CAR MDD-förening årlig avkastning dividerad med maximal drawdown. Now om du kör optimering med hjälp av denna formel, kommer den att använda ny evolutionär icke-uttömmande CMA-ES optimizer. How fungerar det. Optimeringen är processen att hitta min imum eller maximalt given funktion Alla handelssystem kan betraktas som en funktion av ett visst antal argument. Inmatningarna är parametrar och citatdata. Utmatningen är ditt optimeringsmål, säg CAR MDD. Och du letar efter maximal given funktion. Något smart optimering algoritmer är baserade på naturdjurbeteende - PSO-algoritm eller biologisk process - Genetiska algoritmer, och vissa är baserade på matematiska begrepp som härrör från människor - CMA-ES. Dessa algoritmer används i många olika områden, inklusive ekonomi. Ange PSO-finansiering eller CMA - ES finans i Google och du kommer att hitta mycket information. Inga uttömmande eller smarta metoder kommer att hitta globala eller lokala optimala Målet är givetvis att hitta global en, men om det finns en enda skarp topp ut av zillion-parameterkombinationer, uttömmande metoder kan misslyckas med att hitta denna enda topp, men när den bildas av näringsidkaren är perspektivet, att finna en enda vass topp är värdelös för handel eftersom det resultatet skulle vara instabil för bräckligt och n ot replicerbar i verklig handel I optimeringsprocessen letar vi ganska efter platåregioner med stabila parametrar och detta är det område där intelligenta metoder lyser. Som en algoritm som används av icke-uttömmande sökning ser det ut som följer. a optimeraren genererar några vanligen slumpmässiga start populationen av parameteruppsättningar b backtest utförs av AmiBroker för varje parameteruppsättning från befolkningen c resultaten av backtest utvärderas enligt algoritmens logik och ny befolkning genereras baserat på utvecklingen av resultaten d om det nya bästa finns - spara det och gå till steg b tills stoppkriterierna är uppfyllda. Exempel på stoppkriterier kan innefatta en uppnående specificerad maximal iteration b stopp om intervallet av de bästa objektivvärdena för de senaste X generationerna är noll c stopp om man lägger 0 1 standardavvikelsevektor i någon huvudaxel riktning ändrar inte värdet av objektivvärdet d others. To använda någon smart icke-uttömmande optimeringsapparat i AmiBroker måste du ange optimeringsenheten ingen e du vill använda i AFL-formuläret med OptimizerSetEngine-funktionen. Funktionen väljer extern optimeringsmotor definierad av namnet AmiBroker skickas för närvarande med 3 motorer Standard Particle Swarm Optimizer spso, stamstammen och CMA-ES cmae - namnen i axlar ska vara används i OptimizerSetEngine-samtal. Förutom att välja optimeringsmotor kanske du vill ställa in några av dess interna parametrar. Använd så OptimizerSetOption-funktionen. OptimizerSetOptionsnamn, värdefunktion. Funktionen ställa in ytterligare parametrar för extern optimeringsmotor Parametrarna är motorberoende Alla Tre optimerare som skickas med AmiBroker SPSO, Trib, CMAE stöder två parametrar. Kör antal körningar och MaxEval maximal utvärderingstest per enskild körning. Varje parameters beteende är motorberoende, så samma värden kan och brukar ge olika resultat med olika använda motorer. Skillnaden mellan Runs och MaxEval är enligt följande. Utvärdering eller test är single backtest eller evaluatio n av objektivt funktionsvärde RUN är en fullständig körning av algoritmfyndet optimalt värde - vanligtvis med många testbedömningar. Varje gång går RESTARTS hela optimeringsprocessen från den nya början ny initial slumpmässig population Därför kan varje körning leda till att hitta olika lokala max min om det inte hittar global en så Runs parameter definierar antal efterföljande algoritm körningar MaxEval är det maximala antalet utvärderingar bactests i en enda run. If problemet är relativt enkelt och 1000 test är tillräckliga för att hitta global max, är 5x1000 mer sannolikt att hitta globala maximal eftersom det finns mindre chanser att sitta fast i lokal max eftersom efterföljande körningar kommer att starta från olika initiala slumpmässiga populationer. Val av parametervärden kan vara knepig Det beror på problem under testet, dess komplexitet osv. Varje stokastisk icke-uttömmande Metoden ger dig ingen garanti för att hitta global max min, oavsett antal test om det är mindre än uttömmande. Det enklaste svaret är att specificera så många test som det är rimligt för dig när det gäller den tid som krävs för att slutföra. En annan enkel råd är att multiplicera med 10 antalet tester med att lägga till en ny dimension. Det kan leda till att man överskattar antalet test som krävs, men det är ganska säkra Sändmotorer är konstruerade för att vara enkla att använda. Därför används rimliga standardautomatiska värden, så optimering kan vanligtvis köras utan att ange något som accepterar standardvärden. Det är viktigt att förstå att alla smarta optimeringsmetoder fungerar bäst i kontinuerliga parametrar och relativt släta mål funktioner Om parameterns utrymme är diskret kan evolutionära algoritmer ha problem med att hitta optimalt värde. Det gäller speciellt binära parametrar - de är inte lämpade för någon sökmetod som använder gradienten av objektiv funktionsförändring som de flesta smarta metoder gör om ditt handelssystem innehåller många binära parametrar, bör du inte använda smart optimizer direkt på dem istället försöka optimera bara kontinuerliga parametrar med smart optimizer och byta binära parametrar manuellt eller via externt script. SPSO - Standard Particle Swarm Optimizer. Standard Particle Swarm Optimizer är baserad på SPSO2007-kod som ska producera bra resultat förutsatt att korrekta parametrar, dvs Runs, MaxEval tillhandahålls för specifikt problem Att välja rätt alternativ för PSO optimizer kan vara svårt, därför kan resultaten skilja sig väsentligt från fall till fall. levereras med fullständiga källkoder i ADK-undermappen. Exempelkod för Standard Particle Swarm Optimizer hittar optimalt värde i 1000 test inom sökutrymmet på 10000 kombinationer. OptimalizerSetEngine spso OptimizerSetOption Kör, 1 OptimizerSetOption MaxEval, 1000.sl Optimera s, 26, 1, 100, 1 fa Optimera f, 12, 1, 100, 1.Buy Cross MACD fa, sl, 0 Sälj Kors 0, MACD fa, sl. TRIBES - Adaptiv Parameter-mindre Partikel Swarm Optimizer. Tribes är adaptiv, parameter-mindre version av PSO partikel swarm optimering icke-uttömmande optimizer För vetenskaplig bakgrund se. I teorin borde det fungera bättre än vanlig PSO, eftersom det automatiskt kan justera svärmstorleken och algoritmstrategin för att problemet ska lösas. Praktiken visar att dess prestanda är ganska lik PSO. Plugin implementerar Tribes-D dvs dimensionslös variant Baserat på Maurice Clerc Originalkälla används med tillstånd från författaren. levereras med fullständig källkod inuti ADK-mappen. Stödda parametrar MaxEval - maximalt antal utvärderingsbacktests per kör standard 1000. Du borde öka antalet utvärderingar med ökande antal dimensioner antal optimeringsparametrar Standard 1000 är bra för 2 eller maximalt 3 dimensioner. Runs - antal körningar startar om standard 5 Du kan lämna antalet körningar vid standardvärdet på 5. Med standard antal körningar eller omstart är inställt på 5. För att använda Stammaroptimering behöver du bara lägga till en rad i din kod. OptimizerSetOption MaxEval, 5000 5000 utvärderingar max. CMA-ES - Covariance Matrix Adaptation Evolutionär Strategi Optimizer. CMA-ES Covariance Matrix Adaptation Evolutionary Strategy är avancerad icke-uttömmande optimizer För vetenskaplig bakgrund se Enligt vetenskapliga riktmärken överträffar nio andra, mest populära evolutionära strategier som PSO, Genetisk och Differential evolution. The plugin implementerar Global variant av sökning med flera omstartar med ökande pop ulationstorlek kommer med full källkod inuti ADK-mappen. Med standard antal körningar eller omstart är inställt på 5 Det rekommenderas att lämna standardnumret på omstart. Du kan variera det med OptimizerSetOption Kör, N-samtal, där N ska vara inom intervallet 1 10 Ange mer än 10 körningar rekommenderas inte om möjligt. Observera att varje körning använder TWICE storleken på befolkningen i tidigare körning så att den växer exponentiellt. Därför slutar med 10 körningar med befolkningen 2 10 större 1024 gånger än den första körningen. Där är en annan parameter MaxEval Standardvärdet är NOLL vilket innebär att plugin automatiskt beräknar MaxEval krävs. Det rekommenderas att INTE definiera MaxEval själv som standard fungerar bra. Algoritmen är tillräckligt smart för att minimera antalet utvärderingar som krävs och det konvergerar mycket snabbt till lösningspunkten, så ofta det hittar lösningar snabbare än andra strategier. Det är normalt att pluginhoppet kommer att hoppa över några utvärderingssteg, om det upptäcker att lösningen hittades, därför e du borde inte bli förvånad över att optimeringsfältet kan röra sig väldigt snabbt vid vissa punkter. Pluggen har också förmåga att öka antalet steg över initialt uppskattat värde om det behövs för att hitta lösningen. På grund av dess adaptiva natur är den beräknade tiden kvar och eller antalet steg som visas av framdriftsdialogrutan är bara gissning vid tiden och kan variera under optimeringskursen. För att använda CMA-ES optimeringsprogram behöver du bara lägga till en rad i din kod. Detta kommer att köra optimeringen med standardinställningarna som är bra för de flesta fall. Det bör noteras, som det är fallet med många continouos-space-sökalgoritmer, påverkar den minskande stegparametern i Optimera funciton-samtal inte signifikant optimeringstider. Det enda som är viktigt är problemdimensionen, dvs antal olika parametrar antal optimera funktionssamtal Antalet steg per parameter kan ställas in utan att påverka optimeringstiden, så använd den finaste upplösningen du vill ha i teorin y algoritmen borde kunna hitta en lösning på högst 900 N 3 N 3 backtests där N är dimensionen I praktiken konvergerar det en massa snabbare. Till exempel kan lösningen i 3 N 3-dimensionellt parameterutrymme säga 100 100 100 1 miljon uttömmande steg kan kan hittas i så få som 500-900 CMA-ES-steg. Multiple-threaded individuell optimering. Börja från AmiBroker 5 70 förutom multitråds multithreadning kan du utföra multi-threaded single-symbol optimering För att komma åt denna funktionalitet, klicka på drop nerpil bredvid Optimera-knappen i fönstret Ny analys och välj Individuell optimering. Individuell optimering kommer att använda alla tillgängliga processorkärnor för att utföra enkelsymboloptimering, vilket gör det mycket snabbare än vanlig optimering. I nuvarande symbolläge utförs optimering på en symbol I alla symboler och filterlägen kommer det att behandla alla symboler i följd, dvs första fullständiga optimering för första symbolen, sedan optimering på andra symbolen, etc. Limitations 1 Custo m backtester stöds INTE 2 Smart optimeringsmotorer stöds INTE. Endast EXHAUSTIVE optimering fungerar. Vi kan eventuellt bli av med begränsning 1 - när AmiBroker ändras så anpassad backtester inte använder OLE längre men 2 är förmodligen här för att stanna länge. Förbättra tekniska handelssystem genom att använda en ny MATLAB-baserad genetisk algoritmprocedur. Recentstudier på finansmarknaderna tyder på att teknisk analys kan vara ett mycket användbart verktyg för att förutsäga trenden. Handelssystem används ofta för marknadsbedömning. Parameteroptimering av dessa system har emellertid lockade lite intresse I det här dokumentet, för att undersöka den potentiella kraften i digital handel, presenterar vi ett nytt MATLAB-verktyg baserat på genetiska algoritmer verktyget är specialiserat på parameteroptimering av tekniska regler. Det använder kraften i genetiska algoritmer för att skapa snabba och effektiva lösningar i verkliga handelsvillkor Vårt verktyg har testats i stor utsträckning på historiska data från en UBS-fond som investerar i nya stoc k marknader genom vårt specifika tekniska system Resultat visar att vår föreslagna GATradeTool överträffar vanligt använda, icke-adaptiva, mjukvaruverktyg med avseende på stabilitet i retur och tidsbesparing under hela provperioden. Vi gav dock bevis på en eventuell befolkningsstorlekseffekt i lösningar av kvalitet. Finansiella marknader. Genetiska algoritmer. Techniska regler.1 Inledning. Tidens handels - och investeringsanalytiker kräver snabba och effektiva verktyg på en hänsynslös finansmarknad. Kampar i handeln sker nu främst med datorhastighet. Utvecklingen av ny programvara och utseende av nya programmiljöer, t. ex. MATLAB utgör grunden för att lösa svåra ekonomiska problem i realtid MATLABs omfattande inbyggd matematisk och finansiell funktionalitet, det faktum att det både är ett tolkt och sammanställt programmeringsspråk och dess plattformsoberoende gör det väl lämpat för ekonomisk applikationsutveckling. Bevis på avkastning som erhålls av teknisk ru les, inklusive momentumstrategier t. ex. 14 15 16 16 25 20, glidande medelregler och andra handelssystem 6 2 9 24 kan stödja vikten av teknisk analys. Dock har majoriteten av dessa studier ignorerat frågan om parameteroptimering och lämnar dem öppna kritik av data snooping och möjligheten att överleva bias 7 17 8 Traditionellt forskare använde ad hoc specifikation av handelsregler De använder en standard populär konfiguration eller slumpmässigt prova några olika parametrar och välj det bästa med kriterier baserade på avkastning huvudsakligen. Papadamou och Stephanides 23 genomförde en ny MATLAB-baserad verktygslåda för datorstödd teknisk handel som har inkluderat ett förfarande för parametraroptimeringsproblem. Den svaga punkten i deras optimeringsprocedur är dock tiden, den objektiva funktionen, t. ex. vinst, är enkel kvadratfelfunktion men en komplicerad vardera optimering iteration går igenom data, genererar handelssignaler, beräknar vinster, etc När dataseten är stora och du ofta vill reoptimera ditt system och du behöver en lösning så snart som möjligt, kan du prova alla möjliga lösningar för att få det bästa. Det är en mycket tråkig uppgift. Genetiska algoritmer GAs passar bättre eftersom de utför slumpmässiga sökningar på ett strukturerat sätt och konvergerar mycket snabbt på populationer av nära optimala lösningar GA kommer att ge dig en uppsättning populationer av bra lösningar Analytiker är intresserade av att få några bra lösningar så fort som möjligt snarare än den globalt bästa lösningen. globalt finns det bästa lösningen, men det är högst osannolikt att det kommer att fortsätta att vara det bästa. Syftet med denna studie är att visa hur genetiska algoritmer, en klass av algoritmer i evolutionär beräkning, kan användas för att förbättra prestanda och effektivitet av datoriserade handelssystem Det är inte meningen att här ge teoretisk eller empirisk motivering för den tekniska analysen. Vi demonstrerar vårt synsätt i en del icular prognosuppgift baserat på nya aktiemarknader. Detta dokument är organiserat enligt följande Tidigare arbete presenteras i avsnitt 2 Datasättningen och vår metodik beskrivs i avsnitt 3 De empiriska resultaten diskuteras i avsnitt 4 Slutsatser följer avsnitt 5.2 Tidigare arbete. Det finns en stor del av GA-arbetet inom datavetenskap och teknik, men lite arbete har gjorts när det gäller affärsrelaterade områden. Senare har det varit ett växande intresse för GA-användningen i ekonomisk ekonomi, men hittills har det varit lite forskning kring automatiserad handel. Enligt vår kunskap var den första publicerade papper som länkar genetiska algoritmer till investeringar från Bauer och Liepins 4 Bauer 5 i sin bok Genetiska algoritmer och investeringsstrategier erbjudit praktisk vägledning om hur GAs kan användas för att utveckla attraktiva handelsstrategier baserade på grundläggande information. Dessa tekniker kan vara Lätt att utvidga till att omfatta andra typer av information som teknisk och makroekonomisk nominella uppgifter samt tidigare priser. Enligt Allen och Karjalainen 1 är den genetiska algoritmen en lämplig metod för att upptäcka tekniska handelsregler Fern ndez-Rodr guez et al 11 genom att anta genetiska algoritmer optimering i en enkel handelsregel ge bevis för framgångsrik användning av GA från Madrid-börsen Några andra intresserade studier är de av Mahfoud och Mani 18 som presenterade ett nytt genetiskt algoritmbaserat system och tillämpade det på uppgiften att förutse framtida prestationer av enskilda lager av Neely et al 21 och av Oussaidene et al 22 som tillämpade genetisk programplanering för prognoser för utländsk valuta och rapporterade viss framgång. En av komplikationerna i GA-optimering är att användaren måste definiera en uppsättning parametrar såsom överkryssningsfrekvens, populationstorlek och mutationshastighet Enligt De Jong 10 som studerade genetiska algoritmer i funktion optimering bra GA prestanda kräver hög crossover sannolikhet omvänd proportionell mot befolkning storlek och en mo avvikande befolkningsstorlek Goldberg 12 och Markellos 19 föreslår att en uppsättning parametrar som fungerar bra över många problem är en crossover-parameter 0 6, populationstorlek 30 och mutationsparameter 0 0333 Bauer 4 utförde en serie simuleringar på finansiella optimeringsproblem och bekräftade giltigheten av Goldbergs förslag I den nuvarande studien kommer vi att utföra en begränsad simuleringsstudie genom att testa olika parametrar för det valda handelssystemet. Vi kommer också att tillhandahålla bevis för GA som föreslås genom att jämföra vårt verktyg med andra programvaruverktyg.7 Typer av handels robusthet Bygg robotar Det Väder All Storms. Building The Invincible Robot. Så du hörde hur datorer kommer att styra handelsvärlden, hur intelligenta robotar gör miljoner på marknaderna och nu vill du bygga din owb allmäktiga handelsrobot som kan erövra allt, denna artikel kommer inte att lova den magiska formeln eller den heliga graalen till din oövervinnerliga robot, men det är så nära som det blir. PS Trading con cepts som nämns här gäller inte för handel med högfrekventa handelar i millisekunder. Gör dina robotar intelligenta men inte för intelligenta. Vad betyder det för Weather All Storm. För att våra handelssystem ska kunna väder alla stormar, fortsätter aka att vara effektiv på olika marknader villkor måste de anpassa sig till marknaden Detta medför handelslogik som är effektiv i olika perioder, backtesting ramar som minimerar bakåtblickande bias och regler som inte är alltför styva. Dessa kriterier kan sammanfattas i ett ord Robustness. What is Robustness. Officiell definition av robusthet I ekonomi är robusthet ett finansiellt handelssystems förmåga att förbli effektivt under olika marknader och olika marknadsförhållanden, eller att en ekonomisk modell kan vara giltig under olika antaganden, parametrar och initiala villkor. För att översätta det till enklare ord. En handelssystem är robust om den kan förbli effektiv vid förändrade marknadsförhållanden. Kodning, testning och utvärdering Att äga handelsrobotar är idag billigt. Typer av robusthet. Robusthet verkar vara ett överanvändt ord Många talar om robusthet i ett handelssystem utan specifika hänvisningar till en enda typ av robusthet. Det finns många typer av robusthet, den här artikeln kommer att prata om de viktigaste seven. Period Robustness. Seasonal Robustness. Timeframe Robustness. Instrument Robustness. Optimisation Robustness. Parameter Robustness. Portfolio Robustness. Period Robustness. Definition Ett handelssystem är robust över perioder om det kan förbli effektivt under olika marknadsperioder. Marknadsperioder kan karakteriseras i 2 typer generiska och strategiska. Generiska marknadstider. Figur 1 Sex generiska marknadstider. Figur 1 visar oss de sex huvudsakliga marknadsperioderna I det här fallet analyserar vi våra handelssystems resultat under dessa sex perioder. Observera dock att några generiska marknadsperiodstabeller är 5 av 5 eller större.5 av 5 Y-axlar Mycket låg volatilitet, låg volatilitet, neutral, hög volatilitet, V ery High Volatility.5 av 5 X axis Strong Uptrend, Uptrend, Ranging, Downtrend, Strong Downtrend. Klassificeringen 5 till 5 är bara en variation av originalet 2 av 3 men det finns inget fel med 5 av 5 eller större klassificering. Om vårt handelssystem verkar under de sex grundläggande perioderna betyder det att det är period robust. Strategiska marknadstider. Strategiska marknadsperioder definieras av näringsidkaren Det beror på specifika villkor som starkt påverkar tillgången du handlar. Dessa specifika villkor varierar för olika tillgångar. Till exempel, om vi handlar EURUSD, kommer den amerikanska centralbankens penningpolitik att påverka vår handel betydligt. Därför kommer vi att analysera två strategiska marknadsperioder 1 Fed Easing 2 Fed Stramning Om du är handel med aktier, exemplet skulle vara 1 strax före inlösen av utsläpp 2 strax efter inlösen av utlämning. Application to Trading. Does detta innebära att om mitt handelssystem inte är period robust är det olönsamt. Det är felaktigt Det finns p tjugo handelssystem som är utformade för att fånga en specifik ineffektivitet på marknaden. Vårt mål är att förstå våra handelssystem s särdrag så att vi vet hur och när de ska distribueras. Säsongens robusthet. Definition Ett handelssystem är säsongsmässigt robust om det kan hålla effekten trots säsongseffekter. Säsongens robusthet kan betraktas som en delmängd av Period Robustness. En säsongseffekt är någon marknadsavvikelse eller ekonomisk effekt som verkar vara relaterad till kalendern. Vi säger att det finns säsongseffekter på marknaden om det är repeterande beteende på marknaderna över tiden Det finns fem huvudtyper av säsongseffekter. Intresserad dagseffekt Specifikt beteende på marknaderna på vissa tider av dagen. Dagseffekt Särskilt beteende på marknaderna på vissa dagar i veckan. Effekt Effekt Särskilt uppförande av marknader på vissa månader av året. Quarter Effect Särskilt beteende marknaderna kvartalsvis. Multiårs Effekt Termen inkluderar ibland fleråriga e fekter som 10-åriga decadalcykeln. I de flesta fall är säsongsbetonade effekter inte självuppfyllande profetior. De skapas av marknadens fundamentals.1 Forexmarknaderna är mer aktiva under vissa tider på grund av globala överlappningar på marknaden.2 Januari Effect exists because of tax reducing reasons.3 Markets tend to be quieter on the earlier half of the first Friday of every month due to Non-Farm Payrolls. Figure 2 Examining the January Effect Credits. Application to Trading. Why don t we exploit this recurring inefficiency It is definitely possible, but there are several reasons this could be difficult. Timing and extent of seasonal effects are unstable. Market participants are constantly trying to exploit seasonal effects These actions influence the extent and behaviour of the seasonal effects Therefore, this creates a dynamic situation where the seasonal effects are constantly changing. Cost of trade is too high. The seasonal effect could exist because the cost to exploit the effect is too high The high cost acts as a natural barrier to protect the seasonal effects. We don t believe the market is completely efficient, but we believe it is efficient to a certain extent In many cases, it is difficult to exploit a seasonal effect because the efficiency is priced in For instance, you may want to buy a straddle an option structure that gains in value when volatility increases during Non-Farm Payroll because you expect higher volatility However, the sellers of the straddle have factored in the high volatility and thus priced this into the straddle price option premiums. Timeframe Robustness. Definition A trading system is timeframe robust if it is able to stay effective when trading in different timeframes. Timeframe refers to our candlestick period 1min, 5min, 15min, 1hour, Daily etc Our trading system is timeframe robust if its underlying trading strategy is effective in different timeframes. We need to understand timeframe robustness in two types of market conditions.1 Our a sset behaves like a fractal across timeframes.2 No fractal behaviour. Scenario 1 Our asset behaves like a fractal across timeframes. No we are not referring to the candlestick pattern when we talk about Fractals. Official Definition of Fractals A fractal is a natural phenomenon or a mathematical set that exhibits a repeating pattern that displays at every scale If the replication is exactly the same at every scale, it is called a self-similar pattern. To simplify it A fractal is a pattern that repeats itself in different visuals or time scales. Figure 3 Fractals in different timeframes. As we zoom into the lower timeframes, we see that the shapes characteristics of the asset remains the same. Our trading system will always be timeframe robust when it is trading an asset that behaves as a fractal across timeframe If the market behaves in the same manner at every timeframe, there should not be any difference in our trading system s behaviour. Scenario 2 No fractal behaviour. A general rule of thu mb is that noise volatility increases as we go to the lower timeframe Our trading system will be timeframe robust here if its underlying logic is effective in spite of the different noise levels and market behaviour at different timeframes. Application to Trading. If our trading system is timeframe robust, it works at every timeframe However, this does not mean that we remain indifferent to the timeframe we trade. We should trade on lower timeframe This will maximise the number of trading opportunities per time Imagine averaging 1 trade per 5 bars If you trade on Daily timeframe, you will fire 52 trades a year 260 weekdays 5 If you trade on 1 Hourly timeframe, you can fire 1248 260 24 5 trades a year Hence, your profit will be 24 times higher without considering the effects of compounding. Should we trade on the lowest possible timeframe. Following the logic stated above, if we should trade on the lowest possible timeframe 1min for MT4 , we should be massively profitable right Sadly and uns urprisingly, no. It is unlikely for a trading system to be perfectly timeframe robust It is unlikely for an asset to behave in a perfect fractal manner As we go to lower timeframes, the noise increases The asset s behaviour becomes more unpredictable due to real-time influences from current events, market microstructure and speculation by market participants Therefore, we should choose a timeframe that balances noise reduction and profit maximisation. If our trading system is not timeframe robust, we need to understand which timeframe is most suitable for our trading system in different market conditions. Instrument Robustness. Definition A trading system is robust across instruments assets if it can remain effective across different instruments. A trading system is instrument robust if it performs as expected across different assets This means that the trading system s underlying trading logic is capturing an inefficiency that exist in multiple assets. Application to Trading. Instrument robu stness is not a gauge of a trading system s performance In fact, most trading systems are not instrument robust Trading systems are designed to capture specific market inefficiencies and these inefficiencies tend to be instrument specific Thus, it is not unusual that most trading systems are not instrument robust. Instead of aiming for instrument robustness, we should understand how our trading systems work in different assets This will allow us to discover common inefficiencies in different assets and deploy our portfolio of trading systems more effectively. Optimisation Robustness. Definition A trading system is robust in optimisation if the trading system objective function is maximised while minimising curve fitting. Before we explain in detail what Optimisation Robustness is, let s briefly understand what optimisation, objective function and curve fitting are. Optimisation The process where we adjust the structure and rules of a trading system to maximise or minimise its objective func tion. Objective Function This is the performance output of a backtest that we are trying to maximise or minimise. An easy and lazy way to choose an objective function is to use Net Profit This is rarely a good idea In trading, this output should consist of 3 things reward, consistency and risk. Curve Fitting The process of catering the trading system so closely to historical data that it becomes ineffective in the future. Why Because the future rarely reflects the past. Because the future rarely reflects the past, we need an optimisation process that minimises curve fitting This will increase the odds of success of our trading system A trading system going through such a process can be said to be optimisation robust. Application to Testing. This brings us to our solution The Walk Forward Optimisation. Definition according to Wikipedia. The trading strategy is optimised with in-sample data for a time window in a data series The remainder of the data are reserved for out-of-sample testing A small portion of the reserved data following the in-sample data is tested with the results recorded The in-sample time window is shifted forward by the period covered by the out-of-sample test, and the process repeated At the end, all of the recorded results are used to assess the trading strategy. To translate into simpler words. We optimise our trading system using one period in-sample , and apply the optimised parameters to the next period out-of-sample Repeat The performance of the trading system is collated using all the out-of-sample periods. Figure 4 In-sample and out-of-sample periods.1 Optimise trading system using In-Sample A.2 Test trading system s performance in Out-Sample A.3 Optimise trading system using In-Sample B.4 Test trading system s performance in Out-Sample B.5 Repeat for Period C to E.6 We will evaluate the trading system s performance in Out-Sample A to E. The aim of this process is to examine how will our trading system perform when executed in unknown territory out-of - sample. Parameter Robustness. Definition A trading system is parameter robust if its performance does not change drastically due to slight change in parameter values. If the underlying trading logic is sound, changing the parameter values slightly should not significantly affect its performance If the performance changes drastically, the trading system exhibits signs of curve fitting. Application to Testing. The results of an optimisation can be viewed in an optimisation surface parameter space if we are only optimising two parameters The x-axis and y-axis represents our two parameters The z-axis represents our objective function. Figure 5 Optimisation Surface with spiky peaks. Figure 6 Optimisation Surface with flat hills. The two figures above represents the optimisation surface of a trading system that uses two parameters, a fast moving average and a slow one When we examine this optimisation surface, we prefer flat hills over spiky peaks Flat hills indicate little change in performance eve n if we shift the parameter values slightly. Portfolio Robustness. Definition Portfolio Robustness occurs when a group of trading systems are able to remain effective in different market conditions. Portfolio Robustness and Period Robustness are different as Portfolio Robustness focuses on the complementary effects of separate trading systems Different trading systems have different strengths and weaknesses They can be combined in a way to maximise our objective function of the portfolio in the long run. Application to Trading. For illustration, assume we have two trading systems which are long term profitable but are negatively correlated to each other. Figure 7 Net equity curve of a portfolio of two robots. By combining these two trading systems, we are able to cancel out the risk in their performance and achieve a net long run positive result with significantly lower risk. By applying this concept to a portfolio of different trading systems, we aim to achieve Portfolio Robustness. This artic le serves to briefly introduce the seven main types of robustness However, in order to truly have a good grasp on building great trading systems, you need these three elements Trading System Design, Coding for Algorithmic Trading and Market Knowledge What s next Go Google these topics and get started. AlgoTrading101 is the first comprehensive online course on algorithmic trading Learn the fundamentals of algo trading and put your ideas into action along with more than 10,000 students Learn more about us at AlgoTrading101.This dude runs an algorithmic trading academy with over 13,000 students Click on the Author link above to learn more about him. Post navigation.
Comments
Post a Comment