2026년 8월 24일 · 리서치

내 백테스트는 왜 페이퍼 전략보다 더 자주 거래할까?

내 백테스트는 왜 페이퍼 전략보다 더 자주 거래할까?

백테스트에서는 신호가 곧바로 포지션으로 이어진 것처럼 거래를 집계하는 경우가 많습니다. 페이퍼 트레이딩에서는 그 사이에 주문이 들어갑니다. 주문은 대기하거나, 일부만 체결되거나, 취소 또는 거부될 수 있고, 신호가 바뀐 뒤에도 계속 유효한 상태로 남을 수 있습니다. 시뮬레이션 전략에서 이런 생애주기를 건너뛰면 거래 횟수와 익스포저가 페이퍼 계좌 기록과 크게 달라질 수 있습니다.

실질적인 해결책은 주문을 상태와 타임스탬프가 있는 지속적인 객체로 다루는 것입니다. 신호는 거래를 시도하라는 지시이지, 거래가 실제로 일어났다는 증거가 아닙니다.

페이퍼 전략의 거래 횟수가 백테스트보다 적은 이유는 무엇인가요?

먼저 한 번도 체결되지 않은 주문부터 살펴보세요. 백테스트는 시장 가격이 지정가에 닿기만 하면 모든 지정가 주문이 체결된다고 가정할 수 있습니다. 실제 시장에서는 가격이 닿았다는 사실만으로 주문이 대기열에서 앞서 있었는지, 거래량이 충분했는지, 주문이 거래소에 도착했을 때 해당 호가가 여전히 있었는지 알 수 없습니다.

매수 지정가를 $100에 내고 30초 뒤 취소하는 전략을 생각해 보겠습니다. 시장에서 $100.00에 거래가 발생했지만 해당 가격대의 거래량은 적고 다른 주문이 우선순위가 높습니다. 주문은 일부만 체결되거나 전혀 체결되지 않을 수 있습니다. 가격 터치만 보는 백테스트는 전체 포지션이 체결된 것으로 기록합니다. 대기열 가정을 추적하는 페이퍼 계좌는 체결이 전혀 없다고 기록할 수 있습니다.

시장가 주문에서는 불일치가 다른 방식으로 나타납니다. 백테스트는 다음 봉의 시가에 전체 수량이 체결된다고 볼 수 있지만, 페이퍼 트레이딩에서는 거래소 필터를 위반한 수량이 거부되거나 호가창이 움직이는 동안 주문이 나누어 체결될 수 있습니다. 봉은 거래를 요약할 뿐, 주문 전체가 한 가격에 체결될 수 있었다고 보장하지 않습니다.

주문이 체결되기 전에 신호가 바뀌면 백테스트는 어떻게 해야 하나요?

시뮬레이터가 취소를 받아 처리할 때까지 기존 주문을 유효한 상태로 유지하세요. 매수 주문이 대기 중일 때 신호가 뒤집히면 전략은 그 주문을 취소하고 매도 주문을 내고 싶을 수 있습니다. 하지만 그런 의도가 매수 주문을 즉시 없애지는 않습니다. 취소 요청이 처리되는 동안 매수 주문이 체결되어 새 신호는 매도인데 계좌는 매수 포지션을 보유하게 될 수 있습니다.

이를 일련의 과정으로 모델링하세요. 신호가 바뀌고, 전략이 취소 요청을 보내며, 거래소가 취소를 확인하거나 체결을 보고하고, 그제야 전략이 최종 주문 상태를 알게 됩니다. 간단한 고정 지연만 넣어도 즉시 취소를 가정하는 백테스트가 가리는 경합 상황을 드러낼 수 있습니다.

의도적으로 단순화한 모델이라면 1초의 취소 지연과 다음 이벤트 처리만으로도 취소가 즉시 이뤄진다고 가정하는 것보다 유용한 정보를 얻을 수 있습니다. 적절한 지연 시간은 거래소와 시스템에 따라 다릅니다. 중요한 점은 지연을 모델에 반영하는 것입니다. 취소 가능 시간이 없는 시장가 주문에서도 부분 체결과 뒤늦은 보고는 여전히 중요합니다.

페이퍼 트레이딩 시뮬레이터는 어떤 주문 상태를 기록해야 하나요?

간단한 상태 머신을 사용하고 각 상태 전환과 시간을 함께 보존하세요. 거래소마다 용어는 다르지만 핵심적인 구분은 같습니다:

