Oficjalne zamknięcie w pliku akcyjnym wygląda jak każda inna cena. Znacznik czasu 16:00:00 czasu wschodniego, jedna liczba, gotowa do realizacji. Dzienne sygnały ją zaznaczają. Rebalancingi w nią uderzają. Agent badawczy potraktuje ją jak kwotowanie, które siedziało w arkuszu i czekało na ciebie.
Zamknięcie to aukcja, nie kwotowanie. To cena uncrossu zleceń on-close, które musiały zostać przyjęte przed cutoffem. Jeśli backtest zrealizował tam fill, nie dołączając do tego wsadu, wziął print, w którym byś nie uczestniczył.
Fill o 16:00 tak, jakby uncross był zleceniem rynkowym
Zwykły skrót brzmi: policz sygnał na zamknięciu albo tuż przed nim, zrealizuj po oficjalnym zamknięciu, przybij 16:00. W spokojny wtorek na AAPL kłamstwo to kilka centów. W dniach, które dominują portfel z dziennym rebalancingiem, to cała transakcja.
O 16:00:00.000 closing cross właśnie trwa albo właśnie się zakończył. Zlecenie marketable, które wtedy wysyłasz, nie wchodzi w ten cross. Ląduje w tym, co zostało: pozostały displayed size, odd lot, extended hours na ARCA lub Nasdaq. Ten print może być o dwa centy od oficjalnego zamknięcia albo o czterdzieści punktów bazowych i to jest inna pula płynności. Przy rekonstytucji Russella, na koniec miesiąca albo w piątek potrójnego wygaśnięcia zamknięcie często stanowi dwucyfrowy udział dziennego wolumenu. To była płynność. Ciebie w niej nie było.
Przypadkiem zrobiliśmy to na papierze. Zmiana parametru wpadła o 15:48. Backtest i tak realizował każdy ticker po oficjalnym zamknięciu. OMS wysłał zwykłe zlecenia rynkowe o 16:00:03, bo nikt nie podłączył MOC. Printy after-hours, garść rejectów i shortfall 19 punktów bazowych względem pliku w dniu, w którym plik mówił, że jesteśmy płasko do zamknięcia. Strategia się nie zepsuła. Zepsuła się reguła fillu.
Nadal myślę o 15:49 jak o fizycznym miejscu. Ktoś zmienia wagę. Ktoś inny patrzy na zegar. Cutoffowi jest obojętne, kto z was ma rację.
MOC to zlecenie, które naprawdę zgłasza się do tego uncrossu, i nawet MOC nie jest obietnicą. Halt, pauza LULD, odwołana aukcja, spółka, która nigdy nie otworzyła sesji: możesz być płaski o 16:00 z pracującym zleceniem on-close, które umiera. LOC ma prawo całkowicie chybić. Jeśli uncross wynosi $40.12, a twój limit to $40.00, nic nie posiadasz. Mnóstwo backtestów i tak księguje zamknięcie.
Gorzej: niektóre pliki vendorów trzymają composite close, który nigdy nie został odbity na żadnym jednym venue. Do composite nie da się dołączyć. Jeśli strategia wysłałaby NYSE MOC, fill, który ma znaczenie, to uncross NYSE, w size, jaki aukcja by wchłonęła.
Nazywanie ostatniego printu z regularnej sesji zamknięciem
Niektóre pipeline'y z zasady odmawiają oficjalnego zamknięcia i biorą ostatni print SIP przed 16:00, bo ten print przynajmniej „się wydarzył”. Na mega-cap ostatni print i oficjalne zamknięcie często leżą o cent albo dwa od siebie i nie zauważysz. Na mid-cap ostatni print może mieć 200 akcji o 15:59:51, podpisany przez kogoś, kto zdjął pozostały display. Oficjalne zamknięcie dwie sekundy później to uncross na milion akcji po innej cenie.
Indeks, koszyk kreacji ETF i każdy rebalancing MOC handlowały uncrossem. Twój backtest handlował resztką. A ostatni print nie przychodzi z twoim size. Jeśli ten print to 400 akcji, a twój clip to 5,000, nie dostałeś tej ceny. Dostałeś znacznik czasu, który akurat był ostatni.
Widziałem plik mid-cap, w którym ostatni print i oficjalne zamknięcie rozjechały się o 28 centów w czwartek rebalancingowy. Backtest, który brał ostatni print, wyglądał na bardziej „świadomy mikrostruktury”. To był po prostu inny, cieńszy rynek, i wciąż zakładał, że mogliśmy być tymi 200 akcjami.
Przesuwanie fillu na jutrzejsze otwarcie, żeby być ostrożnym
Trzeci unik pojawia się w przeglądzie kodu jako komentarz: nie zakładajmy, że zdążymy na zamknięcie, więc filluj następne otwarcie. Brzmi dojrzale. Buduje inną strategię.
Sygnał close-to-close zrealizowany na następnym otwarciu zjadł lukę overnight. Dla wielu czynników akcyjnych ta luka to spory kawałek ruchu, o którym myślałeś, że jest twój. Fill na otwarciu nie czyni backtestu ostrożnym. Przenosi P&L do sesji, której nie zamierzałeś handlować, i wrzuca cię w aukcję otwarcia, której też nie modelowałeś.
Na papierze zniszczenia łatwo źle odczytać. Dzienny P&L backtestu wciąż zgadza się z sygnałem. Papierowa księga trzyma noc indeksowego gapu i poranek poślizgu opening cross. Potem ludzie spierają się o implementation shortfall, podczas gdy uczciwy opis brzmi, że te dwa systemy nie robią tej samej transakcji.
Ale otwarcie też jest aukcją. Jeśli przegapiłeś wczorajszy cutoff, nie dostajesz automatycznie czystego last z 9:30. Dostajesz mechanikę MOO/LOO, imbalance i lukę. Nazywanie tego ostrożnym fillem zamknięcia tylko chowa drugi, niezamodelowany cross pod cnotliwym komentarzem.
| Fill, który zaksięgowałeś | Czego venue naprawdę potrzebował | Jak wyglądają zniszczenia |
|---|---|---|
| Oficjalne zamknięcie, bez typu zlecenia | MOC lub LOC przyjęte przed cutoffem tego venue | Print after-hours, reject albo cena composite, której nikt nie hostował |
| Ostatni print SIP przed 16:00 | Transakcja, którą mogłeś być, w twoim size | Resztka 200 akcji potraktowana jako fill clipu |
| Następne otwarcie jako „bezpieczniejsze” zamknięcie | Model opening cross plus luka overnight | Inna strategia, nadal aukcja, nadal spóźniona |
Uczciwy podział jest niewielki. Albo kontrakt badawczy mówi, że jesteśmy w zamknięciu, i wtedy zlecenie jest on-close, ze znacznikiem czasu przed 15:50 na NYSE lub 15:55 na Nasdaq, sizingowane względem oczekiwanego wolumenu zamknięcia i może wygasnąć niezrealizowane, jeśli to LOC. Albo nie jesteśmy w zamknięciu, i wtedy after-hours albo następne otwarcie to nazwana polityka z własną aukcją, a krzywa equity przestaje nosić etykietę 16:00.
Teraz odrzucamy backtest, który księguje oficjalne zamknięcie bez zlecenia on-close siedzącego wewnątrz cutoffu dla tego venue. Zabiło to kilka ładnych krzywych sygnałów dziennych. Te krzywe nigdy nie były wykonywalne po cenie, którą deklarowały.
← Wszystkie wpisy


