[Python] 단순이동평균 (Simple Moving Average)

24331·2021년 4월 18일
0

Python

목록 보기
2/5

Outline

애플의 주가데이터를 가져와서 SMA(Simple Moving Average)를 계산하고 보여줍니다.

단순이동평균(SMA)

이동평균은 대중적인 투자지표로써, 주식 가격의 추세를 파악하는 데 사용되며 산출방법에 따라 단순이동평균, 지수이동평균, 가중이동평균 등이 있습니다.

Code

필요한 것들을 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')

profile
Today I Failed.

0개의 댓글