스토캐스틱 계산식은 어디서 찾아봐도 한 줄로 나옵니다. 종가에서 최근 n봉의 최저가를 빼고, 최고가와 최저가의 폭으로 나눠 100을 곱합니다. 그런데 엑셀에 옮겨 직접 셈해 보면 차트에 떠 있는 %K와 맞지 않는 일이 흔합니다. 소수점 끝자리 차이가 아니라 10포인트 넘게 벌어지기도 합니다.
대부분은 공식이 틀려서가 아닙니다. 무엇을 재료로 넣었는지, 평활을 어느 단계에서 했는지가 도구마다 달라서입니다. 이 글은 슬로우 스토캐스틱의 %K와 %D를 예시 숫자로 끝까지 손으로 계산하고, 다음 봉 종가가 얼마여야 %K가 %D를 위로 넘는지 거꾸로 푸는 식을 정리합니다. 스토캐스틱이 무엇을 재는 지표인지는 스토캐스틱 지표 기초에, 세 숫자를 몇으로 둘지는 스토캐스틱 설정 가이드에 이미 적었으니 여기서는 셈만 봅니다.
패스트 %K 계산식 — 분자와 분모를 따로 적어 두세요
패스트 %K의 계산식은 이렇습니다.
패스트 %K = (이번 종가 − 최근 n봉 최저가) ÷ (최근 n봉 최고가 − 최근 n봉 최저가) × 100
여기서 "최근 n봉"에는 이번 봉 자신이 들어갑니다. 14로 설정했다면 이번 봉과 그 앞 13개 봉, 합쳐서 14개입니다. 그리고 최고가는 고가 중에서, 최저가는 저가 중에서 고릅니다. 종가 중에서 고르면 다른 값이 나옵니다.
예시로 계산해 보겠습니다. 실제 시세가 아니라 셈을 보여 주기 위한 숫자이고, 기간은 손으로 따라가기 쉽게 5로 줄였습니다.
| 봉 | 고가 | 저가 | 종가 |
|---|---|---|---|
| 1 | 105 | 98 | 101 |
| 2 | 106 | 100 | 104 |
| 3 | 108 | 103 | 107 |
| 4 | 107 | 102 | 103 |
| 5 | 110 | 104 | 109 |
| 6 | 111 | 106 | 107 |
| 7 | 109 | 103 | 104 |
| 8 | 108 | 101 | 102 |
| 9 | 112 | 105 | 111 |
5번 봉에서 처음으로 봉이 다섯 개 모입니다. 1~5번 봉의 고가 중 최고는 110, 저가 중 최저는 98입니다. 종가 109를 넣으면 (109 − 98) ÷ (110 − 98) × 100 = 11 ÷ 12 × 100 = 91.67입니다.
한 칸씩 내려가며 같은 셈을 반복하면 이렇게 됩니다.
| 봉 | 창의 최고가 | 창의 최저가 | 분자 | 분모 | 패스트 %K |
|---|---|---|---|---|---|
| 5 | 110 | 98 | 11 | 12 | 91.67 |
| 6 | 111 | 100 | 7 | 11 | 63.64 |
| 7 | 111 | 102 | 2 | 9 | 22.22 |
| 8 | 111 | 101 | 1 | 10 | 10.00 |
| 9 | 112 | 101 | 10 | 11 | 90.91 |
분자와 분모를 열로 따로 남겨 둔 데는 이유가 있습니다. 뒤에서 도구마다 평활 방식이 갈리는 자리가 나오는데, 그때 이 두 열이 있어야 어느 방식인지 가려낼 수 있습니다.
7번 봉에서 분모가 9로 줄어든 것도 눈여겨볼 만합니다. 1·2번 봉이 창에서 빠지면서 최저가가 98에서 102까지 올라왔습니다. 가격은 104로 크게 움직이지 않았는데 %K는 63.64에서 22.22로 떨어졌습니다. 분모가 매 봉 바뀌는 지표라 이런 일이 계산상 당연하게 생깁니다.
슬로우 스토캐스틱 계산식 — 평균을 두 번 씌웁니다
5-3-3처럼 적는 슬로우 스토캐스틱은 위의 패스트 %K에 3봉 이동평균을 두 번 씌운 것입니다.
슬로우 %K = 최근 3개 패스트 %K의 평균
>
슬로우 %D = 최근 3개 슬로우 %K의 평균
예시에 적용하면 7번 봉의 슬로우 %K는 (91.67 + 63.64 + 22.22) ÷ 3 = 59.18입니다. 8번 봉은 (63.64 + 22.22 + 10.00) ÷ 3 = 31.95, 9번 봉은 (22.22 + 10.00 + 90.91) ÷ 3 = 41.04입니다.
슬로우 %D는 9번 봉에서 처음 나옵니다. (59.18 + 31.95 + 41.04) ÷ 3 = 44.06입니다.
9번 봉의 패스트 %K는 90.91까지 튀었는데 슬로우 %K는 41.04에 머물렀습니다. 앞의 22.22와 10.00이 평균 안에 아직 남아 있기 때문입니다. 슬로우 %K가 슬로우 %D 44.06 아래라서, 9번 봉에서는 교차가 나지 않았습니다.
여기서 봉 개수를 세어 보면 하나 보이는 게 있습니다. 기간 5에 평활 3·3이면 첫 %D가 나오기까지 봉 9개가 필요했습니다. 5 + 2 + 2입니다. 흔히 쓰는 14-3-3이면 14 + 2 + 2 = 18개입니다. 상장한 지 얼마 안 된 종목에서 선이 늦게 그려지는 이유이고, 감시 목록 전체에 같은 설정을 걸 때 어디서부터 값이 믿을 만한지는 워밍업에서 따로 다룹니다.
엑셀로 옮길 때는 고가를 B열, 저가를 C열, 종가를 D열에 2행부터 쌓았다고 하면 6행(다섯 번째 봉)에 이렇게 씁니다.
=(D6-MIN(C2:C6))/(MAX(B2:B6)-MIN(C2:C6))*100
이걸 E열로 두고 아래로 끌어 내린 뒤, F열 8행에 =AVERAGE(E6:E8) 로 슬로우 %K를, G열 10행에 =AVERAGE(F8:F10) 로 슬로우 %D를 만듭니다. 위쪽이 비어 있어야 정상입니다. 빈칸을 0으로 채우면 첫 몇 봉의 평균이 끌려 내려갑니다.
다음 봉 종가 역산 — %K가 %D를 넘으려면 얼마에 닫혀야 하나
교차 조건을 식으로 풀면 계산이 의외로 짧아집니다. 슬로우 %D는 이번 슬로우 %K와 앞의 두 개를 평균 낸 값이므로, 이번 %K가 %D보다 크다는 조건은 이렇게 바뀝니다.
슬로우 %K(이번) > (슬로우 %K(직전) + 슬로우 %K(전전)) ÷ 2
이번 %K가 직전 두 값의 평균보다 크기만 하면 됩니다. 여기에 슬로우 %K가 패스트 %K 세 개의 평균이라는 것을 넣으면 이번 봉의 패스트 %K가 넘어야 할 선이 나옵니다.
패스트 %K(이번) > 1.5 × (슬로우 %K 직전 + 전전) − 패스트 %K(직전) − 패스트 %K(전전)
예시의 9번 봉에 대어 보겠습니다. 1.5 × (31.95 + 59.18) − 10.00 − 22.22 = 104.47입니다. 패스트 %K는 정의상 0에서 100 사이에서만 움직이므로, 9번 봉은 어떤 종가로 닫혔어도 교차할 수 없었습니다. 차트에서 "조금만 더 오르면 교차할 것 같은데"라고 보이는 봉 중에 이런 경우가 꽤 있습니다. 앞에 깔린 낮은 값들이 평균에서 빠져나가기 전까지는 산수로 막혀 있습니다.
10번 봉은 사정이 다릅니다. 1.5 × (41.04 + 31.95) − 90.91 − 10.00 = 8.58이니, 패스트 %K가 8.58만 넘으면 됩니다. 이걸 종가로 바꾸려면 10번 봉의 창을 봐야 합니다. 6~9번 봉의 최고가 112, 최저가 101이고, 10번 봉의 고가·저가가 이 폭 안에 머문다고 가정하면 다음과 같습니다.
필요한 종가 > 최저가 + 기준 %K ÷ 100 × (최고가 − 최저가) = 101 + 0.0858 × 11 = 101.94
10번 봉이 101.94 위로만 닫히면 교차가 납니다. 9번 봉 종가가 111이었으니 9포인트 넘게 빠져도 교차는 나는 셈입니다. 같은 방식으로 패스트 %K가 80 위로 닫히는 종가를 구하면 101 + 0.8 × 11 = 109.8입니다.
가정 하나가 걸려 있습니다. 10번 봉이 112를 넘거나 101 아래로 찔렀다면 창의 최고가·최저가가 바뀌어 분모가 달라집니다. 그래서 이 역산은 봉이 닫히기 전에 "대략 이 근처"를 가늠하는 용도이고, 판정은 봉이 마감된 뒤 다시 셈해야 합니다. 진행 중인 봉으로 교차를 잡으면 마감 때 되돌아가는 리페인팅이 생기고, 마감 기준 시각은 확정 시각에 적어 두었습니다.
계산값이 차트와 어긋나는 다섯 자리
손계산은 맞았는데 차트 숫자와 다르다면 대개 아래 다섯 가지 중 하나입니다.
- 창에 종가만 넣었다. 9번 봉을 종가만으로 셈하면 5~9번 종가의 최고 111, 최저 102라 (111 − 102) ÷ (111 − 102) × 100 = 100이 나옵니다. 고가·저가로 셈한 90.91과 9포인트 넘게 차이 납니다. 라인 차트용 데이터나 종가만 담긴 CSV를 받아 계산하면 이렇게 됩니다.
- 슬로잉을 합의 비율로 하는 도구가 있다. 패스트 %K 세 개를 평균 내지 않고, 분자 세 개의 합을 분모 세 개의 합으로 나누는 방식입니다. MT5 기본 스토캐스틱 같은 도구가 이쪽입니다. 예시의 9번 봉에 적용하면 (2 + 1 + 10) ÷ (9 + 10 + 11) × 100 = 43.33으로, 평균 방식의 41.04와 2포인트 넘게 다릅니다. 7번 봉은 62.50 대 59.18입니다. 분자·분모 열을 따로 남겨 두라고 한 이유가 이것입니다.
- 분모가 0인 봉. 거래가 거의 없는 종목에서 n봉 내내 고가와 저가가 같으면 0 ÷ 0이 됩니다. 어떤 도구는 0을, 어떤 도구는 50을, 어떤 도구는 직전 값을 그대로 두고, 엑셀은 오류를 냅니다.
IFERROR로 무엇을 채울지 정해 두지 않으면 그 뒤 평균이 전부 흔들립니다. - 일봉 경계가 다르다. 바이낸스 일봉은 한국 시각 오전 9시에 닫힙니다. 다른 경계로 자른 일봉의 고가·저가를 섞으면 공식이 같아도 창이 다릅니다. 바이낸스 일봉 마감 시간을 먼저 맞추세요.
- 평활에 단순 평균이 아닌 걸 쓴다. 드물지만 슬로잉이나 %D 칸에 지수 평균을 고를 수 있는 도구가 있습니다. 시작값이 오래 남는 성질 때문에 처음 수십 봉은 단순 평균과 꽤 다르게 나옵니다. 이 성질은 이동평균선 계산식의 지수 이동평균 절에서 숫자로 보였습니다.
스토캐스틱 RSI 계산식과 윌리엄스 %R
이름이 비슷한 두 지표도 계산식으로 보면 관계가 분명해집니다.
스토캐스틱 RSI는 위 공식의 재료를 가격에서 RSI로 바꾼 것입니다.
스토캐스틱 RSI = (이번 RSI − 최근 n봉 RSI 최저) ÷ (최근 n봉 RSI 최고 − 최근 n봉 RSI 최저)
원래 정의는 0에서 1 사이 값이고, 차트 도구 대부분은 여기에 100을 곱한 뒤 %K·%D 평활을 다시 씌웁니다. 그래서 설정 칸이 RSI 기간 하나, 스토캐스틱 기간 하나, 평활 두 개로 네 개가 됩니다. 기본값 14·14·3·3이면 RSI가 첫 값을 내는 데 15개 봉, 그 RSI가 14개 모이는 데 13개 봉이 더, 평활 두 번에 4개 봉이 더 필요해 첫 %D까지 32개 봉이 듭니다. RSI 쪽 계산은 비트코인 RSI 지표 가이드에 정리했습니다.
윌리엄스 %R은 사실상 같은 지표를 뒤집어 놓은 것입니다.
윌리엄스 %R = (최근 n봉 최고가 − 이번 종가) ÷ (최고가 − 최저가) × (−100) = 패스트 %K − 100
예시의 9번 봉이라면 90.91 − 100 = −9.09입니다. 0에서 −100 사이를 오가고, 평활을 하지 않으니 패스트 %K와 모양이 똑같습니다. 두 지표를 한 화면에 같이 띄워도 새로 얻는 정보는 없습니다.
여러 종목에 같은 식을 돌릴 때
한 종목 차트에서는 위의 다섯 자리만 맞추면 됩니다. 종목이 많아지면 문제가 하나 더 붙습니다. 같은 %K 80이라도 늘 좁은 폭에서 움직이는 종목과 하루에도 크게 흔들리는 종목에서 무게가 다릅니다. 분모가 종목마다 다르기 때문입니다.
SignalLab은 지난 90일 동안 394종목을 1시간봉과 4시간봉으로 같은 방식으로 셈해 왔고, 그 기간 공개 신호는 1시간봉 29,522건, 4시간봉 6,800건이었습니다. 이 규모에서는 고정 임계값보다 종목별 백분위로 바꿔 비교하는 편이 덜 흔들리고, 모든 판정은 마감된 봉에서만 합니다. 실제로 신호가 어느 종목에 몰리는지는 5이평 다이버전스 신호 목록에서 볼 수 있습니다.
정리하면 스토캐스틱 계산식은 세 단계입니다. 고가·저가로 창을 잡아 패스트 %K를 구하고, 평균을 한 번 씌워 슬로우 %K, 한 번 더 씌워 슬로우 %D를 만듭니다. 교차를 미리 보고 싶으면 이번 슬로우 %K가 직전 두 값의 평균을 넘는지만 보면 되고, 그 선을 넘을 패스트 %K가 100을 넘어간다면 그 봉에서는 교차가 산수로 불가능합니다. 차트와 값이 어긋날 때는 창의 재료, 슬로잉 방식, 0 나눗셈, 일봉 경계, 평활 종류 순으로 의심해 보세요.
처음 보는 말이 있으면 용어 사전에 다이버전스·펀딩비·미결제약정 등을 풀어 두었습니다.