리서치 › 백테스트를 읽는 법
지금까지 이 자리에서 다룬 것은 며칠에서 몇 주를 들고 가는 전략이었습니다. 이번에는 같은 날 사고파는 단타를 가져왔습니다. 보유기간이 짧아질수록 체결 가정이 결과를 좌우한다는 것을 앞선 글에서 봤는데, 하루짜리 매매에서는 그 정도가 아니라 부호가 뒤집힙니다. 전략은 그대로 두고 슬리피지 숫자 하나만 바꿔가며 2년치로 돌렸습니다.
← 앞선 글: 왕복 1%면 거래 절반이 본전 아래로 간다장 초반 거래대금이 갑자기 몰리는 종목 하나를 골라 09:03에 사고 그날 오전 중에 파는 규칙입니다. 조건은 이렇습니다.
흔히 "장 초반 거래량 터지는 종목 잡기"로 소개되는 유형입니다. 신호 판정에 미래 정보가 섞이지 않도록 거래대금 이력은 매일 장 마감 후에만 갱신했고, 수수료·세금 왕복 0.215%는 모든 경우에 똑같이 뺐습니다. 바꾼 것은 슬리피지 하나뿐입니다.
슬리피지 = 내가 사려던 가격과 실제로 체결된 가격의 차이.
백테스트는 "그 시각 그 가격에 샀다"고 가정하지만, 실제로는 호가가 비어 있거나 남들이 먼저 채가서 조금 비싸게 사고 조금 싸게 팔게 됩니다.
| 편도 슬리피지 | 승률 | PF | 거래당 평균 | 2년 누적 | MDD |
|---|---|---|---|---|---|
| 0% (마찰 없음) | 23.9% | 1.16 | +0.152% | +63.1% | −55.6% |
| 0.10% | 21.1% | 0.93 | −0.073% | −47.4% | −78.4% |
| 0.20% | 19.8% | 0.76 | −0.285% | −82.0% | −89.0% |
| 0.35% | 17.4% | 0.58 | −0.582% | −96.0% | −96.6% |
오전 중 지정 시각 매도 기준. 편도 0.1%는 왕복 0.2%를 뜻합니다. 511거래 전 구간에서 거래 수는 동일합니다.
마찰이 없다고 가정하면 2년 +63.1%입니다. 발표 자료에 올리기 좋은 숫자입니다. 여기에 편도 0.1%, 즉 10만 원짜리 주식을 100원 비싸게 샀다고 가정하는 순간 −47.4%가 됩니다. 가정 하나에 110%p가 움직입니다.
매도 시각을 오후로 미뤄도 그림은 같습니다. 0%에서 +49.0%, 0.1%에서 −42.3%, 0.2%에서 −81.5%로 청산 규칙과 무관하게 같은 순서로 무너집니다.
손익분기는 편도 0%와 0.1% 사이입니다. 거래당 평균이 마찰 0에서 +0.152%뿐이라 왕복 0.2%도 감당하지 못합니다. 앞선 글에서 20일 보유 스윙 전략의 중앙값 손익분기가 왕복 1.04%였던 것과 비교하면 다섯 배 이상 빡빡합니다.
여기서 이 글의 본론입니다. 슬리피지를 비용이라고 생각하면 "수익률에서 그만큼 빼면 되겠지"로 이해하게 됩니다. 실제로는 그렇지 않습니다. 진입 가격이 나빠지면 손절선에 더 자주 닿습니다.
| 편도 슬리피지 | 손절 청산 | 시각 매도 | 승률 |
|---|---|---|---|
| 0% | 226건 | 122건 | 23.9% |
| 0.10% | 240건 | 110건 | 21.1% |
| 0.20% | 252건 | 103건 | 19.8% |
| 0.35% | 274건 | 94건 | 17.4% |
손절이 226건에서 274건으로 48건 늘고, 끝까지 들고 가서 시각 매도로 정리한 거래는 122건에서 94건으로 줄었습니다. 슬리피지가 붙으면 진입가가 위로 밀리고, −1.5% 손절선도 같이 위로 따라 올라옵니다. 원래는 잠깐 흔들렸다가 회복해 수익으로 끝났을 거래가 손절에 걸려 잘려 나갑니다.
그래서 승률이 23.9%에서 17.4%로 떨어집니다. 비용을 빼서 손해가 난 게 아니라, 이겼을 거래가 진 거래로 바뀐 것입니다. 단순히 최종 수익률에서 왕복 비용을 빼는 방식으로 백테스트를 보정하면 이 부분이 통째로 빠집니다.
이 전략이 슬리피지에 특히 약한 데에는 이유가 있습니다. 진입이 09:03입니다. 장 시작 직후는 하루 중 호가가 가장 얇고 변동이 가장 큰 구간입니다. 게다가 고르는 종목이 "방금 거래대금이 폭발한 종목"이라, 정의상 지금 사람들이 몰려들고 있는 자리에 뛰어드는 것입니다.
즉 슬리피지가 가장 크게 나는 시간에, 가장 크게 나는 종목을, 시장가로 삽니다. 백테스트에서 "09:03 시가에 샀다"고 적는 순간 가장 낙관적인 가정을 깔고 시작하는 셈입니다.
자연스러운 반론이고, 저희도 그렇게 생각했습니다. 그런데 슬리피지는 주문 방식으로 줄일 수 있는 종류가 아닙니다. 원하는 가격에 지정가를 걸어 두면 가격이 그 아래로 내려온 종목만 체결됩니다. 그대로 위로 달아난 종목은 못 삽니다.
문제는 이 전략에서 달아난 종목이 곧 수익원이라는 것입니다. 싸게 사려는 시도가 이기는 거래만 골라서 버리는 결과가 됩니다. 모멘텀을 따라가는 규칙에서는 "싸게"보다 "빠르게"가 맞고, 슬리피지는 주문 방식이 아니라 애초에 어떤 종목을 고르느냐로 줄여야 합니다.
단타 백테스트에서 가장 크게 결과를 흔드는 변수는 진입 조건도 손절 폭도 아니었습니다. 체결 가정이었습니다. 같은 전략이 마찰 0에서 +63.1%, 편도 0.1%에서 −47.4%였습니다.
그래서 단타 성과를 소개하는 자료를 볼 때 확인할 것은 하나로 좁혀집니다.
핀트릭스가 전략 페이지에서 며칠 이상 보유하는 조건만 다루는 이유이기도 합니다. 보유기간이 길수록 체결 가정이 결과에서 차지하는 비중이 줄어듭니다. 짧은 매매가 나쁘다는 뜻은 아니지만, 짧을수록 백테스트와 실제의 거리가 멀어집니다.