From 91037dec4e714e31416d8c06eec824a7287fef00 Mon Sep 17 00:00:00 2001 From: Tyler Date: Sat, 28 Mar 2026 23:19:26 -0700 Subject: Add cgit readme --- readme | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 readme (limited to 'readme') diff --git a/readme b/readme new file mode 100644 index 0000000..bdc1550 --- /dev/null +++ b/readme @@ -0,0 +1,141 @@ + + + + + + + +

🔷 Prism

+

A local financial analysis dashboard. Enter any stock ticker to get a formatted view of financial statements, valuation metrics, a DCF model, and a news feed — all in your browser.

+
+

Features

+ +
+

Setup

+

1. Clone / navigate to the project

+
cd ~/Work/prism
+
+

2. Activate the virtual environment

+
source .venv/bin/activate
+
+

3. Add API keys

+
cp .env.example .env
+
+

Open .env and fill in your keys:

+
FMP_API_KEY=your_key_here
+FINNHUB_API_KEY=your_key_here
+
+

Both are free: +- FMP (Financial Modeling Prep) — financialmodelingprep.com — 250 requests/day +- Finnhub — finnhub.io — 60 requests/minute

+
+

No keys? The app still works. Price data, financials, and market indices are sourced from yfinance (no key required). Ratios, comps, and news won't load until keys are added.

+
+

4. Run the app

+
streamlit run app.py
+
+

Opens at http://localhost:8501

+
+

Daily Usage

+
cd ~/Work/prism
+source .venv/bin/activate
+streamlit run app.py
+
+
+

Project Structure

+
prism/
+├── app.py                    # Entry point
+├── requirements.txt
+├── .env                      # Your API keys (not committed)
+├── .env.example              # Key template
+├── .streamlit/
+│   └── config.toml           # Dark theme + layout settings
+├── services/
+│   ├── data_service.py       # yfinance — price, financials, indices
+│   ├── fmp_service.py        # FMP API — ratios, peers
+│   ├── news_service.py       # Finnhub — news + sentiment
+│   └── valuation_service.py  # DCF engine (Gordon Growth Model)
+├── components/
+│   ├── market_bar.py         # Index metrics row
+│   ├── overview.py           # Company header + price chart
+│   ├── financials.py         # Statement tables
+│   ├── valuation.py          # Ratios, DCF, comps
+│   └── news.py               # News feed
+└── utils/
+    └── formatters.py         # Number formatting helpers
+
+
+

DCF Model Notes

+

The DCF model uses 5 years of historical Free Cash Flow from yfinance to compute an average growth rate, then projects forward using your chosen assumptions:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
InputDefaultRange
WACC10%5–20%
Terminal Growth Rate2.5%0.5–5%
Projection Years53–10
+

The model uses the Gordon Growth Model for terminal value. Intrinsic value per share is compared against the current market price to show upside/downside.

+
+

API Rate Limits

+ + + + + + + + + + + + + + + + + + + + + + + + + +
SourceLimitUsed For
yfinanceNonePrice, financials, indices
FMP (free)250 req/dayRatios, comps, news
Finnhub (free)60 req/minNews, sentiment
+

Data is cached in-memory per session to minimize API calls (financials: 1h, news: 10min, indices: 5min).

+ + \ No newline at end of file -- cgit v1.3-2-g0d8e