Tiistaina kello 10:07 tutkimusagenttimme havaitsi lyhyen aikavälin nousuasetelman indeksipohjaisessa ETF:ssä. Taustalla oli tavanomainen signaali: hinta oli palannut 20 baarin keskiarvon yläpuolelle, toteutunut volatiliteetti oli lieventymässä ja seuraavalle istunnolle oli ajoitettu makrotalouden julkistus. Ehdotettu kauppa oli call spread, jonka erääntymiseen oli noin kaksi viikkoa.
Backtesti piti kaupasta. Paperistrategia ei tehnyt toimeksiantoa. Kun vertasimme toimeksiantoja, signaalien aikaleimat täsmäsivät ja kohde-etuuksien hinnat olivat muutaman sentin sisällä toisistaan. Sopimukset olivat eri: backtesti oli ostanut historiallisen ketjun parhaalta näyttäneen perjantain erääntymisen, kun taas paperiprosessi valitsi seuraavan listatun erääntymisen, viikon myöhemmin.
Ero johtui kalenteriliitoksesta. Olimme käsitelleet ”päiviä erääntymiseen” päivämäärän ominaisuutena ja valinneet sitten sopimuksen, jonka erääntymispäivä oli lähimpänä tavoitetta. Historiallisessa datassa erääntymiskalenteri sisälsi viikoittaisen listauksen, joka oli lisätty vasta testattavan päivän jälkeen. Backtesti oli käyttänyt tulevaisuudesta peräisin olevaa sopimusta tavalla, joka näytti harmittomalta oikopolulta.
Epäilimme ensin aikavyöhykevirhettä. Optioiden erääntymispäivät aiheuttavat niitä helposti: markkinaistunto päättyy New Yorkissa, pörssin aikaleimat voidaan tallentaa UTC-aikana ja keskiyön päivämäärä voi siirtyä, jos tietoputki muuntaa sen huolimattomasti. Tarkistimme asian. Aikaleimat olivat kunnossa. Sopimusta ei yksinkertaisesti ollut kyseisenä tiistaina historiallisessa sopimusjoukossa.
Ensimmäinen opetus oli tämä: historiallinen optioketju tarvitsee päätöshetken mukaisen listausjoukon. Sopimuksen erääntymispäivä kertoo, milloin sopimus päättyy. Se ei kerro, milloin sopimus listattiin, milloin sillä saattoi alkaa käydä kauppaa tai olisiko järjestelmäsi voinut valita sen tuolloin.
Rakensimme valintavaiheen uudelleen päätösaikana saatavilla olleen tiedon varaan. Edellytimme jokaiselta sopimusehdokkaalta, että sen listausaikaleima oli viimeistään päätöshetkellä, sillä oli tuoreuskynnyksemme rajoissa oleva kelvollinen noteeraus ja markkinaistunto, jonka aikana strategia pystyi lähettämään toimeksiannon. Tallensimme myös ehdokasjoukon ennen järjestykseen asettamista. Tämä viimeinen kohta oli tärkeä, sillä vanha backtesti säilytti vain voittajan: emme tienneet, oliko se vertaillut viittä kelvollista sopimusta vai valinnut huomaamatta kalenterista, jota ei vielä ollut olemassa.
Seuraavaksi tutkimme spreadin hinnoitteluun käytettyä noteerausta. Backtesti oli poiminut kummankin jalan viimeisimmän noteerauksen erikseen. Osto-option myyntihinta oli ajalta 10:06:58 ja lyhyen osto-option ostohinta ajalta 10:04:11. Molemmat olivat yleisen datapolitiikkamme mukaan riittävän tuoreita, mutta markkina oli liikkunut niiden välillä. Synkronoimattomista jaloista laskettu spreadin keskihinta voi kuvata markkinaa, jota ei koskaan ollut olemassa.
Muutimme noteeraussääntöä niin, että molempien jalkojen aikaleimojen piti olla enintään 2 sekunnin päässä toisistaan ja hylkäsimme ristikkäiset tai nollakokoiset markkinat. Näin käyttökelpoisten historiallisten havaintojen määrä pieneni. Jäljelle jääneet hinnat olivat kuitenkin uskottavampia. Jos synkronoitua noteerausta ei ollut, merkitsimme ehdokkaan saataville tulemattomaksi sen sijaan, että olisimme paikanneet aukon vanhentuneella hinnalla.
Sitten vuorossa oli järjestyssääntö. Agentti oli valinnut erääntymisen, jonka noteerattu spread-kustannus oli pienin. Se kuulostaa järkevältä, kunnes spread on yhden sopimuksen levyinen ja noteeraus vanhentunut. Määrittelimme tavoitteen täsmällisesti: maksimoida odotettu tuotto määriteltyä riskiyksikköä kohden niiden sopimusten joukossa, jotka läpäisevät noteerauskoon, tuoreuden ja listauksen vähimmäistarkistukset. Tässä esimerkissä lähimmän kelvollisen erääntymisen kahden jalan noteerattu leveys oli $0.42, kun myöhemmän erääntymisen leveys oli $0.31. Halvemmalta näyttävän vaihtoehdon lyhyellä jalalla oli näkyvissä vain yksi sopimus.
| Ehdokas | Oliko erääntyminen saatavilla tuolloin? | Noteerauksen ikä | Lyhyen jalan näkyvä koko | Päätös |
|---|---|---|---|---|
| Perjantain viikkoerääntyminen | Ei | Ei sovellu | Ei sovellu | Hylkää |
| Seuraava perjantai | Kyllä | 1.4 sekuntia | 18 sopimusta | Kelvollinen |
| Kuukauden kolmas perjantai | Kyllä | 9.8 sekuntia | 1 sopimus | Hylkää vanhentuneena ja ohuena |
Toistimme tapahtuman näillä säännöillä. Backtesti valitsi nyt saman erääntymisen kuin paperiprosessi ja kirjasi, miksi muut sopimukset hylättiin. Spreadin tulohinta oli $0.11 alkuperäistä historiallista täyttöä huonompi. Tämä ei tarkoittanut, ettei strategiassa ollut arvoa; se tarkoitti, että vanhaan tuottolukuun sisältyi kaupan valinta, jota live-prosessi ei voinut toistaa.
Yksi pieni riesa: pörssien symbolimuodot saavat erääntymisvirheet näyttämään data laatuongelmilta. Löysimme palveluntarjoajan viikoittaisen koodin, joka erosi kuukausikoodista yhden merkin verran. Pidän yhä raakasymbolin normalisoidun sopimusavaimen rinnalla auditointilokeissa. Se ei ole eleganttia, mutta on estänyt meitä luottamasta liian nopeasti siistin näköiseen liitokseen.
Jos rakennat optioiden backtestiä, tallenna koko ehdokasjoukko jokaisella päätöshetkellä sekä kunkin sopimuksen listaustila, noteerausten aikaleimat, koot ja hylkäyssyy. Tee sopimuksen valinnasta sitten deterministinen funktio tästä tilannekuvasta. Erääntymisen valinta on osa strategiaa. Jos backtesti näkee sopimuksen, jota paperiprosessi ei voinut nähdä, signaalien vertailu alkaa vasta sen jälkeen, kun vastaus on jo muuttunut.
← Kaikki kirjoitukset


