NOONOO TRADING무료 채팅방 입장

같은 캔들에서 익절·손절이 동시에 닿았을 때 — 백테스트가 조용히 부풀려지는 지점

백테스트 승률이 68%로 나왔습니다. 같은 데이터, 같은 규칙인데 엔진 설정 한 줄만 바꾸니 41%가 됐습니다. 코드에 버그가 있던 게 아니라, 익절선과 손절선이 같은 캔들 안에서 둘 다 닿은 거래를 어느 쪽으로 처리할지 정하는 옵션이 달랐을 뿐입니다. 이건 예외 상황이 아니라 거의 모든 백테스트에 들어 있는 구멍입니다.

캔들은 순서를 기억하지 않는다

1시간봉 하나에 남는 정보는 네 개뿐입니다. 시가·고가·저가·종가. 그 한 시간 동안 가격이 어떤 순서로 움직였는지는 캔들에 남지 않습니다.

같은 캔들, 완전히 다른 두 경로

1시간봉: 시가 100.0 · 고가 102.4 · 저가 98.6 · 종가 100.2

경로 A
100.0 → 102.4 (고점 먼저) → 98.6 → 100.2

경로 B
100.0 → 98.6 (저점 먼저) → 102.4 → 100.2

→ 캔들 모양은 완전히 동일
→ 그런데 익절 102, 손절 99를 걸어둔 사람에게
   경로 A는 익절, 경로 B는 손절이다

백테스트 엔진은 이 캔들을 받아서 "고가가 102를 넘었고 저가가 99를 깼다"까지만 알 수 있습니다. 둘 중 무엇이 먼저였는지는 데이터에 없습니다. 그래서 엔진은 반드시 어떤 가정을 세워야 하고, 그 가정이 결과를 만듭니다.

엔진이 쓰는 세 가지 가정

대부분의 백테스트 도구는 셋 중 하나로 처리합니다. 기본값이 무엇인지 확인하지 않으면 자기가 어떤 가정 위에 서 있는지 모른 채 숫자를 읽게 됩니다.

① 낙관 가정 (익절 우선)
둘 다 닿으면 익절로 처리
→ 승률이 실제보다 높게 나온다

② 비관 가정 (손절 우선)
둘 다 닿으면 손절로 처리
→ 승률이 실제보다 낮거나 같게 나온다

③ 확률 배분 / 랜덤
절반은 익절, 절반은 손절로 나눠 처리
→ 중간값이지만 재실행할 때마다 결과가 흔들린다

주의
①은 "될 것 같은 전략"을 만들어 주는 기본값이라
도구가 조용히 ①을 쓰고 있는 경우가 가장 흔하다

세 가정 중 실전 성과의 하한선을 알려주는 건 ②뿐입니다. ①로 나온 숫자는 "가장 운이 좋았다면"의 값이고, 그 값을 기준으로 실자본을 넣으면 첫 달부터 어긋납니다. 이 구조는 룩어헤드 편향과 사촌지간입니다. 진입 시점에 알 수 없는 정보(캔들 내부 순서)를 결과에 반영한다는 점에서 뿌리가 같습니다.

애매 캔들 비율이 곧 오차 크기다

중요한 건 이 처리 방식 자체가 아니라 전체 거래 중 몇 건이 애매 캔들에 걸리느냐입니다. 비율이 낮으면 무시해도 되고, 높으면 백테스트 전체가 흔들립니다.

거래 200건 백테스트
애매 캔들(익절·손절 둘 다 닿음) = 34건
나머지 확정 거래 166건 중 승 102건

낙관 가정
승 = 102 + 34 = 136
승률 = 136 ÷ 200 = 68.0%

비관 가정
승 = 102 + 0 = 102
승률 = 102 ÷ 200 = 51.0%

반반 배분
승 = 102 + 17 = 119
승률 = 119 ÷ 200 = 59.5%

→ 같은 데이터, 같은 규칙, 승률 폭 17%p

손익비 1:1 전략이라면 손익분기 승률은 수수료 전에 이미 50% 부근입니다. 위 예시는 낙관 가정에서는 훌륭한 전략, 비관 가정에서는 겨우 본전이라는 뜻입니다. 승률과 손익비를 함께 읽는 방법은 손익비기대값과 R 배수에 정리돼 있습니다.

왜 애매 캔들이 늘어나는가

애매 캔들 비율은 우연이 아니라 설정으로 결정됩니다. 두 가지가 비율을 밀어 올립니다.

변동성 대비 목표폭

1시간봉 평균 고저폭(ATR) = 2.0%

익절 +3.0% / 손절 −3.0%
→ 한 캔들 안에 양쪽 다 닿기 어렵다 → 애매 비율 낮음

익절 +0.6% / 손절 −0.6%
→ 폭 합계 1.2%가 평균 고저폭 2.0% 안에 들어간다
→ 애매 비율 급증

규칙
(익절폭 + 손절폭) 이 그 시간프레임 평균 고저폭보다 작으면
→ 애매 캔들이 다수가 된다
시간프레임이 클수록 심해진다

같은 규칙(익절 +1% · 손절 −1%)을 다른 봉으로 재생

1분봉 평균 고저폭 0.15% → 애매 비율 1% 미만
15분봉 평균 고저폭 0.6% → 애매 비율 약 6%
1시간봉 평균 고저폭 2.0% → 애매 비율 약 17%
일봉 평균 고저폭 4.5% → 애매 비율 30% 이상

