V úterý ráno jsme měli v naší trendové strategii na ropu long pozici v kontraktu těsně před expirací. Signál dělal přesně to, co jsme po něm chtěli: držet pozici, dokud trend zůstává pozitivní. Backtest ukazoval mírný zisk. Na paper účtu se objevil prodej, nákup dalšího kontraktu, dva poplatky a horší vstupní cena, než naznačoval graf.
Se signálem se nestalo nic záhadného. Backtest považoval „cenu futures“ za jednu souvislou řadu. Na účtu jsme ale museli uzavřít jeden kontrakt a otevřít druhý, ve dvou různých knihách objednávek a za dvě různé ceny.
Rozdílu jsme si všimli při kontrole pozice, která zasáhla do období rolování. Strategie používala likvidní front-month kontrakt a držela ho, dokud ho kalendářní pravidlo nepřevedlo do následujícího měsíce. Toto pravidlo dávalo smysl. Účetnictví kolem něj ne.
Naše kontinuální řada byla zpětně upravená tak, aby odstranila cenový rozdíl mezi kontrakty. Díky tomu se hodila k výpočtu trendu. Zároveň v ní ale nebyla žádná skutečná cena, za kterou bychom mohli uzavřít starý kontrakt nebo otevřít nový. Backtest použil upravenou úroveň k ocenění obchodu během rolování a pak pokračoval, jako by pozice jednoduše zůstala otevřená.
Pro tvorbu signálu může být kontinuální řada užitečným měřítkem. Pro exekuci je to fikce. Rolování znamená dva obchody a spread mezi kontrakty je součástí struktury trhu, ne kosmetický skok, který je třeba vyhladit.
Událost jsme znovu nasimulovali pomocí obou kotovaných kontraktů. Starý měsíc měl bid 79.98 a ask 80.00. Následující měsíc měl bid 80.42 a ask 80.45. Naši long pozici jsme museli prodat za bid starého kontraktu a pak koupit nový kontrakt za jeho ask. Kalendářní spread mezi těmito realizovatelnými cenami činil 44 centů.
Toto číslo automaticky neznamenalo ztrátu 44 centů. Kontrakty měly různé měsíce dodání a spread odrážel náklady na držení, skladování a financování i očekávání ohledně nabídky. Pozice držená přes rolování si zachovává expozici vůči cenovému vývoji nového kontraktu; neplatí celý kotovaný spread jako poplatek. Strategie ale musí realizovat výstup ze starého kontraktu a vstup do nového. Pokud při výpočtu výnosu porovnává tyto ceny, jako by šlo o stejný instrument, může si vymyslet nebo vymazat P&L.
Při opakované simulaci jsme tyto úlohy oddělili. Kontinuální řada dál generovala trendový signál. Pro ocenění a objednávky jsme použili ceny konkrétních kontraktů. Při rolování simulátor zadal uzavírací objednávku na kontrakt před expirací a otevírací objednávku na následující kontrakt, uplatnil poplatky za oba kontrakty a zohlednil spread i dostupnou hloubku v každé knize.
První opakovaná simulace se stále lišila od paper účtu. Obě exekuce jsme synchronizovali na stejný čas, přestože objednávky byly zadány postupně. Uzavření starého měsíce se vyplnilo, ale ask následujícího měsíce se posunul dřív, než nákup dorazil do knihy. Rolování lze provést jako kalendářní spread, pokud to daná burza umožňuje, nebo jako dvě nohy s mezilehlou expozicí. Jde o různé předpoklady exekuce. Pro srovnání jsme použili skutečnou posloupnost objednávek paper účtu.
Pak jsme zjistili, že samotné kalendářní pravidlo není dostatečně přesně definované. „Rolovat pět dní před expirací“ zní přesně, dokud svátek neposune obchodní kalendář, likvidita se nepřesune na dřívější termín nebo se u kontraktu nepoužívá jiná konvence expirace. Na jednom místě jsme počítali kalendářní dny, na jiném pracovní dny. Paper strategie rolovala během páté obchodní seance před posledním obchodním dnem; backtest roloval pět kalendářních dnů před ním.
Datum rolování je obchodní pravidlo. Zapište burzovní kalendář a událost, která rolování spouští, jinak se backtest a účet dříve či později rozejdou v tom, který kontrakt vlastníte.
Pokyn k rolování jsme upravili tak, aby určoval poslední obchodní den daného kontraktu, počítal seance podle kalendáře příslušné burzy a před převodem vyžadoval minimální kontrolu likvidity. Tento práh byl praktickou pojistkou, ne příslibem lepší exekuce: objem a otevřený zájem jen nedokonale napovídají, co lze skutečně zobchodovat naší objednávkou. Zaznamenali jsme vybraný kontrakt a ceny obou nohou, aby každá opakovaná simulace dokázala vysvětlit předání pozice.
Po těchto změnách historický výnos strategie klesl. Rozdíl nevznikl jednou obrovskou ztrátou při rolování. Šlo o mnoho drobných oprav: správný kontrakt, správná obchodní seance, skutečné poplatky za obě nohy a výstupy i vstupy oceněné v příslušných knihách. Jedno rolování při nízké likviditě bylo obzvlášť nákladné, proto jsme ho ponechali viditelné a nerozpustili ho v průměru.
Pokud váš futures backtest používá kontinuální graf, zeptejte se, k čemu smí sloužit. Může poskytovat konzistentní vstup pro signál. Nemůže zastupovat kontrakt, který jste mohli koupit nebo prodat. U každé pozice držené přes expiraci by výzkumný záznam měl uvádět starý kontrakt, nový kontrakt, spouštěč rolování, model exekuce a výsledné peněžní toky obou nohou.
Ten úterní obchod nebyl sofistikovaným selháním. Byl to řádek v grafu, který vypadal ziskově a přeskočil okamžik, kdy účet musel změnit, co vlastní. Jakmile jsme tento okamžik do simulace vrátili, výsledek vypadal méně lichotivě a byl mnohem užitečnější.
← Všechny články


