Create an app for stock analysis with mock data. Generate mock daily price data for 5 tech stocks over the past year with standard fields (Open, Close, etc). Features: - Stock selector dropdown - Price trend charts - Basic stats (mean, volatility) - Moving averages - Volume analysis - Stock comparison Interactive elements: - Date range picker - Technical indicators - Chart type toggle Focus on clean visualization of realistic mock data.
To upload files, please first save the app
import pandas as pd
import numpy as np
def calculate_moving_averages(df, show_sma=True, show_ema=True):
"""
Calculate Simple Moving Average (SMA) and Exponential Moving Average (EMA)
"""
df = df.copy()
if show_sma:
df['SMA_20'] = df['Close'].rolling(window=20).mean()
if show_ema:
df['EMA_20'] = df['Close'].ewm(span=20).mean()
return df
def calculate_volatility(prices, window=30):
"""
Calculate rolling volatility (standard deviation of returns)
"""
returns = prices.pct_change().dropna()
volatility = returns.rolling(window=window).std() * np.sqrt(252) * 100 # Annualized volatility
return volatility.iloc[-1] if len(volatility) > 0 else 0
def calculate_basic_stats(df):
"""
Calculate basic statistics for a stock
"""
if len(df) == 0:
return {
'current_price': 0,
'daily_change': 0,
'daily_change_pct': 0,
'high_52w': 0,
'low_52w': 0,
'avg_volume': 0,
'volatility_30d': 0
}
df_sorted = df.sort_values('Date')
current_price = df_sorted['Close'].iloc[-1]
prev_price = df_sorted['Close'].iloc[-2] if len(df_sorted) > 1 else current_price
daily_change = current_price - prev_price
daily_change_pct = (daily_change / prev_price * 100) if prev_price > 0 else 0
high_52w = df_sorted['High'].max()
low_52w = df_sorted['Low'].min()
avg_volume = df_sorted['Volume'].mean()
volatility_30d = calculate_volatility(df_sorted['Close'], window=min(30, len(df_sorted)))
return {
'current_price': current_price,
'daily_change': daily_change,
'daily_change_pct': daily_change_pct,
'high_52w': high_52w,
'low_52w': low_52w,
'avg_volume': avg_volume,
'volatility_30d': volatility_30d
}
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?