애플의 주가데이터를 가져와서 SMA(Simple Moving Average)를 계산하고 보여줍니다.
이동평균은 대중적인 투자지표로써, 주식 가격의 추세를 파악하는 데 사용되며 산출방법에 따라 단순이동평균, 지수이동평균, 가중이동평균 등이 있습니다.
필요한 것들을 import 합니다.
import yfinance as yf
import pandas as pd
from pandas_datareader import data as pdr
import datetime as dt
import matplotlib.pyplot as plt
%matplotlib inline
기간은 2020년부터 현재까지로 합니다.
yf.pdr_override()
start_dt = dt.datetime(2020, 1, 1)
end_dt = dt.datetime.now()
데이터를 가져오고, 종가 대신에 수정종가를 사용합니다.
df = pdr.get_data_yahoo("AAPL", start_dt, end_dt)
df = df.loc[:, ["Open", "High", "Low", "Adj Close", "Volume"]]
df = df.rename(columns={"Adj Close": "Close"})
데이터를 확인합니다.
5, 20일 SMA를 구하고, 종가와 합친 테이블을 만듭니다.
# SMA 5days
# Series to DataFrame
sma5 = df['Close'].rolling(window=5).mean()
df_sma5 = sma5.to_frame(name='SMA5')
# SMA 20days
# Series to DataFrame
sma20 = df['Close'].rolling(window=20).mean()
df_sma20 = sma20.to_frame(name='SMA20')
# Concatenate SMA5 and SMA20
df_sma = pd.concat([df['Close'], df_sma5, df_sma20], axis=1)
# Remove NaN
df_sma = df_sma.dropna()
데이터를 확인합니다.
차트를 그립니다.
# Draw Chart for SMA
s_date = '2020-01-01'
e_date = '2021-03-31'
fig, ax = plt.subplots(figsize=(16,9))
ax.plot(df_sma.loc[s_date:e_date, :].index, df_sma.loc[s_date:e_date, 'Close'], label='Price')
ax.plot(df_sma.loc[s_date:e_date, :].index, df_sma.loc[s_date:e_date, 'SMA5'], label='5 SMA')
ax.plot(df_sma.loc[s_date:e_date, :].index, df_sma.loc[s_date:e_date, 'SMA20'], label='20 SMA')
ax.legend(loc='best')
ax.set_title('Price & SMA5 & SMA20')
ax.set_ylabel('Price')