""" ATLAS Terminal — Thin Orchestrator All-in-One Financial Analysis Dashboard — Hybrid Architecture - Tab 1: 10-K & MD&A Insights (Item 7 + Item 1A → Gemini, qualitative only). - Tab 2: 3-Scenario DCF Valuation (yfinance + sliders, no LLM). - Tab 3: Industry Comps (yfinance multiples: Forward P/E, EV/EBITDA, P/B). - Cost-effective: Gemini only for text; all numbers from yfinance. """ import os os.environ["OBJC_DISABLE_INITIALIZE_FORK_SAFETY"] = "YES" import streamlit as st from config.constants import MARKET_OPTIONS from config.theme import SOFT_NAVY_CSS, HEADER_HTML from utils.ticker import get_global_ticker from data.market import _get_ticker_bar_data from data.fundamentals import get_sector_industry from views.sidebar import render_sidebar from views.tab1_quant import render_tab1_quantitative from views.tab1_ai import render_tab1_ai_analysis from views.tab1_filings import render_tab1_filings from views.tab2_dcf import render_tab2 from views.tab3_comps import render_tab3 from views.tab4_news import render_tab4 from views.tab5_markets import render_tab5 from views.tab6_crypto import render_tab6 from views.tab7_technical import render_tab7 try: import yfinance as yf except ImportError: yf = None try: from dotenv import load_dotenv load_dotenv() except ImportError: pass # ---------- Page config & theme ---------- st.set_page_config(page_title="ATLAS Terminal", layout="wide", initial_sidebar_state="expanded") st.markdown(SOFT_NAVY_CSS, unsafe_allow_html=True) st.markdown(HEADER_HTML, unsafe_allow_html=True) # ---------- Ticker bar — major indices & crypto ---------- ticker_data = _get_ticker_bar_data() if yf else [] if ticker_data: _cells = "" for item in ticker_data: _c = "#34D399" if item["change"] >= 0 else "#F87171" _a = "\u25b2" if item["change"] >= 0 else "\u25bc" _cells += ( f'