정직한 백테스트를 원한다면 틱 데이터를 써야 한다는 게 흔한 조언입니다. 하지만 대부분의 전략에서는 그 조언이 틀렸다고 생각합니다. 그대로 따랐다가는 백테스트가 나아지기는커녕 대개 더 나빠집니다. 틱 데이터가 부정확해서가 아닙니다. 틱 데이터는 구할 수 있는 데이터 중 가장 정확합니다. 문제는 대부분의 사람이 틱 데이터를 쓰면서 엄밀함 대신 해상도를 높인다는 점입니다. 둘은 같은 것이 아닙니다.
흔히 벌어지는 일을 보겠습니다. 한 리서처가 1분 봉으로 전략을 만들고 마음에 드는 Sharpe를 얻습니다. 그러자 멘토나 포럼 글, 혹은 떨쳐지지 않는 의구심이 봉 데이터로 만든 백테스트는 정직하지 않다고 말합니다. 그래서 데이터 파이프라인 전체를 틱 데이터로 다시 만듭니다. 모든 체결과 호가 업데이트를 마이크로초 단위 타임스탬프와 함께 처리합니다. 백테스트는 느려지고 코드 복잡도는 3배가 되며, Sharpe는 거의 변하지 않거나 아무도 설명하지 못하는 방향으로 움직입니다. 그래도 결과를 내놓습니다. 틱 데이터가 더 엄밀해 보이기 때문입니다. 엄밀해 보이는 것과 엄밀한 것은 다릅니다.
틱 단위 해상도로 실제 얻는 것
틱 데이터는 모든 체결의 순서와 가격을 알려 줍니다. 비용을 지불하면 모든 오더북 업데이트도 확인할 수 있습니다. 이는 실제 정보입니다. 이를 통해 대기열에서의 순서를 재구성하고, 특정 가격대에서 체결될 확률을 추정하며, 불리한 선택이 있었는지 확인할 수 있습니다. 즉, 가상으로 체결된 직후 시장이 나에게 불리하게 움직이는지를 보는 것입니다. 보유 기간이 초 단위이고 엣지가 틱의 일부에 불과하다면 이 모든 것이 대단히 중요합니다.
하지만 Stratmill에서 접하는 전략 대부분과 개인 및 준전문 리서처들이 실제로 운용하는 전략 대부분은 몇 분에서 며칠까지 포지션을 보유합니다. 이 시간 범위에서는 특정 1분 안의 40번째 체결까지 모델링했는지가 백테스트의 정직성을 좌우하지 않습니다. 스프레드와 펀딩 비율, 슬리피지 곡선, 그리고 내 지정가 주문이 다른 사람들의 주문 뒤에 대기열을 이루고 있다는 사실을 제대로 모델링했는지가 중요합니다. 틱 데이터로 이 4가지를 모두 틀리게 모델링할 수도 있고, 1분 봉으로 4가지 모두 제대로 모델링할 수도 있습니다. 해상도와 정직성은 서로 별개의 문제입니다.
사람들이 가장 과소평가하는 수치가 바로 마지막 수치입니다. 틱 단위 백테스트는 단순히 "행이 더 많은 똑같은 백테스트"가 아닙니다. 대부분의 거래소에서 체결 데이터는 수집 타임스탬프 기준으로 순서가 뒤바뀐 채 들어오고, 사후 정정되며, 여러 매칭 엔진 샤드에 나뉘어 전송됩니다. 우리가 데이터를 수집한 여러 거래소에서는 연결이 끊겼다가 복구되는 동안 중복되거나 아예 누락되는 경우도 있습니다. 제대로 만든 봉 데이터 파이프라인보다 실제로 더 정확한 틱 데이터 파이프라인을 구축하는 일은, 단지 더 세밀한 파이프라인을 만드는 것과 달리 진짜 시스템 개발 프로젝트입니다. 대부분의 팀은 그 일을 하지 않습니다. 데이터 공급업체의 틱 파일을 백테스터에 넣고 끝냅니다. 결국 알려져 있고 문서화된 근사치 집합(OHLCV)을, 알 수 없고 문서화되지 않은 근사치 집합(공급업체가 문제가 생긴 날 틱 데이터를 어떻게 정합하는지 알 수 없는 로직)으로 바꾼 셈입니다.
비용을 들여 사는 노이즈
두 번째 비용은 엔지니어링보다는 통계와 관련이 있습니다. 개별 체결 가격은 매수 호가와 매도 호가 사이를 오갑니다. 이를 매수-매도 호가 왕복(bid-ask bounce)이라고 하며, 1980년대부터 시장 미시구조 문헌에서 알려진 현상입니다. 몇 초보다 짧은 신호를 다룬다면 틱 단위 백테스트 때문에 사실은 단순한 호가 왕복에 불과한 현상에서 구조를 발견했다고 착각할 수 있습니다. 한 리서처가 체결별 데이터에서 아름다운 평균 회귀 패턴을 찾았지만, 5초 봉으로 집계하자마자 사라지는 것을 본 적이 있습니다. 그 패턴은 호가 왕복이었기 때문입니다.
제가 아는 퀀트 한 명은 마켓메이킹을 하다가 지금은 소규모 암호화폐 포트폴리오를 운용합니다. 그는 이렇게 말했습니다. "틱 데이터는 돋보기입니다. 엣지를 들여다보면 좋죠. 노이즈를 들여다보면 그 노이즈를 정교하게 모델링하느라 6개월을 보내게 됩니다." 그는 이제 거의 모든 백테스트에 1초 봉이나 1분 봉을 쓰고, "이 지정가 주문이 실제로 체결됐을까?"라는 질문에만 틱 데이터를 사용합니다. 이는 체결 확률에 관한 질문이지 신호에 관한 질문이 아닙니다.
이런 식으로 나누는 것이 올바른 접근이며, 대부분의 틱 데이터 옹호론자들이 놓치는 점입니다. 틱 데이터를 정직하게 사용하는 방법은 전략 전체를 틱 데이터로 돌리는 것이 아닙니다. 봉 데이터로는 정말 답할 수 없는 한두 가지 질문에만 꼭 필요한 방식으로 활용하는 것입니다.
비판이 옳은 경우
그렇다고 틱 데이터가 필수인 전략이 없다는 뜻은 아닙니다. 그런 전략도 분명 있으며, 그렇지 않은 척하면 주장을 과장하는 셈입니다. 양쪽 호가를 제시하고, 틱 단위로 재고를 관리하며, 특정 가격대에서 대기열의 내 순서를 따지는 등 마켓메이킹과 비슷한 전략을 운용한다면 봉 데이터로는 문제 자체를 표현할 수 없습니다. 그런 전략의 경제성은 분 단위 구간 사이가 아니라 분 안에 존재합니다. 거래소 간 지연 시간 민감형 통계적 차익거래도 마찬가지입니다. 이 경우 핵심 질문은 말 그대로 "어느 체결이 먼저 일어났는가"입니다. 대량 주문을 취급하는 옵션 마켓메이킹도 그렇습니다. 체결 후 수백 밀리초 동안의 불리한 선택이 전략의 성패를 좌우합니다. 이런 환경에서 봉으로 백테스트하는 것은 단순화가 아니라 범주 오류입니다. 전략을 저해상도로 시험하는 게 아니라, 실제 전략과 이름만 같은 다른 전략을 시험하는 셈입니다.
| 전략의 시간 범위 | 봉 데이터에서 드러나지 않는 것 | 틱 데이터가 필요한가? |
|---|---|---|
| 마켓메이킹 / 대기열 기반 | 체결 확률, 불리한 선택, 대기열에서의 순서 | 필요함 — 선택 사항이 아님 |
| 지연 시간 / 거래소 간 차익거래 | 체결 순서, 어느 거래소가 먼저 움직였는지 | 필요함 |
| 장중 모멘텀, 평균 회귀(몇 분–몇 시간) | 봉 안에서의 체결 시점, 스프레드 비용 | 체결 확률을 따질 때만 필요하며 신호에는 불필요 |
| 스윙 / 며칠 보유, 옵션 방향성 전략 | 중요한 정보는 거의 없음 | 불필요 — 봉 데이터면 충분하며 더 깔끔한 경우가 많음 |
그러니 핵심 주장은 "틱 데이터가 나쁘다"가 아닙니다. 틱 데이터부터 찾는 것은 더 어렵고 덜 화려한 질문을 피하는 방법이 되는 경우가 많다는 뜻입니다. 내 비용 모델은 정확한가? 체결 가정은 맞는가? 이 주문은 실제로 체결됐을까, 아니면 오더북에서 실제로 제시된 적 없는 가격에 체결된다고 가정하고 있나? 대기열에서의 순서와 스프레드를 정직하게 고려한다면 이런 질문은 1분 봉이나 1초 봉으로도 답할 수 있습니다. 틱 데이터는 몇 배의 엔지니어링 비용을 들여 더 정밀하게 답하게 해 주지만, 그런 정밀도가 결론을 바꾸지 않는 전략도 많습니다. 전략의 시간 범위가 요구하는 곳에만 추가 노력을 들이고 나머지에는 쓰지 마세요. 더 세밀한 데이터가 더 엄밀해 보인다는 이유로 언제나 가장 세밀한 데이터를 택하는 것보다, 리서치 팀의 시간을 더 잘 쓰는 방법입니다.
← 전체 글


