본문 바로가기

Little Investment/Study investing

주식 스토캐스틱에 대해 알아보기

반응형

주식 스토캐스틱에 대해 알아보기

이번 포스트에서는 주식 차트 보조지표 중 하나인 스토캐스틱에 대해서 알아보고자 한다.
스토캐스틱은 주식 시장에서 널리 사용되는 보조 지표 중 하나이다.
스토캐스틱이 무엇인지, 계산 공식, 적용 방법 등에 대해 알아보고 Python으로 계산 및 차트를 하는 방법도 함께 알아보자.

목차

스토캐스틱(Stochastic)이란?

✔ 스토캐스틱

스토캐스틱은 주가의 상대적 위치를 기반으로 과매수 또는 과매도 상태를 판단하는 데 사용된다.
스토캐스틱 지표는 주로 단기적인 가격 움직임을 예측하는 데 사용되며, 주가의 모멘텀을 추적하는 데 특히 유용하다.
일정 기간 동안 최고가와 최저가 사이에서 현재의 주가 위치를 백분율로 표시해주며, 최고가에 주가가 가까워지면 지표 값은 100에 가까워지고 최저가에 가까워지면 지표 값은 0에 가까워진다.
MACD는 이평선 기준으로 판단을 한다면, 스톡캐스틱은 현 주가가 기준(주가의 평균)으로 판단을 한다.


스토캐스틱


위 사진을 예시로, 최저가가 1,000원이고 최고가가 2,000원일 때 주가는 중간값인 1,500원으로 수렴할 것으로 예측하는 것이다.
(가운데로 수렴하고 싶어한다는 것)


✔ 스토캐스틱의 구성

스토캐스틱은 %K, %D로 구성된다.

  • %K
    %K는 스토캐스틱의 기본 선으로, 주가의 현재 위치를 최근 n일 동안의 가격 범위와 비교하여 표현한다.
    이는 주가가 지정된 기간 동안 어디에 위치하는지를 나타내는 지표이다.

    %K = [(현재가격 - n일 동안의 최저가) / (n일 동안의 최고가 - n일 동안의 최저가)] x 100

  • %D
    %D는 %K의 이동평균이다. %D는 주로 신호선으로 사용되며, %K와 %D의 교차점을 통해 매수 또는 매도 신호를 파악하는 데 사용된다.

    %D = %K의 m일 이동평균

일반적으로 n은 14일로 설정되며, m은 3일로 설정되는 경우가 많다.

스토캐스틱 Fast, Slow

스토캐스틱 오실레이터에는 주로 두 가지 버전이 있다.
스토캐스틱 Fast과 스토캐스틱 Slow 이다.
이 두 버전은 계산 방식과 사용 방법에 약간의 차이가 있다.


✔ 스토캐스틱 Fast

스토캐스틱 Fast는 원래의 스토캐스틱 형태로, 직접적인 가격 움직임에 민감하게 반응한다.
%K와 %D의 계산 공식은 위에 작성된 기본 형태를 따른다.
스토캐스틱 Fast는 가격 변동에 매우 민감하기 때문에, 자주 매수/매도 신호를 생성할 수 있다.
이로 인해 잘못된 신호가 발생할 가능성이 높아질 수 있다.


✔ 스토캐스틱 Slow

스토캐스틱 Slow는 스토캐스틱 Fast의 평활화된 버전으로, 더 안정적인 신호를 제공하기 위해 개발되었다.
%K와 %D의 계산이 Fast와 살짝 다르다.

  • Slow %K
    스토캐스틱 Slow의 %K는 Fast %D이다.
    즉, 스토캐스틱 Fast의 %D 값이 스토캐스틱 Slow의 %K 값이 된다.

    Slow %K = Fast %D

  • Slow %D
    Slow %D는 Slow %K의 m일 이동평균이다.

    Slow %D = Slow %K의 m일 이동평균 (일반적으로 3일)

스토캐스틱 Slow은 스토캐스틱 Fast보다 덜 민감하며, 더욱 명확하고 안정적인 신호를 제공할 수 있다.
이로 인해 많은 트레이더들이 스토캐스틱 Slow을 선호한다.


✔ 스토캐스틱 Fast/Slow 요약

  • 스토캐스틱 Fast : 가격 움직임에 매우 민감하며, 자주 매수/매도 신호를 생성할 수 있다.
  • 스토캐스틱 Slow : Fast 스토캐스틱의 평활화된 버전으로, 더 안정적인 신호를 제공한다.
