월요일 종가를 바탕으로 신호를 계산하는 일일 전략은 월요일 종가에 주문을 낼 수 없습니다. 그 가격이 확인된 뒤 주문을 제출하고, 이후 체결 가능한 가격으로 거래할 수 있습니다. 이 작은 시점의 차이가 정교한 지표보다 결과를 더 크게 바꿀 수 있습니다.
일일 백테스트에서는 신호를 작성하기 전에 순서를 정리하세요. 봉이 언제 완성되는지, 전략이 언제 계산하는지, 주문이 언제 시장에 도달하는지, 어떤 가격에 그럴듯하게 체결될 수 있는지를 적어 두세요. 이 모든 일이 같은 순간에 일어난다고 보면 백테스트에서 가장 까다로운 부분을 건너뛴 셈입니다.
오늘 종가를 이용해 오늘 종가에 거래할 수 있나요?
대개는 불가능합니다. 최종 종가에 의존하는 신호는 종가 경매나 마지막 거래가 끝난 뒤에야 알 수 있습니다. 같은 가격에 체결됐다고 가정하면, 그 결과를 결정하는 데 쓰인 가격에 참여할 만큼 일찍 전략이 결과를 알았다고 보는 셈입니다.
간단한 규칙을 생각해 보세요. 종가가 20일 이동평균보다 높으면 매수합니다. 월요일 종가에 이 규칙이 참이 됩니다. 월요일 종가에 매수하는 백테스트는 월요일의 확정 가격을 매수 결정과 체결 양쪽에 사용한 것입니다. 기본적인 일일 봉 모델이라면 월요일 봉이 완성된 뒤 주문을 내고, 적절한 비용을 반영해 화요일 시가보다 이르지 않은 시점에 체결하는 것이 타당한 근사치입니다.
경매 마감 시각 전에 이용 가능한 정보를 바탕으로 종가 경매에 주문을 제출하는 전략도 있습니다. 이런 전략도 백테스트할 수 있지만 신호는 마감 전 데이터만 사용해야 하며, 체결에는 경매 실행 방식이 반영되어야 합니다. “일일 신호”라는 말만으로는 어느 조건도 확인되지 않습니다.
일일 백테스트에는 어떤 체결 가격이 적절한가요?
모든 경우에 맞는 정답은 없습니다. 완성된 일일 봉을 바탕으로 신호를 만들고 그 뒤에 주문을 보낸다면 다음 시가가 명확한 출발 가정입니다. 다만 보장되는 가격은 아닙니다. 야간 갭으로 시장이 움직일 수 있고, 시장가 주문에는 스프레드와 수수료, 경우에 따라 시장 충격 비용도 따릅니다.
위의 월요일 신호에서 월요일 종가가 $100이고 화요일 시가가 $103이라고 가정해 보겠습니다. $100에 매수했다고 가정하는 종가 간 백테스트는 소폭의 수익을 보여 줄 수 있습니다. 다음 시가에 진입하면 출발 가격은 $103입니다. $3의 차이는 조정해서 없앨 “슬리피지”가 아닙니다. 월요일 종가 이후에 신호를 알게 된 데 따른 가격 차이입니다.
| 신호를 이용할 수 있는 시점 | 가능한 체결 시점 | 모델의 가정 |
|---|---|---|
| 일일 종가 이후 | 다음 세션 시가 | 주문이 시가 전이나 시가에 시장에 도달할 수 있음 |
| 종가 경매 마감 시각 전 | 종가 경매 | 신호에는 마감 전 정보만 사용하고 경매 체결을 모델링함 |
| 일일 종가 이후 | 이후 장중 가격 | 전략이 대기하며, 체결에는 장중 데이터와 명시된 일정이 필요함 |
암호화폐 시장에서 “일일 종가”는 거래가 시각 경계를 넘어 계속되기 때문에 정해진 관례에 해당합니다. 완성된 UTC 일일 캔들을 사용하는 전략도 캔들이 완성되고 데이터가 도착할 때까지 기다려야 합니다. 데이터 파이프라인에서 봉 확정이 몇 초 늦어진다면 경계 시점의 가격에 주문을 체결했다고 가정하기는 특히 어렵습니다.
일일 봉만 있을 때 주문을 어떻게 모델링해야 하나요?
봉으로 알 수 있는 것과 알 수 없는 것을 명확히 하세요. 일일 OHLCV로 다음 시가 체결을 근사할 수는 있지만, 주문이 도착한 시점의 스프레드나 장중 가격 경로, 가격이 지정가에 닿기 전에 지정가 주문이 대기열에 들어갔는지는 알 수 없습니다.
일일 시장가 주문은 다음 시가에서 시작한 뒤 전략이 실제로 부담할 비용을 반영하세요. 거래소 수수료, 스프레드 추정치, 주문 규모에 맞는 시장 충격 추정치가 여기에 해당합니다. 이 비용을 높여 가며 결과가 어떻게 달라지는지 확인하세요. 스프레드가 0이거나 시장 충격이 거의 없다고 가정해야만 결과가 성립한다면, 일일 봉만으로는 그만큼의 확신을 뒷받침할 수 없습니다.
지정가 주문의 경우, 당일 저가가 지정가를 통과했다고 해서 체결됐다는 뜻은 아닙니다. 주문 도착 전에 시장 가격이 그 수준을 지났을 수 있고, 실제 거래량보다 앞서 대기 중인 물량이 더 많았을 수도 있습니다. 일일 봉은 그럴듯한 대기열 모델을 만들기에는 너무 거친 경우가 많습니다. 장중 체결이 주장의 핵심이라면 더 세밀한 데이터를 사용하거나, 체결 가정을 의도적으로 보수적으로 두고 그 점을 명시하세요.
일일 봉의 룩어헤드를 찾아내는 시점 점검 방법은 무엇인가요?
가정을 빠르게 드러내 주기 때문에 다음과 같은 간단한 점검을 권합니다:
- 신호에서 나온 모든 주문을 다음 세션으로 한 세션 미루세요. 성과가 급락하면 기존 백테스트가 신호 봉의 종가를 체결 가격으로 사용했는지 살펴보세요.
- 신호 시각, 주문 제출 시각, 체결 시각을 따로 기록하세요. 별도의 해석 없이도 타임스탬프만으로 그럴듯한 순서를 확인할 수 있어야 합니다.
- 다음 시가 체결을 더 늦고 보수적인 체결 가격과 비교하세요. 봉에서 가장 유리한 시점에 체결돼야만 작동하는 전략에는 체결 문제가 있습니다.
- 휴일, 봉 누락, 시장 휴장이 “다음 세션”에 어떤 영향을 주는지 확인하세요. 다음 달력 날짜가 거래 가능한 세션이라는 보장은 없습니다.
한 세션 미루기는 진단 방법이지 모든 상황에 통하는 체결 모델은 아닙니다. 느린 포트폴리오 리밸런싱, 종가 경매 전략, 연중무휴로 거래하는 암호화폐 시스템에는 서로 다른 시계가 필요합니다. 핵심은 그 시계를 분명히 드러내는 것입니다.
일일 데이터는 백테스트의 유용성을 떨어뜨리나요?
그렇지 않습니다. 의사 결정과 보유 기간이 며칠이나 몇 주 단위인 전략에는 일일 데이터가 적절할 수 있습니다. 큰 틀의 규칙을 더 연구할 가치가 있는지 판단하는 데 유용합니다. 다만 봉이 보여 주지 못하는 체결 정보를 백테스트가 정밀하게 제공한다고 주장하면 오해를 부릅니다.
“종가 신호, 종가 체결”을 “종가 신호, 다음 시가 체결”로 바꾼 뒤 전략 성과가 크게 나아진 사례를 여러 번 봤습니다. 결과가 실망스러울 수는 있지만 가치 있는 발견입니다. 아이디어가 실제로 거래할 수 있게 되는 순간에도 유효한지 알려 주기 때문입니다. 시점에 관한 약속을 전략 코드 옆에 기록해 두세요. 그러지 않으면 다음 최적화 과정에서 불가능한 체결 가정이 조용히 되살아날 수 있습니다.
← 전체 글


