14 november 2026 · forskning

Din backtest handlade på långfredagen. Aktiemarknaden gjorde inte det.

Din backtest handlade på långfredagen. Aktiemarknaden gjorde inte det.

Torsdag 2 april, 16:02 Eastern. Pappersboken såg ut precis som vi hade designat den: lång cirka $240,000 i BTCUSDT-perpen, kort en betaviktad korg av COIN, MSTR, MARA och RIOT, residual under $500. Fredagens hedgejobb hade körts klockan 15:45 veckan innan. Funding klockan 16:00 UTC hade varit ett avrundningsfel. Jag loggade ut i tron att vi äntligen hade en kryptosleeve som inte bara återskapade Nasdaq-beta.

Fredagen var långfredag. Jag fattade det bara för att kryptochatten fortfarande postade likvidationsskärmdumpar och aktiechatten hade tystnat på det där specifika viset som betyder att ingen sitter i stolen. NYSE och Nasdaq var stängda. Binance var det inte. Från torsdagens kontantstängning till fredag 16:00 Eastern var perpen ner 4.8%. Aktieshorterna fanns inte som en marknad den dagen. De var en rad torsdagspriser i en riskpanel.

Riskboten postade ändå.

beta mot hedgekorg: 0.04. residual 1d: −$11,184. status: NEUTRAL

Jag har fortfarande den skärmdumpen. En kollega skrev ut den och satte upp den på kylen på kontoret vi knappt använder. Det gröna NEUTRAL gjorde ett tungt jobb. Boten räknade beta från de sista aktieprintarna den hade, vilket var torsdagens stängningsauktion, mot ett BTC-mark som hade rört sig i tjugofyra timmar. Ett fruset mark är ett fotografi av torsdagen. Att kalla fotografiet för en hedge är hur man kliver in i påskhelgen med en naken kryptoposition och en rapport som gratulerar en för den.

På måndagen öppnade kontantmarknaden. Korgen gappade ner, men inte 4.8%, och inte tillsammans. COIN öppnade −2.1%. MSTR gjorde mer. MARA gjorde mindre. Vi tillbringade förmiddagen med att handla in i en bok som hade levt en hel extra session vi inte kunde hedga, och drog sedan fram backtesten som hade välsignat den här designen och ställde den en oförskämd fråga. Vad gjorde du förra långfredagen, och den dessförinnan, och varje vardag då aktiemarknaden satt overksam medan BTC handlades genom helgdagen?

Forskningsagenten som kodade den första versionen hade samplat om allt till 15-minutersbars och forward-fyllt. Pandas freq='B' fanns i notebooken, vilket ser ut som ett vuxet val tills man kommer ihåg vad det faktiskt gör. 'B' betyder måndag till fredag. Långfredag är en fredag. Juneteenth 2026 var en fredag. Observansen av Independence Day var en fredag. Kalenderfunktionen hade ingen kalender. Den hade ett veckodagsfilter.

Hedgejobbet körs på fredagar klockan 15:45 Eastern, vilket är en rimlig tid att handla mot kontantstängningen en vanlig vecka. Långfredag är alltid en fredag. I fönstret 2023–2026 träffade det jobbet fyra långfredagar, Juneteenth, den fullständiga stängningen den 3 juli och fyra sessioner dagen efter Thanksgiving som redan hade ringt i en 1:00 PM-klocka. Tio fredagssessioner. På varenda en av dem hade simulatorn accepterat aktieorder. Fillsen var torsdagens stängning, eller fredagens sista reguljära print buren framåt, utklädda till liveaffärer i blottern. Kryptomarks körde live. Residualserien fick kredit för hedgerörelser som det ena benet aldrig hade en chans att svara på.

10fredagssessioner då kontantmarknaden inte var öppen för ombalanseringen
4.8%perprörelse medan aktiehedgen satt kvar på torsdagens print
1.14 → 0.61residual-Sharpe efter att sessionskalendern blev verklig