스토캐스틱 적용

스토캐스틱을 HTS/MTS에서 적용하는 방법을 알아보자.
여기서는 키움증권의 영웅문 HTS/MTS에 대해서만 알아 보겠다.

✔ 영웅문 HTS 스토캐스틱 적용

영웅문 HTS 스토캐스틱 적용


  1. 영웅문 HTS에서 종합 차트 창을 실행하고 좌측에 '메뉴항목검색'을 찾는다.
  2. '메뉴항목검색'에 Stochastic을 검색한다.
  3. 검색된 항목 중에 [기] Stochastics Slow, [기] Stochastics Fast 중에 하나를 선택한다.
  4. 종합차트 하단에 스토캐스틱 차트가 추가된다.

메뉴항목검색에서 Stochastics로 검색했을 때 나오는 것들 중에 [신]으로 되어 있는 신호 지표의 경우 매도/매수 신호를 차트에 적용해주는 것도 있으니 함께 사용하면 좋을 것 같다.


✔ 영웅문 HTS 스토캐스틱 설정

영웅문 HTS 스토캐스틱 차트를 더블 클릭하면 스토캐스틱의 지표 및 라인 설정을 할 수 있다.

영웅문 HTS 스토캐스틱 설정



✔ 영웅문 MTS 스토캐스틱 적용

영웅문 MTS 스토캐스틱 적용

  1. 차트 메뉴에서 설정 버튼(톱니바퀴)을 클릭한다.
  2. 지표명 입력 칸이 나온다.
  3. 지표명 입력 칸에 Stochastic을 검색한다.
  4. 검색 결과에 (보조) Stochastics Fast, Slow가 나오는데, 원하는 것을 클릭한다.
  5. 보조지표로 나오는 Stochastics의 좌측에 체크 표시를 클릭하면 스토캐스틱이 적용된다.

영웅문 MTS 스토캐스틱 적용된 모습


✔ 영웅문 MTS 스토캐스틱 설정

지표 설정에서 스토캐스틱을 검색했을 때 나온 화면에서, 우측에 설정 버튼(톱니바퀴)를 클릭하면 스토캐스틱의 지표 조건 및 라인을 설정할 수 있다.

영웅문 MTS 스토캐스틱 설정 화면

스토캐스틱 매매 방법

✔ 스토캐스틱 과매수 및 과매도 영역

  • 과매수 (Overbought) : 스토캐스틱 값이 80 이상일 때, 주식이 과도하게 매수되었다고 판단한다.
    이는 잠재적인 매도 기회를 의미할 수 있다.

  • 과매도 (Oversold) : 스토캐스틱 값이 20 이하일 때, 주식이 과도하게 매도되었다고 판단한다.
    이는 잠재적인 매수 기회를 의미할 수 있다.

스토캐스틱 과매수 및 과매도 매매


✔ 스토캐스틱 골든/데드크로스

  • %K/%D 골든 크로스 (매수) : %K 선이 %D 선을 아래에서 위로 교차할 때 발생한다.
    특히 이 교차점이 과매도 영역에서 발생하면 매수 신호가 강화될 수 있다.

  • %K/%D 데드 크로스 (매도) : %K 선이 %D 선을 위에서 아래로 교차할 때 발생한다.
    특히 이 교차점이 과매수 영역에서 발생하면 매도 신호가 강화될 수 있다.

스토캐스틱 골든/데드 크로스 매매

스토캐스틱의 한계

스토캐스틱는 많은 트레이더들에게 인기 있는 기술 지표 중 하나이지만, 그것만으로 투자 결정을 내리는 것은 위험할 수 있다.

✔ 스토캐스틱 주의할 점

  • 과도한 신호 생성 : 스토캐스틱은 가격의 단기 변동에 매우 민감하기 때문에, 자주 매수 또는 매도 신호를 생성할 수 있다.
    이로 인해 잘못된 신호가 발생할 가능성이 높아질 수 있다.

  • 지속적인 과매수 또는 과매도 상태 : 스토캐스틱이 과매수 또는 과매도 영역에 들어가면, 그 상태가 상당한 시간 동안 지속될 수 있다.
    이는 실제로 가격이 반전될 것이라는 확신을 주지 않는다.

  • 평평한 시장에서의 제한성 : 스토캐스틱은 트렌드가 없는, 즉 평평한 시장에서는 잘 작동하지 않을 수 있다.
    이러한 시장 조건에서는 많은 잘못된 신호가 발생할 수 있다.

  • 일반화된 임계값 : 많은 트레이더들이 80과 20의 임계값을 사용하지만, 이러한 값은 모든 주식이나 시장에 적합하지 않을 수 있다.
    따라서 각 트레이더는 자신의 전략과 시장 조건에 맞게 임계값을 조정해야 할 수도 있다.

  • 지연된 신호 : 지연된 신호를 생성할 수 있다.
    이는 실제 가격 움직임이 발생한 후에 신호가 발생할 수 있다는 것을 의미한다.

