Az első stratégia lefutott. Most azt vizsgálod, hogy a szimulált kötések valóban a megadott szabályból következtek-e, és mit jelentenek a megjelenő eredmények.

A könyv demóadata mesterséges ársor. A rajta kapott eredmény a program működésének ellenőrzésére használható. Egy valódi piac várható hozamát nem állapítja meg.

Először egy kötést nézz meg

Futtasd a crossover_strategy.py programot 5 és 20 hosszakkal. Várd meg a futás végét, majd a grafikon alatti panelen válaszd a Trades fület. Ha a panel zárva van, nyisd ki a jobb oldalán levő nyíllal.

A táblázatban egy kötés belépési és kilépési adatai szerepelnek. Egy long kötésnél a belépés vétel, a kilépés eladás.

OszlopMit mutat?
TradeA kötés sorszámát és belépési azonosítóját
Entry timeA belépés teljesülési időpontját
Entry priceA belépés teljesülési árát
Exit timeA kilépés teljesülési időpontját
Exit priceA kilépés teljesülési árát
QtyA kötés mennyiségét
ProfitAz adott lezárt kötés pénzbeli eredményét
Profit %Az adott kötés százalékos eredményét
A PyneIDE-ben a stratégia grafikonja alatt nyitva van a Trades táblázat a kötési időpontokkal, árakkal és eredményekkel.
A Trades táblázatban külön ellenőrizhetők a teljesült belépések és kilépések.

Kattints egy kötés sorára. A grafikonon megkereshető a hozzá tartozó időszak. Vizsgáld meg a belépés előtti keresztezést és a lezárást kiváltó keresztezést is.

Az eredeti program nem adott commission_value vagy slippage beállítást, így az alapfutás nem tartalmazza azokat a költségeket, amelyeket mindjárt külön hozzáadunk. Előbb ezen az egyszerű futáson ellenőrizd az irányt, időpontot és mennyiséget.

Számold ki egy egyszerű kötés eredményét

Ha egy egységet 100-ért vettél és 103-ért adtál el, az árkülönbség 3. Egységnyi pontértéknél, költségek nélkül ennyi a pénzbeli eredmény is.

Általánosabban a long kötés áreredménye:

(kilépési ár − belépési ár) × mennyiség × pontérték

A pontérték a piaci metaadat része. Az ár egy egységnyi változásának pénzbeli értékét írja le egy egységnyi pozíciónál. A könyv DEMO-adatában a pontérték 1.

A jutalékok csökkentik a kötés nettó eredményét. A slippage a teljesülési árat módosítja, ezért már az árkülönbségben megjelenik. Ugyanazt a slippage-et nem kell még egyszer külön levonnod a módosított árakból.

A Performance nézet

A Performance fül a teljes futás tőkealakulását mutatja. A felületen ezeket a mezőket találod:

  • Cumulative P&L: a tőke változása a kezdőtőkéhez képest;
  • Max drawdown: a vizsgált tőkegörbe korábbi csúcsához képest mért legnagyobb visszaesés;
  • Final equity: a tőke a futás utolsó feldolgozott gyertyáján;
  • Max run-up: a tőke korábbi mélypontjához képest mért legnagyobb emelkedés.
A PyneIDE Performance nézetében a Cumulative P&L, Max drawdown és Final equity mezők, valamint a tőkegörbe láthatók.
A Performance fül a teljes futás tőkegörbéjét és összefoglaló értékeit mutatja.

Az equity a nyitott pozíció változó értékét is figyelembe veheti. Emiatt az utolsó tőkeérték nem feltétlenül azonos a lezárt kötések profitjának összegével hozzáadva a kezdőtőkét. Az adat végén megmaradt nyitott pozíciót is ellenőrizd.

A tőkegörbén a végpont mellett a köztes szakaszokat is vizsgáld. Azonos végső eredményhez eltérő visszaesések és hosszú veszteséges szakaszok vezethetnek.

A Stats nézet

