aboutsummaryrefslogtreecommitdiff
path: root/readme
diff options
context:
space:
mode:
authorTyler <tyler@tylerhoang.xyz>2026-03-30 23:04:42 -0700
committerTyler <tyler@tylerhoang.xyz>2026-03-30 23:04:42 -0700
commitbb548068b16d049c6ffaed8902e2dff89b7f89d3 (patch)
treede148dc4a5846c6e9a51a0d02272c3e771947a3f /readme
parentc2f2e21b6145f005421624c87484e0aa8cdd9aad (diff)
delete readme.html
Diffstat (limited to 'readme')
-rw-r--r--readme87
1 files changed, 78 insertions, 9 deletions
diff --git a/readme b/readme
index 23365f4..cfeedf3 100644
--- a/readme
+++ b/readme
@@ -3,13 +3,76 @@
<head>
<meta charset="UTF-8">
<style>
- body { font-family: sans-serif; max-width: 800px; line-height: 1.6; }
- code, pre { font-family: monospace; background: #f4f4f4; padding: 0.2em 0.4em; border-radius: 3px; }
- pre { padding: 0.75em 1em; overflow-x: auto; }
- pre code { background: none; padding: 0; }
- table { border-collapse: collapse; width: 100%; }
- th, td { border: 1px solid #ccc; padding: 0.4em 0.75em; text-align: left; }
- th { background: #f0f0f0; }
+ * { box-sizing: border-box; margin: 0; padding: 0; }
+ body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ max-width: 900px;
+ line-height: 1.7;
+ color: #333;
+ background: #fafafa;
+ padding: 2rem;
+ margin: 0 auto;
+ }
+ h1, h2, h3, h4 { color: #0f2346; margin-top: 1.5em; margin-bottom: 0.5em; font-weight: 700; }
+ h1 { font-size: 2.2em; margin-top: 0; }
+ h2 { font-size: 1.6em; border-bottom: 2px solid #c9a84c; padding-bottom: 0.5em; }
+ h3 { font-size: 1.2em; color: #1a3560; }
+ p { margin-bottom: 1em; }
+ ul, ol { margin-left: 1.5em; margin-bottom: 1em; }
+ li { margin-bottom: 0.5em; }
+ hr { border: none; border-top: 1px solid #ddd; margin: 2em 0; }
+ a { color: #234a8a; text-decoration: none; font-weight: 500; }
+ a:hover { text-decoration: underline; }
+ blockquote {
+ border-left: 4px solid #c9a84c;
+ padding-left: 1em;
+ margin-left: 0;
+ color: #666;
+ font-style: italic;
+ background: #f5f5f5;
+ padding: 0.75em 1em;
+ }
+ code {
+ font-family: 'Courier New', Courier, monospace;
+ background: #f5f5f5;
+ padding: 0.2em 0.4em;
+ border-radius: 3px;
+ color: #d73a49;
+ font-size: 0.9em;
+ }
+ pre {
+ background: #1e1e1e;
+ color: #e0e0e0;
+ padding: 1em;
+ border-radius: 5px;
+ overflow-x: auto;
+ margin-bottom: 1em;
+ border-left: 4px solid #c9a84c;
+ }
+ pre code {
+ background: none;
+ padding: 0;
+ color: #e0e0e0;
+ font-size: 0.95em;
+ }
+ table {
+ border-collapse: collapse;
+ width: 100%;
+ margin-bottom: 1.5em;
+ border: 1px solid #ddd;
+ }
+ th, td {
+ border: 1px solid #ddd;
+ padding: 0.75em;
+ text-align: left;
+ }
+ th {
+ background: #0f2346;
+ color: #fff;
+ font-weight: 600;
+ }
+ tr:nth-child(even) { background: #f9f9f9; }
+ tr:hover { background: #f0f0f0; }
</style>
</head>
<body>
@@ -21,7 +84,7 @@
<li><strong>Market Bar</strong> — Live S&amp;P 500, NASDAQ, DOW, and VIX at the top of every page</li>
<li><strong>Overview</strong> — Price chart (1M / 3M / 6M / 1Y / 5Y), key stats (market cap, P/E, 52W range, beta)</li>
<li><strong>Financials</strong> — Annual and quarterly Income Statement, Balance Sheet, and Cash Flow Statement with year-over-year % change columns</li>
-<li><strong>Valuation</strong> — Key ratios grid (P/E, EV/EBITDA, margins, ROE, etc.), interactive DCF model with adjustable WACC and growth rate, comparable companies table</li>
+<li><strong>Valuation</strong> — Key ratios grid (P/E, EV/EBITDA, margins, ROE, etc.), DCF model with adjustable WACC/growth/years, EV/EBITDA implied price, comparable companies table, analyst price targets, and earnings history (EPS actual vs. estimate)</li>
<li><strong>News</strong> — Recent articles with heuristic Bullish / Bearish / Neutral tags and a 7-day sentiment summary</li>
</ul>
<hr />
@@ -105,9 +168,15 @@ streamlit run app.py
<td>5</td>
<td>3–10</td>
</tr>
+<tr>
+<td>FCF Growth Rate</td>
+<td>Historical median</td>
+<td>-20–30%</td>
+</tr>
</tbody>
</table>
-<p>The model uses the <strong>Gordon Growth Model</strong> for terminal value. It first estimates <strong>enterprise value</strong>, then bridges to <strong>equity value</strong> using debt and cash before calculating value per share. Terminal growth must remain below WACC.</p>
+<p>The model uses the <strong>Gordon Growth Model</strong> for terminal value. It first estimates <strong>enterprise value</strong>, then bridges to <strong>equity value</strong> using debt and cash before calculating value per share. Terminal growth must remain below WACC. The FCF growth slider defaults to the historical median but can be freely overridden.</p>
+<p>The <strong>EV/EBITDA</strong> tab derives an implied price by applying a target multiple to trailing EBITDA, subtracting net debt, and dividing by shares outstanding. The slider defaults to the company's current market multiple.</p>
<hr />
<h2>API Rate Limits</h2>
<table>