14 listopada 2026 · badania

Twój backtest handlował w Wielki Piątek. Rynek akcji nie.

Twój backtest handlował w Wielki Piątek. Rynek akcji nie.

Czwartek, 2 kwietnia, 16:02 czasu wschodniego. Papierowa księga wyglądała tak, jak ją zaprojektowaliśmy: long około $240,000 na perpetualu BTCUSDT, short koszyka ważonego betą z COIN, MSTR, MARA i RIOT, residual poniżej $500. Piątkowy job hedgingowy odpalił się o 15:45 tydzień wcześniej. Funding o 16:00 UTC był błędem zaokrąglenia. Wylogowałem się z myślą, że wreszcie mamy krypto-sleeve, który nie odtwarza po prostu bety Nasdaqa.

Piątek był Wielkim Piątkiem. Zorientowałem się dopiero dlatego, że czat krypto wciąż wrzucał zrzuty ekranu z likwidacji, a czat akcyjny ucichł w ten specyficzny sposób, który znaczy, że nikt nie siedzi na krześle. NYSE i Nasdaq były zamknięte. Binance nie. Od czwartkowego zamknięcia kasowego do piątku 16:00 czasu wschodniego perp spadł o 4.8%. Shorty akcyjne tego dnia nie istniały jako rynek. Były rzędem czwartkowych cen w panelu ryzyka.

Bot ryzyka i tak wrzucił komunikat.

beta do koszyka hedgingowego: 0.04. residual 1d: −$11,184. status: NEUTRAL

Nadal mam ten zrzut ekranu. Kolega wydrukował go i przykleił na lodówkę w biurze, z którego prawie nie korzystamy. Zielony NEUTRAL odwalał tu sporo roboty. Bot liczył betę z ostatnich printów akcyjnych, jakie miał — a to była czwartkowa aukcja zamknięcia — wobec marku BTC, który ruszał się od dwudziestu czterech godzin. Zamrożony mark to fotografia czwartku. Nazwanie fotografii hedgingiem to sposób, by wejść w weekend wielkanocny z nagą pozycją krypto i raportem, który ci za to gratuluje.

W poniedziałek otworzył się rynek kasowy. Koszyk zgapował w dół, ale nie o 4.8% i nie razem. COIN otworzył się −2.1%. MSTR zrobił więcej. MARA mniej. Cały poranek handlowaliśmy w księgę, która przeżyła całą dodatkową sesję, której nie mogliśmy zhedgować, a potem wyciągnęliśmy backtest, który pobłogosławił ten design, i zadaliśmy mu niegrzeczne pytanie. Co robiłeś w zeszły Wielki Piątek, i w ten wcześniejszy, i w każdy dzień powszedni, kiedy rynek akcji pauzował, a BTC handlował przez święto?

Agent badawczy, który zakodował pierwszą wersję, zresamplował wszystko do 15-minutowych barów i zrobił forward-fill. Pandas freq='B' siedział w notebooku, co wygląda na dorosły wybór, dopóki nie przypomnisz sobie, co to naprawdę robi. 'B' znaczy od poniedziałku do piątku. Wielki Piątek to piątek. Juneteenth 2026 wypadał w piątek. Obchody Dnia Niepodległości wypadały w piątek. Funkcja kalendarza nie miała kalendarza. Miała filtr dni tygodnia.

Job hedgingowy odpala się w piątki o 15:45 czasu wschodniego, co w zwykłym tygodniu jest rozsądną porą, żeby handlować w stronę zamknięcia kasowego. Wielki Piątek zawsze wypada w piątek. W oknie 2023–2026 ten job zbiegł się z czterema Wielkimi Piątkami, Juneteenth, pełnym zamknięciem 3 lipca i czterema sesjami dzień po Święcie Dziękczynienia, które już wcześniej uderzyły w dzwon o 1:00 PM. Dziesięć piątkowych sesji. Na każdej z nich symulator przyjmował zlecenia akcyjne. Fille to było czwartkowe zamknięcie albo ostatni regularny print z piątku przeniesiony do przodu, wystrojone na żywe transakcje w blotterze. Marki krypto szły na żywo. Seria residuala zaliczała sobie ruchy hedgingowe, na które jedna noga nigdy nie miała szansy odpowiedzieć.

10piątkowych sesji, na których rynek kasowy nie był otwarty na rebalance
4.8%ruch perpa, podczas gdy hedging akcyjny siedział na czwartkowym princie
1.14 → 0.61residual Sharpe, gdy kalendarz sesji stał się prawdziwy

