diff options
| author | Openclaw <openclaw@mail.tylerhoang.xyz> | 2026-03-29 13:21:39 -0700 |
|---|---|---|
| committer | Openclaw <openclaw@mail.tylerhoang.xyz> | 2026-03-29 13:21:39 -0700 |
| commit | 4fdcb4ce0f00bc8f62d50ba5d352dd2fe01cd7e7 (patch) | |
| tree | 35dc4234751521d5a89a124f53eeaa827813be07 /app.py | |
| parent | fc55820f5128f97e231de5388e59912e4a675782 (diff) | |
Add historical ratios, forward estimates, insider transactions, SEC filings
- services/fmp_service.py: add get_historical_ratios, get_historical_key_metrics,
get_analyst_estimates, get_insider_transactions, get_sec_filings
- components/valuation.py: add Historical Ratios and Forward Estimates subtabs
- components/insiders.py: new — insider buy/sell summary, monthly chart, detail table
- components/filings.py: new — SEC filings with type filter and direct links
- app.py: wire in Insiders and Filings top-level tabs
Diffstat (limited to 'app.py')
| -rw-r--r-- | app.py | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -59,6 +59,8 @@ from components.market_bar import render_market_bar from components.overview import render_overview from components.financials import render_financials from components.valuation import render_valuation +from components.insiders import render_insiders +from components.filings import render_filings from components.news import render_news from services.data_service import get_company_info, search_tickers @@ -138,10 +140,12 @@ st.divider() # ── Main Content ────────────────────────────────────────────────────────────── -tab_overview, tab_financials, tab_valuation, tab_news = st.tabs([ +tab_overview, tab_financials, tab_valuation, tab_insiders, tab_filings, tab_news = st.tabs([ "📈 Overview", "📊 Financials", "💰 Valuation", + "👤 Insiders", + "📁 Filings", "📰 News", ]) @@ -163,6 +167,18 @@ with tab_valuation: except Exception as e: st.error(f"Valuation failed to load: {e}") +with tab_insiders: + try: + render_insiders(ticker) + except Exception as e: + st.error(f"Insider data failed to load: {e}") + +with tab_filings: + try: + render_filings(ticker) + except Exception as e: + st.error(f"Filings failed to load: {e}") + with tab_news: try: render_news(ticker) |
