Torsdag den 2. april, 16:02 Eastern. Papirbogen så ud, som vi havde designet den: long cirka $240,000 af BTCUSDT-perpetualen, short en beta-vægtet kurv af COIN, MSTR, MARA og RIOT, residual under $500. Fredags-hedge-jobbet var kørt kl. 15:45 ugen før. Funding kl. 16:00 UTC havde været en afrundingsfejl. Jeg loggede af i den tro, at vi endelig havde en kryptosleeve, der ikke bare genskabte Nasdaq-beta.
Fredag var langfredag. Jeg opdagede det kun, fordi kryptochatten stadig lagde likvidationsscreenshots op, og aktiechatten var blevet stille på den særlige måde, der betyder, at der ikke sidder nogen i en stol. NYSE og Nasdaq var lukket. Binance var det ikke. Fra torsdagens kontantlukning til fredag 16:00 Eastern var perpen nede med 4.8%. Aktie-shortsene eksisterede ikke som et marked den dag. De var en række torsdagspriser i et risikopanel.
Risikobotten postede alligevel.
beta til hedge-kurv: 0.04. residual 1d: −$11,184. status: NEUTRAL
Jeg har stadig det screenshot. En kollega printede det og klistrede det op på køleskabet på det kontor, vi næsten ikke bruger. Det grønne NEUTRAL gjorde en masse arbejde. Botten beregnede beta ud fra de sidste aktieprints, den havde, som var torsdagens closing auction, mod et BTC-mark, der havde bevæget sig i fireogtyve timer. Et frosset mark er et fotografi af torsdag. At kalde fotografiet en hedge er sådan, man går ind i påskeweekenden med en nøgen kryptoposition og en rapport, der lykønsker en med det.
Mandag åbnede kontantmarkedet. Kurven gappede ned, men ikke 4.8%, og ikke i samlet flok. COIN åbnede −2.1%. MSTR gjorde mere. MARA gjorde mindre. Vi brugte formiddagen på at handle ind i en bog, der havde levet en hel ekstra session, vi ikke kunne hedge, og trak så den backtest frem, der havde velsignet det her design, og stillede den et uhøfligt spørgsmål. Hvad gjorde du sidste langfredag, og den før det, og hver hverdag aktiemarkedet sad over, mens BTC handlede gennem helligdagen?
Den research-agent, der kodede den første version, havde resamplat det hele til 15-minutters bars og forward-fill'et. Pandas freq='B' stod i notebooken, hvilket ser ud som et voksent valg, indtil man husker, hvad det faktisk gør. 'B' betyder mandag til fredag. Langfredag er en fredag. Juneteenth 2026 var en fredag. Fridagen for Independence Day var en fredag. Kalenderfunktionen havde ikke en kalender. Den havde et ugedagsfilter.
Hedge-jobbet kører fredage kl. 15:45 Eastern, hvilket er et rimeligt tidspunkt at handle hen imod kontantlukningen på en normal uge. Langfredag er altid en fredag. I vinduet 2023–2026 ramte det job fire langfredage, Juneteenth, den fulde lukning den 3. juli og fire sessioner dagen efter Thanksgiving, der allerede havde ringet med en 1:00 PM-klokke. Ti fredagssessioner. På hver eneste af dem havde simulatoren accepteret aktieordrer. Fills var torsdagens lukning, eller fredagens sidste almindelige print ført frem, pyntet op som live handler i blotteren. Kryptomarks kørte live. Residualserien fik kredit for hedge-bevægelser, som det ene ben aldrig fik chancen for at svare på.
Weekender var den samme bug på en tidsplan, vi i det mindste havde spøgt om over øl. Helligdage var den version, ingen spøgte om, fordi notebooken sagde forretningsdage, og langfredag stadig føles, i maven, som en dag, hvor det voksne finansielle system er på arbejde. Bankerne er åbne. Fedwire er oppe. En broker-API kan se vågen ud og alligevel ikke have nogen steder at sende en COIN-ordre hen.
Tidlige lukninger var mere stille og, i blotteren, mere uhøflige. Den 28. november 2025, dagen efter Thanksgiving, lukkede NYSE kl. 1:00 PM. Vores job vågnede alligevel kl. 15:45, kiggede på en 15-minutters serie, der havde båret 12:59's sidste print i næsten tre timer, og "handlede lukningen." Fill-modellen opkrævede os ovenikøbet closing-auction-slippage. Der var ingen auktion kl. 16:00. Auktionen havde fundet sted kl. 13:00, uden os. Paper havde den eftermiddag den mere ærlige fejl: nye ordrer afvist, working orders annulleret ind i den tidlige lukning, en fill-rate på nul.
| Session | Kontantmarked | Backtest-fill | Paper |
|---|---|---|---|
| Langfredag 2026 | Lukket hele dagen | Kurv filled til torsdagens lukning | Afvisninger; marks stale fra torsdag |
| Juneteenth 2026 | Lukket hele dagen | Samme fredagsjob, samme spøgelsesfills | Fanget senere, i replayet |
| 3. juli 2026 | Lukket (4. juli observeret) | Fredag 15:45 mod et torsdagsprint | Ingen kontantsession at joine |
| 28. nov. 2025 | 1:00 PM-lukning | 15:45-rebalance, 12:59 sidste print, auktionsslippage | Afvisninger efter 13:00 |
| Almindelig lørdag | Lukket | Forward-fill'ede aktie-bars, live perp | Frosne navne, live perp |
Vi kørte bogen om med en sessionfil per venue: almindelige åbningstider, helligdage, tidlige lukninger, lukningen 16:00 vs 13:00 og en stale-hours-tæller på hvert mark. Ordrer ind i en lukket kontantsession får ikke fill til last. De afvises. Risikopanelet må ikke printe NEUTRAL, hvis et hedge-ben har været stale i mere end et par timer. Unittesten er grim, og jeg kan lide den: tag en almindelig fredag, mal den lukket, assert nul COIN-fills og et stale-flag på kurven. Og mal så 13:00 som lukning, og assert at 15:45-jobbet ikke så meget som kigger på auktionsmodellen.
Den residuale Sharpe gik fra 1.14 til 0.61. Jeg behandler ikke nogen af tallene som en grund til at handle. Jeg behandler gabet som en tilståelse. En stor del af det, vi havde kaldt hedge-residual, var krypto-helligdagsvolatilitet, indsamlet på dage, hvor det korte aktieben var en souvenir fra den forrige session. Weekender gjorde noget af det arbejde også, hvilket vi allerede diskonterede i samtalen. Helligdagene gemte sig i forretningsdags-resamplen, hvilket er et langt mere pinligt sted at gemme sig.
Vi kører stadig fredagsjobbet kl. 15:45. Det læser nu en fil med tolv rækker for 2026, hvoraf to endnu ikke er sket. Thanksgiving er den 26. Dagen efter dør kontantmarkedet kl. 13:00. Jeg har sat den 1:00 PM-lukning ind i kalenderen to gange, under to forskellige navne, fordi jeg ikke stoler på mig selv i november, og fordi pandas stadig gladeligt vil kalde den fredag en forretningsdag, hvis jeg lader den.
← Alle indlæg


