Methodology

How every score is computed.

Public version of taxonomy-and-scoring.md Part 7.

The two-axis model

Every covered company has two scores: Opportunity and Risk. They are independent. Risk is not the inverse of Opportunity. The default ranking lens is Risk-Adjusted Opportunity = Opportunity − 0.5 × Risk.

Six dimensions

Opportunity is a weighted blend of four operating dimensions plus a valuation modifier. Risk is a separate axis composed of eight structural risk components.

Opportunity (§7.2)

raw_opportunity = 0.25 × Quality
                + 0.25 × Growth_Durability
                + 0.20 × Capital_Efficiency
                + 0.30 × Demand_Signal

valuation_penalty = max(0, 30 − Valuation) × 1.5
Opportunity = max(0, raw_opportunity − valuation_penalty)

Demand Signal carries the highest weight (0.30) because forward visibility is the most asymmetric input. Valuation acts as a penalty when poor (≤30), not a fully additive component — a great business at a fair price isn't penalized; a great business at a heroic price is.

Risk (§7.3)

Risk = 0.5 × max(component_risks) + 0.5 × average(component_risks)

Eight components: customer concentration, geopolitical / export-control, tech displacement, cyclical, balance sheet, regulatory / permitting, single-asset / single-product, energy / physical bottleneck. Max + average means a single 95th-percentile risk dominates while the average tells you whether the company is broadly fragile or just exposed to one thing.

Valuation (§7.6)

A three-lens blend: relative-to-self percentile (35%) + relative-to-peers percentile (35%) + reverse-DCF score (30%). The reverse-DCF lens solves for the implied growth rate that justifies the current EV at the subsegment's default WACC, and bands the ratio of implied / reasonable growth into cheap (75) / fair (50) / rich (30) / heroic (15).

Customer concentration penalty (§7.5)

concentration_penalty = max(0, top_customer_pct − 25) × 1.0
Quality_score = base_quality_score − concentration_penalty   (floored at 0)

A company with a single customer at 70% of revenue takes a 45-point hit on Quality. Aggressive on purpose — concentration is structural.

Computed, not narrated (hard rule #1)

All scoring math is regular TypeScript code. The LLM is used only to identify and extract inputs from filings and transcripts; it never produces a score. Every score in this system is reproducible from the inputs and formulas above.

Confidence flags (hard rule #5)

Every input carries a confidence: high | medium | low. A dimension takes the lowest-confidence input. A scorecard with any low-confidence dimension is tagged low_confidence: true and renders with a "low confidence" pill on segment-list pages.

Subsegment-specific adjustments (Part 4)

Track record (hard rule #8)

Monthly snapshots of every ranking are immutable and publicly accessible at /track-record. The “We Got It Wrong” log is published. This is not a feature flag.

What this site is not

Opinions, not personalized advice. The site expresses views grounded in the scorecard and technical setup — “buy on a pullback,” “tracking for entry,” “pass at this price.” What it does not produce: imperative trade commands, specific price targets with deadlines, or advice tailored to any individual situation. Operates under the Investment Advisers Act publisher exemption (general-circulation publication, no managed money, no compensation tied to specific calls). Full posture on /disclosures.