8-k-scanner
Scan SEC 8-K disclosures across a single ticker or a watchlist using Massive's pre-parsed disclosure taxonomy. Groups the underlying rows by filing (one 8-K…
Sanity-check an internal analyst valuation thesis against the live peer set. Input the target price, assumed revenue growth, assumed EBITDA margin, and horizon; the skill pulls the current name, builds the peer cohort, computes target-implied multiples vs the peer 25-75 band,
$ npx -y skills add rgourley/quant-garage --skill valuation-sanity-check --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/valuation-sanity-checkContext preview
The summary Claude sees to decide when to auto-load this skill.
Sanity-check an internal analyst valuation thesis against the live peer set. Input the target price, assumed revenue growth, assumed EBITDA margin, and horizon; the skill pulls the current name, builds the peer cohort, computes target-implied multiples vs the peer 25-75 band,
name: valuation-sanity-check description: Sanity-check an internal analyst valuation thesis against the live peer set. Input the target price, assumed revenue growth, assumed EBITDA margin, and horizon; the skill pulls the current name, builds the peer cohort, computes target-implied multiples vs the peer 25-75 band, compares the growth and margin assumptions to the peer distribution, runs a simplified reverse-DCF, and emits either a single-point fair-value estimate or a full fair-value distribution (--mc flag) as a one-page sell-side flash note answering "is this target defensible or has the model drifted from reality." Use when a banker, PM, or analyst is stress-testing a price target or pitch-deck valuation. Requires Stocks Starter.
You hand over a subject ticker and the thesis: `target_price`, `assumed_growth`, `assumed_margin`, `horizon_years`. The skill pulls the current price, market cap, balance sheet, and TTM financials, builds the peer set using the same waterfall as `pitch-comps` (curated override → correlation → SIC fallback), pulls peer multiples and growth/margin metrics, and emits a one-page flash note covering four sanity checks.
This is the "is the model defensible or has it drifted" workflow. The take at the top says whether the target survives the peer-distribution sanity check; the four supporting sections show where the air is.
to know what's already baked into the current price
whether the assumptions are defensible vs the peer set
for $TICKER", "what growth does the current price assume"
(decimal, e.g. 0.28 for 28%), `assumed_margin` (decimal, e.g. 0.60 for 60%), `horizon_years` (integer, default 5)
~9 ticker-details + ~9 financials calls as `pitch-comps`; under 30 seconds on Starter, ~5 min on free Basic.
Two output layers from one analysis.
**Layer 1: canonical JSON** matching [`output-schema.json`](./output-schema.json). Subject metadata, analyst inputs, three sanity-check blocks (`multiple_sanity[]`, `growth_sanity`, `margin_sanity`), the `reverse_dcf` block, peer list with each peer's contributing data, the bold take, the closing read, and per-call source endpoints with fetched-at timestamps.
**Layer 2: rendered note** in sell-side flash-note style, modeled on `earnings-drilldown` note mode. See [`references/rendering.md`](./references/rendering.md). Bold take at the top, three sanity sections, reverse-DCF block, closing read.
1. **Pull the subject's live state.** Snapshot for current price (via the standard `lastTrade → day.c → prevDay.c → fmv` waterfall), ticker details for shares outstanding and market cap, financials for TTM revenue, operating income, D&A, balance sheet (long-term debt). Same data layer as `pitch-comps`. 2. **Compute target-implied financials.** `target_mcap = target_price × shares_outstanding`. `target_EV = target_mcap + long_term_debt` (cash not subtracted; documented in [`references/multiple-sanity.md`](./references/multiple-sanity.md)). `target_revenue_horizon = subject_revenue_ttm × (1 + assumed_growth)^horizon`. `target_ebitda_horizon = target_revenue_horizon × assumed_margin`. `target_eps_horizon` derived from the operating-margin-implied net income. 3. **Build the peer set** per [`references/peer-selection.md`](./references/peer-selection.md). Reuses the pitch-comps three-layer waterfall and the shared override map. 4. **Pull peer multiples and metrics.** Same per-peer fanout as `pitch-comps`: current price, market cap, TTM financials. Compute each peer's EV/Sales, EV/EBITDA, P/E, revenue growth TTM, EBITDA margin. 5. **Multiple sanity** per [`references/multiple-sanity.md`](./references/multiple-sanity.md). For each multiple (EV/Sales, EV/EBITDA, P/E), compute the target-implied value at the horizon and compare to the peer 25-75 percentile band. Status: `in_line` (inside band), `above` (above p75), `below` (below p25). 6. **Growth and margin sanity** per [`references/growth-margin-sanity.md`](./references/growth-margin-sanity.md). Compare the analyst's `assumed_growth` and `assumed_margin` to the peer 25-75 bands on revenue growth and EBITDA margin. Same status labels. Records the `delta_pp` (assumed minus peer median, in percentage points) so the reader can quote the gap. 7. **Reverse-DCF** per [`references/reverse-dcf.md`](./references/reverse-dcf.md). At the current stock price, given the assumed margin and the peer-median EV/EBITDA exit multiple, what 5-year revenue CAGR is implied? Compare to peer-median 5y CAGR (proxied from TTM growth when 5y history is missing). Surfaces "air in the current price": the gap between the implied CAGR and the peer-median CAGR. 8. **Generate the take and the read** per [`references/take-generator.md`](./references/take-generator.md). Bold take at the top in one paragraph: the CAGR/margin the target requires and how far it sits from peer median. Closing read at the bottom: if you trim assumptions to peer median, where does the target land. Banker-tone, no hedge words.
limiting, the snapshot fallback chain, and the financials-endpoint null-handling.
Same note mode as `earnings-drilldown`. Bold take at top, grouped supporting sections, closing read, one-page max. The format follows the s
Trade like a pro. Without the terminal. View the full landing page → Quant and equity research tools that run inside Claude, or behind your own UI.
Scan SEC 8-K disclosures across a single ticker or a watchlist using Massive's pre-parsed disclosure taxonomy. Groups the underlying rows by filing (one 8-K…
Track sell-side analyst positioning on a name via Benzinga Analyst Ratings. Pulls every rating event over the lookback window, classifies each as upgrade /…
Build a clean, point-in-time, ready-to-backtest OHLCV dataset for a US equity universe across an arbitrary date window. Emits parquet plus a manifest plus an…
Bayesian Online Change-Point Detection (BOCPD) on a ticker's daily log returns. Detects points in time where the return-generating distribution changed (regime…
Single-commodity macro read. Answers "is this commodity in a winning or losing macro setup right now" and names the macro driver that dominates it. Pulls one…
Reconcile a position file against splits, dividends, and spinoffs to catch breaks before they hit P&L or T+1 settlement. Use when an operator hands over a CSV…