A Stats fül a futás végén kapott részletes statisztikát mutatja. A Total Trades a lezárt kötések számát, a Net Profit azok összesített nettó eredményét segít ellenőrizni.

A Profit Factor a nyereséges és veszteséges kötések összesített eredményének aránya: az összes nyereség osztva az összes veszteség abszolút értékével. Ha nincs veszteséges kötés, a hányados nem egy szokásos véges összehasonlító szám.

A találati arány azt írja le, a lezárt kötések mekkora része nyereséges. Önmagában nem határozza meg az összesített profitot. Sok kis nyereséget kevés nagy veszteség is felülírhat.

Kevés kötésből könnyű félrevezető összefoglalót kapni. A teljes kötésszámot mindig tartsd a többi mutató mellett, és nézz meg egyedi veszteséges kötéseket is.

Költségek a Properties felületen

A grafikon alsó paneljének Strategy properties fogaskerekével nyisd meg a stratégia beállításait, majd válaszd a Properties fület. Itt a kezdőtőke, a mennyiség és a költségek is módosíthatók.

A következő két futás összehasonlító gyakorlat. A megadott költségértékek a példa részei; egy valódi piac költségeit külön kell megadnod.

  1. Ellenőrizd az Initial capital 10000 értékét, és az Order size mezőnél az 1 Contracts beállítást.
  2. A Commission mezőben állíts 0,1 értéket, mértékegységként válaszd a % of order value lehetőséget. A mezőbe 0.1 formában is beírhatod.
  3. A Slippage legyen 2 tick.
  4. Ments a Save gombbal, majd indítsd el a Run Pyne code műveletet, és várd meg a futás végét.
A stratégia Settings felületén a Properties fül látható a Commission és Slippage mezőkkel.
A Properties felület a jutalékot százalékban, a slippage-et tickben kezeli.

A 0,1 százalék nem 10 százalék: a mező százalékegységben értendő. Egy 100 értékű teljesülésnél 0,1 jutalékot jelent. A belépés és a kilépés is teljesülés, mindkettőhöz tartozhat költség.

A tick a piac legkisebb árköze. A DEMO metaadatában ez 0,01, így két tick 0,02 árelmozdulás. A slippage a piaci megbízás teljesülési árát a stratégia számára kedvezőtlen irányba tolja.

Más piacon a tick és a pontérték is eltérhet. A költségek értelmezését ne vidd át automatikusan a DEMO-adatból egy másik instrumentumra.

A teljesülési beállítás is része a kísérletnek

A Fill orders rész On bar close beállítása befolyásolja a piaci megbízások időzítését. A könyv alapstratégiájánál ezt hagyd kikapcsolva, hogy a jelzésből adott megbízás a következő nyitáson teljesüljön.

Az After order is filled újraszámítást kérhet a teljesülés után. Az Using bar magnifier részletesebb, alacsonyabb idősíkú adatokkal vizsgálhatja a gyertyán belüli teljesüléseket. Ezek új végrehajtási körülményeket jelentenek; az alapfutás összehasonlításakor maradjanak kikapcsolva.

Egyetlen beállítás változtatása után is új futási eredményről beszélünk. Ha egyszerre módosítasz hosszt, mennyiséget, költséget és teljesülési módot, nem tudod megmondani, melyik okozta az eltérést.

Mentsd el, mit hasonlítottál össze

A grafikon eszköztárán az Open trades output CSV gombbal megnyithatod a kötési exportot. Az Open plot output CSV a rajzolt értékek táblázatát nyitja meg. A projekt Output csoportjában is megtalálod az eredményfájlokat.

Mielőtt ugyanazt a programot újrafuttatod, a megőrizni kívánt exportot másold másik fájlnévre. A futási eredmény neve önmagában nem azonosítja az összes beállítást.

Egy saját feljegyzésben legalább ezt rögzítsd:

FutásAdatGyors/lassú hosszMennyiségJutalékSlippage
AlapfutásDEMO5 / 201 egység0%0 tick
KöltségesDEMO5 / 201 egység0,1%2 tick

