File size: 2,899 Bytes
cfa93ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import datetime as dt
import yfinance as yf
from sklearn.preprocessing import MinMaxScaler
from keras.models import load_model
import streamlit as st
import plotly.graph_objects as go
import base64
import plotly.express as px
from datetime import datetime

st.set_page_config(page_title='Stock Comparison',  layout='wide', page_icon='πŸ“Š')

stock_tickers = {
    "MAPI":"MAPI.JK","MAP Aktif": "MAPA.JK","MAP Boga": "MAPB.JK",
    "Tesla": "TSLA", "Apple": "AAPL", "Microsoft": "MSFT", "Google": "GOOGL", 
    "Facebook": "FB", "Amazon": "AMZN", "Netflix": "NFLX", "Alphabet": "GOOG", 
    "Nvidia": "NVDA", "Paypal": "PYPL", "Adobe": "ADBE", "Intel": "INTC", 
    "Cisco": "CSCO", "Comcast": "CMCSA", "Pepsi": "PEP", "Costco": "COST", 
    "Starbucks": "SBUX", "Walmart": "WMT", "Disney": "DIS", "Visa": "V", 
    "Mastercard": "MA", "Boeing": "BA", "IBM": "IBM", "McDonalds": "MCD", 
    "Nike": "NKE", "Exxon": "XOM", "Chevron": "CVX", "Verizon": "VZ", 
    "AT&T": "T", "Home Depot": "HD", "Salesforce": "CRM", "Oracle": "ORCL", 
    "Qualcomm": "QCOM", "AMD": "AMD"
}

st.title("Stock Comparison and Analysis")

# Sidebar for stock selection and date range specification
st.sidebar.header("Select Stocks and Date Ranges")

#stock1 = st.sidebar.selectbox("Select Stock 1", list(stock_tickers.keys()), key="stock1_selectbox")
#stock2 = st.sidebar.selectbox("Select Stock 2", list(stock_tickers.keys()), key="stock2_selectbox")

stock1 = st.sidebar.text_input("Select a Stock", "MAPI.JK")
stock2 = st.sidebar.text_input("Select a Stock", "MAPA.JK")

start_date_stock1 = st.sidebar.date_input(f"Start date for {stock1}", datetime(2018, 1, 1), key=f"start_date_{stock1}")
end_date_stock1 = st.sidebar.date_input(f"End date for {stock1}", datetime(2023, 12, 1), key=f"end_date_{stock1}")
start_date_stock2 = st.sidebar.date_input(f"Start date for {stock2}", datetime(2018, 1, 1), key=f"start_date_{stock2}")
end_date_stock2 = st.sidebar.date_input(f"End date for {stock2}", datetime(2023, 12, 1), key=f"end_date_{stock2}")

# Button to trigger the comparison
if st.sidebar.button("Compare"):
    # Load data for both stocks
    data_stock1 = yf.download(stock1, start=start_date_stock1, end=end_date_stock1)
    data_stock2 = yf.download(stock2, start=start_date_stock2, end=end_date_stock2)

    # Plotting the data
    fig = go.Figure()

    fig.add_trace(go.Scatter(x=data_stock1.index, y=data_stock1['Close'], mode='lines', name=f'{stock1}'))
    fig.add_trace(go.Scatter(x=data_stock2.index, y=data_stock2['Close'], mode='lines', name=f'{stock2}'))

    fig.update_layout(title=f"Comparison of {stock1} and {stock2}", xaxis_title="Date", yaxis_title="Closing Price")
    
    st.plotly_chart(fig)

st.sidebar.markdown("----")
st.sidebar.markdown("Β© 2023 Stock Comparison and Analysis")