| import streamlit as st |
| import yfinance as yf |
| import pandas as pd |
| import datetime as dt |
| import matplotlib.pyplot as plt |
|
|
| def get_stock_data(symbol, start_date, end_date): |
| start = dt.datetime.strptime(start_date, "%Y-%m-%d") |
| end = dt.datetime.strptime(end_date, "%Y-%m-%d") |
| data = yf.download(symbol, start=start, end=end) |
| return data |
|
|
| def plot_stock_prices(data): |
| fig, ax = plt.subplots() |
| ax.plot(data['Close']) |
| ax.set(xlabel='Date', ylabel='Stock Price ($)', |
| title='Stock Prices') |
| ax.grid() |
| st.pyplot(fig) |
|
|
| |
| companies = { |
| 'AAPL': 'Apple Inc.', |
| 'MSFT': 'Microsoft Corporation', |
| 'AMZN': 'Amazon.com Inc.', |
| 'GOOGL': 'Alphabet Inc. (Google)', |
| 'BA': 'The Boeing Company', |
| 'AIR.PA': 'Airbus SE', |
| 'NVDA': 'NVIDIA Corporation', |
| 'AXP': 'American Express Company', |
| 'BA': 'The Boeing Company', |
| 'CAT': 'Caterpillar Inc.', |
| 'CSCO': 'Cisco Systems, Inc.', |
| 'CVX': 'Chevron Corporation', |
| 'DIS': 'The Walt Disney Company', |
| 'DOW': 'Dow Inc.', |
| 'GS': 'The Goldman Sachs Group, Inc.', |
| 'HD': 'The Home Depot, Inc.', |
| 'IBM': 'International Business Machines Corporation', |
| 'INTC': 'Intel Corporation', |
| 'JNJ': 'Johnson & Johnson', |
| 'JPM': 'JPMorgan Chase & Co.', |
| 'KO': 'The Coca-Cola Company', |
| 'MCD': "McDonald's Corporation", |
| 'MMM': '3M Company', |
| 'MRK': 'Merck & Co., Inc.', |
| 'NKE': 'NIKE, Inc.', |
| 'PFE': 'Pfizer Inc.', |
| 'PG': 'Procter & Gamble Company', |
| 'TRV': 'The Travelers Companies, Inc.', |
| 'UNH': 'UnitedHealth Group Incorporated', |
| 'V': 'Visa Inc.', |
| 'VZ': 'Verizon Communications Inc.', |
| 'WBA': 'Walgreens Boots Alliance, Inc.', |
| 'WMT': 'Walmart Inc.' |
| } |
|
|
| |
| st.title('Stock Price Analysis') |
| selected_symbol = st.sidebar.selectbox('Select a company', list(companies.keys())) |
|
|
| |
| start_date = st.sidebar.date_input("Start Date", value=dt.date.today() - dt.timedelta(days=30)) |
| end_date = st.sidebar.date_input("End Date", value=dt.date.today()) |
|
|
| |
| data = get_stock_data(selected_symbol, start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d")) |
|
|
| if data.empty: |
| st.warning('No data found for the selected dates.') |
| else: |
| st.success('Successfully fetched stock data.') |
| selected_company_name = companies[selected_symbol] |
| st.subheader(f"{selected_company_name} Stock Prices") |
| plot_stock_prices(data) |
|
|