2026년 9월 20일 · 실행

페이퍼 계정이 백테스트 체결을 거부했습니다: 거래소 필터에 관한 편지

페이퍼 계정이 백테스트 체결을 거부했습니다: 거래소 필터에 관한 편지

여러 계약을 거래하는 소규모 암호화폐 선물 전략을 백테스트에서 페이퍼 트레이딩으로 막 옮겼다고 해보겠습니다. 첫 리밸런싱에서 0.037 BTC를 주문합니다. 시뮬레이터는 이를 받아들이지만, 거래소는 계약의 수량 단위가 0.001이고 주문이 반올림되면서 최소 명목 금액보다 작아진다는 이유로 거부합니다. 백테스트에는 체결이 기록되는데 실제 포지션은 그대로 비어 있습니다.

이런 차이는 단순한 형식 오류라고 넘기기 쉽습니다. 하지만 어떤 자산을 보유하는지, 언제 리밸런싱하는지, 주문이 실패한 뒤 위험이 얼마나 남는지도 달라질 수 있습니다. 각 거래소의 거래 필터를 전략의 실행 규칙에 포함하고, 백테스트와 페이퍼 어댑터가 동일한 규칙을 같은 순서로 적용하도록 하세요.

어떤 거래소 필터가 주문을 무효로 만들 수 있을까요?

먼저 주문에 필요한 상품 메타데이터를 확인하세요. 수량 단위, 최소 수량, 최소 명목 금액, 가격 단위, 주문 크기 또는 가격 밴드 제한 등이 있습니다. 필터의 이름과 적용 범위는 거래소마다 다릅니다. 현물 페어와 무기한 계약의 최소 주문 조건이 다를 수 있고, 전략 실행 중에 필터가 바뀔 수도 있습니다.

최소 주문 금액이 $10인 계약에서 목표 포지션의 가치가 $12라고 해보겠습니다. 수량 단위에 맞춰 주문을 내림하면 $9.80이 되어, 반올림 전 목표 금액은 최소 기준을 넘었어도 주문은 무효가 됩니다. 올림하여 $10.20으로 만들면 주문은 유효할 수 있지만 목표보다 $0.20만큼 더 주문하게 됩니다. 계정 규모가 작거나 여러 상품을 거래하는 전략에서는 이 차이가 중요할 수 있습니다.

규칙제한 대상백테스트에서의 결과
수량 단위허용되는 주문 수량의 증감 단위반올림된 수량이 목표와 달라짐
최소 수량 또는 명목 금액허용되는 최소 주문일부 거래가 실행되지 않거나 수량을 올려야 함
가격 틱허용되는 지정가 및 트리거 가격가격 반올림에 따라 주문 체결 가능성이 달라짐
가격 밴드 또는 크기 상한거래소가 정한 주문 필드의 한계변동성이 큰 시장이나 대규모 리밸런싱 중 주문이 거부될 수 있음

주문 과정에서 반올림은 어디에 적용해야 할까요?

목표 포지션 변동량을 계산한 뒤, 주문 제출 여부를 결정하기 전에 주문 필드를 반올림하세요. 분석에는 반올림 전 목표를 보존하고, 현재 포지션과 계약 승수, 거래소의 증분 단위를 바탕으로 실행 가능한 주문을 만드세요. 매도 수량 단위가 0.001이라면 0.0017을 줄이려는 주문은 정해 둔 규칙에 따라 0.001 또는 0.002가 됩니다. 두 선택은 잔여 포지션을 다르게 만들므로, “정밀도에 맞춰 반올림”만으로는 충분한 정책이 아닙니다.

수량을 0 방향으로 내림하면 요청한 변동량보다 노출을 실수로 늘리는 일을 막을 수 있지만, 끝내 거래되지 않는 작은 잔여 포지션이 생길 수 있습니다. 가장 가까운 값으로 반올림하면 평균 오차는 줄어들지만 목표를 넘어설 수 있습니다. 최소 명목 금액은 별도로 처리 방침을 정해야 합니다. 거래를 건너뛸지, 기준을 넘을 때까지 누적할지, 초과분을 감수하고 규모를 늘릴지 결정하세요. 이런 동작을 상황에 따라 조용히 바꾸지 마세요.

그리고 주문이 실행되지 않은 이유를 기록하세요. “주문 없음: 최소 명목 금액 미달”은 “0에 체결”과는 다른 정보입니다. 포트폴리오 리밸런싱에서 주문을 건너뛰면 현금이 놀거나 기존 자산의 노출이 유지될 수 있습니다. 그 결과를 계정 상태에 기록하세요.

백테스트와 페이퍼 실행을 어떻게 일치시킬 수 있을까요?

시스템 구조가 허용하는 범위에서 두 경로가 하나의 주문 검증 함수를 사용하도록 하세요. 동일한 시점의 상품 규칙, 목표 주문, 계정 상태를 입력으로 전달합니다. 검증 함수는 정규화된 주문이나 구체적인 거부 사유를 반환해야 합니다. 그러면 시뮬레이터는 정규화된 주문에 체결 가정을 적용하고, 페이퍼 어댑터는 이에 상응하는 필드를 거래소로 보낼 수 있습니다.

각 실행과 함께 날짜가 기록된 필터 메타데이터 스냅샷을 보관하세요. 수량 단위나 최소 주문 조건이 바뀌면 백테스트가 어떤 규칙을 사용했는지 알아야 합니다. 1년 전 전략을 재현하면서 오늘의 메타데이터를 가져오면 과거 주문이 무효였던 것처럼 보이거나, 실제로는 불가능했던 주문이 가능했던 것처럼 보일 수 있습니다.

페이퍼 거래소가 주문을 거부하면 시그널을 바꾸기 전에 제출한 필드와 필터 스냅샷을 비교하세요. 백테스트의 주문 정규화기가 0.037 BTC를 만들었는데 거래소가 0.001 BTC 단위만 허용했다면, 문제는 어댑터나 메타데이터에 있습니다. 제출한 주문이 유효했지만 체결되지 않았다면 가격, 유동성, 주문 유효 시간 같은 실행 동작을 살펴봐야 합니다.

비교 결과를 신뢰하기 전에 무엇을 확인해야 할까요?

리밸런싱마다 간단한 감사 기록을 남기세요. 목표 포지션, 현재 포지션, 원본 주문, 정규화된 주문, 적용된 필터 버전, 최종 상태를 기록합니다. 그런 다음 동일한 의사결정 시점의 페이퍼 기록과 시뮬레이션 기록을 비교하세요.

첫 페이퍼 리밸런싱이 실패해도 전략 자체는 여전히 타당할 수 있습니다. 하지만 시뮬레이터가 그 주문이 왜 받아들여지고, 반올림되고, 건너뛰어지거나 거부됐을지 설명할 수 있을 때까지는, 시뮬레이터의 자산 곡선이 실제로 운용하려는 시스템과 다른 실행 시스템을 나타냅니다.

거래소 필터페이퍼 트레이딩주문 규모 산정백테스팅암호화폐 선물
← 전체 글