#주식/투자

기술적지표 파헤치기 #5: Stochastic

SUNGWOO BAE
PRO

2023-02-02 · 10 MIN READ

스토캐스틱의 수식, 엑셀과 트레이딩뷰로 구현해보기

*2021-10-18 글


Stochastic이란, 시세의 고가와 저가를 베이스로 시세를 백분율로 나타낸 지표입니다. 가격의 변동성에 매우 민감한 만큼 추세의 시작을 신속하게 알 수 있으나, 민감한 지표이기에 긴 보합국면에 취약한 모습을 보입니다. 지표로 확인을 하지 않았다면 일반적인 횡보로 보였겠지만, Stochastic에서는 추세의 전환을 알려주고 있는 모습 그러나 횡보국면에서는 지속적으로 방향성이 바뀌고있는 모습: 실제로 지표에 따라 거래를 하고있는 상황이었다면 복리에 의해 손실이 커졌을 것 Stochastic은 Stochastic Fast와 Stochastic Slow가 있으며, 각각 %K와 %D 두개의 선으로 구성되어있습니다.


먼저 Stochastic Fast%K = 100 * (종가 - N1일 간의 최저가) / (N1일 간의 최고가 - N1일 간의 최저가) %D = %K의 N2일 간 평균 다음으로 Stochastic Slow%K = Stochastic Fast의 %D %D = %K의 N2일 간 평균 간단하게 설명드리자면, Slow는 Fast를 평활화 한 지표이며, 이 때 지표 각각의 %D는 %K를 평활화 한 것입니다. 그렇다면 %K가 Stochastic의 핵심이라는 뜻인데, %K는 최근 고점이 현재가 대비 상대적으로 높을수록 수치가 낮게 나오고, 낮을수록 수치가 높게 나오게 만든 수식입니다.

최근 고가와 현재가를 비교하는 것인데 수식에 최저가가 존재하는 이유는?

최저가를 기준으로 잡아 변동폭을 가시화하기 위함입니다. 수식에 최저가가 빠지게 되면 %K는 항상 100에 가까운 수치를 보이며, 수식에서의 " 100 * "를 빼는 경우 항상 1에 가까운 수치를 보이게 됩니다.

Backtest

카카오를 대상으로, 2000년 3월부터 2021년 10월까지 Stochastic Slow를 사용한 "Long Only" 백테스팅 결과입니다. 모든 백테스트는 리스크 관리를 따로 하지 않았으며, 조건에 따라 자산의 100%를 전부 운용했을 때의 결과입니다. Stochastic 설정 값은 14(Fast %K 이동평균값), 3(%K Smooth), 5(%D Smooth)기준입니다.


1.

매수 조건: %K가 %D와 상향 교차되었을 때

매도 조건: %K가 %D와 하향 교차되었을 때




Sharpe Ratio = 0.067

Sortino Ratio = 0.116


스토캐스틱에 보이는 두가지 선으로만 판단하였을 때 사용될 수 있는 방법입니다.

민감한 지표인 만큼 불필요한 거래가 많으며, 딱히 오버퍼폼한 결과로 보이지는 않습니다.


2.

매수 조건: %K가 50 이상일 때

매도 조건: %K가 50 이하일 때



Sharpe Ratio = 0.086

Sortino Ratio = 0.18


최근 고점 대비 현재가의 위치가 동등한 위치라면 %K는 50일 것이라는 가정하에 다음과 같은 조건식으로 설정하였습니다. 불필요한 거래는 줄었으며, MDD또한 완화된 모습을 보입니다.


3.

매수 조건: %K가 %D와 상향 교차되었으며, 최근 35일 간의 %K최저점보다 최근 14일간의 %K 최저점이 높을 때

매도 조건: %K가 %D와 하향 교차되었으며, 최근 35일 간의 %K최고점보다 최근 14일간의 %K 최고점이 낮을 때


Sharpe Ratio = 0.094

Sortino Ratio = 0.204


기본적인 조건식은 1번 백테스팅과 동일합니다. 그러나 불필요한 거래를 줄이고자, 변동폭이 큰 %K의 값의 추이를 살펴보는 것으로 조건을 추가하였습니다. 전략다워진 모습을 보이는 누적 수익률 추이입니다. 성과지표 또한 양호한 모습을 보입니다.


Stochastic은 민감한 지표이기에, 보다 장기적인 추세와 함께 확인하는 것이 효율적임을 확인 할 수 있습니다.

Excel

Stochastic Slow를 만들 수 있다는 것은 Fast 또한 만들 수 있다는 것이기에, Slow기준으로 작성하였습니다.


1. %K


100 * (종가 - 최근 14일 최저가) / (최근 14일 최고가 - 최근 14일 최저가) 최저가와 최고가가 필요하기에 엑셀에서는 고가와 저가 데이터가 필요합니다. 최고가는 고가에 MAX함수를, 최저가는 저가에 MIN함수를 사용해주시면 됩니다.

"=100 * (D15-MIN(C2:C15)) / (MAX(B2:B15)-(MIN(C2:C15)))"


2. %D


%K의 3일 평균입니다.

"=AVERAGE(E15:E17)"


3. Stochastic Slow %D


Slow의 %K = Fast의 %D 그렇기에 %D의 5일 평균을 해주시면 됩니다.

"=AVERAGE(F17:F21)"


이후 %D (Slow의 %K)와 SLOW %D를 사용해 그래프를 만들어주시면 Stochastic Slow가 완성됩니다.


TradingView

TradingView에서는 stoch이라는 함수를 제공해줍니다.

stoch(close, high, low, 기간) 입력 시 스토캐스틱 %K의 수식을 계산해주는 함수입니다.


이에 따라 Stochastic Fast

//@version=4

study(title="Stochastic Fast")


periodK = input(14, title="%K Length", minval=1)

periodD = input(3, title="%D Length", minval=1)

k = stoch(close, high, low, periodK)

d = sma(k, periodD) plot(k, title="%K", color=#2962FF)

plot(d, title="%D", color=#FF6D00)

h0 = hline(80, "Upper Band", color=#787B86)

h1 = hline(20, "Lower Band", color=#787B86)

fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")


그리고 Stochastic Slow


//@version=4

study(title="Stochastic Slow")


periodK = input(14, title="%K Length", minval=1)

N = input(3, title="%K Smooth", minval=1)

periodD = input(5, title="%D Smooth", minval=1)

k = sma(stoch(close, high, low, periodK), N)

d = sma(k, periodD)

plot(k, title="%K", color=#2962FF)

plot(d, title="%D", color=#FF6D00)

h0 = hline(80, "Upper Band", color=#787B86)

h1 = hline(20, "Lower Band", color=#787B86)

fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")