Írd melléjük a kapott eredményeket is. Ezt a táblázatot a saját jegyzetedben töltsd ki, a tényleges futásokból.

Próbáld ki önállóan

Hasonlítsd össze ugyanazt a kötést a költség nélküli és a költséges futásban. Ellenőrizd a belépési árat, kilépési árat és a profitot. Mi változott, és mi maradt azonos a jelzés szabályában?

A feladat megoldása

A mozgóátlagok és a keresztezésük nem a jutalékból vagy a slippage-ből számolódnak, ezért az alapjelzések nem változnak. A piaci belépés és lezárás ára a slippage miatt kedvezőtlenebb lehet. A jutalék tovább csökkenti a nettó kötési eredményt.

A futás akkor hasonlítható közvetlenül össze, ha az inputok, a mennyiség, az adat és a teljesülési mód azonos, és a stratégia mindkét esetben végre tudja hajtani a megbízásokat.

Másik adat kiválasztása

A demó után a PyneIDE adatletöltőjével saját piaci adatot is készíthetsz. Az új adaton más árak, tickméret, mennyiségi határok és kötések lehetnek. Először az adatot vizsgáld meg, és csak utána hasonlíts eredményeket.

  1. A bal oldali Pyne nézetben vidd az egérmutatót a Data csoport fejlécére. Kattints a megjelenő, felhőből lefelé mutató nyilat ábrázoló Download Data… ikonra. Megnyílik a Symbol Browser. Ugyanezt a menüpontot a Data fejlécére jobb gombbal kattintva is eléred.
  2. Válassz szolgáltatót a Provider mezőben. A képen a ccxt szerepel; ennél a Broker mezőben a konkrét adatforrást is kiválaszthatod.
  3. A szűrőmezőbe írd a keresett piac nevét. A képen a coinbase adatforrás BTC/USD spot piacát választjuk. Ügyelj a teljes szimbólumnévre: a hasonló előtagú sorok eltérő piacokat is jelenthetnek.
  4. A Timeframe legyen 1D, a From mezőben válaszd a 365 days back értéket. A To mezőnél a now a letöltés időpontjáig kér adatot.
  5. Kattints a Download gombra, és várd meg a letöltés végét.
A PyneIDE Symbol Browser felületén a ccxt szolgáltató coinbase adatforrásának BTC/USD spot piaca és a napi idősík van kiválasztva.
A Symbol Browserben az adatforrás, a piac, az idősík és az időszak együtt választja ki a letöltendő adatot.

A jobb oldali információban a mintick a tickméret, a pointvalue a pontérték, a mincontract a legkisebb mennyiség. Ezeket a saját adatnál is nézd meg. Egy adatforrás elérhetősége és a szükséges hozzáférés a szolgáltatótól függ; az itt választott adatok lekérése nem jelent kereskedési számla használatát.

A letöltött adat a projekt Data csoportjába kerül. A stratégia grafikonjának felső sorában a piac nevére kattintva az adatválasztót is megnyithatod, és az új adatot választhatod. A grafikon ekkor újraszámolódik; az inputokat és a stratégia tulajdonságait továbbra is ellenőrizd.

A letöltési időszak nem garantál adott gyertyaszámot: a szolgáltató adathossza, a piac kereskedési napjai és a hiányzó időszakok is számítanak. A friss letöltés megváltoztathatja a vizsgált adatsort, ezért egy összehasonlításhoz őrizd meg az adatfájlt és a hozzá tartozó metaadatfájlt.

A futás értelmezése

A backtest egy megadott szabály, adatsor és végrehajtási modell együttese alapján számol. Segít megvizsgálni, hogy a kód azt csinálja-e, amit leírtál, és hogyan viselkedett volna a modellben. A jövőbeli adat nincs benne az eredményben.

Ha a paramétereket sokszor módosítod ugyanazon adaton, az adathoz illeszkedő szabályt találhatsz. Egy külön, a beállításhoz fel nem használt időszak vizsgálata más kérdést tesz fel. A záróprojektben ezért a program helyes működését és a beállítások összehasonlítását külön ellenőrzöd.