import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
from fbprophet import Prophet
from datetime import datetime,timedelta
from sklearn.metrics import mean_squared_error, mean_absolute_percentage_error
#오늘 날짜 -200일 부터 데이터 가져오기
starttime = datetime.now() - timedelta(days=365)
endtime =datetime.now()
#주식 코드 input문 이용 하기
stockcode = input('한국주식 코드를 입력해주세요')
stockinfo = yf.download(stockcode+'.KS',start = starttime, end=endtime)
print(stockinfo)
#현재 가격 불러오기
stock_now_price = stockinfo['Close'][-1]
stockinfo['y'] = stockinfo['Close']
stockinfo['ds'] = stockinfo.index
#x,y 설정
stockinfo = stockinfo[['ds','y']]
# PROPHET
df_pb = Prophet(
seasonality_mode='multiplicative',
daily_seasonality=True,
changepoint_prior_scale=0.5,
changepoint_range=0.8,
)
df_pb.fit(stockinfo)
#20일 미래 예측
periodsdate= 20
df_future = df_pb.make_future_dataframe(periods=periodsdate, freq='D',include_history = True)
# ##모델 확인
print(df_future.tail(10))
data_forecast = df_pb.predict(df_future)
# # #예측 결과 확인
print(data_forecast[['ds','yhat','yhat_lower','yhat_upper']].tail(20))
# Plot the forecast with the actuals
#'yhat' 예측 가격 데이터 변수저장
closeDf_ = data_forecast[data_forecast['ds'] == data_forecast.iloc[-1]['ds']]
predictprice = closeDf_['yhat'].values[0]
f, ax = plt.subplots(1)
f.set_figheight(5)
f.set_figwidth(15)
ax.scatter(stockinfo.ds, stockinfo['y'], color='r')
fig = df_pb.plot(data_forecast, ax=ax)
plt.title('Forecast AND Actuals')
#소수점 없애기
int_nowprice = int(stock_now_price)
int_price = int(predictprice)
print("현재 가격 :" ,str(int_nowprice) + '원 입니다')
print('20일 뒤 주가 예측: '+str(int_price) + '원 입니다')
plt.show()
실제값 : 빨간 점 표시
'프로젝트' 카테고리의 다른 글
Prophet 주식 예측-4 - 텔레그램 봇 (0) | 2022.10.23 |
---|---|
Python - Prophet 주식 예측- 3 하이퍼 파라미터 튜닝 (0) | 2022.10.22 |
Python - fbprophet을 이용한 한국주식 예측 하기 (0) | 2022.10.04 |