<feed xmlns='http://www.w3.org/2005/Atom'>
<title>prism.git/services/fmp_service.py, branch master</title>
<subtitle>Webapp for stock analysis</subtitle>
<id>https://git.tylerhoang.xyz/prism.git/atom?h=master</id>
<link rel='self' href='https://git.tylerhoang.xyz/prism.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/'/>
<updated>2026-04-02T07:10:06Z</updated>
<entry>
<title>Refactor valuation models tab</title>
<updated>2026-04-02T07:10:06Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-04-02T07:10:06Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=7a267bc3c28bc7a77e84eaa400667a7b4c0d5adf'/>
<id>urn:sha1:7a267bc3c28bc7a77e84eaa400667a7b4c0d5adf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Harden valuation edge cases</title>
<updated>2026-04-02T06:32:01Z</updated>
<author>
<name>Openclaw</name>
<email>openclaw@mail.tylerhoang.xyz</email>
</author>
<published>2026-04-02T06:32:01Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=3806bd3b4d69917f3f5312acfa57bc4ee2886a49'/>
<id>urn:sha1:3806bd3b4d69917f3f5312acfa57bc4ee2886a49</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Unify valuation calculations across Prism</title>
<updated>2026-03-31T02:36:42Z</updated>
<author>
<name>Openclaw</name>
<email>openclaw@mail.tylerhoang.xyz</email>
</author>
<published>2026-03-31T02:36:42Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=2de6ae37b902e3632ea62b904164552538501ec3'/>
<id>urn:sha1:2de6ae37b902e3632ea62b904164552538501ec3</id>
<content type='text'>
- compute EV consistently as market cap + debt - cash
- derive DCF/EV bridge inputs from balance-sheet rows
- centralize latest price, shares outstanding, and computed market cap helpers
- relabel negative net debt as net cash in valuation UI
- self-compute historical ratios/key metrics instead of relying on vendor ratios
- guard against nonsensical historical EV/EBITDA values
- add methodology/source notes in DCF tab
</content>
</entry>
<entry>
<title>Compute all Key Ratios from raw statements, eliminating FMP ratio calls</title>
<updated>2026-03-31T02:09:45Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-03-31T02:09:45Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=92b7eae36866c3424f44b4b6a653833a65df91a9'/>
<id>urn:sha1:92b7eae36866c3424f44b4b6a653833a65df91a9</id>
<content type='text'>
Added compute_ttm_ratios() which derives all 16 TTM ratios directly from
yfinance quarterly income statements, balance sheets, and cash flow:

  Valuation:  P/E, P/S, P/B, EV/EBITDA, EV/Revenue
  Profitability: Gross/Operating/Net Margin, ROE, ROA, ROIC
  Leverage:  D/E, Current Ratio, Quick Ratio, Interest Coverage
  Dividends: Yield, Payout Ratio

get_key_ratios() no longer calls FMP's /ratios-ttm or /key-metrics-ttm
endpoints, saving ~2 FMP API calls per ticker load (including each Comps
peer). Forward P/E still comes from yfinance info dict (analyst estimate).

This also fixes EV/EBITDA for all tickers (DDOG was 4998x from FMP/yfinance
pre-computed values, now correctly 194x from income statement EBITDA).

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add yfinance fallback for historical ratios when FMP quota is exhausted</title>
<updated>2026-03-30T01:04:14Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-03-30T01:04:14Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=425874931ffd3e3cef60262f7f0b7cb678629278'/>
<id>urn:sha1:425874931ffd3e3cef60262f7f0b7cb678629278</id>
<content type='text'>
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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Migrate FMP ratios and improve comps fallbacks</title>
<updated>2026-03-30T00:53:09Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-03-30T00:53:09Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=678d3290e87a2043b4cb338df6cb93307e91ffc1'/>
<id>urn:sha1:678d3290e87a2043b4cb338df6cb93307e91ffc1</id>
<content type='text'>
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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add historical ratios, forward estimates, insider transactions, SEC filings</title>
<updated>2026-03-29T20:21:39Z</updated>
<author>
<name>Openclaw</name>
<email>openclaw@mail.tylerhoang.xyz</email>
</author>
<published>2026-03-29T20:21:39Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=4fdcb4ce0f00bc8f62d50ba5d352dd2fe01cd7e7'/>
<id>urn:sha1:4fdcb4ce0f00bc8f62d50ba5d352dd2fe01cd7e7</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>Use stable FMP stock-peers endpoint</title>
<updated>2026-03-29T08:44:54Z</updated>
<author>
<name>Openclaw</name>
<email>openclaw@mail.tylerhoang.xyz</email>
</author>
<published>2026-03-29T08:44:54Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=41d9a71a0615193d4ed9aeecc6a4478b19f5a4f0'/>
<id>urn:sha1:41d9a71a0615193d4ed9aeecc6a4478b19f5a4f0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Migrate FMP ratios and improve comps fallbacks</title>
<updated>2026-03-29T08:42:02Z</updated>
<author>
<name>Openclaw</name>
<email>openclaw@mail.tylerhoang.xyz</email>
</author>
<published>2026-03-29T08:42:02Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=02828fa1ab136592cd0d8df77e153e9544c2cc51'/>
<id>urn:sha1:02828fa1ab136592cd0d8df77e153e9544c2cc51</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Initial commit — Prism financial analysis dashboard</title>
<updated>2026-03-29T06:01:14Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-03-29T06:01:14Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=23675b39b8055a8568cdcf71f66482b9d0cf90a9'/>
<id>urn:sha1:23675b39b8055a8568cdcf71f66482b9d0cf90a9</id>
<content type='text'>
Streamlit app with market bar, price chart, financial statements,
DCF valuation engine, comparable companies, and news feed.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
