Jag har backtestat tusentals strategier. Lärdomen jag lärde mig den hårda vägen: Överanpassning kostar dig pengar. Nu använder jag korsvalidering för att hjälpa till att slå tillbaka. Här är koden för att göra det (på 2 minuter):
Om du inte är bekant med korsvalidering: • Minskar risken för överanpassning i modeller • Innebär att data delas upp i delmängder • Uppskattar modellens prestanda på osedda data Det används inom all data science. Nu kan du använda den för handel med VectorBT PRO. Kom så går vi!
Låt oss importera VBT PRO och de få bibliotek som är relevanta för vår analys.
Hämta datan för din favorittillgång. Vi använder AAPL.
Nästa steg är att sätta upp en "splitter", som delar upp ett datumintervall i mindre segment enligt ett valt schema.
Kommandot splitter.plots().show_png() resulterar i följande visualisering:
Därefter skapar vi en funktion för att genomföra en handelsstrategi inom ett angivet datumintervall med en enda parameteruppsättning, vilket ger en nyckelmått. Vår strategi kommer att vara en enkel EMA-crossover kombinerad med ett ATR-trailing stop.
Genom att dekorera (eller wrappa) vår funktion med 'parameteriserad' möjliggör vi för 'objektiv' att acceptera en lista med parametrar och utföra dem över alla kombinationer.
Låt oss analysera resultaten genom att segmentera de snabba och långsamma EMA-perioderna. Den lyfter fram den minimala variationen i Sharpe-kvoten från träningen till testuppsättningen över minst 50 % av splits, där blått indikerar en positiv förändring.
Resultatet är en värmekarta som visar de olika Sharpe-förhållandena över kombinationerna av långsam och snabb period.
Även om du kanske har utvecklat en lovande strategi på papper är det viktigt att korsvalidera den för att bekräfta dess konsekventa resultat över tid och säkerställa att det inte bara är ett resultat av slumpmässiga svängningar. Använd de tekniker du lärt dig här på din egen strategi.
109