Helgerna var samma bugg på ett schema vi åtminstone hade skämtat om över öl. Helgdagarna var versionen ingen skämtade om, för notebooken sa arbetsdagar och långfredag känns fortfarande, visceralt, som en dag då det vuxna finanssystemet är i arbete. Bankerna är öppna. Fedwire är igång. Ett mäklar-API kan se vaket ut och ändå inte ha någonstans att skicka en COIN-order.

Långfredag är inte en federal helgdag. Om din sessionskontroll är "är bankkalendern stängd," kommer du att handla en stängd aktiemarknad. Columbus Day är spegelbilden: kontantaktier öppna, obligationsmarknaden stängd. Venue-tider är en join-nyckel, inte en vibe.

Tidiga stängningar var tystare och, i blottern, fräckare. Den 28 november 2025, dagen efter Thanksgiving, stängde NYSE klockan 1:00 PM. Vårt jobb vaknade ändå klockan 15:45, tittade på en 15-minutersserie som hade burit 12:59:s sista print i nästan tre timmar, och "handlade stängningen." Fillmodellen debiterade oss till och med slippage för stängningsauktionen. Det fanns ingen auktion klockan 16:00. Auktionen hade skett klockan 13:00, utan oss. Paper hade, den eftermiddagen, det mer ärliga misslyckandet: nya ordrar avvisade, working-ordrar cancellerade in i den tidiga stängningen, en fillrate på noll.

SessionKontantmarknadBacktest-fillPaper
Långfredag 2026Stängd hela dagenKorgen fylld till torsdagens stängningAvvisningar; marks inaktuella från torsdagen
Juneteenth 2026Stängd hela dagenSamma fredagsjobb, samma fantomfillsFångades senare, i replayn
3 juli 2026Stängd (4 juli observerad)Fredag 15:45 mot ett torsdagsprintIngen kontantsession att ansluta till
28 nov 2025Stängning 1:00 PM15:45-ombalansering, sista print 12:59, auktionsslippageAvvisningar efter 13:00
Vanlig lördagStängdForward-fyllda aktiebars, live perpFrysta namn, live perp

Vi körde om boken med en sessionsfil per venue: ordinarie tider, helgdagar, tidiga stängningar, stängningen 16:00 vs 13:00, och en stale-hours-räknare på varje mark. Ordrar in i en stängd kontantsession fylls inte till last. De avvisas. Riskpanelen får inte skriva ut NEUTRAL om något hedgeben har varit inaktuellt mer än några timmar. Enhetstestet är fult och jag gillar det: ta en vanlig fredag, måla den stängd, asserta noll COIN-fills och en stale-flagga på korgen. Och måla sedan 13:00 som stängning och asserta att 15:45-jobbet inte ens tittar på auktionsmodellen.

Residual-Sharpen gick från 1.14 till 0.61. Jag behandlar ingetdera talet som ett skäl att handla. Jag behandlar gapet som en bekännelse. Mycket av det vi hade kallat hedgeresidual var kryptovolatilitet på helgdagar, inkasserad på dagar då det korta aktiebenet var ett souvenir från föregående session. Helgerna gjorde en del av det jobbet också, vilket vi redan diskonterade i samtal. Helgdagarna gömde sig i arbetsdagsresamplet, vilket är en betydligt mer pinsam plats att gömma sig på.

Vi kör fortfarande fredagsjobbet klockan 15:45. Det läser nu en fil med tolv rader för 2026, varav två ännu inte har hänt. Thanksgiving är den 26:e. Dagen efter dör kontantmarknaden klockan 13:00. Jag la in den 1:00 PM-stängningen i kalendern två gånger, under två olika namn, för att jag inte litar på mig själv i november, och för att pandas fortfarande glatt kommer att kalla den fredagen en arbetsdag om jag låter den.

helgdagarmulti-assetkryptoaktierbacktesting
← Alla inlägg