aboutsummaryrefslogtreecommitdiff
path: root/services
AgeCommit message (Collapse)Author
7 daysFix EV/EBITDA using income statement EBITDA instead of info dictTyler
yfinance's info["ebitda"] is a miscalculated TTM value for many tickers (e.g. DDOG shows $7.5M when the correct TTM EBITDA is $193.8M). Added get_ebitda_from_income_stmt() which reads directly from t.income_stmt, matching the annual and quarterly figures. Key Ratios and DCF EV/EBITDA valuation now both use this source, with FMP as the preferred override. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 daysAdd score card, 52W range bar, short interest, options tab, CSV exportsTyler
Overview: - Score card: green/yellow/red signals for valuation, growth, profitability, leverage, momentum (vs 52W high), and short interest - 52W high/low visual range bar with current price marker and % context - Short interest metrics row: % of float, days to cover, shares short vs prior month - Replaced static 52W High/Low metrics with volume and avg volume Options tab (new): - Expiry selector across all available expirations - Put/call ratio by volume and open interest with bullish/bearish label - IV smile chart (calls + puts) with ATM marker - Open interest by strike (calls above, puts mirrored below axis) - Full chain table (calls/puts) in expandable section CSV exports: - Download button on each financial statement (income, balance, cash flow) - Download button on earnings history table Also fix top padding cut-off: block-container padding-top 1rem → 3.5rem Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8 daysAdd yfinance fallback for historical ratios when FMP quota is exhaustedTyler
FMP free tier caps at 250 req/day; hitting the limit caused the Historical Ratios tab to show an error. get_historical_ratios_yfinance now computes margins, ROE, ROA, D/E, P/E, P/B, P/S, and EV/EBITDA directly from yfinance income statements, balance sheets, and price history. FMP functions fall back to this automatically when they receive an empty response. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8 daysMigrate FMP ratios and improve comps fallbacksTyler
Switch historical ratios, key metrics, and analyst estimates from deprecated v3 legacy endpoints to stable API equivalents. Quarterly analyst estimates dropped (premium-only on stable API). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8 daysMigrate insiders and filings from FMP to yfinanceTyler
FMP v3 insider-trading and sec_filings endpoints are legacy-gated. Switch to yfinance (t.insider_transactions, t.sec_filings) which provides the same data for free with no API key required. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8 daysAdd historical ratios, forward estimates, insider transactions, SEC filingsOpenclaw
- 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
8 daysUse stable FMP stock-peers endpointOpenclaw
8 daysMigrate FMP ratios and improve comps fallbacksOpenclaw
8 daysFix valuation methodology and documentationOpenclaw
8 daysAdd EV/EBITDA valuation, analyst targets, earnings history, and FCF growth ↵Tyler
override - DCF model: user-adjustable FCF growth rate slider (defaults to historical median) - EV/EBITDA valuation section with target multiple slider and implied price - Analyst Targets tab: price target summary + recommendation breakdown chart - Earnings History tab: EPS actual vs estimate table and line chart with next earnings date Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8 daysInitial commit — Prism financial analysis dashboardTyler
Streamlit app with market bar, price chart, financial statements, DCF valuation engine, comparable companies, and news feed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>