File size: 2,571 Bytes
546b08c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Import necessary libraries
from datetime import datetime
import streamlit as st
import yfinance as yf
from predictions import feature_engineering, load_custom_model, run_inference

# Main function to run the app
def main():
    st.title("Stock Prediction App")

    # Define the ticker symbols
    ticker_symbols = ['BCA', 'BRI', 'Mandiri', 'BNI', 'BSI']

    # Create a dropdown menu for selecting a ticker symbol
    selected_ticker = st.selectbox('Select a Ticker', ticker_symbols)
    
    # Button to trigger prediction
    if st.button("Predict the following bank company"):
        with st.spinner('Loading...'):
            # Fetch stock data for the selected ticker symbol
            stock_data = fetch_stock_data(selected_ticker)
            
            if stock_data is not None:
                # Perform model inference
                predicted_price = perform_inference(stock_data, selected_ticker)
                
                # Display the predicted price
                st.write(f"Predicted Close Price for {selected_ticker}: {predicted_price}")
            else:
                st.error("Failed to retrieve data for the selected ticker. Please try again.")

# Function to perform inference on the stock data
def perform_inference(stock_data, selected_ticker):
    # Perform feature engineering
    X_test = feature_engineering(stock_data)

    # Load the corresponding model
    model = load_custom_model(selected_ticker)

    if model is not None:
        # Run inference
        predicted_prices = run_inference(model, X_test)
        return predicted_prices[-1]  # Return the last predicted price
    else:
        return None

# Function to fetch stock data for the selected ticker symbol
def fetch_stock_data(selected_ticker):
    # Define the start date (1 year ago) and end date (today)
    start_date = datetime(2023, 1, 1)
    end_date = datetime.now()

    # Fetch stock data based on the selected ticker symbol
    if selected_ticker == 'BCA':
        return yf.download('BBCA.JK', start=start_date, end=end_date)
    elif selected_ticker == 'BRI':
        return yf.download('BBRI.JK', start=start_date, end=end_date)
    elif selected_ticker == 'Mandiri':
        return yf.download('BMRI.JK', start=start_date, end=end_date)
    elif selected_ticker == 'BNI':
        return yf.download('BBNI.JK', start=start_date, end=end_date)
    elif selected_ticker == 'BSI':
        return yf.download('BRIS.JK', start=start_date, end=end_date)
    else:
        return None

# Run the main function
if __name__ == "__main__":
    main()