Backtests för kryptobot: granskningstider, kostnader och överutrustning
Ett lönsamt backtest för kryptohandelsbot är en beskrivning av en simulering, inte ett bevis på att strategin kommer att ge samma resultat live. Innan du jämför avkastning, fastställa vad simulatorn visste, när den visste det och vilka exekveringskostnader den debiterade.
Börja med tidsstämpeln, inte aktiekurvan
Anta att en strategi använder ett ljuss slutvärde för att generera en post. Om simuleringen också fylls vid den exakta stängningen utan ett realistiskt beslut och utförandefördröjning, kan den ge boten ett pris som den inte kunde få efter att ha observerat det färdiga ljuset. Spela in signalens tidsstämpel separat från den första kvalificerade exekveringstidsstämpeln.
Samma problem uppstår när en datauppsättning innehåller revisioner eller indikatorer som är kopplade till en tidigare tidsstämpel. Ett giltigt historiskt värde måste ha varit tillgängligt för strategin vid den tidpunkten. Dagens rensade datauppsättning är inte automatiskt en trogen registrering av gårdagens informationsuppsättning.
Upprepad justering ändrar vad ett bra resultat betyder
Att välja den bästa parameteruppsättningen bland hundratals försök skapar ett urvalsproblem. En kombination kan passa buller under utvecklingsperioden. Håll ett register över misslyckade försök, inte bara det vinnande diagrammet.
QuantConnects forskningsguide diskuterar överutrustning och forskningsskydd. En användbar praktisk förlängning är att frysa strategin innan man utvärderar en senare, orörd tidsperiod. Om den utvärderingen leder till mer trimning har det blivit utvecklingsdata; reservera ett nytt slutprov.
Gör kostnaderna synliga
Följande är ett hypotetiskt redovisningsexempel, inte en observerad strategi:
| Objekt | Belopp i USDT |
|---|---|
| Brutto simulerad handelsvinst | 300 |
| In- och utträdesavgifter kombinerade | -120 |
| Beräknad utförandeglidning | -100 |
| Utbetalda medel, netto efter kvitton | -90 |
| Netto simulerat resultat | -10 |
Aritmetiken är 300 - 120 - 100 - 90 = -10 USDT. Kostnader kan vända tecknet på ett resultat. Undvik att räkna spridningen två gånger om den redan ingår i simulerade fyllningspriser. Finansieringen bör följa den faktiska positionen, kursen och avvecklingstidpunkten i testet snarare än en bekväm fast årlig kurs.
Fråga om fyllningarna var möjliga
Ett rört gränspris fastställer inte att hela beställningen skulle ha fyllts. Köposition, konkurrerande order, tillgängligt djup och partiellt utförande spelar roll. En stor marknadsorder bör inte automatiskt få det bästa visade priset för hela sin storlek.
Testa förändringar i latens, avgifter och glidning. En strategi som bara fungerar med ett optimistiskt genomförandeantagande är bräcklig. Testa saknade data, avvisade beställningar och anslutningsbortfall som separata driftsscenarier; historiska ljus ensamma kan inte modellera dessa väl.
Jämför mellan olika villkor
Rapportera testdatum, instrument, positionsgränser, antal handel, omsättning, uttag och kapitalantaganden tillsammans med avkastning. Ett stigande marknadsresultat kan till största delen återspegla tillgångsexponering. Jämför med ett passande passivt riktmärke över samma datum och använd konsekvent behandling av kostnader och kontanter.
En orörd uppehållsperiod och en liten observation av pappershandel kan avslöja implementeringsfel, men ingen av dem garanterar framtida vinst. Öka inte kapital bara för att en kort demonstration är positivt.
Ett resultat som går att granska
En användbar botrapport ger reproducerbara inställningar, datahärkomst, tidsstämpelregler, alla materialkostnader och en tydlig åtskillnad mellan utveckling och utvärdering. Konsultera det aktuella OrangeX avgiftsschemat innan du använder plattformsspecifika antaganden. Den här artikeln utvärderar simuleringar och hävdar inte att OrangeX erbjuder en viss bot eller backtesting-produkt.
Beslutet är om bevisen överlever realistiska antaganden, inte vilket diagram som ser smidigast ut. Alla numeriska resultat ovan är illustrativa.