지표 리페인팅(Repainting) — 백테스트만 잘 나오는 지표를 걸러내는 법
차트를 열었을 때 화살표가 죄다 고점과 저점에 정확히 꽂혀 있으면 좋은 지표를 찾은 게 아니라 리페인팅 지표를 찾은 것일 가능성이 큽니다. 그 화살표들은 그 자리에서 나온 게 아니라, 결과를 안 뒤에 그 자리로 옮겨진 것입니다.
리페인팅이란
리페인팅(repainting)은 보조지표가 한 번 그린 값이나 신호를 나중에 지우거나 다른 자리로 옮기는 현상입니다. 지금 화면에 보이는 과거 신호와, 그 시점에 실제로 보였던 신호가 다르다는 뜻입니다.
문제는 이게 눈으로 잘 안 보인다는 점입니다. 차트를 열면 이미 다시 그려진 뒤의 모습만 남습니다. 신호가 사라지는 장면은 그 캔들이 진행되는 동안에만 볼 수 있고, 나중에 되돌려 보면 처음부터 그 자리에 있었던 것처럼 보입니다. 그래서 백테스트 성적은 화려한데 실전에서는 재현되지 않는 일이 생깁니다.
유형 ① 미확정 캔들 깜빡임
가장 흔하고, 사실은 모든 지표가 가진 성질입니다. 진행 중인 캔들의 종가는 아직 확정되지 않았는데 지표는 그 순간 값으로 계산되기 때문입니다.
확정된 최근 4봉 종가 : 100, 102, 101, 103 → 합 406
진행 중 캔들 가격이 110일 때 → MA5 = (406 + 110) ÷ 5 = 103.2
진행 중 캔들 가격이 98일 때 → MA5 = (406 + 98) ÷ 5 = 100.8
캔들이 104로 확정되면 → MA5 = (406 + 104) ÷ 5 = 102.0
화면에 남는 값은 102.0 하나뿐. 103.2도 100.8도 흔적이 없다.
같은 캔들 안에서 MA선이 100.8과 103.2 사이를 오갑니다. 이 구간에 가격선이 걸쳐 있었다면 "이평선 돌파" 알림이 떴다가 취소되기를 반복했을 수 있습니다. 그런데 확정된 차트에는 그 흔들림이 남지 않습니다.
이건 지표의 결함이 아니라 실시간 계산의 당연한 성질입니다. 대응도 명확합니다 — 캔들이 확정된 뒤의 값으로만 판단하면 됩니다. 진짜 문제는 다음 두 유형입니다.
유형 ② 소급 재작도
꼭짓점·추세선·지지저항을 자동으로 찍어주는 지표들이 여기 해당합니다. 이 지표들은 "꼭짓점이 맞았다"를 확인하려면 그 뒤에 일정 폭의 반전이 나와야 하고, 확인된 다음에 표시를 과거 자리에 붙입니다.
가격이 10,000까지 올라간 뒤 꺾이기 시작
지표가 10,000을 고점으로 확정하는 조건 : 5% 하락 확인
10,000 × (1 − 0.05) = 9,500 도달 시점에 표시 확정
차트에는 10,000에 고점 표시가 붙는다.
그 표시를 실제로 볼 수 있는 최초 시점의 가격은 9,500.
표시 가격과 실행 가능 가격의 차이 = 500 = 5.0%
백테스트에서 이 표시를 그대로 진입가로 쓰면 거래 한 건마다 5%p가 공짜로 얹힙니다. 신호 30건이면 누적 150%p 차이입니다. 전략이 좋아서 나온 숫자가 아니라, 결과를 알고 난 뒤의 가격으로 계산해서 나온 숫자입니다.
이 유형은 지표가 고장난 게 아닙니다. 설계상 확인이 필요한 것이고, 그림도 정직합니다. 잘못은 그 그림을 실시간에 알 수 있었던 정보로 취급하는 쪽에 있습니다.
유형 ③ 미래값 참조
계산식에 아예 미래 데이터가 들어가는 경우입니다. 코드에서 값을 미래 방향으로 당겨오거나(음수 오프셋), 전체 데이터를 한 번에 정규화하면서 뒤쪽 값이 앞쪽 계산에 섞이는 식입니다.
겉으로는 구분이 어렵습니다. 유형 ②와 달리 그림 자체가 거짓이라 차트만 봐서는 티가 나지 않습니다. 신호가 유난히 좋은 자리에만 꽂혀 있는데 계산식을 알 수 없다면, 일단 이 유형을 의심하는 편이 안전합니다. 과최적화와는 다른 문제입니다 — 과최적화는 과거에 맞춰 파라미터를 깎은 것이고, 미래값 참조는 애초에 알 수 없는 값을 쓴 것입니다.
흔히 오해받는 것들
일목균형표의 선행스팬은 리페인팅이 아닙니다. 구름이 앞쪽으로 26칸 밀려 그려지지만, 그 값은 이미 확정된 과거 데이터로 계산된 것입니다. 미래를 참조한 게 아니라 과거 값을 미래 자리에 표시한 것뿐이고, 한 번 그려진 뒤에는 바뀌지 않습니다. 반대로 후행스팬은 뒤로 밀려 그려지므로 "지금 위치"를 판단할 때 26봉 지연을 감안해야 합니다.
하이킨아시·렌코는 리페인팅은 아니지만 가격이 아닙니다. 하이킨아시 캔들의 시가·종가는 평균으로 가공된 값이라 실제 체결 가격이 아닙니다. 확정된 뒤에는 안 바뀌므로 리페인팅은 아니지만, 그 값으로 진입가를 잡으면 실제로는 체결될 수 없는 가격을 쓰는 셈입니다. 결과적으로 백테스트가 부풀려지는 방향은 리페인팅과 같습니다.
다이버전스 자동 탐지는 대부분 유형 ②입니다. 다이버전스는 두 개의 꼭짓점이 있어야 성립하는데, 두 번째 꼭짓점은 그 뒤 움직임이 나와야 확정됩니다. 확정 시점에 표시가 과거 자리에 붙습니다.
내 지표가 리페인팅인지 확인하는 3단계
① 실시간 관찰 — 진행 중인 캔들에 신호가 뜨는지 보고, 그 캔들이 닫힐 때 신호가 남는지 확인합니다. 사라지면 유형 ①입니다. 4시간봉이면 4시간을 기다려야 하니, 1분봉으로 같은 지표를 걸어 몇 분 만에 확인하는 편이 빠릅니다.
② 데이터 잘라보기 — 차트를 특정 시점까지만 보이게 하고(리플레이 기능), 그 시점에 신호가 있었는지 확인합니다. 그다음 전체 데이터로 되돌려 같은 자리를 봅니다. 두 화면의 신호 위치가 다르면 유형 ② 또는 ③입니다. 이게 가장 확실한 검사입니다.
③ 신호 품질 의심 — 신호가 고점·저점에 너무 정확히 꽂혀 있으면 그 자체가 근거입니다. 실시간으로 알 수 있는 정보로는 저 정도 정확도가 나오지 않습니다. 과거 차트에서 승률이 90%를 넘는 것처럼 보이는 지표는 예외 없이 다시 검사해야 합니다.
대응
확정봉 기준으로만 실행합니다. 진행 중인 캔들의 지표값으로 진입하지 않고, 캔들이 닫힌 뒤 확정값으로 판단해 다음 캔들 시가에 들어갑니다. 유형 ①은 이걸로 완전히 해결됩니다. 대신 한 캔들만큼 늦게 들어가므로, 그 지연을 감수하고도 남는 전략인지가 별도 검증 대상이 됩니다.
백테스트에 확인 지연을 반영합니다. 유형 ②는 신호를 지우는 게 아니라 실행 가격을 바꿔서 처리합니다. 표시된 꼭짓점 가격이 아니라 확인이 끝난 시점의 가격으로 체결시키면 됩니다. 위 예시라면 10,000이 아니라 9,500입니다.
포워드 테스트로 대조합니다. 리페인팅이 남아 있으면 과거 성적과 실시간 성적이 크게 벌어집니다. 모의매매로 일정 기간 신호를 실시간 기록해 두고 백테스트 결과와 나란히 놓으면, 계산식을 몰라도 차이가 드러납니다. 워크포워드 검증도 같은 목적의 도구입니다.
신호를 자체 기록합니다. 실시간으로 알림이 뜬 시각과 그때의 가격을 따로 남겨두면, 나중에 차트에 남은 표시와 대조할 수 있습니다. 자동매매를 붙일 계획이라면 이 기록이 사실상 필수입니다 — 봇은 차트에 남은 그림이 아니라 그 순간의 값으로 주문을 내기 때문입니다.
왜 이게 중요한가
리페인팅은 "지표가 조금 부정확하다" 수준의 문제가 아닙니다. 미래 정보를 쓴 성적표는 아무리 좋아도 정보가 0입니다. 그 성적은 전략의 성능이 아니라 결과를 미리 알았다는 사실을 반영할 뿐이라, 숫자가 좋을수록 오히려 정보량이 적습니다.
MACD나 피봇 포인트처럼 계산식이 공개돼 있고 확정봉 값이 고정되는 지표는 이 문제에서 자유롭습니다. 반대로 계산식을 공개하지 않으면서 화살표만 찍어주는 지표는 최소한 위 ② 단계 검사를 통과한 뒤에 쓰는 게 맞습니다. 무료로 배포되는 "승률 90% 지표" 대부분이 이 검사에서 걸러집니다.
핵심 요약 3줄
① 리페인팅 = 이미 그린 신호를 나중에 지우거나 옮기는 것. 지금 보이는 과거 신호는 그때 보였던 신호가 아니다.
② 유형은 셋 — 미확정 캔들 깜빡임(정상, 확정봉으로 해결) · 소급 재작도(실행가로 보정) · 미래값 참조(사용 불가).
③ 검사는 리플레이로 자른 화면과 전체 화면의 신호 위치를 비교하는 것 하나면 충분하다.
주의
본문의 종가·이동평균·반전 폭 수치는 계산 방법을 보여주기 위한 가정 예시이며 실제 시세나 특정 전략의 실측치가 아닙니다. 보조지표는 과거 가격을 가공한 값이고 미래 방향이나 수익을 보장하지 않습니다. 레버리지 거래는 원금 전액을 잃을 수 있으며, 투자 판단과 책임은 본인에게 있습니다.
NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.
무료 채팅방 입장 →📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →