CoolFace
Apppublic

Layel21/srape

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
yahoo.py61 linesDownload Raw Back to root
1import streamlit as st
2from datetime import date
3import yfinance as yf
4from prophet import Prophet
5from prophet.plot import plot_plotly
6from plotly import graph_objs as go
7
8START = "2015-01-01"
9TODAY = date.today().strftime("%Y-%m-%d")
10st.title("Stock Price Prediction App")
11
12stocks = ("AAPL", "GOOG", "MSFT", "AMZN")
13selected_stock = st.selectbox("Select stock for prediction", stocks)
14n_years = st.slider("Years of prediction", 1, 4)
15period = n_years * 365
16
17@st.cache_data
18def load_data(ticker):
19    data = yf.download(ticker, START, TODAY)
20    data.reset_index(inplace=True)
21    return data
22
23data_load_state = st.text("Loading data...")
24data = load_data(selected_stock)
25data_load_state.text("Loading data...done!")
26st.subheader("Raw data")
27data.columns = data.columns.droplevel(1)
28st.write(data.tail())
29
30#PLOT Raw Data
31def 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)
40plot_raw_data()
41
42#PREDICTION AVEC PROPHET
43df_train = data[["Date", "Close"]]
44df_train = df_train.rename(columns={"Date": "ds", "Close": "y"})
45m = Prophet()
46m.fit(df_train)
47future = m.make_future_dataframe(periods=period)
48forecast = m.predict(future)
49#Show and plot forecast
50st.subheader("Forecast data")
51st.write(forecast.tail())
52st.write(f"Forecast plot for {n_years} years")
53fig1 = plot_plotly(m, forecast)
54st.plotly_chart(fig1)
55
56st.write("Forecast components")
57fig2 = m.plot_components(forecast)
58st.write(fig2)
59
60
61