abdouramandalil commited on
Commit
da33f80
·
verified ·
1 Parent(s): 91a2566

Upload 2 files

Browse files
Files changed (2) hide show
  1. requirements.txt +4 -3
  2. yahoo.py +60 -0
requirements.txt CHANGED
@@ -1,3 +1,4 @@
1
- altair
2
- pandas
3
- streamlit
 
 
1
+ plotly==6.0.0
2
+ prophet==1.1.6
3
+ streamlit==1.42.0
4
+ yfinance==0.2.55
yahoo.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from datetime import date
3
+ import yfinance as yf
4
+ from prophet import Prophet
5
+ from prophet.plot import plot_plotly
6
+ from plotly import graph_objs as go
7
+
8
+ START = "2015-01-01"
9
+ TODAY = date.today().strftime("%Y-%m-%d")
10
+ st.title("Stock Price Prediction App")
11
+
12
+ stocks = ("AAPL", "GOOG", "MSFT", "AMZN")
13
+ selected_stock = st.selectbox("Select stock for prediction", stocks)
14
+ n_years = st.slider("Years of prediction", 1, 4)
15
+ period = n_years * 365
16
+
17
+ @st.cache_data
18
+ def load_data(ticker):
19
+ data = yf.download(ticker, START, TODAY)
20
+ data.reset_index(inplace=True)
21
+ return data
22
+
23
+ data_load_state = st.text("Loading data...")
24
+ data = load_data(selected_stock)
25
+ data_load_state.text("Loading data...done!")
26
+ st.subheader("Raw data")
27
+ data.columns = data.columns.droplevel(1)
28
+ st.write(data.tail())
29
+
30
+ #PLOT Raw Data
31
+ def plot_raw_data():
32
+ fig = go.Figure()
33
+ fig.add_trace(go.Scatter(x=data["Date"], y=data["Open"],
34
+ name="Stock Open"))
35
+ fig.add_trace(go.Scatter(x=data["Date"], y=data["Close"],
36
+ name="Stock Close"))
37
+ fig.layout.update(title_text="Time Series Data",
38
+ xaxis_rangeslider_visible=True)
39
+ st.plotly_chart(fig)
40
+ plot_raw_data()
41
+
42
+ #PREDICTION AVEC PROPHET
43
+ df_train = data[["Date", "Close"]]
44
+ df_train = df_train.rename(columns={"Date": "ds", "Close": "y"})
45
+ m = Prophet()
46
+ m.fit(df_train)
47
+ future = m.make_future_dataframe(periods=period)
48
+ forecast = m.predict(future)
49
+ #Show and plot forecast
50
+ st.subheader("Forecast data")
51
+ st.write(forecast.tail())
52
+ st.write(f"Forecast plot for {n_years} years")
53
+ fig1 = plot_plotly(m, forecast)
54
+ st.plotly_chart(fig1)
55
+
56
+ st.write("Forecast components")
57
+ fig2 = m.plot_components(forecast)
58
+ st.write(fig2)
59
+
60
+