finance_tracker / app.py
netflypsb's picture
Create app.py
bf5d90d verified
import yfinance as yf
import pandas as pd
import streamlit as st
import plotly.graph_objs as go
# Function to load data with the updated cache method
@st.cache_data
def load_data(ticker):
data = yf.download(ticker, start='2020-01-01', end='2023-01-01')
data.reset_index(inplace=True)
return data
def calculate_moving_averages(data, window):
data[f'MA{window}'] = data['Close'].rolling(window=window).mean()
return data
def main():
st.title("FinanceTracker: Financial Dashboard")
st.sidebar.title("Settings")
# User input for ticker symbol
ticker = st.sidebar.text_input("Ticker Symbol", "AAPL")
# Load data
data = load_data(ticker)
# User input for moving average window
ma_window = st.sidebar.slider("Moving Average Window", 5, 100, 20)
data = calculate_moving_averages(data, ma_window)
# Plotting the data
fig = go.Figure()
fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], mode='lines', name='Close'))
fig.add_trace(go.Scatter(x=data['Date'], y=data[f'MA{ma_window}'], mode='lines', name=f'MA{ma_window}'))
st.plotly_chart(fig)
# Additional metrics and analysis
st.write(f"### {ticker} Data Summary")
st.write(data.describe())
st.write(f"### {ticker} Close Price")
st.line_chart(data['Close'])
st.write(f"### {ticker} Volume")
st.line_chart(data['Volume'])
if __name__ == "__main__":
main()