Weekendy to był ten sam bug na rozkładzie, z którego przynajmniej żartowaliśmy przy piwie. Święta były wersją, z której nikt nie żartował, bo notebook mówił o dniach roboczych, a Wielki Piątek wciąż czuje się, trzewiowo, jak dzień, w którym dorosły system finansowy jest w pracy. Banki są otwarte. Fedwire działa. API brokera może wyglądać na obudzone i wciąż nie mieć dokąd wysłać zlecenia na COIN.

Wielki Piątek nie jest świętem federalnym. Jeśli twoja kontrola sesji brzmi „czy kalendarz bankowy ma wolne”, będziesz handlować na zamkniętym rynku akcji. Dzień Kolumba to lustrzane odbicie: akcje kasowe otwarte, rynek obligacji zamknięty. Godziny venue to klucz join, nie vibe.

Wcześniejsze zamknięcia były cichsze i, w blotterze, bezczelniejsze. 28 listopada 2025, dzień po Święcie Dziękczynienia, NYSE zamknęła się o 1:00 PM. Nasz job i tak obudził się o 15:45, spojrzał na serię 15-minutową, która od prawie trzech godzin niosła ostatni print z 12:59, i „handlował zamknięcie”. Model filli doliczył nam nawet slippage aukcji zamknięcia. O 16:00 nie było żadnej aukcji. Aukcja odbyła się o 13:00, bez nas. Paper tego popołudnia miał uczciwszą porażkę: nowe zlecenia odrzucone, aktywne zlecenia anulowane na wcześniejsze zamknięcie, fill rate zero.

SesjaRynek kasowyFill w backteściePaper
Wielki Piątek 2026Zamknięty cały dzieńKoszyk wypełniony po czwartkowym zamknięciuOdrzucenia; marki nieaktualne od czwartku
Juneteenth 2026Zamknięty cały dzieńTen sam piątkowy job, te same widmowe filleZłapane później, w replayu
3 lipca 2026Zamknięty (obchody 4 lipca)Piątek 15:45 wobec czwartkowego printuBrak sesji kasowej, do której można dołączyć
28 listopada 2025zamknięcie 1:00 PMrebalance 15:45, ostatni print 12:59, slippage aukcyjnyOdrzucenia po 13:00
Zwykła sobotaZamkniętyBary akcyjne z forward-fillem, żywy perpZamrożone nazwy, żywy perp

Przeliczyliśmy księgę z plikiem sesji per venue: regularne godziny, święta, wcześniejsze zamknięcia, zamknięcie 16:00 vs 13:00 i licznik stale-hours na każdym marku. Zlecenia w zamkniętą sesję kasową nie fillują się po last. Są odrzucane. Panel ryzyka nie ma prawa wypisać NEUTRAL, jeśli którakolwiek noga hedgingu jest nieaktualna od więcej niż kilku godzin. Test jednostkowy jest brzydki i tak go lubię: weź zwykły piątek, pomaluj go na zamknięty, asertuj zero filli COIN i flagę stale na koszyku. A potem pomaluj 13:00 jako zamknięcie i asertuj, że job o 15:45 nawet nie spojrzy na model aukcji.

Residual Sharpe spadł z 1.14 do 0.61. Żadnej z tych liczb nie traktuję jako powodu, żeby handlować. Lukę traktuję jako przyznanie się. Sporo z tego, co nazywaliśmy residualem hedgingu, było świąteczną zmiennością krypto, zbieraną w dniach, kiedy krótka noga akcyjna była pamiątką z poprzedniej sesji. Weekendy też odwaliły część tej roboty, co i tak dyskontowaliśmy w rozmowach. Święta chowały się w resamplu dni roboczych, a to znacznie bardziej żenujące miejsce, żeby się schować.

Nadal odpalamy piątkowy job o 15:45. Teraz czyta plik z dwunastoma wierszami na 2026, z których dwa jeszcze się nie wydarzyły. Święto Dziękczynienia wypada 26. Dzień później rynek kasowy umiera o 13:00. Wpisałem to zamknięcie 1:00 PM do kalendarza dwa razy, pod dwiema różnymi nazwami, bo nie ufam sobie w listopadzie i bo pandas wciąż chętnie nazwie ten piątek dniem roboczym, jeśli mu na to pozwolę.

świętamulti-assetkryptoakcjebacktesting
← Wszystkie wpisy