→ 봉이 굵어질수록 캔들 하나에 숨는 시간이 길어지고
   그 안에서 지워지는 순서 정보도 많아진다

단타일수록 위험합니다. 짧은 목표폭에 굵은 봉으로 백테스트를 돌리면 애매 비율이 30%를 넘고, 그 상태의 성적표는 사실상 동전 던지기 결과를 전략 성과로 읽는 것과 같습니다. 스캘핑 규칙을 검증할 때 특히 자주 걸립니다.

내 백테스트의 애매 비율 실측하기

남의 기준을 가져올 필요 없이 자기 백테스트 로그에서 바로 셀 수 있습니다.

실측 5단계

각 거래의 진입가 · 익절가 · 손절가를 기록한다
청산이 일어난 캔들의 고가 · 저가를 붙인다
롱 기준으로 고가 ≥ 익절가 AND 저가 ≤ 손절가 인 건을 센다
   (숏이면 부등호 반대)
애매 비율 = 해당 건수 ÷ 전체 거래 수
같은 백테스트를 낙관·비관 두 번 돌려 승률 차이를 적는다

읽는 기준
애매 비율 5% 미만 → 처리 방식 영향 작음
5~15% → 비관 가정 숫자를 기준으로 삼는다
15% 초과 → 이 백테스트로는 판단 불가
   → 하위 시간프레임 재생이나 틱 데이터 필요

⑤가 핵심입니다. 두 숫자의 간격이 곧 이 백테스트의 불확실성 폭이고, 보고할 때는 하나의 승률이 아니라 그 범위를 적어야 정직한 보고가 됩니다.

해결 순서 — 싼 것부터

① 비관 가정으로 고정 (비용 0)
애매 건은 전부 손절 처리
→ 여기서도 수익이면 그 전략은 바닥이 단단하다

② 하위 시간프레임으로 재생 (비용 낮음)
신호는 1시간봉으로 잡고, 청산 판정만 1분봉으로 재생
→ 애매 비율이 17% → 1% 미만으로 떨어진다
→ 대부분의 경우 이걸로 충분하다

③ 틱·체결 데이터로 재생 (비용 높음)
실제 체결 순서 그대로 재생
→ 가장 정확하지만 데이터 확보·처리 부담이 크다

④ 폭을 벌린다 (전략 변경)
익절·손절폭 합계를 그 봉의 평균 고저폭보다 크게
→ 애매 구간 자체를 없애지만 다른 전략이 된다

실무에서는 ①로 걸러내고, 살아남은 후보만 ②로 확인하는 순서가 효율적입니다. ①에서 죽는 전략은 ②·③에 시간을 쓸 이유가 없습니다. 검증 절차 전반은 백테스트워크포워드 분석을, 조건을 계속 손봐서 숫자를 맞추는 함정은 과최적화를 참고하면 됩니다.

실전에는 반대 방향 오차도 있다

애매 캔들을 해결해도 백테스트와 실전 사이에는 간격이 남습니다. 방향은 대체로 불리한 쪽입니다.

백테스트가 넉넉하게 잡는 것들

· 손절가에 정확히 체결된다고 가정 → 실제로는 미끄러진다
· 지정가가 반드시 체결된다고 가정 → 스쳐 지나가면 미체결
· 갭·급변 구간에서도 중간 가격에 체결된다고 가정

손절 −1.0% 설정 · 실제 체결 −1.15% 인 경우
거래 100건 × 노셔널 $5,000
건당 추가 손실 = 5,000 × 0.15% = $7.5
100건 누적 = $750

→ 백테스트 최종 손익에서 이만큼은 빼고 읽어야 한다

그래서 애매 캔들 처리와 체결 가정은 항상 같이 봐야 합니다. 애매 건은 손절 쪽으로, 체결가는 불리한 쪽으로 놓고도 남는 성적이라야 실전에 올릴 후보가 됩니다. 이 확인을 실계좌 없이 하는 방법이 모의투자이고, 표본이 몇 건이어야 판단할 수 있는지는 표본 수에 정리돼 있습니다.

정리

캔들에는 네 숫자만 남고 내부 순서는 지워진다
익절·손절이 같은 캔들에 닿으면 엔진은 추측할 수밖에 없다
기본값이 낙관(익절 우선)인 도구가 가장 흔하다
예시에서 낙관 68% · 비관 51% — 같은 데이터로 17%p 차이
애매 비율은 (익절폭+손절폭) ÷ 평균 고저폭이 정한다
목표폭이 좁고 봉이 굵을수록 애매 비율이 급증한다
애매 비율 15% 초과면 그 백테스트로는 판단 불가
1순위 처방은 비용 0짜리 비관 가정 고정
다음은 청산 판정만 하위 시간프레임으로 재생
보고할 때는 승률 하나가 아니라 낙관~비관 범위를 쓴다

한 줄로 줄이면 이렇습니다. 백테스트 승률에는 데이터가 답해주지 않는 구간이 섞여 있고, 그 구간을 어느 쪽으로 밀어놨는지가 성적표의 절반을 만듭니다. 새 전략의 백테스트 결과를 받았다면 수익 곡선을 보기 전에 애매 건수부터 세어 보면 됩니다. 그 숫자가 전체의 15%를 넘는다면, 지금 보고 있는 건 전략의 성적이 아니라 엔진 설정의 성적입니다.

NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.

무료 채팅방 입장 →

📈 OKX 신규 가입 시 거래 수수료 할인

OKX 수수료 할인 가입 →