ThomasDo commited on
Commit
c152034
1 Parent(s): 0733e8d

fix the code

Browse files
Files changed (2) hide show
  1. app.py +3 -4
  2. app.py.bak +102 -0
app.py CHANGED
@@ -1,17 +1,16 @@
1
  # pip install streamlit fbprophet yfinance plotly
2
 
3
- !pip install yfinance
4
- !pip install prophet
5
 
6
  import streamlit as st
7
  from datetime import date, datetime, timedelta
8
 
 
9
  import yfinance as yf
10
  from prophet import Prophet
11
  from prophet.plot import plot_plotly
12
  from plotly import graph_objs as go
13
- import pandas as pd
14
-
15
 
16
  # TODAY = date.today().strftime("%Y-%m-%d")
17
  TODAY = datetime.today()
 
1
  # pip install streamlit fbprophet yfinance plotly
2
 
3
+ # !pip install yfinance
4
+ # !pip install prophet
5
 
6
  import streamlit as st
7
  from datetime import date, datetime, timedelta
8
 
9
+ import pandas as pd
10
  import yfinance as yf
11
  from prophet import Prophet
12
  from prophet.plot import plot_plotly
13
  from plotly import graph_objs as go
 
 
14
 
15
  # TODAY = date.today().strftime("%Y-%m-%d")
16
  TODAY = datetime.today()
app.py.bak ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # pip install streamlit fbprophet yfinance plotly
2
+
3
+ # !pip install yfinance
4
+ # !pip install prophet
5
+
6
+ import streamlit as st
7
+ from datetime import date, datetime, timedelta
8
+
9
+ import yfinance as yf
10
+ from prophet import Prophet
11
+ from prophet.plot import plot_plotly
12
+ from plotly import graph_objs as go
13
+ import pandas as pd
14
+
15
+
16
+ # TODAY = date.today().strftime("%Y-%m-%d")
17
+ TODAY = datetime.today()
18
+
19
+ st.title('Stock Forecast')
20
+
21
+ st.markdown('This app is built to predict the stock market performance')
22
+
23
+ stocks = ('TSLA', 'FB', 'NVDA', 'BABA', 'GOOG', 'AAPL', 'MSFT', 'GME', 'AMZN', 'XIACF')
24
+ selected_stock = st.selectbox('Select dataset for prediction', stocks)
25
+
26
+ n_years = st.slider('Years of prediction:', 1, 4)
27
+ period = n_years * 365
28
+
29
+ new_resolution = st.radio(
30
+ "Do you want to get the higher resolution or short time interval, please choose one:",
31
+ ('In 1 day', 'In 1 hour', 'In 5 minutes'))
32
+
33
+ if new_resolution == 'In 5 minutes':
34
+ new_interval = "5m"
35
+ START = TODAY - timedelta(days=30)
36
+ elif new_resolution == 'In 1 hour':
37
+ new_interval = "1h"
38
+ START = TODAY - timedelta(days=365)
39
+ else:
40
+ new_interval = "1d"
41
+ START = "2018-01-01"
42
+
43
+ @st.cache
44
+ def load_data(ticker):
45
+ data = yf.download(ticker, START, TODAY, interval = new_interval)
46
+ data.reset_index(inplace=True)
47
+ return data
48
+
49
+
50
+ data_load_state = st.text('Loading data...')
51
+ data = load_data(selected_stock)
52
+ data_load_state.text('... Data loaded, well done!')
53
+
54
+ @st.cache
55
+ def convert_df(df):
56
+ # IMPORTANT: Cache the conversion to prevent computation on every rerun
57
+ return df.to_csv().encode('utf-8')
58
+
59
+ csv = convert_df(data)
60
+
61
+ st.download_button(
62
+ label="Download data as CSV",
63
+ data=csv,
64
+ file_name='stock_data.csv',
65
+ mime='text/csv',
66
+ )
67
+
68
+
69
+ st.subheader('Raw data')
70
+ st.write(data.tail())
71
+
72
+ # Plot raw data
73
+ def plot_raw_data():
74
+ fig = go.Figure()
75
+ fig.add_trace(go.Scatter(x=data['Date'], y=data['Open'], name="stock_open"))
76
+ fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="stock_close"))
77
+ fig.layout.update(title_text='Time Series data with Rangeslider', xaxis_rangeslider_visible=True)
78
+ st.plotly_chart(fig)
79
+
80
+ plot_raw_data()
81
+
82
+ # Predict forecast with Prophet.
83
+ df_train = data[['Date','Close']]
84
+ df_train = df_train.rename(columns={"Date": "ds", "Close": "y"})
85
+
86
+ m = Prophet()
87
+ m.fit(df_train)
88
+ future = m.make_future_dataframe(periods=period)
89
+ forecast = m.predict(future)
90
+
91
+ # Show and plot forecast
92
+ st.subheader('Forecast data')
93
+ st.write(forecast.tail())
94
+
95
+ st.write(f'Forecast plot for {n_years} years')
96
+ fig1 = plot_plotly(m, forecast)
97
+ st.plotly_chart(fig1)
98
+
99
+ st.write("Forecast components")
100
+ fig2 = m.plot_components(forecast)
101
+ st.write(fig2)
102
+