이러한 한계점들 때문에, 스토캐스틱을 사용할 때는 다른 기술적 지표나 패턴, 그리고 기본적인 분석과 함께 사용하는 것이 좋다.

Python으로 스토캐스틱 구현

Python을 사용해서 스토캐스틱을 계산하고 차트를 생성해보겠다.
여기서는 스토캐스틱 Slow 까지 모두 계산하겠다.
계산을 위해 pandas 라이브러리를 사용했으며, 차트는 matplotlib를 사용했다.
샘플 데이터는 아래와 같으며, 각 코드에 대한 자세한 설명은 아래 포스트를 참고 부탁드린다.


샘플 데이터



✔ Python으로 스토캐스틱 계산/차트 전체 코드

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.dates import DateFormatter
import matplotlib.patches as patches

df = pd.read_csv('../TEST.csv')
df['date'] = pd.to_datetime(df['date'])

# 14일 기준의 스토캐스틱 Fast %K 계산
df['Lowest_N_Days'] = df['low'].rolling(window=14).min()
df['Highest_N_Days'] = df['high'].rolling(window=14).max()
df['%K'] = (df['close'] - df['Lowest_N_Days']) / (df['Highest_N_Days'] - df['Lowest_N_Days']) * 100

# 스토캐스틱 Fast %K를 3일 이동평균하여 %D를 생성
df['%D'] = df['%K'].rolling(window=3).mean()

# 스토캐스틱 Slow %K는 스토캐스틱 Fast %D 와 동일
df['Slow_%K'] = df['%D']

# 스토캐스틱 Slow %D는 스토캐스틱 Slow %K의 3일 이동평균
df['Slow_%D'] = df['Slow_%K'].rolling(window=3).mean()

# date 컬럼을 date 포맷으로 변경
df['date'] = pd.to_datetime(df['date'])

# figure 생성
fig, ax = plt.subplots(figsize=(14, 7))

# %K 와 %D plot 생성
ax.plot(df['date'], df['Slow_%K'], color='darkorange', label='Slow %K')
ax.plot(df['date'], df['Slow_%D'], color='purple', label='Slow %D')

# 20 과 80의 수평선 생성
ax.axhline(20, color='grey', linestyle='--')
ax.axhline(80, color='grey', linestyle='--')

# %K의 값이 20 이하일 때와 80 이상일 때의 배경색 설정
ax.fill_between(df['date'], df['Slow_%K'], 20, where=(df['Slow_%K'] <= 20), facecolor='lightblue', interpolate=True)
ax.fill_between(df['date'], df['Slow_%K'], 80, where=(df['Slow_%K'] >= 80), facecolor='peachpuff', interpolate=True)

# title과 labels 설정
ax.set_title("Slow Stochastic Oscillator")
ax.set_xlabel("Date")
ax.set_ylabel("Value")
ax.legend(loc='upper left')

# x-axis를 월단위로 변경
ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.xticks(rotation=45)
plt.tight_layout()

plt.show()

해당 코드를 실행하면 아래와 같은 차트를 생성한다.


Python으로 스토캐스틱 구현

이번 포스트에서는 주식 보조 지표 중 스토캐스틱에 대해서 알아 보았다.
필자의 경우 요즘은 자주 사용하지는 않지만 주식을 시작한지 얼마 되지 않을 때 많이 사용했던 기억이 있다.
스토캐스틱 주식 시장의 효과적인 도구 중 하나이다.
그러나 단독으로 사용하기보다 다른 지표와 결합하여 활용하는 것이 중요하다.
투자 결정 시 항상 다양한 정보와 분석을 종합적으로 고려하는 습관을 들이는 것이 좋을 것 같다.

커피 한 잔으로
저를 응원해주세요!
반응형

loading