Stock Market Prediction Using ML With deployment In Streamlit

#note:- check indentation properly

import streamlit as st

import pandas as pd
import streamlit as st
from datetime import date
import yfinance as yf
#import pystan
from fbprophet import Prophet
from fbprophet.plot import plot_plotly
import plotly.figure_factory as ff
from plotly import graph_objs as go


                START = "2015-01-01"
                TODAY = date.today().strftime("%Y-%m-%d")
                st.title('Stock Forecast App')
                stocks = ('GOOG', 'AAPL','MSFT', 'GME','RELIANCE.NS','IRFC.NS','BHEL.NS','NATIONALUM.NS','SPICEJET.NS',"YESBANK.NS",'TSLA')
                selected_stock = st.text_input('Select dataset for prediction','TSLA')
                st.write("Example")
                st.write(stocks)
                st.write(selected_stock)
                n_years = st.slider('Years of prediction:', 1, 4)
                period = n_years * 365


                @st.cache
                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_stock)
                data_load_state.text('Loading data... done!')
                
                st.subheader('Raw data')
                st.write(data.tail())
                
                # Plot raw data
                def plot_raw_data():
                    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=' Data visulization', xaxis_rangeslider_visible=True)
                    st.plotly_chart(fig)

                plot_raw_data()

                # Predict forecast with Prophet.
                df_train = data[['Date','Close']]
                df_train = df_train.rename(columns={"Date": "ds", "Close": "y"})

                m = Prophet()
                m.fit(df_train)
                future = m.make_future_dataframe(periods=period)
                forecast = m.predict(future)

                # Show and plot forecast
                st.subheader('Forecast data')
                st.write(forecast.tail())
                
                st.write("forecasting open price")
                def plot_trend_data():
                    fig = go.Figure()
                    fig.add_trace(go.Scatter(x=forecast['ds'], y=forecast['yhat'], name="stock_open"))
                    #fig.add_trace(go.Scatter(x=forecast['ds'], y=forecast['trend_upper'], name="stock_close"))
                    fig.layout.update(title_text='', xaxis_rangeslider_visible=True)
                    st.plotly_chart(fig)

                plot_trend_dat  

                st.write("Forecast components")
                fig2 = m.plot_components(forecast)
                st.write(fig2)
                
         


  

 

 

 

 

Comments

Post a Comment