import yfinance as yf
from pandas_datareader import data
yf.pdr_override()
start_date = "2020-01-01"
end_date = "2023-07-31"
SAM = data.get_data_yahoo("005930.KS", start_date, end_date)
SAM.head()

SAM["Close"].plot(figsize=(12, 8), grid=True);

# accuracy 확인을 위한 데이터
SAM_trunc = SAM[:"2023-07-31"]
SAM_trunc.head()

# forecast를 위한 준비
df = pd.DataFrame({"ds": SAM_trunc.index, "y":SAM_trunc["Close"]})
df.reset_index(inplace=True)
del df["Date"]
df.head()

m = prophet.Prophet(yearly_seasonality=True, daily_seasonality=True)
m.fit(df);

future = m.make_future_dataframe(periods=90)
forecast = m.predict(future)
forecast[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail()

m.plot(forecast);

주가는 크게 상승하거나 하락하지 않고 기존의 추세를 유지할 것으로 예상된다.
m.plot_components(forecast);

- 앞으로 상승세를 보일 전망
- 화요일에 가장 상한가를 치며 목요일에 상대적으로 하한가이다. (주말은 제외)
- 1-2월에 가장 높은 주가를 보이며 이후 잠시 하락했다가 6-8월은 약간 회복하는 경향이 있다.
하지만 이후 10월달에는 크게 주가가 떨어진다.
(참고로 2020년 1월 1일부터 2023년 7월 31일까지의 데이터를 토대로 10월달까지의 데이터를 예측하였다.)
SAM["Close"]

plt.figure(figsize=(12, 6))
plt.plot(SAM.index, SAM["Close"], label="real")
plt.plot(forecast["ds"], forecast["yhat"], label="forecast")
plt.grid(True)
plt.legend()
plt.show()

실제 데이터는 예측보다 좀 더 높은 수치를 기록함