Last Updated on 16 July, 2024 by Håkan Samuelsson
Curve fitting
Curve fitting är en väldigt viktig del inom mekanisk trading och algotrading att ha koll på. Nedan text förklarar mer. Nedan är en del av det jag går igenom i min 6 månaders tradingkurs.
En av de största fördelarna med mekaniska tradingsystem är möjligheten att utvärdera sina historiska prestanda genom att “backtesta” strategierna. Medan vi kanske bara har några få månader med faktisk realtidstrading tillgänglig, gör datorer och bakåtjusterad data det möjligt att se vad ett system “skulle ha avkastat” tidigare år.
Problemet är naturligtvis att systemet har utformats på samma kursdata. Oavsett om det är avsiktligt eller inte, eftersom systemet är utformat på tidigare data, är de ofta offer för vad som kallas “curve fitting “. Ett annat ord för “curve fitting” är överoptimering. Detta gör att backtestresultaten också är en av de största nackdelarna med tradingsystemen.
Eftersom framtiden inte kan se ut som det förflutna på en viss marknad – kan parametrarna på den tidigare “kurvan” av data orsaka stora problem på den framtida datakurvan, vilket gör att systemet inte är i fas och potentiellt kan leda till man förlorar pengar.
Ett exempel
Det enklaste sättet att förstå “curve fitting” är genom ett enkelt exempel. Föreställ dig ett system som köper eller säljer sojaböneterminer på en breakout över eller under marknadens hög eller låg under det senaste X-antalet dagar. När du testar systemet på tidigare data kan testningen visa 50000 SEK i vinst när du använder en 10 dagars hög / låg, 100000 SEK i vinst när du använder en 20 dagars hög / låg och 200000 SEK när du använder 30 dagars högsta / lågsta.
Om du var utvecklaren, vilket värde skulle du använda vid utformningen av systemet, 10, 20 eller 30? Jag skulle gissa att de flesta skulle använda 30-värdet, eftersom det ger den högsta vinsten. Nu kommer en utvecklare att titta på mer än bara vinst, och testa för lägsta drawdown eller mest vinnande månader, till exempel; men oavsett ditt mål för systemet är det av mänsklig natur att designa ett system vars parametrar ger resultat så nära som möjligt de man önskar. Problemet är att bara för att en parameter som fungerat med tidigare data inte betyder att det kommer att fungera i framtiden, med okänd data. Så hur skulle en utvecklare försöka undvika ett sådant problem?
Ett annat exempel på “curve fitting” är justering av parametrar efter att något hänt. Föreställ dig ett tradingsystem som går bra, men som förlorat pengar på tre av de fyra senaste onsdagarna sedan live trading började. En trader kan titta på dessa resultat och komma med en lysande idé, koda om strategin så att den inte trejdar på onsdagar. Att köra strategin bakåt efter att ha lagt in den nya logiken skulle leda till att man inte förlorar pengar längre på onsdagar. Det du har gjort nu är att du riskerar “curve fitting”.
Det finns många olika sätt att bekämpa detta. Jag har mina egna varianter som jag lär ut i 6 månaders tradingkurs.
I matematik
I matematik är curve fitting processen att hitta en kurva som passar bäst i en samling datapunkter i den meningen att någon objektiv funktion som är föremål för begränsningar maximeras (eller minimeras). Exempelvis är minsta kvadrater en curve-fittingmetod som minimerar summan av kvadrerade rester. En rest är skillnaden mellan ett monterat och ett verkligt värde.
Den objektiva funktionen att minimera när man använder den här metoden för att uppnå bästa passformen är summan av de kvadrerade resterna. Observera att en “bästa passform” endast är definierad i förhållande till det valda objektet och att curve fitting huvudsakligen är resultatet av optimering.
Läs Mer: What is curve fitting?