Jonghyun Ho

코스피 지수 이동평균선

코로나 바이러스의 유행이 지속됨에 따라 경기 지표가 하락하고, 더불어 주가 또한 하락했다.

개인들은 하락한 주식의 가격이 메리트가 있다고 판단하여 주식 시장에 많이 뛰어들고 있는 상황인데,

한국 시장 상황을 대표하는 코스피 지수의 흐름을 이동평균선을 활용하여 파악해보려고 한다.

이동평균선이란?

이동평균선은 일정기간 동안의 주가를 산술 평균한 값인 주가 이동평균을 차례로 연결해 만든 선으로,

주식시장에서 주가와 거래량 및 거래대금은 매일 매일 변하지만 특정기간을 놓고 보면 일정한 방향성을 지닌다.

이를 수치화한 것이 이동평균선으로 장기(120일), 중기(60일), 단기(5, 20일) 이동평균선이 있다.

단기 이동평균선이 장기 이동평균선을 뚫고 상승하는 경우는 골든크로스,

단기 이동평균선이 장기 이동평균선을 뚫고 하락하는 경우는 데드크로스라고 하는데

골든크로스데드크로스를 파악하면 대세 상승하는 구간인지, 하락하는 구간인지 파악할 수 있다.

골든크로스에 사고 데드크로스에 팔아라라는 이야기도 있지만, 항상 맞는 이야기는 아니고 참고용으로 활용하는 것이 좋겠다.

참고 : 이동평균선

Python 을 이용하여 분석해보기

코스피 지수의 코드

How to get stock data using Yahoo Finance Python API 글을 참조하여 코스피 지수를 얻어올 수 있다.

코스피 지수의 코드는 Yahoo Finance 에서 검색해보면 ^KS11 이다.

KOSPI 지수 코드

yfinance 모듈 임포트하여 코스피 지수 읽기

최근 7년 동안의 코스피 지수를 구한다.

Close컬럼은 당일의 종가를 의미하는데, price라는 컬럼 이름으로 변경하였다.

>>> import yfinance as yf
>>> import pandas as pd
>>> import matplotlib.pyplot as plt

>>> code = '^KS11'  # KOSPI Composite Index
>>> kospi = yf.Ticker(code)
>>> kospi = kospi.history(period='7y')
>>> kospi = kospi[['Close']]
>>> kospi.rename(columns={'Close': 'price'}, inplace=True)

>>> print(kospi)
              price
Date               
2013-04-03  1983.22
2013-04-04  1959.45
2013-04-05  1927.23
2013-04-08  1918.69
2013-04-09  1920.74
...             ...
2020-03-27  1717.73
2020-03-30  1717.12
2020-03-31  1754.64
2020-04-01  1685.46
2020-04-03  1719.51

[1711 rows x 1 columns]

이동평균선 계산

단기(20일), 중기(60일), 장기(120일) 이동평균선을 계산한다.

>>> rolling_mean = pd.DataFrame()
>>> for w in [20, 60, 120]:
>>>     rolling_mean[w] = kospi.price.rolling(window=w).mean()

>>> print(rolling_mean)
                  20           60           120
Date                                           
2013-04-03        NaN          NaN          NaN
2013-04-04        NaN          NaN          NaN
2013-04-05        NaN          NaN          NaN
2013-04-08        NaN          NaN          NaN
2013-04-09        NaN          NaN          NaN
...               ...          ...          ...
2020-03-30  1777.5635  2046.498833  2081.226667
2020-03-31  1764.5880  2039.468500  2079.009583
2020-04-01  1745.8945  2031.641667  2076.207333
2020-04-02  1727.8745  2024.130333  2073.529083
2020-04-03  1712.6070  2017.189667  2071.085083

코스피 지수와 이동평균선을 그래프로 시각화

최근의 지수 하락으로 인해 단기 이동평균선장기 이동평균선을 뚫고 급격히 하락하는 모습을 볼 수 있다.

>>> plt.plot(kospi.price, label='KOSPI index')
>>> for w in [20, 60, 120]:
>>>     plt.plot(rolling_mean[w], label=str(w), linestyle='dashed')

>>> plt.legend()
>>> plt.grid()
>>> plt.show()

KOSPI 이동평균선

골든크로스와 데드크로스를 막대 그래프로 시각화

단기 이동평균선장기 이동평균선의 차이를 별도로 계산하여 막대 그래프로 표시하면

좀 더 차이를 분명하게 확인할 수 있다.

>>> rolling_mean['cross'] = rolling_mean[20] - rolling_mean[120]

>>> cross = rolling_mean['cross']
>>> plt.bar(cross.index, cross.values, label='golden/dead cross')
>>> plt.legend()
>>> plt.grid()
>>> plt.show()

KOSPI 지수의 골든크로스와 데드크로스

코스피 지수의 이동평균선, 골든크로스, 데드크로스를 함께 표시한 결과는 다음과 같다.

KOSPI 지수의 이동평균선, 골든크로스, 데드크로스

7년 단위인 위의 그래프를 최근 1년의 데이터로 축소한 그래프는 다음과 같다.

KOSPI 지수의 이동평균선, 골든크로스, 데드크로스

단기 이동평균선장기 이동평균선에 비해 크게 하락한 상태인데

이러한 흐름을 파악하고, 장기 침체로 이어질 것인지 다시 반등할 것인지

추후의 방향에 대해 예측해보는 것도 흥미로운 부분이 될 것 같다.

comments powered by Disqus
comments powered by Disqus