Nézzük akkor a backtest folyamatát.

Mielőtt bármiféle backtestet csinálnánk, a rendelkezésre álló adatokat két részre kell osztani, In-Sample és Out-of-Sample adatokra.
Az In Sample adatokon folytatjuk a rendszer tesztelését fejlesztés közben. Amikor elkészültünk, akkor végső ellenőrzésként tesztelünk az Out of Sample adatokon. Ez az eljárás a kulcsa a sikeres tesztelésnek. Tehát még egyszer: Out of Sample adatokon már a kész rendszert teszteljük. Az itteni teszteredmények után már nem módosíthatunk a paramétereken. Ha nem jók az Out of Sample eredmények, el kell dobni a rendszert, és új fejlesztést kezdeni.
Miért fontos ez? A rendszerfejlesztőkre leselkedő egyik legnagyobb veszély, amit "curve fitting"-nek hívnak, azaz addig fejlesztgetünk, módosítgatjuk a paramétereket, amíg tökéletesen ráillesztjük a rendszerünket a meglévő múltbeli adatokra. Minden adathalmazon lehet relatíve egyszerűen készíteni kiemelkedő eredményeket produkáló rendszert! Ennek legtipikusabb példája (kezdők figyelem!), amikor sok paramétert használunk, és ráengedünk egy optimalizálót a rendszerünkre. A sok paraméter biztosította szabadságfok miatt, a számítógép egyszerűen "ráhúzza" a rendszert az adathalmazra, és megkapjuk azokat a beállításokat, amelyekkel kiemelkedő eredményt érhettünk volna el a MÚLTBAN. Csakhogy ezzel semmire sem megyünk, az ilyen rendszer garantáltan veszteséges lesz a jővőbeni kereskedés során.
A curve fitting persze nem csak a kezdők hibája, kisebb-nagyobb mértékben mindenki elköveti/elkövetheti. Kiküszöbölésére találták ki az In Sample - Out-of-Sample tesztelést. Ezzel a módszerrel akármilyen "jól" optimalizálunk In Sample adatokon, a végső Out of Sample tesztelés ki fogja dobni a rendszer ilyen irányú gyengeségét. Ezért is tilos az Out of Sample tesztelés után módosítani a rendszeren, mert ha itt is elkezdünk optimalizálni, nyilván ráilleszthetjük a rendszert MINDKÉT adatsorra.
A curve fitting elkerülésének másik fontos szabálya, hogy rendkívül keveset használjuk az optimalizálót. Feltűnt valakinek, hogy a fejlesztés eddigi részeiben nem említettem ezt az eszközt? Amikor kezdő voltam, én is már a fejlesztés első fázisaiban elkezdtem optimalizálni, amíg rá nem jöttem, hogy így gyorsan tudok olyan rendszereket készíteni, amik az adott adatsoron jól működnek, de más adatokon csapnivaló eredményt hoznak. Tehát minél később optimalizálunk, annál megbízhatóbb eredményt kapunk! Jómagam az utóbbi időben már készítek rendszereket optimalizálás nélkül, de ebben az is benne van, hogy egymáshoz hasonló rendszerek készítése után, már nagyjából kialakul a paraméterek várható értéke. A pontos kicentizésnek meg semmi értelme.
A következő kérdés, hogy a rendelkezésre álló adatokból hogyan alakítsunk ki In Sample és Out of Sample adatsort. Különválaszthatjuk az adatokat instrumentumok mentén, piacok mentén, és időtartam alapján. Mindegyik megoldásnak ugyanaz a hátránya. Bizonyos rendszerek jól működnek bizonyos instrumentumokon, bizonyos piacokon, vagy bizonyos időszakban, de rosszul, ha másikat választunk. Saját tapasztalataim azt mutatják, hogy például a különböző USA piacokon (NYSE, Nasdaq, Amex) egységesen működnek ugyanazok a rendszerek, de ha átvisszük más nemzeti piacra, akkor már nem használhatóak változtatás nélkül. Vagy a paramétereken kell módosítani, vagy például túl kevés találatot adnak. Hasonló tapasztalataim vannak időszakokkal is. A részvénypiac bizonyos paraméterei (pl. a volatilitás, kitörési formációk) hosszú ciklusokban változnak, ezért sok, régen jól működő rendszer, ma már rossz eredményeket produkál. Ezeket a tapasztalatokat erősítette meg 
The Encyclopedia of Trading Strategies  könyv is, amelyikben meglepően sok régen bevált rendszerről mutatták ki, hogy már nem hoz megfelő eredményt.
Tehát nem könnyű a jó megoldás kitalálása. Szintén fontos a megfelelő mennyiségű adat használata mindkét mintában. A "megfelő mennyiség" egzakt definicióját nem tudom megadni, nyilván függ a rendszer jellegétől (sok találatot ad vagy keveset), az alkalmazott időegységtől (perces, órás, napi, stb.), illetve az instrumentumoktól is. Devizával, származtatott termékekkel kereskedőknek egyáltalán nem adnék tanácsot ezen a téren, de gondolom józan megfontolásokkal boldogulnak majd. Részvénypiacon jómagam (napi kereskedéssel) többezer részvényt tartalmazó, legálább 3 éves mintán szoktam fejleszteni (In Sample), és a végső tesztet (Out of Sample) ugyanazon a részvényhalmazon, minimum 5, de általában 15 éves adatsoron szoktam futtatni.
Akkor jó tesztelést mindenkinek!

A bejegyzés trackback címe:

https://vilagbagoly.blog.hu/api/trackback/id/tr337126239

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása