이 지표가 재는 것, 이 구간을 고른 이유
볼린저 밴드는 이동평균을 중심으로 표준편차만큼 위아래에 밴드를 그은 것이다. %B는 그 밴드 안에서 종가가 어디에 있는지를 0에서 1 사이 숫자로 바꾼 값이다. 하단밴드에 딱 붙으면 0, 상단밴드에 딱 붙으면 1이다. 1을 넘으면 밴드 바깥으로 종가가 뚫고 나갔다는 뜻이고, 0 밑으로 내려가면 그 반대다. 밴드 폭 자체가 변동성에 따라 늘었다 줄었다 하므로, 같은 종가라도 변동성이 커진 구간에서는 %B가 낮게 나오고 잠잠한 구간에서는 쉽게 1을 넘긴다.
이 지표가 흔히 오해받는 지점이 여기 있다. %B가 1을 넘었다는 건 단순히 밴드가 좁았거나 종가가 세게 튀었다는 뜻이지, 그 자체로 추세가 끝난다는 예언은 아니다. 밴드는 최근 20일의 변동성을 뒤늦게 반영하는 후행 지표라, 새로 시작한 강한 추세 초반에는 밴드가 아직 좁은 채로 남아 있어 %B가 쉽게 1을 넘긴다. 문제는 이 조기 경보와 진짜 꼭지를 구분할 방법이 %B 자체에는 없다는 점이다. 이번 구간이 그 구분을 시험하기에 알맞았다.
셀트리온은 이 성질을 시험하기 좋은 구간을 최근에 만들었다. 6월 24일 장중 159,200원까지 떨어졌다가 8월 11일 장중 212,000원까지 뛰어올랐다. 두 달 사이 저점 대비 고점이 33.17% 차이 난다. 밴드가 좁아졌다 넓어지는 과정, 그리고 그 안에서 %B가 상단을 뚫는 시점이 실제 고점과 얼마나 어긋나는지를 볼 수 있는 구간이다.
종목 셀트리온 (068270)
구간 2026-06-15 ~ 2026-08-25 (50거래일)
출처 stockanalysis.com/quote/krx/068270/history/
--------------------------------------------------
최고가 212,000원 (08-11, 장중)
최저가 159,200원 (06-24, 장중)
구간 등락 +10.40% (종가 175,000원 → 193,200원)이 글은 투자 권유가 아니다. 계산과 해석은 전부 지나간 시세를 놓고 한 것이고, 같은 지표라도 다음 구간에서 똑같이 움직인다는 보장은 없다.

계산, 실측, 그리고 어긋난 지점
%B의 계산식은 다음과 같다. 20일과 2배 표준편차는 존 볼린저가 원래 제시한 기본값이라 그대로 썼다. 뒤에서 이 값을 바꿨을 때 신호가 얼마나 달라지는지 따로 짚는다.
SMA(20) 최근 20일 종가의 산술평균
STD(20) 최근 20일 종가의 표준편차 (모집단, ddof=0)
--------------------------------------------------
상단밴드 SMA(20) + 2 × STD(20)
하단밴드 SMA(20) - 2 × STD(20)
%B (종가 - 하단밴드) ÷ (상단밴드 - 하단밴드)20일 이동평균을 쓰면 첫 19거래일은 창이 다 안 채워져 값이 안 나온다. 이 구간에서는 2026-06-15부터 2026-07-09까지가 그렇다. 문제는 이 예열 구간 안에 6월 24일의 159,200원 저점, 이 두 달을 통틀어 가장 깊은 저점이 그대로 들어가 있다는 점이다. %B로는 이 저점을 전혀 관측할 수 없었다. 실제 %B 값이 처음 나온 날은 2026-07-10이고, 그날 값은 0.5759였다. 밴드 안쪽 절반을 살짝 넘긴 평범한 자리였다.

이후 %B가 1을 넘긴 날은 50거래일 중 엿새, 07-30(1.2733), 08-05(1.0206), 08-06(1.0778), 08-07(1.0877), 08-10(1.0299), 08-11(1.1175)이다. 연속으로 몰려 있어서 밴드 바깥으로 새로 뚫고 올라간 시점, 즉 전날 1 이하였다가 그날 1을 넘긴 순간만 추리면 두 번으로 줄어든다.
07-30 %B 1.2733 종가 190,000원
다음날(07-31) -1.74%, 이후 08-11까지 재차 +12.75%
08-05 %B 1.0206 종가 190,300원
08-11까지 5거래일간 +10.61%, 그 뒤에야 되돌림 시작첫 신호(07-30)를 “과매수, 곧 되돌림"으로 읽었다면 다음 날 하루는 맞았다. 190,000원에서 186,700원으로 1.74% 빠졌다. 하지만 딱 거기까지였다. 8월 3일부터 다시 오르기 시작해 8월 11일 종가 210,500원까지 12.75% 더 올랐다. 하루짜리 되돌림을 맞혔다고 매도 신호로 썼다면 그 뒤 열흘의 상승을 통째로 놓치는 셈이었다.
두 번째 신호(08-05)는 더 확실하게 빗나갔다. 종가 190,300원에서 신호가 뜬 뒤 주가는 멈추지 않고 닷새 연속 올라 8월 11일 210,500원을 찍었다. 10.61%를 더 올린 뒤에야 꺾였다. 이 구간에서 %B가 1을 넘는다고 곧바로 파는 규칙을 썼다면 두 번 다 상승의 초입에서 나온 조기 경보였다.
반대쪽 신호, %B가 0 밑으로 내려가는 하단 돌파는 이 50거래일 동안 단 한 번도 없었다. 6월의 급락도, 7월 하순의 조정(0.1831까지 낮아진 07-22)도 밴드를 뚫을 만큼 깊지는 않았다. 매도 신호는 여러 번 났는데 매수 신호는 한 번도 안 났다는 비대칭이 이 구간의 특징이다.
두 신호를 거래량으로 나눠 보면 차이가 또렷하다. 50거래일 평균 거래량은 649,800주다. 첫 신호가 뜨기 직전인 07-28부터 07-30까지 사흘은 각각 평균의 2.01배, 2.77배, 2.69배까지 거래량이 뛰었다. 종가가 밴드를 뚫는 순간에 실제로 매수세가 크게 붙었다는 뜻이다. 반면 두 번째 신호가 뜬 08-05는 거래량이 평균의 0.94배로 오히려 평소보다 적었다. 08-06부터 08-11까지도 1.2배 안팎을 오갔을 뿐 첫 신호 때만큼 튀지 않았다. 거래량이 받쳐준 첫 신호는 그나마 짧게라도 되돌림을 만들었고, 거래량이 약했던 두 번째 신호는 열흘 가까이 그대로 밀렸다. 정작 진짜 고점이 만들어진 08-11 다음 날, 08-12의 거래량이 926,438주로 평균의 1.43배까지 오르며 이날부터 매물이 나오기 시작했다. %B가 신호를 낸 시점보다 그 뒤 며칠의 거래량 흐름이 꼭지를 더 정확히 짚어냈다.
파라미터를 바꾸면 그림이 달라진다. 이동평균 기간을 20일에서 10일로 줄이면 밴드가 최근 변동성에 더 빨리 반응해서, 상단 돌파로 잡히는 날이 07-30과 08-11 단 이틀로 줄어든다. 08-05~08-10 구간의 연속 돌파는 사라진다. 반대로 표준편차 배수를 2에서 1.5로 좁히면 07-30부터 08-12까지 아흐레 내내 %B가 1을 넘겨, 사실상 상승 구간 전체가 “과매수” 경보로 뒤덮인다. 밴드를 좁힐수록 신호는 많아지지만 그만큼 쓸모는 옅어진다는 뜻이다.


기준선을 1과 0 대신 0.8과 0.2처럼 느슨하게 잡으면 얘기가 조금 달라진다. 07-22의 %B는 0.1831로 0.2 밑까지 내려갔는데, 이 시점의 종가는 170,100원이었다. 이걸 매수 신호로 읽었다면 08-11 종가 210,500원까지 23.75% 올랐고, 이 글을 쓰는 시점인 08-25 종가 193,200원까지 쳐도 13.58% 남는다. 정작 밴드를 완전히 뚫는 극단적인 0 이하 신호는 한 번도 안 나온 구간에서, 문턱을 낮춘 0.2 이하 신호 하나가 이번 50거래일 중 가장 성적이 좋은 매수 신호로 남았다. 문턱을 어디에 두느냐에 따라 같은 지표가 전혀 다른 이야기를 한다.
이 지표를 봇 게이트에 그대로 넣기는 망설여진다. 이번 구간만 놓고 보면 %B가 1을 넘는 순간은 추세가 끝나는 자리가 아니라 상승이 한창 진행 중인 자리에서 더 자주 나왔다. 단독 매도 신호로 쓰면 상승장에서 일찍 발을 빼게 만드는 쪽으로 기운다. SMA(20)의 기울기가 꺾이는 것 같은 추세 확인 장치를 같이 두고, %B는 그 안에서 타이밍을 미세 조정하는 보조 역할로 쓰는 편이 이 데이터로는 더 말이 된다.
남는 것
두 번의 상단 돌파가 둘 다 고점보다 일렀다는 사실 하나는 남는다. 07-30 신호는 하루짜리 되돌림만 맞히고 그 뒤 12.75%짜리 상승을 놓쳤고, 08-05 신호는 그 자체로 열흘을 기다려야 했다. 급하게 매도 신호로 쓰기엔 대가가 컸다.
윌리엄 오닐은 강세장에서 과매수 신호에 너무 일찍 반응하는 것이 손실보다 더 흔한 실수라고 썼다. 이번 두 신호를 보면 그 말이 크게 틀리지 않았다. 반대로 문턱을 낮춘 매수 신호 하나는 이번 구간에서 꽤 쓸모가 있었다. 같은 지표 안에서도 상단과 하단, 엄격한 문턱과 느슨한 문턱의 성적이 이렇게 갈릴 수 있다는 게 이번에 새로 배운 부분이다. 다만 이건 셀트리온 한 종목, 두 달치 데이터로 본 결과다. 다른 종목, 다른 변동성 국면에서도 같은 패턴이 반복되는지는 아직 확인하지 못했다.
이 계산은 stockanalysis.com에서 받은 50거래일치 일봉만으로 했다. 사이트의 표가 한 화면에 50행까지만 보여주는 구조라 60거래일을 채우지 못했고, 그래서 6월 24일 저점을 포함한 초반 19거래일은 %B가 아예 계산되지 않았다. 더 긴 구간에서 하단 돌파가 실제로 몇 번이나 나오는지는 다음에 데이터를 더 확보해서 봐야 할 숙제로 남긴다.
약어 풀이
- 이 글에 나온 영어 약어를 풀어 둔다.
- SMA (Simple Moving Average): 단순 이동평균. 일정 기간 종가를 산술평균한 값이다.
- STD (Standard Deviation): 표준편차. 값들이 평균에서 얼마나 흩어져 있는지를 나타낸다.
- KRX (Korea Exchange): 한국거래소. 이 종목이 상장된 시장을 가리킨다.