De officiële close in een aandelenbestand ziet eruit als elke andere prijs. Timestamp 16:00:00 Eastern, één getal, klaar voor een fill. Dagelijkse signalen markeren hem. Herbalanceringen landen erop. Een research-agent behandelt hem als een quote die op het boek lag te wachten tot jij kwam.
De close is een veiling, geen quote. Het is de uncross-prijs van on-close orders die vóór een cutoff geaccepteerd moesten zijn. Als de backtest daar vulde zonder bij die batch aan te sluiten, nam hij een print waarvan jij geen deel zou zijn geweest.
16:00 vullen alsof de uncross een market order was
De gebruikelijke shortcut is: bereken het signaal op of vlak voor de close, vul op de officiële close, stamp 16:00. Op een rustige dinsdag in AAPL is de leugen een paar cent. Op de dagen die een daily-rebalance-boek domineren, is het de hele trade.
Om 16:00:00.000 loopt de closing cross, of is hij net gelopen. Een marketable order die je dan stuurt, gaat niet die cross in. Hij landt in wat er nog over is: restant displayed size, een odd lot, extended hours op ARCA of Nasdaq. Die print kan twee cent van de officiële close af liggen, of veertig basispunten, en het is een andere liquiditeitspool. Bij een Russell-reconstitution, een maandeinde of een triple-witching-vrijdag is de close vaak een dubbelcijferig aandeel van het dagvolume. Dat was de liquiditeit. Jij zat er niet in.
We hebben dit per ongeluk paper-traded. Een parameter-tweak landde om 15:48. De backtest vulde nog steeds elke naam op de officiële close. De OMS stuurde gewone market orders om 16:00:03 omdat niemand MOC had aangesloten. After-hours prints, een handvol rejects, en een shortfall van 19 basispunten versus het bestand op een dag waarop het bestand zei dat we flat tot de close zaten. De strategie was niet stuk. De fill-regel wel.
Ik denk nog steeds aan 15:49 als een fysieke plek. Iemand past een gewicht aan. Iemand anders kijkt naar de klok. De cutoff kan het niet schelen wie van jullie gelijk heeft.
MOC is de order die die uncross daadwerkelijk aanvraagt, en zelfs MOC is geen belofte. Een halt, een LULD-pauze, een geannuleerde veiling, een naam die nooit is opengegaan: je kunt om 16:00 flat staan met een werkende on-close die sterft. LOC mag volledig missen. Als de uncross $40.12 is en je limiet $40.00, bezit je niets. Heel wat backtests boeken de close nog steeds.
Erger nog: sommige vendorbestanden slaan een composite close op die nooit op één venue heeft geprint. Je kunt geen composite joinen. Als de strategie NYSE MOC zou hebben gestuurd, is de fill die telt de NYSE-uncross, in de size die de veiling zou hebben opgenomen.
De laatste regular-hours print de close noemen
Sommige pipelines weigeren de officiële close uit principe en nemen de laatste SIP-print vóór 16:00, omdat die print tenminste "is gebeurd." Op een mega-cap liggen last en official vaak een of twee cent uit elkaar en je merkt het niet. Op een mid-cap kan de laatste print 200 shares om 15:59:51 zijn, getekend door wie een restant display tilde. De officiële close twee seconden later is een uncross van een miljoen shares tegen een andere prijs.
De index, de ETF-creation-basket en elke MOC-rebalance traden de uncross. Jouw backtest trad het restant. En een last print komt niet met jouw size eraan vast. Als die print 400 shares is en jouw clip 5,000, kreeg je die prijs niet. Je kreeg een timestamp die toevallig last was.
Ik heb een mid-cap-bestand gezien waarin last-print versus officiële close 28 cent verschoof op een herbalanceringsdonderdag. De backtest die last gebruikte, leek meer "microstructuur-bewust." Het was gewoon een andere, dunnere markt, en hij nam nog steeds aan dat wij die 200 shares hadden kunnen zijn.
De fill naar de open van morgen schuiven om conservatief te zijn
De derde smoes duikt in code review op als comment: ga er niet van uit dat we de close kunnen traden, dus vul de volgende open. Het klinkt volwassen. Het bouwt een andere strategie.
Een close-to-close-signaal dat op de volgende open wordt uitgevoerd, heeft de overnight gap opgegeten. Voor veel aandelenfactoren is die gap een groot stuk van de beweging waarvan je dacht dat je hem bezat. De open vullen maakt de backtest niet voorzichtig. Het verplaatst de P&L naar een sessie die je niet van plan was te traden, en het zet je neer in een openingsveiling die je evenmin hebt gemodelleerd.
Op papier is de ravage makkelijk verkeerd te lezen. De dagelijkse P&L van de backtest loopt nog steeds in de pas met het signaal. Het paper-boek draagt een nacht index-gap en een ochtend opening-cross-slippage. Mensen gaan dan over implementation shortfall discussiëren terwijl de eerlijke beschrijving is dat de twee systemen niet dezelfde trade doen.
Maar de open is óók een veiling. Als je de cutoff van gisteren hebt gemist, krijg je niet automatisch een schone 9:30 last. Je krijgt MOO/LOO-mechanica, een imbalance en een gap. Dat een conservatieve close-fill noemen verbergt alleen een tweede ongemodelleerde cross onder een deugdzaam comment.
| De fill die je boekte | Wat de venue daadwerkelijk nodig had | Hoe de ravage eruitziet |
|---|---|---|
| Officiële close, geen ordertype | MOC of LOC geaccepteerd vóór de cutoff van die venue | After-hours print, een reject, of een composite prijs die niemand hostte |
| Laatste SIP-print vóór 16:00 | Een trade die jij had kunnen zijn, in jouw size | Een restant van 200 shares behandeld als clip-fill |
| Volgende open als een "veiligere" close | Een opening-cross-model, plus de overnight gap | Een andere strategie, nog steeds een veiling, nog steeds gemist |
De eerlijke splitsing is klein. Of het research-contract zegt dat we in de close zitten, in welk geval de order on-close is, getimestamped vóór 15:50 op NYSE of 15:55 op Nasdaq, gesized tegen het verwachte close-volume, en ongevuld mag expireren als het een LOC is. Of we zitten niet in de close, in welk geval after-hours of next-open een benoemd beleid is met een eigen veiling, en de equity curve stopt met een 16:00-label te dragen.
We laten nu een backtest zakken die de officiële close boekt zonder een on-close order die binnen de cutoff voor die venue zit. Het heeft een paar mooie dagelijkse-signaalcurves gekilld. Die curves waren nooit executable tegen de prijs die ze claimden.
← Alle artikelen


