Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import yfinance as yf | |
| import pandas as pd | |
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| import seaborn as sns | |
| # Function to fetch data from Yahoo Finance | |
| def fetch_data(symbols, start_date, end_date): | |
| data = yf.download(symbols, start=start_date, end=end_date) | |
| return data['Adj Close'] | |
| # Function to plot line chart | |
| def plot_line_chart(data, title): | |
| st.write("##", title) | |
| st.line_chart(data) | |
| # Function to calculate correlation matrix and plot heatmap | |
| def plot_correlation(data): | |
| st.write("## Correlation Matrix") | |
| correlation_matrix = data.corr() | |
| sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f") | |
| st.pyplot() | |
| # Streamlit App | |
| def main(): | |
| st.title("Financial Data Analysis App") | |
| st.write("This app fetches data from Yahoo Finance, plots charts, and calculates correlations.") | |
| # Input for symbols | |
| symbols_input = st.text_input("Enter symbols separated by commas (e.g., AAPL, MSFT, GOOGL)", "AAPL, MSFT, GOOGL") | |
| symbols = [symbol.strip() for symbol in symbols_input.split(',')] | |
| # Fetch data | |
| if st.button("Fetch Data"): | |
| st.write("Fetching data...") | |
| try: | |
| data = fetch_data(symbols, pd.Timestamp.now() - pd.DateOffset(years=15), pd.Timestamp.now()) | |
| st.success("Data fetched successfully!") | |
| # Plot line charts | |
| for symbol in symbols: | |
| plot_line_chart(data[symbol], f"Adjusted Close Price for {symbol}") | |
| # Plot correlation matrix | |
| plot_correlation(data) | |
| except Exception as e: | |
| st.error(f"Error fetching data: {e}") | |
| if __name__ == "__main__": | |
| main() | |