포트폴리오 백테스트에서는 같은 돈을 두 번 쓰면서도 매끄러운 자산 곡선이 나올 수 있습니다. 시뮬레이터가 자산, 현금, 담보, 매수 여력을 서로 바꿔 쓸 수 있는 값처럼 취급할 때 이런 일이 생깁니다. 이들은 서로 관련은 있지만 각기 다른 질문에 답합니다. 계좌가 무엇을 보유하고 있는지, 무엇을 갚아야 하는지, 지금 당장 다른 주문에 얼마를 쓸 수 있는지 말이죠.
전략이 $10,000로 시작해 자산을 $6,000어치 매수했다고 해보겠습니다. 사용 가능한 현금은 $4,000입니다. 그런데 백테스트에서 두 번째 포지션 규모를 자산 $10,000의 100%로 잡으면, 자본은 $10,000로 기록하면서 실제로는 $16,000의 익스포저를 부담하게 됩니다. 계좌 규정에 따라 허용되는 레버리지일 수는 있습니다. 하지만 포지션 규모 산정 코드에서 ‘자산’을 사용했다는 이유만으로 정당해지는 것은 아닙니다.
잘못된 방법 1: 자산을 현금처럼 취급하기
이 편법은 여러 자산을 다루는 전략에서 자주 나타납니다. 각 신호가 현재 포트폴리오 가치의 일정 비율로 주문 규모를 정하고, 모든 주문이 전체 가치를 기준으로 계산됩니다. 포트폴리오 루프는 주문을 각각 독립적으로 계산한 뒤, 자금을 따로 확보하지 않은 채 모두 더합니다.
유동성이 높은 상품을 다루고 마진콜도 없는 백테스트에서는 문제가 쉽게 드러나지 않습니다. 수익률은 그럴듯해 보이지만, 나중에 합산한 포지션 비중이 140%나 180%에 이르기도 합니다. 실계좌에서는 나중에 제출한 주문이 거절되거나 전략이 의도하지 않은 레버리지를 사용하게 될 수 있습니다.
주문을 구성할 때 현금을 확보해 두세요. 현금 계좌에서는 $2,000 매수에 $2,000와 수수료가 소요됩니다. 마진 계좌에서는 거래소 규정에 따라 필요한 증거금을 계산한 뒤, 해당 금액만큼 사용 가능한 매수 여력을 줄이세요. 여러 주문이 동시에 들어오면 처리 우선순위를 정해야 합니다. 그렇지 않으면 어떤 루프가 먼저 실행됐는지에 따라 결과가 달라질 수 있습니다.
잘못된 방법 2: 묶인 담보를 사용 가능한 매수 여력으로 계산하기
파생상품 거래소에 담보 $1,000를 예치한다고 해서 계좌 자산이 반드시 $1,000 줄어드는 것은 아닙니다. 다만 그 담보가 열린 포지션에 묶인다는 뜻입니다. 흔히 쓰이는 회계 편법 중 하나는 담보를 현금에서 차감하고, 포지션의 전체 명목 금액도 매수 여력에서 차감합니다. 다른 편법은 반대로 담보를 사용 가능한 현금이자 증거금으로 모두 취급합니다.
두 오류 모두 다음 주문이 가능한 범위를 왜곡합니다. 첫 번째 오류는 전략이 필요 이상으로 제약된 것처럼 보이게 할 수 있고, 두 번째 오류는 계좌가 감당할 수 없는 주문을 승인할 수 있습니다. 레버리지가 5×라면 $5,000 포지션에 필요한 개시 증거금은 대략 $1,000일 수 있지만, 유지 증거금과 수수료, 미실현 손실, 거래소별 구간에 따라 실제 사용 가능 금액은 달라집니다. 명목 금액은 담보와 같은 개념이 아닙니다.
| 계좌 항목 | 의미 | 새 주문에 사용할 수 있나? |
|---|---|---|
| 자산 | 부채와 시가 평가 포지션을 반영한 계좌 가치 | 증거금 및 매수 여력 규정에 따름 |
| 사용 가능 현금 | 이미 사용되거나 확보 또는 담보로 제공되지 않은 현금 | 가능. 상품별 규정 범위 내에서 사용 |
| 묶인 담보 | 열린 포지션이나 주문을 뒷받침하는 자금 | 대개 반환될 때까지 사용 불가 |
| 매수 여력 | 거래소가 산출하는 추가 주문 가능 한도 | 가능. 현재 한도까지 사용 |
특정 거래소에서는 단순한 상황에서 이 값들 중 일부가 같더라도 각각 별도의 항목으로 모델링하세요. 그런 다음 포지션에서 손실이 발생할 때 어떤 일이 생기는지 테스트하세요. 자산은 줄고, 명목 금액 대비 유지 증거금 비율은 높아질 수 있으며, 사용 가능한 매수 여력은 두 값만 보고 예상하는 것보다 더 빠르게 줄어들 수 있습니다.
잘못된 방법 3: 청산 신호가 나오면 현금 풀어주기
백테스트에서는 청산 신호가 나오는 즉시 자금을 풀어주는 경우가 많습니다. 하지만 청산 신호가 체결을 뜻하지는 않습니다. 주문이 대기 중이거나 일부만 체결되거나 취소될 수 있습니다. 포지션이 실제로 청산될 때까지 증거금과 익스포저는 그대로 유지됩니다. 체결된 뒤에도 수수료와 실현 손익이 사용 가능 금액에 영향을 줍니다.
문제는 회전이 빠를 때 집중적으로 나타납니다. 시뮬레이터가 한 거래를 청산하자마자 그 대금을 다른 거래에 쓰고, 두 주문이 모두 원하는 가격에 문제없이 체결됐다고 가정합니다. 모의 거래에서는 첫 포지션이 아직 열려 있는 동안 두 번째 주문이 거절될 수 있습니다. 청산 주문이 일부만 체결되어 계좌의 사용 가능 자금이 백테스트의 예상보다 적을 수도 있습니다.
미체결 주문과 포지션을 자금 사용 약정으로 추적하세요. 의도가 아니라 체결에 따라 자금을 풀어주세요. 청산 주문이 일부만 체결됐다면 실제 청산된 수량에 비례해 비용을 반영한 뒤 자금을 풀어야 합니다. 변동성이 큰 날 두 전략이 같은 현금을 두고 경쟁하면 이런 세부 사항이 중요해집니다.
명확한 원장 만들기
각 의사결정 시점에 정해진 순서로 갱신되는 원장을 유지하세요. 기존 포지션을 시가 평가하고, 자산과 증거금을 계산한 뒤, 체결과 비용을 처리하고, 매수 여력을 다시 계산한 다음, 새 주문의 규모를 정하고 자금을 확보합니다. 현금과 포지션 가치의 모든 변동을 대조할 수 있도록 충분히 상세하게 기록하세요.
유용한 불변 조건 하나는 모든 승인된 주문이 제출 시점의 계좌 모델에 따라 자금 조달 가능해야 한다는 것입니다. 시뮬레이터가 어떤 현금이나 증거금으로 주문을 뒷받침하는지 설명할 수 없다면, 해당 포트폴리오를 실제로 유지할 수 있다는 점을 백테스트가 입증하지 못한 것입니다.
수익률 계산과 함께 간단한 감사를 실행하세요. 최대 총 익스포저, 최소 사용 가능 현금, 최소 증거금 여유분, 매수 여력을 초과했을 주문 수를 보고하세요. 자본을 조용히 재사용할 때만 성과가 좋은 전략은 배포 가능한 백테스트 결과가 아니라 포트폴리오 규모 산정 결과를 보여주는 것입니다.
← 전체 글


