import numpy as np import pandas as pd import matplotlib.pyplot as plt import yfinance as yf yf.pdr_override() from pandas_datareader import data as pdr import tensorflow as tf from keras.models import load_model import streamlit as st # Start and the End dates and the stock ticker start = '2005-01-01' end = '2022-12-31' stock_ticker = 'TATAPOWER.NS' st.title("Stock Market Trend Predictor") use_input = st.text_input('Enter stock Ticker', stock_ticker) if st.button('Analyze'): df = pdr.get_data_yahoo(use_input, start) #describing data st.subheader('Data From 2010-2023') st.write(df.describe()) #maps st.subheader('closing Price VS Time Chart ') fig = plt.figure(figsize=(10,5)) plt.plot(df.Close , color = 'yellow') plt.legend() st.pyplot(fig) st.subheader('closing Price VS Time Chart with 100 moving Average ') ma100= df.Close.rolling(100).mean() fig = plt.figure(figsize=(10,5)) plt.plot(ma100, color = 'red') plt.plot(df.Close , color = 'yellow') plt.legend() st.pyplot(fig) st.subheader('closing Price VS Time Chart with 100 & 200 moving Average ') ma100= df.Close.rolling(100).mean() ma200= df.Close.rolling(200).mean() fig = plt.figure(figsize=(10,5)) plt.plot(ma100 , color = 'red') plt.plot(ma200, color = 'green') plt.plot(df.Close , color = 'yellow') plt.legend() st.pyplot(fig) #spltting data into train test data_training = pd.DataFrame(df['Close'][0:int(len(df)*0.70)]) data_testing = pd.DataFrame(df['Close'][int(len(df)*0.70):int(len(df))]) print(' taining ', data_training.shape) print(' testing ', data_testing.shape) from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler(feature_range = (0,1)) data_training_array = scaler.fit_transform(data_training) #load Model model = load_model('keras_model.h5') #testing past pass_100_days = data_training.tail(100) final_df = pd.concat([pass_100_days, data_testing], ignore_index=True) input_data = scaler.fit_transform(final_df) x_test = [] y_test = [] for i in range(100 , input_data.shape[0]): x_test.append(input_data[i-100:i]) y_test.append(input_data[i,0]) x_test, y_test = np.array(x_test), np.array(y_test) y_predicted = model.predict(x_test) scaler = scaler.scale_ scale_factor = 1/scaler[0] y_predicted = y_predicted*scale_factor y_test = y_test*scale_factor #final graph def plot_transparent_graph(): st.subheader('prediction vs Original') fig2 = plt.figure(figsize= (12,6)) plt.plot(y_test , 'b', label = 'Original Price') plt.plot(y_predicted , 'r', label = 'prdicted Price') plt.style.use('dark_background') plt.xlabel('time') plt.ylabel('price') plt.legend() st.pyplot(fig2) def main(): st.title('Stock Price Predicted Analysis') # Call the function to plot the transparent graph plot_transparent_graph() # Other interactive elements and text can be added here as needed # ... if __name__ == "__main__": main()