3 nøgler til algo crypto backtesting PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

3 nøgler til algo crypto backtesting

En masse artikler om algoritmisk kryptohandel oversimpplificerer virkeligheden med at bygge en handelsrig og backtesting-kode. Her vil vi gennemgå 3 aspekter af backtesting, som ofte er sluppet over, men som er det nøglen til at opnå resultater.

3 nøgler til algo crypto backtesting PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Lad os komme lige til det, de 3 nøgler til backtesting:

  • lys lave værdier for stop
  • styring udførelsespriser
  • iterativt sammenligne backtest med faktiske resultater

Det betyder, at stærk backtesting er en stor indsats (ingen overraskelse!), men lad os grave videre i dette.

Mange backtesting-rigge bruger stearinlys tæt værdi for hvert flueben. I live handel med stop-loss ordrer det er den lave værdi i et flueben, der stopper din position.

Lad os look med et eksempel. Lad os i diagrammet nedenfor for BTC forestille os, at vi udfører en KØB-ordre ved den blå linje på det nederste grønne stearinlys, omtrent midtvejs fra lav til høj for det flueben.

Det næste fluebens lave kunne udløse et stop, hvis det var et snævert stop-loss. Men hvis din backtest-kode antager et stop-loss SÆLG ved lukningen, så er det ikke tilfældet og positionen ville strække sig fremad i din simulering. Se nøje på det røde lys efter det grønne indgangsflueben (kryds), ​​dets tætte og lave værdier er meget forskellige. I dette specifikke tilfælde ville sidstnævnte vise en større fortjeneste.

Således virkningen af ​​et KØB til en højere pris end den åbne kan have alvorlige konsekvenser for din simulering og backtesting. det er ikke forskellen mellem din gennemførte pris og flueben åben, i stedet kan det være en stor forskel i den måde, positionen udvider sig og opnår overskud.

Udførelsesprisen kan have en kaskadeeffekt på en handelsfortjeneste.

Overvej 2 positioner, den ene indtastet kl. 20.00 (for at bruge runde tal), den anden kl. 20.50, en lidt højere (markedskøb) pris. Denne [relativt lille] forskel på 0.50 enheder kan have en kaskadeeffekt på stillingens overskud over tid. Hvorfor? For i et efterfølgende flueben kan 20.50-positionen blive stoppet, da en lav værdi kan være lavere end dens stop-loss-indstilling. I mellemtiden fortsætter den første position for mange flere tikker til et overskud. Stor forskel!

For at håndtere dette er vi nødt til at estimere vores udførte priser...

Vigtigt at huske på, at backtesting har til opgave at estimere afkast fra en model/strategi, når den blev kørt i fortiden.

Din backtesting-kode ved ikke, hvilken pris en handel modtog (fortid) på KØB- eller SÆLG-siden.

Når man ser på tidligere historiske markedsdata, er en faktisk ordreudførelsespris ikke til at kende. Du kan faktisk have en log, der viser den faktiske pris på en position, men backtraderen ser på generelle markedsdata og ikke individuelle handelslogfiler.

At bruge den åbne pris for et flueben ved indtastning er ikke realistisk, det er heller ikke at bruge lukkeprisen. Hvorfor gør dette en stor forskel? Fordi, som diskuteret i det foregående afsnit, kan en indgang til en højere udførelsespris nemt få en limit-salgsordre til at udløse hurtigere end i backtest-simuleringen.

Du ønsker, at dine backtesting-resultater skal være lidt pessimistiske.

Der er ikke noget reelt svar på, hvor man præcist skal estimere udførelsespriserne, det er vigtigt at forstå, at du ikke kan få dette helt rigtigt i dine simuleringer. At antage en ÅBEN pris for dine KØB-ordrer er generelt optimistisk og ikke den ideelle tilgang. På samme måde antager en LUK-pris for dine SÆLG-ordrer, vil det sandsynligvis afvige kraftigt fra de faktiske resultater.

KØB på markedet

Her er nogle muligheder at vælge imellem for KØB markedsordrer:

a) estimer en udførelsespris midtvejs (eller en foruddefineret afstand) mellem et fluebens ÅBEN og LUK

b) estimer en udførelsespris midtvejs (eller en foruddefineret afstand) mellem et fluebens LAV og HØJ

c) valgte en tilfældig pris mellem ÅBEN eller LAV og LUK eller HØJ

Mens markedshandling har en tendens til at være tilfældig, er jeg ikke fan af (c), fordi din backtest-kode vil ikke være idempotent; det vil returnere forskellige resultater, hver gang det køres på de samme data. Det her er rodet.

Mulighed (b) fremhæver et mere volatilt marked, mens mulighed (a) er mindre. Dette er op til dig, men et valg skal træffes. Du kan f.eks. bruge et volatilitetsindeks såsom CVI og vælg derefter i henhold til den værdi i den periode, du backtester.

Fortjeneste tager SÆLG limitordrer

Her er nogle muligheder at vælge imellem for fortjeneste at tage SÆLG limitordrer:

a) estimer en udførelsespris midtvejs (eller en foruddefineret afstand) mellem et fluebens OPEN og HIGH

b) estimer en udførelsespris midt mellem et fluebens CLOSE og HIGH

c) valgte en tilfældig pris mellem ovenstående lysværdier

Stop-loss SÆLG grænseordrer

Her er nogle muligheder at vælge imellem for stop-loss SELL limit-ordrer:

a) estimer en udførelsespris midt mellem et fluebens ÅBEN og LUK