체결 수량은 요청 수량과 별도로 기록하고, 체결 가격과 수수료도 함께 남기세요. 부분 체결된 주문은 거래가 발생한 상태이면서 나머지 수량에 대한 미결 의무가 남아 있는 상태입니다. 이를 단순히 대기 중 또는 완료로만 처리하면 전략이 다음 행동의 규모를 정하는 데 필요한 정보를 잃게 됩니다.

주문 이벤트전략이 알아야 할 내용흔한 백테스트 단순화
부분 체결체결 수량, 잔여 수량, 평균 가격주문 전체를 한 가격에 체결된 것으로 처리
취소 요청요청 시간과 최종 취소 또는 체결 확인주문을 즉시 제거
거부거부 사유와 재시도가 유효한지 여부요청한 거래가 이뤄졌다고 가정
만료주문이 더는 체결될 수 없게 된 시간나중에 가격이 닿을 때까지 주문을 계속 대기 상태로 둠

백테스트 거래와 페이퍼 트레이딩을 어떻게 공정하게 비교할 수 있나요?

주문 이벤트부터 비교하고, 다음으로 포지션을, 마지막으로 P&L을 비교하세요. 백테스트에서 체결된 주문이 페이퍼 계좌에서는 체결되지 않았다면 이후의 P&L 차이는 결과이지, 문제를 진단할 지점은 아닙니다.

의도한 각 주문에 대해 안정적인 전략 결정 ID 또는 주문 ID를 기준으로 두 실행 결과를 연결하세요. 그런 다음 제출 시간, 요청 가격과 수량, time in force, 체결 내역, 취소, 거부, 수수료, 최종 포지션을 살펴보세요. 시뮬레이션에서 미체결된 이유도 기록하세요. 지정가에 가격이 도달하지 않았는지, 가정한 대기열 앞 물량이 소진되지 않았는지, 주문이 만료되었는지 확인할 수 있습니다.

간단한 예를 들면 흐름이 분명해집니다. 신호가 10단위를 요청합니다. 두 시스템 모두 10:00:00에 주문을 제출합니다. 백테스트는 10:00:01에 전량 체결된 것으로 가정합니다. 페이퍼 트레이딩은 10:00:01에 4단위를 체결하고, 10:00:02에 취소 요청을 받은 뒤 취소가 확인되기 전인 10:00:03에 2단위가 추가로 체결되었다고 보고합니다. 정확한 비교 결과는 10단위가 아니라 6단위 체결, 4단위 취소입니다. 이를 하나의 “거래”로 합치면 전략이 실제로 부담한 익스포저가 가려집니다.

이 문제를 제대로 다루려면 완전한 거래소 시뮬레이터가 필요한가요?

그렇지 않습니다. 백테스트는 몇 가지 가정을 명시하는 것부터 시작할 수 있습니다. 지정가 터치만으로 충분한지, 가정한 대기열 앞 물량을 소진하려면 가격을 통과하는 거래량이 얼마나 필요한지, 주문이 얼마나 오래 유효한지, 취소 지연을 어떻게 처리할지 정하세요. 가능성 있는 설정을 두 가지 이상 적용해 전략을 실행해 보세요. 대기 중인 모든 지정가 주문이 완전히 체결되어야만 성과가 나온다면, 모델에 대해 유용한 정보를 얻은 셈입니다.

페이퍼 트레이딩도 체결 품질의 절대적인 기준은 아닙니다. 시뮬레이션 체결을 사용할 수 있고 실제 대기열을 반영하지 못할 수도 있습니다. 여기서 페이퍼 트레이딩의 가치는 더 제한적입니다. 이벤트가 시간에 따라 들어올 때 전략과 주문 관리자가 대기 수량, 취소, 포지션, 재시도 방식에 대해 같은 상태를 파악하는지 확인할 수 있습니다.

이 작업에서 소소하게 즐거운 점 하나는, 잘 정리된 주문 로그가 설명하기 어려운 차이를 시시할 만큼 명확한 문제로 바꿔 준다는 것입니다. “취소 요청 뒤에 두 번째 하위 주문이 체결됨”은 “페이퍼 트레이딩이 이상함”보다 훨씬 유용한 설명입니다. 백테스트와 페이퍼 계좌가 다르게 움직이면 신호를 수정하기 전에 주문 생애주기를 따라가 보세요.

페이퍼 트레이딩주문 관리백테스팅체결전략 리서치
← 전체 글