<feed xmlns='http://www.w3.org/2005/Atom'>
<title>prism.git/services/data_service.py, branch feature/valuation-redesign</title>
<subtitle>Webapp for stock analysis</subtitle>
<id>https://git.tylerhoang.xyz/prism.git/atom?h=feature%2Fvaluation-redesign</id>
<link rel='self' href='https://git.tylerhoang.xyz/prism.git/atom?h=feature%2Fvaluation-redesign'/>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/'/>
<updated>2026-05-17T07:06:36Z</updated>
<entry>
<title>Add 1D and 5D intraday periods to overview chart</title>
<updated>2026-05-17T07:06:36Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T07:06:36Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=2b229cff5f99a00b6cc984f4c1c3c41de7f1e04c'/>
<id>urn:sha1:2b229cff5f99a00b6cc984f4c1c3c41de7f1e04c</id>
<content type='text'>
Adds get_intraday_history() to data_service.py (5m/30m bars, ttl=60s)
and wires it into the overview chart with HH:MM x-axis formatting,
market-hours filtering, intraday-only primary fetch, hidden comparison
buttons, and 1D as the default period on load.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix valuation and data robustness bugs</title>
<updated>2026-05-16T07:02:32Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-16T07:02:32Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=0d888203cbc4dc596d0c05cedfeabe8785b263fc'/>
<id>urn:sha1:0d888203cbc4dc596d0c05cedfeabe8785b263fc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve DCF model accuracy</title>
<updated>2026-04-03T01:54:01Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-04-03T01:54:01Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=ccfbce79a66b2d8aa136fddbed7c61c7436f2733'/>
<id>urn:sha1:ccfbce79a66b2d8aa136fddbed7c61c7436f2733</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve valuation model clarity</title>
<updated>2026-04-03T01:11:18Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-04-03T01:11:18Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=0c146fec412fb99153fbb32fa90f0211aa0c8b32'/>
<id>urn:sha1:0c146fec412fb99153fbb32fa90f0211aa0c8b32</id>
<content type='text'>
</content>
</entry>
<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>Fix EBITDA consistency and minority interest bug in valuation</title>
<updated>2026-03-31T07:24:15Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-03-31T07:24:15Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=c5575a1760a88e486e354e56be68bdb75d053db6'/>
<id>urn:sha1:c5575a1760a88e486e354e56be68bdb75d053db6</id>
<content type='text'>
- Use TTM EBITDA (from compute_ttm_ratios) as the single canonical source
  for both Key Ratios and DCF EV/EBITDA — eliminates disagreement between tabs
- Remove "Total Equity Gross Minority Interest" from minority_interest fallback
  in get_balance_sheet_bridge_items; that yfinance row is total equity (not just
  minority portion) and would have massively over-deducted from DCF equity value

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</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>Fix EV/EBITDA using income statement EBITDA instead of info dict</title>
<updated>2026-03-31T01:54:56Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-03-31T01:54:56Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=712bbf675cfcb32535d8c494505e566efa347feb'/>
<id>urn:sha1:712bbf675cfcb32535d8c494505e566efa347feb</id>
<content type='text'>
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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