b) estimer en udførelsespris midt mellem et fluebens LUK og LAV

c) valgte en tilfældig pris mellem ovenstående lysværdier

Bemærk brugen af ​​LAV vs. HØJ værdier afhængigt af ordrens holdning. En salgsordre med overskudsbegrænsning har at gøre med en stigende pris, mens en stop-loss forebyggende grænsesalgsordre har at gøre med en faldende pris. Begge vil sandsynligvis møde huller, der springer over grænseværdierne!

Håndtering af gap-down tidligere stop-loss grænseordrer

En meget almindelig måde at udvide dine positionstab på er at have en prisgab ned forbi din stop-loss grænseordre. Din handelsrigg skal håndtere dette ved at identificere positionen under sin stop-loss limitordre og udføre en markedssalgsordre på den, før den går længere i minus.

stop-loss grænserækkefølge vist på Binance TradingView-diagrammet

Husk, at mange handelsbørser ikke understøtter stop-loss markedsordrer, f.eks. Binance, så du er tvunget til at bruge stop-loss grænse ordre om at beskytte dine positioner. En stop-loss limitordre har en 'stop-pris' og en 'limit-pris', førstnævnte udløser et limit-salg på prisen på sidstnævnte.

Mange børser såsom Binance understøtter ikke stop-loss limitordrer.

Hvad betyder det for din backtest-algoritme? For at have et konservativt/pessimistisk syn bør det tage en salgspris et sted mellem stoppestedets grænsepris og fluebenet lavt. Jo lavere forholdet er, desto mere konservativt er resultatet. Det er sådan, at en betydelig procentdel af disse stop-loss limitordrer vil blive eksekveret til deres grænsepris, men andre vil udføre under grænseprisen og dette skal der redegøres for.

Regnskab for profittagning af salgsordrer

Hvis din handelsrigg understøtter profittagningsmodeller (det burde den), hvorved en position lukkes med overskud, når først et exitniveau er nået, bør disse ordrer administreres aggressivt.

I dette scenarie vil en markedsordre efterlade overskud på bordet, bedre at lave en limit-salgsordre til en bestemt pris.

En stærk tilgang, når man ønsker at tage fortjeneste på en position, er at få toppen af ​​ordrebogen (se ovenfor) og sætte SÆLG-grænseprisen til en af ​​disse priser. Dette vil sandsynligvis fylde til en højere pris (profit) end en markedsordre på nuværende tidspunkt.

Hvad betyder det for din backtest-algoritme? For at have et konservativt/pessimistisk syn bør det antages en pris mellem det overskudsgivende exit-niveau og flueben højt. En faktisk salgspris ville afhænger af ordrebogens spredning på tidspunktet for en handel, men der er selvfølgelig ingen 'ordrebog' i en backtest-simulator, så vi skal estimere ud fra de tilgængelige data.

Der er ingen måde at forbedre backtest-algoritmer på, medmindre de sammenlignes med faktiske resultater iterativt.

Medmindre du iterativt sammenligner dine backtest-resultater med faktiske handelsresultater, kan du ikke være sikker på din backtesting.

Her er et konkret eksempel på, hvordan du opnår dette:

  • køre din live handelsrigg i en periode, f.eks. 24 timer
  • log resultaterne: hver handel, hver exit, hvert stop-loss
  • efter denne periode skal du køre din backtest-kode på den samme periode
  • sammenlign resultaterne af backtesten med dine faktiske resultater!

Sammenlign hver handel i detaljer, hvilke antagelser gjorde din backtest-kode, som ikke er repræsentative for faktisk live handel?

Hvad er forskellene?

  • er din backtest optimistisk? Hvis ja, hvor? hvordan? hvorfor?
  • er din backtest alt for pessimistisk?

Du ønsker, at din backtest konsekvent viser et lidt pessimistisk resultat; konservative.

Når du har gjort dette et par gange, skal du slukke for din handelsrig og udvikle både backtest-koden og din handelsrig. ITERATE-.

Fordi din live trading rig kan køre med relativt lille ordrestørrelse, koster det ikke meget at køre det som en test.

Selvfølgelig vil der i enhver periode være uventet handling på markedet, pointen her er at identificere områder, hvor din backtest tydeligvis ikke estimerer, hvad dine faktiske resultater afslørede.

Nogle eksempler på, hvad jeg har fundet, da jeg gjorde dette:

  • backtesten var alt for optimistisk med hensyn til LIMIT SELL-priser, i faktisk handel var der ofte gap-down-situationer, der reducerede profitten
  • backtesten var alt for optimistisk med hensyn til KØB-udførelsespriser, i faktisk handel var det sjældent at få en tick open-kurs eksekveret
  • backtesten fangede ikke STOP-LOSS salgsordrer på lave værdier inden for et flueben, i faktisk handel var dette at afslutte positioner tidligt

Dette er den eneste måde at tjene penge på din kryptohandelsrig. Udvikl din backtesting over tid og gentag over faktiske resultater for at forbedre den.

trading rig automatiseret grænseordrejustering på Binance

Backtesting af din algoritmehandelsmodel er hårdt arbejde! Dette burde ikke komme som nogen overraskelse. Der er ingen 'let vej' her.

Source: https://medium.com/@gk_/3-keys-to-algo-crypto-backtesting-99f006cfd390?source=rss——-8—————–cryptocurrency

Tidsstempel:

Mere fra Medium

amesFelix

Kildeknude: 1098837
Tidsstempel: Oktober 28, 2021