Spaces:
Sleeping
Sleeping
| #importing libraries | |
| import streamlit as st | |
| import yfinance as yf | |
| from datetime import date | |
| from prophet import Prophet | |
| from prophet.plot import plot_plotly | |
| from plotly import graph_objs as go | |
| #main function | |
| def main(): | |
| START="2017-01-01" | |
| TODAY=date.today().strftime("%Y-%m-%d") | |
| st.title("Stock Forecast App") | |
| st.write("**Disclaimer:** The stock price predictions generated by this app should not be considered financial advice. Always consult with a qualified financial advisor before making investment decisions.") | |
| stocks= ("MSFT","AAPL","GOOG") | |
| st.write(""" | |
| ***Stock Tickers:*** | |
| - AAPL : Apple Inc. | |
| - MSFT : Microsoft Corporation. | |
| - GOOG : Alphabet Inc.(Google) | |
| """) | |
| selected_stocks=st.selectbox('select dataset for prediction',stocks) | |
| n_year=st.slider("**Select Year of prediction**",1,4) | |
| period=n_year * 365 | |
| #download Dataset | |
| def load_data(ticker): | |
| data=yf.download(ticker,START,TODAY) | |
| data.reset_index(inplace=True) | |
| return data | |
| data_load_state=st.text('Loading data..') | |
| data=load_data(selected_stocks) | |
| data_load_state.text("Done!!") | |
| st.subheader("Raw data") | |
| st.write(data.tail()) | |
| #plot the Raw Data | |
| def plot_rawdata(): | |
| fig=go.Figure() | |
| fig.add_trace(go.Scatter(x=data['Date'], y=data['Open'],name="stock_open")) | |
| fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'],name="stock_close")) | |
| fig.layout.update(title_text="Forecast Data") | |
| fig.update_xaxes(rangeslider_visible=True) | |
| st.plotly_chart(fig) | |
| plot_rawdata() | |
| #Forecasting | |
| df_train=data[["Date",'Close']] | |
| df_train=df_train.rename(columns={'Date':'ds','Close':'y'}) | |
| model=Prophet() | |
| model.fit(df_train) | |
| future=model.make_future_dataframe(periods=period) | |
| forecast=model.predict(future) | |
| #show and plot the feature | |
| st.subheader("Forecasted dataset") | |
| st.write(forecast.tail(5)) | |
| st.write("Forecast plot") | |
| fig1=plot_plotly(model,forecast) | |
| st.plotly_chart(fig1) | |
| st.write("Forecast components") | |
| fig2=model.plot_components(forecast) | |
| st.write(fig2) | |
| if __name__=="__main__": | |
| main() |