Walk-forward-optimoinnilla on maine rehellisenä tapana virittää strategia, ja maine on ansaittu — verrattuna siihen, että optimoidaan kaikella datalla ja ihaillaan lopputulosta. Tekniikalla on kuitenkin hiljaisia vikatiloja, ja jokainen niistä tuottaa saman artefaktin: validointiraportin, jossa lukee "robusti", nidottuna strategiaan joka ei sitä ole. Tässä ne kolme, joita vastaan olemme joutuneet rakentamaan suojauksia — järjestettynä sen mukaan, millaista tuhoa ne jättävät jälkeensä.
Vikatila yksi: ikkunat vuotavat
Väärä tapa: viritetään tammi–kesäkuulla, validoidaan heinäkuulla, ja sitten annetaan jonkin heinäkuulaisen vaikuttaa toiseen kierrokseen — uusinta-ajo out-of-sample-luvun näkemisen jälkeen, "pieni säätö" parametriruudukkoon, koko aikasarjan yli normalisoitu piirre. Jokainen näyttää viattomalta. Yhdessä ne muuttavat out-of-sample-ikkunan viivästetyksi in-sample-dataksi.
Tuho: out-of-sample-Sharpe, joka mystisesti seuraa in-sample-Sharpea. Aidot out-of-sample-tulokset ovat kohinaisia ja pettymys; epäilyttävän sileä IS/OOS-suhde tarkoittaa, että informaatio virtaa taaksepäin. Seuraamme suhdetta eksplisiittisesti — in-sample yli 3× out-of-sample liputtaa ajon, ja nollassa tai sen alla oleva out-of-sample tappaa sen riippumatta siitä, miten kauniilta in-sample näyttää.
Vikatila kaksi: mittarishoppailu ikkunoiden välillä
Ajetaan kolme walk-forward-ikkunaa, saadaan kolme kohinaista tulosta ja tehdään yhteenveto: Sharpen keskiarvo? Mediaani? Pudotetaanko huonoin ikkuna pois "regiimimuutoksen" takia? Jokainen valinta on vapausaste, ja päättäväinen optimoija (ihminen tai bayesilainen) löytää sen yhteenvedon, jossa tämä strategia näyttää parhaalta. Seitsemänkymmentäviisi Optuna-koetta per ikkuna on seitsemänkymmentäviisi mahdollisuutta sovittaa kohinaa — kerrottuna sillä, kuinka monta yhteenvetotapaa suostut harkitsemaan.
Tuho: strategia, joka läpäisee validoinnin ja tuottaa sitten livenä huonoimman ikkunan tuloksen, koska huonoin ikkuna oli ainoa rehellinen. Meidän sääntömme: aggregointi lyödään lukkoon konfiguraatiossa ennen ajoa, koebudjetti on kiinteä, ja analyytikko lukee ikkunakohtaiset tulokset hajonta näkyvissä. Strategia, joka tarvitsee ystävällismielisen yhteenvedon läpäistäkseen, ei läpäise.
Vikatila kolme: holdout, joka lakkasi olemasta holdout
Holdout toimii täsmälleen kerran. Toisella kerralla, kun strategiaa arvioidaan sitä vasten — parametrin tönäisyn, signaalisäädön tai "katsotaan nyt vain" -hetken jälkeen — se ei enää ole holdout; se on hidas validointijoukko. Viisitoista koskematonta päivää kuulostaa helpolta säilyttää, kunnes iterointipaine iskee ja uudelleentarkistus tuntuu vaarattomalta.
Tuho on hienovarainen: holdout-tulokset, jotka paranevat saman strategian iteraatioiden myötä. Tuoreella out-of-sample-datalla ei ole mitään syytä palkita kolmatta iteraatiota ensimmäistä enemmän, ja kun se tekee niin, holdout on louhittu. Pakotamme kertaluonteisuuden koneellisesti: holdout arvioidaan kerran per pipeline-ajo, tulos kirjataan tietueeseen, ja uutta yritystä tarvitseva strategia kulkee koko kujanjuoksun uudelleen — uudet ikkunat mukaan lukien. Sen on säilytettävä vähintään 70 % walk-forwardin out-of-sample-Sharpesta, eikä sitä noppaa heitetä toista kertaa.
Merkki, joka selviää kaikista kolmesta
Ennen kaikkea tätä ajamme suoraviivaisen herkkyyspyyhkäisyn: tönäistään jokaista parametria ±20 % ja katsotaan mittareita. Aito edge heikkenee hallitusti; sattuma putoaa jyrkänteeltä. Se on pipelinen halvin testi, ja se kaataa strategioita, jotka olisivat purjehtineet kaiken yllä olevan läpi — koska parametrijyrkänne on se, miltä ylisovittaminen näyttää ennen kuin sille on antanut tilaisuuden piiloutua validointikoneistoon.
Mikään tästä ei tee optimoinnista turvallista. Se tekee vikatiloista äänekkäitä — ja se on eniten, mitä validointiprosessilta voi rehellisesti pyytää.
← Kaikki kirjoitukset