FINTRIX 핀트릭스 차트 스크리너 전략 데일리 가이드 리서치 전체 종목

리서치 › 백테스트를 읽는 법

거래당 평균은 +0.49%인데 계좌는 −59%였다 — 신호 군집의 함정

2021.8 ~ 2026.8 · 코스피+코스닥 대형주 · 신호 24,692건 · 거래비용 왕복 0.25% · 2026-08-27 작성 · 글 핀트릭스 운영팀

앞선 글에서 이상한 결과를 하나 남겨뒀습니다. 볼린저 하단 매수 신호를 손절 없이 5일 보유하면 거래당 평균은 +0.49%로 플러스입니다. 그런데 같은 규칙으로 10종목짜리 계좌를 굴리면 −58.9%가 됩니다. 거래비용은 이미 뺀 숫자라 비용 탓도 아닙니다. 이 격차는 계산 실수가 아니라 백테스트를 읽는 방식 자체의 문제이고 볼린저에만 해당하는 이야기도 아닙니다.

신호는 고르게 오지 않는다

범인을 찾으려면 24,692건의 신호를 날짜별로 세어봐야 합니다. 그날 하단을 이탈한 대형주가 몇 개였는지에 따라 거래를 나눠 성적을 다시 계산했습니다.

그날 신호 개수해당 일수거래 수승률평균중앙값
1~3개 (평상시)259일51045.1%−0.81%−0.61%
4~10개313일2,07543.8%−0.60%−0.62%
11~30개323일6,01845.2%−0.41%−0.52%
31~100개183일9,27946.5%−0.18%−0.38%
101개 이상 (시장 패닉)48일6,81061.9%+2.63%+1.79%

D+1 시가 진입, 손절·익절 없이 5거래일 보유. 전체 거래일은 1,222일.

구조가 한눈에 드러납니다. 네 구간이 전부 마이너스이고 맨 아래 한 줄만 플러스입니다. 그리고 그 한 줄이 전체 거래의 27.6%를 차지합니다. 1,222거래일 중 3.9%에 불과한 48일이 6,810건의 거래를 만들어냈습니다.

왜 이렇게 되는지는 볼린저밴드가 무엇을 재는지 생각해 보면 알 수 있습니다. 하단 이탈은 개별 종목의 사정이 아니라 변동성이 커졌다는 신호입니다. 시장 전체가 하루에 −2%씩 빠지는 날에는 수백 개 종목이 동시에 하단을 벗어납니다. 반대로 평온한 날에는 진짜 악재가 있는 한두 종목만 이탈합니다.

그러니까 같은 "볼린저 하단 이탈"이라는 이름 아래 성격이 완전히 다른 두 사건이 섞여 있습니다. 하나는 시장이 통째로 흔들린 날의 동반 하락이고 다른 하나는 그 종목만의 악재입니다. 앞의 것은 며칠 뒤 반등하고 뒤의 것은 대체로 더 떨어집니다.

풀링 평균이 거짓말하는 방식

백테스트가 "거래당 평균 +0.49%"라고 말할 때, 그 계산은 24,692건을 한 통에 부어놓고 나눈 값입니다. 이걸 풀링 평균이라고 부르겠습니다. 문제는 그 통 안에 패닉일 거래 6,810건이 들어 있다는 점입니다. 평균 +2.63%짜리 덩어리가 전체의 4분의 1을 넘게 차지하니, 나머지가 모두 마이너스여도 총합은 플러스로 나옵니다.

다른 방식으로 세어보면 답이 달라집니다. 날마다 같은 금액을 투입한다고 가정하고 하루치 성적을 먼저 낸 다음, 그 일별 평균들을 다시 평균 내는 겁니다.

풀링 평균: +0.49% — 거래를 전부 한 통에 넣고 나눈 값
일별 평균의 평균: −0.34% — 날마다 같은 돈을 넣었을 때

부호가 뒤집힙니다. 두 숫자 모두 틀리지 않았지만 서로 다른 질문에 답하고 있습니다. 풀링 평균은 "이 신호 하나를 무작위로 뽑으면 평균 얼마인가"에 답합니다. 실제 투자자가 알고 싶은 것은 그게 아니라 "내 계좌를 이 규칙에 맡기면 어떻게 되는가"입니다.

그 차이는 돈이 무한하지 않다는 데서 옵니다. 패닉일에 신호가 300개 떴을 때 300개를 다 살 수 있다면 풀링 평균이 곧 내 성적입니다. 하지만 10종목만 담을 수 있는 계좌는 그중 10개만 잡고 나머지 290개를 흘려보냅니다. 정작 돈이 놀고 있는 평상시에는 마이너스 신호를 꼬박꼬박 받아먹습니다. 좋은 기회는 용량이 없어서 놓치고 나쁜 기회는 자리가 남아서 다 받는 구조입니다.

슬롯을 늘리면 결과가 뒤집힌다

이 설명이 맞다면 계좌 용량을 키울수록 성적이 좋아져야 합니다. 슬롯 수만 바꿔서 같은 규칙을 돌렸습니다.

동시 보유 슬롯5년 총수익연환산최대낙폭거래 수
10종목−58.9%−16.3%−73.5%2,137
30종목−41.0%−10.0%−56.6%5,151
100종목+3.4%+0.7%−33.2%9,459
300종목+24.9%+4.6%−11.3%11,420

예상대로입니다. 규칙은 한 글자도 바꾸지 않았는데 −58.9%와 +24.9% 사이를 오갑니다. 차이를 만든 것은 전략이 아니라 그 전략을 담는 그릇의 크기였습니다.

여기서 백테스트 도구를 볼 때 확인할 점이 하나 생깁니다. 자본 제약이 없는 백테스트는 300슬롯 세계의 숫자를 보여줍니다. 신호가 뜨면 무조건 다 산다고 가정하기 때문입니다. 개인 계좌가 실제로 사는 세계는 위 표의 맨 윗줄에 가깝습니다.

그렇다면 패닉일만 노리면 되지 않나

표를 다시 보면 자연스럽게 떠오르는 생각입니다. 플러스가 나오는 구간이 하나뿐이라면 그 구간에서만 사면 될 일입니다. 게다가 그날 신호가 몇 개인지는 종가에 이미 알 수 있습니다. 미래를 훔쳐보는 조건이 아닙니다.

"그날 대형주 하단 이탈이 100개 이상인 날에만 진입, 손절 없이 5일 보유"로 10슬롯 계좌를 돌렸습니다.

5년 +85.3%, 연환산 +13.2%, 최대낙폭 −9.6%. 앞의 −58.9%와 같은 신호·같은 슬롯 수인데 진입일만 골랐습니다.

낙폭이 −73.5%에서 −9.6%로 줄어든 것이 수익률보다 중요합니다. 손실을 만들던 구간에 아예 들어가지 않았기 때문입니다.

이런 결과가 나오면 임계값을 100개로 정한 것이 우연인지부터 의심해야 합니다. 하나의 숫자에서만 좋게 나온다면 과최적화입니다. 임계값을 넓게 흔들어 봤습니다.

임계값해당 일수에피소드거래당 평균10슬롯 총수익최대낙폭
60개 이상96일33+1.70%+62.1%−16.0%
80개 이상68일26+2.15%+89.8%−15.7%
100개 이상48일21+2.63%+85.3%−9.6%
120개 이상32일16+2.66%+80.7%−9.9%
150개 이상16일11+2.86%+33.7%−9.5%

유니버스 대비 비율(15%·20%·25%·30%·35%)로 바꿔 정의해도 전 구간에서 플러스가 유지됩니다.

임계값을 60에서 150까지 움직여도 부호가 바뀌지 않습니다. 특정 숫자에 얹힌 결과가 아니라는 뜻입니다. 여기까지만 보면 쓸 만한 규칙을 찾은 것처럼 보입니다.

그런데 이걸 전략으로 팔지 않는 이유

같은 데이터를 반대편에서 보면 이야기가 달라집니다. 네 가지가 걸립니다.

1. 절반은 그냥 시장 반등이다

패닉일에 산 것이 좋았던 걸까요, 아니면 볼린저 이탈 종목을 고른 것이 좋았던 걸까요. 같은 48일에 대조군을 만들어 비교했습니다.

패닉일에 무엇을 샀나거래 수승률5일 평균
볼린저 하단 이탈 종목6,80762.0%+2.64%
대형주 전체 (무차별 매수)18,78656.3%+1.80%
하단 이탈하지 않은 대형주11,97953.1%+1.32%
코스피 지수 보유4872.9%+2.01%

