4월 2일 목요일, 동부시간 16:02. 페이퍼 북은 우리가 설계한 모습 그대로였다. BTCUSDT 퍼페추얼을 약 $240,000 롱하고, COIN, MSTR, MARA, RIOT의 beta 가중 바스켓을 숏한 상태였으며, 잔차는 $500 미만이었다. 금요일 헤지 잡은 일주일 전 15:45에 돌아갔다. 16:00 UTC 펀딩은 반올림 오차 수준이었다. 드디어 Nasdaq beta를 그대로 재현하는 데 그치지 않는 크립토 슬리브를 만들었다고 생각하며 로그아웃했다.
금요일은 성금요일이었다. 그걸 알아챈 이유는 크립토 채팅은 여전히 청산 스크린샷을 올리고 있었고, 주식 채팅은 자리에 아무도 없다는 특유의 방식으로 조용해졌기 때문이다. NYSE와 Nasdaq은 휴장했다. Binance는 그렇지 않았다. 목요일 현금 종가부터 금요일 동부시간 16:00까지 퍼프는 4.8% 하락했다. 주식 숏은 그날 시장으로서 존재하지 않았다. 리스크 패널에 찍힌 목요일 가격 한 줄이었다.
리스크 봇은 그래도 게시했다.
헤지 바스켓 대비 beta: 0.04. residual 1d: −$11,184. 상태: NEUTRAL
그 스크린샷은 아직 가지고 있다. 동료가 출력해서 거의 쓰지 않는 사무실 냉장고에 붙여 두었다. 초록색 NEUTRAL이 꽤나 많은 일을 하고 있었다. 봇은 가지고 있던 마지막 주식 체결가, 곧 목요일 종가 경매로 beta를 계산했고, 그 상대는 24시간 동안 움직이고 있던 BTC 마크였다. 얼어붙은 마크는 목요일의 사진이다. 그 사진을 헤지라고 부르는 순간, 네이키드 크립토 포지션을 든 채 부활절 주말로 걸어 들어가고, 그걸 축하하는 리포트를 받게 된다.
월요일에 현금 시장이 열렸다. 바스켓은 갭 하락했지만, 4.8%는 아니었고, 한몸으로도 아니었다. COIN은 −2.1%로 시작했다. MSTR은 더 빠졌다. MARA는 덜 빠졌다. 헤지할 수 없었던 세션을 통째로 하나 더 살아 낸 북을 아침 내내 거래로 맞춰 나갔고, 이 설계에 면죄부를 준 백테스트를 꺼내 무례한 질문을 던졌다. 지난 성금요일에 너는 무엇을 했느냐, 그 전 성금요일에는, 그리고 주식 시장이 쉬는 동안 BTC가 휴일을 가로질러 거래된 모든 평일에는?
첫 버전을 코딩한 리서치 에이전트는 모든 것을 15분 바로 리샘플하고 포워드필했다. 노트북에 pandas freq='B'가 있었는데, 제대로 된 선택처럼 보이지만 실제로 무엇을 하는지를 떠올리면 이야기가 달라진다. 'B'는 월요일부터 금요일을 뜻한다. 성금요일은 금요일이다. 2026년 준틴스데이는 금요일이었다. 독립기념일 대체 휴일도 금요일이었다. 캘린더 함수에는 캘린더가 없었다. 요일 필터가 있었다.
헤지 잡은 금요일 동부시간 15:45에 돌아가며, 평범한 주라면 현금 종가를 향해 거래하기에 합리적인 시각이다. 성금요일은 항상 금요일이다. 2023–2026 기간에 그 잡은 성금요일 4번, 준틴스데이, 7월 3일 전면 휴장, 그리고 이미 1:00 PM 종을 울린 추수감사절 다음 날 세션 4번과 겹쳤다. 금요일 세션 10개. 그 10개 모두에서 시뮬레이터는 주식 주문을 받아들였다. 체결가는 목요일 종가, 또는 금요일 마지막 정규 체결가를 앞으로 끌어온 값으로, 블로터에는 실시간 거래처럼 포장되어 있었다. 크립토 마크는 실시간으로 흘렀다. 잔차 시계열은 한쪽 레그가 응답할 기회조차 없었던 헤지 움직임에 대해 공을 가져갔다.
주말은 적어도 맥주 마시며 농담이라도 했던, 스케줄에 박힌 같은 버그였다. 휴일은 아무도 농담하지 않는 버전이었다. 노트북은 영업일이라고 했고, 성금요일은 여전히 직감적으로 어른들의 금융 시스템이 돌아가는 날처럼 느껴지기 때문이다. 은행은 문을 연다. Fedwire는 살아 있다. 브로커 API는 깨어 있는 것처럼 보여도 COIN 주문을 보낼 곳이 없을 수 있다.
조기 마감은 더 조용했고, 블로터에서는 더 무례했다. 2025년 11월 28일, 추수감사절 다음 날, NYSE는 1:00 PM에 마감했다. 우리 잡은 여전히 15:45에 깨어나, 거의 3시간 동안 12:59의 마지막 체결가를 끌고 있던 15분 시계열을 보고 "종가를 거래했다." 체결 모델은 종가 경매 슬리피지까지 받아 갔다. 16:00에는 경매가 없었다. 경매는 13:00에, 우리 없이 이미 끝났다. 그날 오후 페이퍼는 더 정직한 실패를 보여 주었다. 신규 주문은 거부되고, 미체결 주문은 조기 마감에 맞춰 취소되며, 체결률은 0이었다.
| 세션 | 현금 시장 | 백테스트 체결 | 페이퍼 |
|---|---|---|---|
| 성금요일 2026 | 종일 휴장 | 바스켓이 목요일 종가에 체결 | 거부; 마크는 목요일부터 정체 |
| 준틴스데이 2026 | 종일 휴장 | 같은 금요일 잡, 같은 유령 체결 | 나중에 리플레이에서 발견 |
| 2026년 7월 3일 | 휴장 (7월 4일 대체) | 목요일 체결가에 대한 금요일 15:45 | 참여할 현금 세션 없음 |
| 2025년 11월 28일 | 1:00 PM 마감 | 15:45 리밸런스, 12:59 마지막 체결, 경매 슬리피지 | 13:00 이후 거부 |
| 평범한 토요일 | 휴장 | 포워드필된 주식 바, 실시간 퍼프 | 동결된 종목, 실시간 퍼프 |
우리는 거래소별 세션 파일로 북을 다시 돌렸다. 정규 시간, 휴일, 조기 마감, 16:00 대 13:00 마감, 그리고 모든 마크의 정체 시간 카운터. 닫힌 현금 세션으로 들어간 주문은 직전가로 체결되지 않는다. 거부된다. 헤지 레그 중 하나라도 몇 시간 이상 정체되어 있으면 리스크 패널은 NEUTRAL을 출력할 수 없다. 유닛 테스트는 못생겼고, 나는 그게 마음에 든다. 평범한 금요일을 가져와 휴장으로 칠하고, COIN 체결 0건과 바스켓의 stale 플래그를 assert한다. 그리고 13:00을 마감으로 칠한 뒤 15:45 잡이 경매 모델을 거들떠보지도 않는지 assert한다.
residual Sharpe는 1.14에서 0.61로 떨어졌다. 나는 1.14도 0.61도 거래의 이유로 보지 않는다. 그 간극을 자백으로 본다. 우리가 헤지 잔차라고 부르던 것의 상당 부분은 크립토 휴일 변동성이었고, 숏 주식 레그가 직전 세션의 기념품에 불과했던 날에 걷어 들인 것이었다. 주말도 그 일의 일부를 했는데, 그건 이미 대화에서 할인하고 있었다. 휴일은 영업일 리샘플 안에 숨어 있었고, 숨기에는 훨씬 더 창피한 장소다.
우리는 여전히 금요일 15:45 잡을 돌린다. 이제는 2026년용 12개 행이 있는 파일을 읽는데, 그중 2개는 아직 오지 않았다. 추수감사절은 26일이다. 그다음 날 현금 시장은 13:00에 죽는다. 나는 그 1:00 PM 마감을 서로 다른 2개 이름으로 캘린더에 2번 넣는다. 11월의 나 자신을 믿지 않기 때문이고, 내가 놔두면 pandas가 그 금요일을 여전히 기꺼이 영업일이라고 부를 테니까.
← 전체 글


