"""Stock Analysis Page - Comprehensive stock analysis with technical indicators.""" import streamlit as st import sys import os # Add parent directory to path for imports sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from components.styles import DARK_THEME_CSS from components.data_sources import ( load_stock_data, load_company_profile, load_income_statement, calculate_technical_indicators, get_price_metrics, ) from components.chart import ( create_price_chart, create_rsi_chart, create_financial_chart, ) from components.ui import ( display_price_metrics, display_company_info, display_financial_metrics, display_income_statement, display_profitability_metrics, ) # ---- Page Configuration ---- st.set_page_config( page_title="Stocks - Financial Dashboard", page_icon="📈", layout="wide", initial_sidebar_state="expanded", ) # ---- Apply Dark Theme ---- st.markdown(DARK_THEME_CSS, unsafe_allow_html=True) # ---- Header ---- st.markdown("# 📈 Stock Analysis") st.markdown("Real-time technical analysis with comprehensive financial metrics") # ---- Sidebar Configuration ---- with st.sidebar: st.markdown("## ⚙️ Settings") symbol = st.text_input("Stock Ticker", "AAPL", help="Enter a valid stock ticker symbol").upper() period = st.slider("Indicator Period", 5, 50, 20, help="Period for SMA, EMA, and RSI calculations") st.markdown("---") st.markdown("### About") st.info("Analyze stocks with technical indicators, financials, and TradingView charts.") def main(): """Main stock analysis logic.""" if st.button("📊 Load Stock Data", key="load_btn", use_container_width=True): try: # Load data with st.spinner("Loading data..."): df = load_stock_data(symbol) profile_info = load_company_profile(symbol) income_stmt = load_income_statement(symbol) # Calculate technical indicators df = calculate_technical_indicators(df, period) # Display price metrics metrics = get_price_metrics(df) display_price_metrics(metrics) # Display company information display_company_info(profile_info) # Display financial metrics if not income_stmt.empty: display_financial_metrics(income_stmt) # Financial history chart st.markdown('