이탈하지 않은 종목도 +1.32%를 냈고 지수만 들고 있어도 +2.01%였습니다. 볼린저 조건이 더한 몫은 나머지 절반 정도입니다. 수익의 절반가량은 종목 선택이 아니라 "폭락 다음 날 샀다"는 시장 타이밍에서 나왔습니다. 패닉일의 코스피 당일 등락은 평균 −2.51%였고 48일 중 22일이 −2% 아래였습니다.

2. 우리 데이터로는 이 신호를 제때 쓸 수 없다

가장 결정적인 문제입니다. 핀트릭스는 공공데이터를 쓰고 그 데이터는 하루 늦게 도착합니다. 신호를 계산해 화면에 띄우는 시점에는 이미 D+1이 지나 있어서 이용자가 실제로 살 수 있는 가장 빠른 시점은 D+2 시가입니다.

진입 시점2일 보유3일 보유5일 보유10일 보유
신호일 종가 (불가능)+1.36%+1.79%+2.67%+2.57%
D+1 시가 (불가능)+0.92%+1.78%+2.63%+2.07%
D+2 시가 (핀트릭스 현실)+0.89%+1.60%+1.64%+0.84%

하루 늦으면 +2.63%가 +1.64%로 줄어듭니다. 반등의 40%가 이미 지나간 뒤에 들어가는 셈입니다. 이 정도 감쇠는 평균회귀 전략에서 흔합니다 — 신선도가 곧 수익인 구조라서 그렇습니다.

3. 표본이 21개다

48일이라고 하면 많아 보이지만 패닉은 연달아 옵니다. 붙어 있는 날을 하나로 묶으면 독립적인 사건은 21개뿐입니다. 그리고 그 21개의 성적이 고르지 않습니다.

에피소드거래평균승률
2026-07-29 (1일)133+25.68%99%
2026-06-08 (1일)185+12.24%97%
2024-12-09 (1일)116+9.47%96%
… 중간 17개 생략 …
2022-06-13 ~ 06-23 (8일)1,201−3.11%29%

상위 한두 사건을 빼면 그림이 상당히 달라집니다. 반대쪽 끝에는 2022년 6월이 있습니다. 이 시기는 하루 폭락이 아니라 추세적인 하락이었고 8일 동안 1,201건을 사서 평균 −3.11%에 승률 29%를 기록했습니다. 연도별로 봐도 2022년만 −0.10%로 유일한 마이너스입니다.

규칙의 약점이 여기서 드러납니다. 이 필터는 하루짜리 충격과 계속 흘러내리는 장을 구분하지 못합니다. 둘 다 "그날 신호 100개 이상"으로 똑같이 보입니다.

4. 자본의 96%가 논다

1,222거래일 중 48일에만 진입하므로 나머지 96%의 기간에는 현금으로 대기합니다. 연 13.2%라는 숫자는 그 유휴 자본까지 포함해 계산한 값이라 그 자체로 부풀려지지는 않았습니다. 다만 1년에 서너 번 오는 날을 기다렸다가 그날 바로 실행할 수 있는가는 다른 문제입니다. 시장이 하루에 −3% 빠진 다음 날 아침에 열 종목을 사는 일은 계산상으로는 간단하지만 실제로는 그렇지 않습니다.

정리 — 백테스트를 볼 때 물어야 할 것

이 글에서 확인한 것을 다시 모으면 이렇습니다.

그래서 패닉일 필터는 핀트릭스의 전략 프리셋에 넣지 않았습니다. 검증에서 살아남긴 했지만 우리 데이터로는 하루 늦게밖에 실행할 수 없고 그 하루에 수익의 40%가 사라집니다. 여기에 표본 21개와 추세 하락장에서의 약점을 더하면 남에게 권할 만한 상태가 아닙니다. 다만 왜 안 되는지가 분명한 실패라서 기록으로는 남겨둘 값어치가 있다고 봅니다.

검증 방법
이 글의 기준과 정정
글의 수치는 머리말과 검증 조건에 적은 기간·표본·비용 가정으로 핀트릭스가 직접 계산한 결과입니다. 계산 규칙과 작성 원칙은 편집·검증 원칙에 공개합니다. 숫자나 서술에서 오류를 발견하시면 문의로 알려주세요. 확인되면 본문을 고치고 이 자리에 수정일과 수정 내용을 남깁니다.