danielle2003 commited on
Commit
33cd166
·
verified ·
1 Parent(s): 1b1d41a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -27
app.py CHANGED
@@ -1,51 +1,63 @@
1
- ## importing various libraries
2
- import streamlit as st
3
  import yfinance as yf
4
-
5
  from prophet import Prophet
6
  from prophet.plot import plot_plotly
7
- from datetime import date
8
  from plotly import graph_objs as go
 
9
 
10
  START = "2015-01-01"
11
  TODAY = date.today().strftime("%Y-%m-%d")
12
 
13
- st.title("Stock Prediction Algorithm")
 
 
 
 
14
 
15
- stocks = ("AAPL", "GOOG", "MSFT", "GME")
16
- selected_stocks = st.selectbox("Select dataset for prediction", stocks)
17
- slider_year = st.slider("Years of Prediction:", 1, 10)
18
- period = slider_year * 365
19
 
20
- @st.cache
21
  def load_data(ticker):
22
  data = yf.download(ticker, START, TODAY)
23
  data.reset_index(inplace=True)
24
  return data
25
 
26
- data_load_state = st.text("Loading Data")
27
- data = load_data(selected_stocks) ## call the function specified abpve
28
- data_load_state.text("Data has been loaded")
29
 
30
- st.subheader('Raw Data')
 
 
 
 
31
  st.write(data.tail())
32
 
33
- def raw_Plot():
 
 
34
  fig = go.Figure()
35
- fig.add_trace(go.Scatter(x=data["Date"], y=data["Open"], name = "Stock_Open"))
36
- fig.add_trace(go.Scatter(x=data["Date"], y=data["Close"], name = "Stock_Close"))
37
- fig.layout.update(title_text = "Time Series Data", xaxis_rangeslider_visible=True)
38
  st.plotly_chart(fig)
39
 
40
- raw_Plot()
41
 
42
- df_train = data[['Date','Close']]
43
- df_train = df_train.rename(columns = {"Date": "ds", "Close": "y"})
 
 
 
 
 
 
 
 
 
 
 
 
44
 
45
- model = Prophet()
46
- model.fit(df_train)
47
- futureModel = model.make_future_dataframe(periods=period)
48
- forecast = model.predict(futureModel)
49
 
50
- st.subheader("Forecasted Data")
51
- st.write(forecast.tail())
 
 
1
+ import streamlit as st
 
2
  import yfinance as yf
 
3
  from prophet import Prophet
4
  from prophet.plot import plot_plotly
 
5
  from plotly import graph_objs as go
6
+ from datetime import date
7
 
8
  START = "2015-01-01"
9
  TODAY = date.today().strftime("%Y-%m-%d")
10
 
11
+ st.title('Stock Forecast App')
12
+ stocks = ('GOOG', 'AAPL', 'MSFT', 'GME')
13
+ selected_stock = st.selectbox('Select a stock price for prediction', stocks)
14
+ n_years = st.slider('Years of prediction', 1, 4)
15
+ periods = n_years * 365
16
 
 
 
 
 
17
 
18
+ @st.cache_data # Use st.cache_data instead of st.cache
19
  def load_data(ticker):
20
  data = yf.download(ticker, START, TODAY)
21
  data.reset_index(inplace=True)
22
  return data
23
 
 
 
 
24
 
25
+ data_load_state = st.text('Loading data...')
26
+ data = load_data(selected_stock)
27
+ data_load_state.text('Loading data... done!')
28
+
29
+ st.subheader('Raw data')
30
  st.write(data.tail())
31
 
32
+
33
+ # Plot raw data
34
+ def plot_raw_data():
35
  fig = go.Figure()
36
+ fig.add_trace(go.Scatter(x=data['Date'], y=data['Open'], name="stock_open"))
37
+ fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="stock_close"))
38
+ fig.layout.update(title_text='Time Series data with Rangeslider', xaxis_rangeslider_visible=True)
39
  st.plotly_chart(fig)
40
 
 
41
 
42
+ plot_raw_data()
43
+
44
+ # Predict forecast with Prophet.
45
+ df_train = data[['Date', 'Close']]
46
+ df_train = df_train.rename(columns={"Date": "ds", "Close": "y"})
47
+
48
+ m = Prophet()
49
+ m.fit(df_train)
50
+ future = m.make_future_dataframe(periods=periods)
51
+ forecast = m.predict(future)
52
+
53
+ # Show and plot forecast
54
+ st.subheader('Forecast data')
55
+ st.write(forecast.tail())
56
 
57
+ st.subheader('Forecast plot for {} years'.format(n_years))
58
+ fig1 = plot_plotly(m, forecast)
59
+ st.plotly_chart(fig1)
 
60
 
61
+ st.write("Forecast components")
62
+ fig2 = m.plot_components(forecast)
63
+ st.write(fig2)