QEDGE AMFR Copilot

Packaged agent

Compounder Identifier v2

A script-first multi-agent framework for identifying durable compounders. Version 2 reduces the research factor list to 40 orthogonal drivers, gathers MCP-backed evidence in parallel, computes the formula-driven parts—including a five-point proven compounding record—and lets LLM subagents adjudicate judgment-heavy factors directly from evidence before the analyst confirm gate.

40orthogonal factors
100weight points
7evidence agents
0–2score rubric

Overview

From scoped company to composite score

Compounder Identifier v2 extends the shipped v1 agent with a larger, more orthogonal factor set and a heavier reliance on skill scripts for calculations. Subagents gather evidence; Python scripts normalize time series, compute peer baselines, and prepare factor inputs; LLM subagents adjudicate qualitative and mixed factors directly against the rubric; scoring scripts apply weights and audit the final scorecard.

Each factor scores on a compact 0 / 1 / 2 rubric. Weights sum to 100. Factual and high-judgment compounder drivers carry more weight. Text-based factors are overlays — they inform judgment but do not override weak fundamentals.

Compared to v1: v1 scores 20 factors across CA matrix, moat sources, and anti-fragility layers. v2 covers all v1 factors (often split across multiple reduced drivers) plus reinvestment runway, accounting quality, and richer growth durability metrics — with scripts for measurable inputs and LLM adjudication where evidence requires judgment.

Design

Orthogonal by mechanism

  1. One factor per economic mechanism — avoid scoring the same driver twice.
  2. Prefer trajectories over snapshots when persistence is the mechanism.
  3. Separate quality, growth, reinvestment, balance-sheet risk, capital allocation, and moat.
  4. Use text factors as overlays, not substitutes for fundamentals.
  5. Keep source-gated factors explicit when data requires web or broker text.
  6. Qualitative signals — peer comparison, cross-geography precedent, AI disruption, guidance — are cited evidence that sets a factor's score, never a separate score.
Lens/tilt handling: v2 does not add separate lens scores or hidden tilts. The former lens reads are evidence checks that strengthen, cap, or challenge the relevant factor score inside the 40-factor model.

Trajectory / snapshot legend

Snapshot

Scores the current level, exposure, or structural state at the analysis date.

Trajectory

Scores demonstrated direction, persistence, stability, or change through time.

Snapshot + trajectory

Uses both the current level and the time-series trend; neither alone is sufficient.

Data need legend

Historical / observed

Realized history, latest reported data, or current observations — no consensus required.

Expectation

Forward-looking: TAM, guidance, consensus, disruption risk, or policy outlook.

Historical + expectation

Both realized record and forward evidence; score separates demonstrated record from runway/risk.

Peer need legend

company

Company history, filings, and KPIs are sufficient.

peer

Peer context materially improves calibration.

peer/industry

Needs peer, industry, market-share, or market-structure context.

MCP support

Source map and market support matrix

Each factor names one or more data types in its MCP support field. Resolve those data types to concrete MCP slugs by listing market using the matrix below. A dash means there is no reliable structured MCP for that market.

Numeric data types such as Fundamentals, Segment/Geo, Payout, Employees, Prices, and Forecast feed formula and proxy inputs. Text data types such as Filing-text, Transcript, Web/Broker-text, News, and Macro/Reg feed evidence for LLM adjudication.

MCP source map

wind

China A-share prices, quotes, trading calendars, macro, and A-share fundamentals such as revenue, net profit, assets, equity, ROE, leverage, and EPS.

defeatbeta

Public equity fundamentals, news, and transcripts, especially US and many global public equities.

stockanalysis

Global fundamentals, segment/geography KPIs, employees, analyst forecasts, dividends, and transcripts.

sec-edgar

US filings, XBRL company facts, 10-K/10-Q/8-K/proxy, insider filings, and ownership filings.

edgar-13f

US institutional holders, filer portfolios, and quarter-over-quarter holding changes.

yfinance

Prices, statements, news, holders, insider transactions, and sector data.

twse

Taiwan (TWSE/TPEx) structured data: income statement, balance sheet, cash flow, monthly revenue, valuation ratios (P/E, P/B, ROE, dividend yield), adjusted daily-K and TAIEX/TPEx index history, dividends, and institutional/insider holdings.

firecrawl

Public web research and parsing of PDF, HTML, DOCX, and XLSX sources.

rag

Ingested broker research reports and papers; key source for market share, moat, runway, and qualitative evidence.

Support matrix by data type

Data typeUSHKChina A-shareOther ADR / foreignTaiwan
Fundamentalsdefeatbeta, stockanalysis, yfinance, sec-edgarstockanalysiswinddefeatbeta, stockanalysis, yfinancetwse
Segment/Geosec-edgar, stockanalysisstockanalysiswindstockanalysis, sec-edgar (20-F)twse (monthly revenue), firecrawl (公開資訊觀測站), rag
Filing-textsec-edgar, ragfirecrawl (HKEX), ragfirecrawl, ragsec-edgar (20-F), ragfirecrawl (公開資訊觀測站), rag
Transcriptdefeatbeta, stockanalysis, ragstockanalysis, ragstockanalysis, ragdefeatbeta, stockanalysis, ragfirecrawl (法說會), rag
Holdersedgar-13f, yfinancefirecrawl (HKEX), ragwindyfinance, edgar-13f if CUSIPtwse
Insidersec-edgar (proxy/Form 4), yfinancefirecrawl (HKEX), ragwindyfinance, sec-edgar (20-F, limited)twse
Payoutstockanalysis, yfinance, sec-edgarstockanalysiswindstockanalysis, yfinancetwse
Employeesstockanalysis, sec-edgarstockanalysisstockanalysis, windstockanalysisfirecrawl (年報), rag
Web/Broker-textrag, firecrawlrag, firecrawlrag, firecrawlrag, firecrawlrag, firecrawl
Newsdefeatbeta, yfinance, firecrawl, ragfirecrawl, stockanalysis, ragwind, firecrawl, ragdefeatbeta, yfinance, firecrawl, ragfirecrawl, rag
Pricesyfinance, stockanalysis, defeatbetastockanalysiswindyfinance, stockanalysistwse
Forecaststockanalysisstockanalysiswindstockanalysis
Macro/Regsec-edgar, rag, firecrawlrag, firecrawlwind, rag, firecrawlsec-edgar (20-F), rag, firecrawltwse (index), rag, firecrawl

Fundamentals

US
defeatbeta, stockanalysis, yfinance, sec-edgar
HK
stockanalysis
China A-share
wind
Other ADR / foreign
defeatbeta, stockanalysis, yfinance
Taiwan
twse

Segment/Geo

US
sec-edgar, stockanalysis
HK
stockanalysis
China A-share
wind
Other ADR / foreign
stockanalysis, sec-edgar (20-F)
Taiwan
twse (monthly revenue), firecrawl (公開資訊觀測站), rag

Filing-text

US
sec-edgar, rag
HK
firecrawl (HKEX), rag
China A-share
firecrawl, rag
Other ADR / foreign
sec-edgar (20-F), rag
Taiwan
firecrawl (公開資訊觀測站), rag

Transcript

US
defeatbeta, stockanalysis, rag
HK
stockanalysis, rag
China A-share
stockanalysis, rag
Other ADR / foreign
defeatbeta, stockanalysis, rag
Taiwan
firecrawl (法說會), rag

Holders

US
edgar-13f, yfinance
HK
firecrawl (HKEX), rag
China A-share
wind
Other ADR / foreign
yfinance, edgar-13f if CUSIP
Taiwan
twse

Insider

US
sec-edgar (proxy/Form 4), yfinance
HK
firecrawl (HKEX), rag
China A-share
wind
Other ADR / foreign
yfinance, sec-edgar (20-F, limited)
Taiwan
twse

Payout

US
stockanalysis, yfinance, sec-edgar
HK
stockanalysis
China A-share
wind
Other ADR / foreign
stockanalysis, yfinance
Taiwan
twse

Employees

US
stockanalysis, sec-edgar
HK
stockanalysis
China A-share
stockanalysis, wind
Other ADR / foreign
stockanalysis
Taiwan
firecrawl (年報), rag

Web/Broker-text

US
rag, firecrawl
HK
rag, firecrawl
China A-share
rag, firecrawl
Other ADR / foreign
rag, firecrawl
Taiwan
rag, firecrawl

News

US
defeatbeta, yfinance, firecrawl, rag
HK
firecrawl, stockanalysis, rag
China A-share
wind, firecrawl, rag
Other ADR / foreign
defeatbeta, yfinance, firecrawl, rag
Taiwan
firecrawl, rag

Prices

US
yfinance, stockanalysis, defeatbeta
HK
stockanalysis
China A-share
wind
Other ADR / foreign
yfinance, stockanalysis
Taiwan
twse

Forecast

US
stockanalysis
HK
stockanalysis
China A-share
wind
Other ADR / foreign
stockanalysis
Taiwan

Macro/Reg

US
sec-edgar, rag, firecrawl
HK
rag, firecrawl
China A-share
wind, rag, firecrawl
Other ADR / foreign
sec-edgar (20-F), rag, firecrawl
Taiwan
twse (index), rag, firecrawl

Factor model

40 factors across 10 categories

Factors are grouped by economic mechanism. Each row shows trajectory type, data and peer requirements, weight, scoring rubric, calculation summary, and MCP support.

17% of framework

Profitability Quality

Return on capital, cash returns, margin quality, and operating leverage.

#FactorTypeDataPeerWtRubric (0/1/2)
1Return on capital levelNormalized profitability of the operating asset base, measured against the cost of capital.Multi-period median ROIC; ROE is primary when invested capital is tiny or negative (net-cash balance sheets mechanically inflate ROIC); ROE is the fallback metric of record for financials; peer percentile as cross-check only; flag latest-period distortions (e.g. a spike from invested-capital shrinkage) rather than letting them drag the median read.MCP data types: FundamentalsSnapshot + trajectoryHistorical / observedpeer50 = sub-WACC or low-single-digit 5y median return (<= ~7% ROIC, or ROE for financials) or negative/cyclically impaired; 1 = comfortably above WACC but not elite (~8-15%), including a peer leader in a structurally low-return, capital-heavy industry; 2 = high AND durable absolute return (>= ~15% 5y median ROIC, or ROE for financials) sustained through a cycle. Peer percentile is a cross-check only, never the basis for a 2.
2Return on capital stability and record lengthPersistence of high returns through cycles and length of proven record.Duration above WACC when cited, peak-to-trough drawdown (especially toward WACC), profitable/ROIC year counts, cycle_tested and its basis, coefficient of variation (stdev / median) rather than raw stdev. An upside outlier on a very high base inflates raw stdev without signalling instability; a business too stable to produce a registrable drawdown is cycle-tested by preserved earning power, not unproven.MCP data types: FundamentalsTrajectoryHistorical / observedcompany30 short record / volatile — returns dip toward or below WACC (or negative) with no sustained high-return base; 1 adequate — record long enough but returns drift toward WACC under stress, or the base sits only modestly above WACC; 2 long stable high-return record (score 2 requires ~8 annual observations, sustained positive/high returns, and a cycle-tested record — either an adverse episode survived or a long record whose drawdowns stayed shallow). Volatility is judged relative to the return level (stdev / median), not raw dispersion: a wide spread around a very high mean with no sub-WACC year is stable, not volatile.
3Cash return on capitalConversion of capital base into owner cash earnings.FCF or owner earnings / invested capital; rolling median; count of positive years. Mark status na for financials — companies whose reported cash flow is dominated by balance-sheet flows (deposit/loan, float, securities inventory) rather than operating cash generation; their owner-cash generation is read through ROE + dividend payout under prof.roic_level.MCP data types: FundamentalsFiling-textSnapshot + trajectoryHistorical / observedcompany40 weak; 1 adequate; 2 high recurring owner-cash return (score 2 requires ~5 years of positive owner-cash returns — a shorter history caps at 1 however spectacular the latest year)
4Margin quality and peer premiumDurable unit-economics advantage versus peers, including resilience of gross margin under direct-cost pressure when material.Gross and operating margin minus peer median; gross-margin durability through input-cost cycles; margin volatility and record length over history.MCP data types: FundamentalsSnapshot + trajectoryHistorical / observedpeer/industry30 no premium; 1 modest/volatile; 2 clear durable peer premium (score 2 requires ~5 years of history — a shorter record caps at 1 however strong the latest margin)
5Operating leverage profileWhether scale improves profitability without fragile cyclicality.Operating margin change vs revenue growth; up/down-cycle behavior; positive operating-income year count.MCP data types: FundamentalsTrajectoryHistorical / observedcompany20 scale hurts margins; 1 mixed; 2 margins improve with scale (score 2 requires ≥5 positive operating-income years)
#15%

Return on capital level

Normalized profitability of the operating asset base, measured against the cost of capital.

Type
Snapshot + trajectory
Data
Historical / observed
Peer
peer

Rubric: 0 = sub-WACC or low-single-digit 5y median return (<= ~7% ROIC, or ROE for financials) or negative/cyclically impaired; 1 = comfortably above WACC but not elite (~8-15%), including a peer leader in a structurally low-return, capital-heavy industry; 2 = high AND durable absolute return (>= ~15% 5y median ROIC, or ROE for financials) sustained through a cycle. Peer percentile is a cross-check only, never the basis for a 2.

Multi-period median ROIC; ROE is primary when invested capital is tiny or negative (net-cash balance sheets mechanically inflate ROIC); ROE is the fallback metric of record for financials; peer percentile as cross-check only; flag latest-period distortions (e.g. a spike from invested-capital shrinkage) rather than letting them drag the median read.

MCP data types: Fundamentals

#23%

Return on capital stability and record length

Persistence of high returns through cycles and length of proven record.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 short record / volatile — returns dip toward or below WACC (or negative) with no sustained high-return base; 1 adequate — record long enough but returns drift toward WACC under stress, or the base sits only modestly above WACC; 2 long stable high-return record (score 2 requires ~8 annual observations, sustained positive/high returns, and a cycle-tested record — either an adverse episode survived or a long record whose drawdowns stayed shallow). Volatility is judged relative to the return level (stdev / median), not raw dispersion: a wide spread around a very high mean with no sub-WACC year is stable, not volatile.

Duration above WACC when cited, peak-to-trough drawdown (especially toward WACC), profitable/ROIC year counts, cycle_tested and its basis, coefficient of variation (stdev / median) rather than raw stdev. An upside outlier on a very high base inflates raw stdev without signalling instability; a business too stable to produce a registrable drawdown is cycle-tested by preserved earning power, not unproven.

MCP data types: Fundamentals

#34%

Cash return on capital

Conversion of capital base into owner cash earnings.

Type
Snapshot + trajectory
Data
Historical / observed
Peer
company

Rubric: 0 weak; 1 adequate; 2 high recurring owner-cash return (score 2 requires ~5 years of positive owner-cash returns — a shorter history caps at 1 however spectacular the latest year)

FCF or owner earnings / invested capital; rolling median; count of positive years. Mark status na for financials — companies whose reported cash flow is dominated by balance-sheet flows (deposit/loan, float, securities inventory) rather than operating cash generation; their owner-cash generation is read through ROE + dividend payout under prof.roic_level.

MCP data types: FundamentalsFiling-text

#43%

Margin quality and peer premium

Durable unit-economics advantage versus peers, including resilience of gross margin under direct-cost pressure when material.

Type
Snapshot + trajectory
Data
Historical / observed
Peer
peer/industry

Rubric: 0 no premium; 1 modest/volatile; 2 clear durable peer premium (score 2 requires ~5 years of history — a shorter record caps at 1 however strong the latest margin)

Gross and operating margin minus peer median; gross-margin durability through input-cost cycles; margin volatility and record length over history.

MCP data types: Fundamentals

#52%

Operating leverage profile

Whether scale improves profitability without fragile cyclicality.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 scale hurts margins; 1 mixed; 2 margins improve with scale (score 2 requires ≥5 positive operating-income years)

Operating margin change vs revenue growth; up/down-cycle behavior; positive operating-income year count.

MCP data types: Fundamentals

10% of framework

Growth Durability

Revenue and FCF compounding plus drawdown resilience and growth-engine breadth.

#FactorTypeDataPeerWtRubric (0/1/2)
6Revenue growth durabilityPersistence of top-line compounding.Revenue CAGR across available horizons, growth hit rate, rolling CAGR slope, financial history years, cycle_tested and its basis, revenue max drawdown.MCP data types: FundamentalsTrajectoryHistorical / observedpeer30 weak/erratic; 1 mid/slowing; 2 persistent above-peer compounding (score 2 requires ≥8 annual observations and a cycle-tested record — either an adverse period survived or a long record whose revenue drawdown stayed shallow)
7Earnings and FCF growth durabilityAbility to compound economic output, not just sales.Operating income CAGR, FCF CAGR, recovery pace after drawdown, positive OI and FCF year counts.MCP data types: FundamentalsTrajectoryHistorical / observedpeer30 weak; 1 adequate; 2 durable economic-output compounding (score 2 requires ≥5 positive operating-income years and ≥5 positive FCF years)
8Fundamental downside resilienceSeverity of business drawdowns in adverse periods, including relative resilience versus peers.Max drawdown of revenue, OI, FCF, ROIC; peer-relative drawdown/rank in same windows.MCP data types: FundamentalsPricesWeb/Broker-textTrajectoryHistorical / observedpeer30 severe; 1 recoverable; 2 shallow drawdowns and fast recovery
9Independent growth-engine breadthWhether growth comes from multiple independent engines rather than one fading engine.Segment growth dispersion, count of independently growing segments/geographies, contribution of the largest engine, active secondary-engine contribution. Score 2 only when the engines are materially independent and none dominates growth; a dominant engine with extensions is 1, not 0 or 2.MCP data types: Segment/GeoTrajectoryHistorical / observedcompany10 narrow/fading — a single engine with no active secondary engines (narrow alone is not enough: the sole engine must also be fading); 1 mixed — a dominant single engine (largest engine still a large majority of revenue) with active secondary engines such as sub-brand/price-tier lines, adjacent categories, or material geo/channel diversification; 2 multiple growing segments/geographies — several materially independent engines, none dominant, each contributing meaningfully to growth
#63%

Revenue growth durability

Persistence of top-line compounding.

Type
Trajectory
Data
Historical / observed
Peer
peer

Rubric: 0 weak/erratic; 1 mid/slowing; 2 persistent above-peer compounding (score 2 requires ≥8 annual observations and a cycle-tested record — either an adverse period survived or a long record whose revenue drawdown stayed shallow)

Revenue CAGR across available horizons, growth hit rate, rolling CAGR slope, financial history years, cycle_tested and its basis, revenue max drawdown.

MCP data types: Fundamentals

#73%

Earnings and FCF growth durability

Ability to compound economic output, not just sales.

Type
Trajectory
Data
Historical / observed
Peer
peer

Rubric: 0 weak; 1 adequate; 2 durable economic-output compounding (score 2 requires ≥5 positive operating-income years and ≥5 positive FCF years)

Operating income CAGR, FCF CAGR, recovery pace after drawdown, positive OI and FCF year counts.

MCP data types: Fundamentals

#83%

Fundamental downside resilience

Severity of business drawdowns in adverse periods, including relative resilience versus peers.

Type
Trajectory
Data
Historical / observed
Peer
peer

Rubric: 0 severe; 1 recoverable; 2 shallow drawdowns and fast recovery

Max drawdown of revenue, OI, FCF, ROIC; peer-relative drawdown/rank in same windows.

MCP data types: FundamentalsPricesWeb/Broker-text

#91%

Independent growth-engine breadth

Whether growth comes from multiple independent engines rather than one fading engine.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 narrow/fading — a single engine with no active secondary engines (narrow alone is not enough: the sole engine must also be fading); 1 mixed — a dominant single engine (largest engine still a large majority of revenue) with active secondary engines such as sub-brand/price-tier lines, adjacent categories, or material geo/channel diversification; 2 multiple growing segments/geographies — several materially independent engines, none dominant, each contributing meaningfully to growth

Segment growth dispersion, count of independently growing segments/geographies, contribution of the largest engine, active secondary-engine contribution. Score 2 only when the engines are materially independent and none dominates growth; a dominant engine with extensions is 1, not 0 or 2.

MCP data types: Segment/Geo

15% of framework

Reinvestment Runway

Capital intensity, incremental returns, capacity headroom, white-space, and optionality.

#FactorTypeDataPeerWtRubric (0/1/2)
10Capital intensity and reinvestment burdenHow much capital each unit of growth consumes, and whether growth is capital-light or capital-hungry.Capex/revenue, capex/NOPAT, depreciation/EBITDA, maintenance vs growth capex. Mark status na for financials — companies whose capital metrics are balance-sheet artifacts rather than operating capital deployed.MCP data types: FundamentalsFiling-textSnapshot + trajectoryHistorical + expectationcompany30 capital-hungry/rising burden; 1 manageable; 2 capital-light with low reinvestment need
11Incremental return on reinvestmentReturn generated by recent capital deployment.Rolling incremental delta NOPAT / delta invested capital; capex/revenue; realized price direction.MCP data types: FundamentalsTrajectoryHistorical / observedcompany50 poor; 1 acceptable; 2 high returns on recent reinvestment (score 2 is capped at 1 for a capital-hungry business with no demonstrated pricing power: returns earned deploying capital into a market whose own price is falling are not durable)
12Capacity headroomRoom to grow with existing capital and efficiency of converting incremental capital into revenue.Sales-to-capital, PP&E turnover, utilization, planned capex vs sales; delta revenue / delta invested capital. Mark status na for financials whose capacity metrics are balance-sheet artifacts.MCP data types: FundamentalsFiling-textTranscriptWeb/Broker-textSnapshot + trajectoryHistorical + expectationcompany20 no headroom / saturated capacity; 1 manageable; 2 ample headroom or high sales per incremental capital
13Market white-space runwayRemaining opportunity within the existing market relative to current scale, supported by TAM, penetration, and reference-class evidence.Revenue/users/share vs TAM; underpenetrated / mature / saturated system state; comparable cross-geo precedents. Judge practical headroom against system maturity (e.g. already-high credit/banking penetration) and sector growth momentum, not just the inverse of current share. Mark status na when a credible TAM or reference-class precedent cannot be established.MCP data types: Web/Broker-textSegment/GeoSnapshot + trajectoryExpectationpeer30 saturated, or runway that rests on raw arithmetic penetration alone; 1 moderate practical runway; 2 large credible runway vs scale, backed by reference-class evidence. Arithmetic penetration multiples are a starting point, never the verdict: a low penetration share in an already-mature system does not create practical runway.
14Optionality and second-act playbookExecutable second-act / adjacent-market / cross-geography growth playbook distinct from existing-market runway.Track record entering adjacencies/geographies; platform extensibility; evidence of execution rather than narrative — specifically the second act's scaled revenue share and/or operating profit, not early-stage launches.MCP data types: FundamentalsWeb/Broker-textTranscriptSegment/GeoSnapshot + trajectoryExpectationcompany20 no credible second act; 1 early/unproven optionality; 2 demonstrated repeatable expansion playbook — the second act is already scaled and economically material (a meaningful revenue share and/or operating profit), not just a narrative. A second act that has reached profit-at-scale or a material revenue share is 2, not 1.
#103%

Capital intensity and reinvestment burden

How much capital each unit of growth consumes, and whether growth is capital-light or capital-hungry.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
company

Rubric: 0 capital-hungry/rising burden; 1 manageable; 2 capital-light with low reinvestment need

Capex/revenue, capex/NOPAT, depreciation/EBITDA, maintenance vs growth capex. Mark status na for financials — companies whose capital metrics are balance-sheet artifacts rather than operating capital deployed.

MCP data types: FundamentalsFiling-text

#115%

Incremental return on reinvestment

Return generated by recent capital deployment.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 poor; 1 acceptable; 2 high returns on recent reinvestment (score 2 is capped at 1 for a capital-hungry business with no demonstrated pricing power: returns earned deploying capital into a market whose own price is falling are not durable)

Rolling incremental delta NOPAT / delta invested capital; capex/revenue; realized price direction.

MCP data types: Fundamentals

#122%

Capacity headroom

Room to grow with existing capital and efficiency of converting incremental capital into revenue.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
company

Rubric: 0 no headroom / saturated capacity; 1 manageable; 2 ample headroom or high sales per incremental capital

Sales-to-capital, PP&E turnover, utilization, planned capex vs sales; delta revenue / delta invested capital. Mark status na for financials whose capacity metrics are balance-sheet artifacts.

MCP data types: FundamentalsFiling-textTranscriptWeb/Broker-text

#133%

Market white-space runway

Remaining opportunity within the existing market relative to current scale, supported by TAM, penetration, and reference-class evidence.

Type
Snapshot + trajectory
Data
Expectation
Peer
peer

Rubric: 0 saturated, or runway that rests on raw arithmetic penetration alone; 1 moderate practical runway; 2 large credible runway vs scale, backed by reference-class evidence. Arithmetic penetration multiples are a starting point, never the verdict: a low penetration share in an already-mature system does not create practical runway.

Revenue/users/share vs TAM; underpenetrated / mature / saturated system state; comparable cross-geo precedents. Judge practical headroom against system maturity (e.g. already-high credit/banking penetration) and sector growth momentum, not just the inverse of current share. Mark status na when a credible TAM or reference-class precedent cannot be established.

MCP data types: Web/Broker-textSegment/Geo

#142%

Optionality and second-act playbook

Executable second-act / adjacent-market / cross-geography growth playbook distinct from existing-market runway.

Type
Snapshot + trajectory
Data
Expectation
Peer
company

Rubric: 0 no credible second act; 1 early/unproven optionality; 2 demonstrated repeatable expansion playbook — the second act is already scaled and economically material (a meaningful revenue share and/or operating profit), not just a narrative. A second act that has reached profit-at-scale or a material revenue share is 2, not 1.

Track record entering adjacencies/geographies; platform extensibility; evidence of execution rather than narrative — specifically the second act's scaled revenue share and/or operating profit, not early-stage launches.

MCP data types: FundamentalsWeb/Broker-textTranscriptSegment/Geo

9% of framework

Demand Captivity & Pricing Power

Retention, price/mix power, and concentration risk.

#FactorTypeDataPeerWtRubric (0/1/2)
15Retention or repeat demandLikelihood customers keep buying without repeated acquisition cost.Disclosed renewal/churn/NRR, persistency, repurchase, rollover or same-store-sales rate; a disclosed engagement-stickiness rate (DAU/MAU, sessions-per-user, time-spent growth, paid-subscription renewal/retention) for consumer platforms; contracted volume under long-term agreements or statutory offtake. Declare inputs.retention_evidence_type as repeat_measure (a disclosed repeat/renewal rate), engagement_stickiness (a disclosed engagement rate — must also declare inputs.engagement_stickiness_rate with the value), contract_volume (contracted/regulated offtake), share_proxy (share/balance/count/MAU/membership/tenure/backlog/concentration), or none. A raw count (MAU, subscriber count, membership) is share_proxy, not engagement_stickiness: the stickiness route needs a ratio/rate, not a level. Mark status: na only when there is genuinely no customer to retain; a commodity or project business still scores via contract_volume or a switching-barrier inference.MCP data types: TranscriptFiling-textWeb/Broker-textTrajectoryHistorical / observedpeer30 = no measured repeat/renewal/persistence rate AND no retention barrier — a share proxy, balance, customer count, MAU, membership, tenure, backlog or concentration figure is not retention (route the switching-barrier inference to moat.switching_cost). 1 = a measured but weak/partial rate (a low repurchase, renewal or persistency rate), or a real retention barrier (design-in/qualification/brand/network effect) where retention is inferred because no strong measured rate is disclosed and the lock is re-won each cycle. 2 = a measured strong repeat/renewal/persistence rate, a disclosed engagement-stickiness rate (DAU/MAU ratio, sessions-per-user, time-spent growth, or paid-subscription renewal/retention), OR contracted volume / statutory offtake covering the majority of output.
16Price/mix powerAbility to raise effective price or mix without volume damage, calibrated against peer and cohort trends.Price/mix contribution; ASP/AOV/ARPU CAGR; peer-relative price/take-rate trend; margin recovery after pricing; secondary/resale market-price trend where one exists. Declare inputs.realized_price_trend as rising, flat, falling, or unknown.MCP data types: FundamentalsTranscriptWeb/Broker-textTrajectoryHistorical / observedpeer50 no pricing power; 1 partial; 2 sustained price/mix gains on a realized price that actually rose (score 2 is capped at 1 when realized price is falling — defending unit margin on a falling price is cost control, which the margin factors score)
17Business concentration and dependency riskFragility from reliance on few customers, channels, products, geographies, or platforms.Largest exposure share, correlated-shock share, concentration trend.MCP data types: Filing-textSegment/GeoWeb/Broker-textSnapshot + trajectoryHistorical / observedcompany10 concentrated fragile exposure; 1 manageable; 2 diversified/resilient
#153%

Retention or repeat demand

Likelihood customers keep buying without repeated acquisition cost.

Type
Trajectory
Data
Historical / observed
Peer
peer

Rubric: 0 = no measured repeat/renewal/persistence rate AND no retention barrier — a share proxy, balance, customer count, MAU, membership, tenure, backlog or concentration figure is not retention (route the switching-barrier inference to moat.switching_cost). 1 = a measured but weak/partial rate (a low repurchase, renewal or persistency rate), or a real retention barrier (design-in/qualification/brand/network effect) where retention is inferred because no strong measured rate is disclosed and the lock is re-won each cycle. 2 = a measured strong repeat/renewal/persistence rate, a disclosed engagement-stickiness rate (DAU/MAU ratio, sessions-per-user, time-spent growth, or paid-subscription renewal/retention), OR contracted volume / statutory offtake covering the majority of output.

Disclosed renewal/churn/NRR, persistency, repurchase, rollover or same-store-sales rate; a disclosed engagement-stickiness rate (DAU/MAU, sessions-per-user, time-spent growth, paid-subscription renewal/retention) for consumer platforms; contracted volume under long-term agreements or statutory offtake. Declare inputs.retention_evidence_type as repeat_measure (a disclosed repeat/renewal rate), engagement_stickiness (a disclosed engagement rate — must also declare inputs.engagement_stickiness_rate with the value), contract_volume (contracted/regulated offtake), share_proxy (share/balance/count/MAU/membership/tenure/backlog/concentration), or none. A raw count (MAU, subscriber count, membership) is share_proxy, not engagement_stickiness: the stickiness route needs a ratio/rate, not a level. Mark status: na only when there is genuinely no customer to retain; a commodity or project business still scores via contract_volume or a switching-barrier inference.

MCP data types: TranscriptFiling-textWeb/Broker-text

#165%

Price/mix power

Ability to raise effective price or mix without volume damage, calibrated against peer and cohort trends.

Type
Trajectory
Data
Historical / observed
Peer
peer

Rubric: 0 no pricing power; 1 partial; 2 sustained price/mix gains on a realized price that actually rose (score 2 is capped at 1 when realized price is falling — defending unit margin on a falling price is cost control, which the margin factors score)

Price/mix contribution; ASP/AOV/ARPU CAGR; peer-relative price/take-rate trend; margin recovery after pricing; secondary/resale market-price trend where one exists. Declare inputs.realized_price_trend as rising, flat, falling, or unknown.

MCP data types: FundamentalsTranscriptWeb/Broker-text

#171%

Business concentration and dependency risk

Fragility from reliance on few customers, channels, products, geographies, or platforms.

Type
Snapshot + trajectory
Data
Historical / observed
Peer
company

Rubric: 0 concentrated fragile exposure; 1 manageable; 2 diversified/resilient

Largest exposure share, correlated-shock share, concentration trend.

MCP data types: Filing-textSegment/GeoWeb/Broker-text

24% of framework

Moat Structure

Market share, industry structure, economic spread, structural barriers, switching/search costs, counter-positioning, and disruption exposure. Composite scores the best 7 of 8 barriers (drop-lowest-1).

#FactorTypeDataPeerWtRubric (0/1/2)
18Market share strength and trendEvidence the company is winning or defending share in its real competitive arena and total market.Arena and total-market share/rank, period change, observation count/span, continuous top-tier years, peer-cohort share trend, expected direction.MCP data types: Web/Broker-textSegment/GeoTranscriptSnapshot + trajectoryHistorical + expectationpeer/industry30 weak/losing; 1 stable/niche; 2 leading and gaining share (score 2 requires ≥3 dated observations spanning ≥3 years with top-tier share maintained or gained)
19Industry structureAttractiveness of the competitive field independent of company quality.HHI, top-3/top-5 share, competitor count, rationality score.MCP data types: Web/Broker-textMacro/RegSnapshotHistorical / observedpeer/industry20 fragmented/irrational; 1 mixed; 2 concentrated/rational attractive structure
20Relative economic spread versus rivalsDirect evidence of superior economics.ROIC, gross/EBIT/FCF margin minus peer median/top quartile.MCP data types: FundamentalsSnapshot + trajectoryHistorical / observedpeer/industry50 no spread; 1 modest; 2 clear superior economics vs peers
21Structural barrier evidenceEvidence of enforceable structural barriers: regulation, licences, IP/patents, cornered resources, scale/network effects, or arena boundaries.Apply the entry test (does unlimited capital plus 3-5 years suffice?), the licence-sharing test (is the permit/charter held by many peers? then it is the industry's barrier, not the company's), and the through-cycle return test (returns near/below cost of capital through a cycle fail the moat claim). Never credit a barrier the company does not own (a supplier's IP/fab/allocation, a customer's reference design, a parent's asset). Route brand, reputation, relationships, agency forces, and distribution networks to switching/search cost, not this factor. Record barrier type (regulatory/IP/licence/resource/scale/network/arena), boundary mechanism, and durability.MCP data types: Filing-textTranscriptWeb/Broker-textMacro/RegSnapshot + trajectoryHistorical + expectationpeer50 = no enforceable barrier — contract assembly / ODM with no proprietary process, merchant PCB, commodity manufacturing without demonstrable scale economics, or a large assembler at low-single-digit margins; a moat claim also fails outright when returns have been near or below cost of capital through a cycle (a barrier that does not pay is not a moat). 1 = a real but replicable/contestable barrier — a licence held by many peers (the industry's barrier, not this company's), patents/IP, a certification or qualification regime, accumulated process know-how and yield, a branded consumer position, or most fabless design — clearable by a funded rival within roughly 3-5 years. 2 = a closed or irreplaceable barrier — a statutory monopoly or closed concession, a state-granted exclusive franchise, an irreproducible physical endowment (cornered resource / unique site), or frontier fabrication at the scale frontier. 2 requires that unlimited capital still cannot reproduce the position.
22Customer switching costCost, disruption, and risk a customer bears to replace the company with an alternative.Apply the switching test (what must the customer forfeit or re-do — re-certification, re-tooling, re-permitting, contracted volume, surrendered cash value — and does it exceed ~2 quarters?), the re-win test (a lock re-competed each platform/generation/nomination cycle caps at 1), and the margin override (gross margin below ~15% with no pricing power scores 0 on every moat factor regardless of position). A lock that is a category feature shared with every rival earns 1 unless company-specific evidence shows it binding harder (ranked persistency, multi-product retention). Route brand habit, reputation, relationships, agency forces, distribution reach, and membership counts to search_reputation_cost / demand.retention, not this factor. Split books are scored on the revenue-weighted mix of locked vs unlocked business.MCP data types: Filing-textTranscriptWeb/Broker-textSnapshot + trajectoryHistorical + expectationcompany30 = trivial to switch — the customer can substitute inside ~2 quarters with nothing to re-certify, re-tool, re-permit or forfeit; brand habit, procurement inertia, membership counts, distribution reach and relationship banking are NOT switching cost (they are scored under search_reputation_cost / demand.retention). 1 = moderate friction — a real cost or delay to switch that does not prevent it: a lock that is a category feature shared with every rival (e.g. a life-insurance cash-value lock), a design-in or qualification that lasts one platform/generation/nomination cycle and is re-won each cycle, or a lock that covers only part of the revenue book. 2 = high switching-cost lock-in — a customer cannot move inside ~2 quarters without forfeiting real value, and the lock is company-specific and durable rather than a category feature: contracted volume with prepayments, statutory offtake, an architectural/instruction-set migration barrier, or company-specific retention that measurably exceeds peers.
23Search and reputation costThe work the name does that the product's own observable attributes do not: a first-time buyer defaulting to it to avoid a payment, identity, or authenticity error without trial.Score the captive surface only: the interface a first-time buyer defaults to (payment, identity, gifting), not the triable side SKU — a triable side segment cannot zero a default trust rail. Route away: (1) network effects and installed base — 'everyone is already on it', or an install prompted by someone else, is switching cost or a structural barrier, not search cost; this factor only fires when the name does work the network does not — a stranger choosing it to avoid a payment, identity, or authenticity error without trial. (2) certification, type-test, tape-out, PDK or own-qualification cost is moat.switching_cost, not this factor — an informed buyer who validates the product itself pays no search cost. (3) a trust premium shared by many peers (state backing, deposit insurance, a public procurement catalogue, G-SIB status) is the industry's asset, not the company's, so score 0. (4) a free, public reputation signal (league table, rating, published rank/share, reviews) imposes no search cost, so score 0. (5) a posted-grade or assayed commodity (fuel, coal, metals, panels, JEDEC parts) is verified rather than trusted, so score 0. (6) fame alone — a well-known trademark with nothing unverifiable attached — scores 0. Score 1 only when a first-time buyer defaults to the name to avoid a pre-purchase error and trusted rivals exist; 2 only when consumption is the sole assessment route and this name is the only trusted channel. Record the trust-rail basis (payment / identity / gifting / authenticity / product-quality / none) and the named trusted alternatives.MCP data types: Web/Broker-textTranscriptNewsSnapshotHistorical + expectationcompany1Score the name's trust-rail work, not the easiest SKU to trial. Deciding test: does a first-time buyer default to this name to avoid a payment, identity, or authenticity error without any trial? 0 = quality is observable before purchase — a spec, standard, assay, posted grade, a quick trial, a buyer who already knows the vendor set, or a shelf SKU one position away — OR the name is merely famous (a well-known trademark) with nothing unverifiable attached. 1 = first-time buyers default to this name as the trusted interface for payment, identity, or gifting to avoid an error without trial, AND trusted rivals clear the same bar. 2 = the attribute can only be assessed by consumption, AND this brand or trusted channel is the only route a buyer trusts against an authenticity or outcome error, with no equally-trusted alternative.
24Counter-positioningA superior business model incumbents cannot copy without damaging their existing economics.Incumbent margin/channel/cannibalization conflict; evidence of incumbent inaction or failed response; model asymmetry.MCP data types: Web/Broker-textTranscriptNewsSnapshot + trajectoryHistorical + expectationcompany30 no counter-positioning; 1 partial/contestable; 2 clear incumbent self-harm to respond
25Substitution and disruption exposureProbability that the moat is being bypassed by substitutes, new channels, regulation, or AI-enabled value-chain change.Text score from substitution, AI, regulatory, channel-shift, product-cycle, and competitor evidence.MCP data types: Web/Broker-textTranscriptNewsSnapshot + trajectoryExpectationpeer20 high disruption risk; 1 manageable; 2 low risk or company advantaged
#183%

Market share strength and trend

Evidence the company is winning or defending share in its real competitive arena and total market.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
peer/industry

Rubric: 0 weak/losing; 1 stable/niche; 2 leading and gaining share (score 2 requires ≥3 dated observations spanning ≥3 years with top-tier share maintained or gained)

Arena and total-market share/rank, period change, observation count/span, continuous top-tier years, peer-cohort share trend, expected direction.

MCP data types: Web/Broker-textSegment/GeoTranscript

#192%

Industry structure

Attractiveness of the competitive field independent of company quality.

Type
Snapshot
Data
Historical / observed
Peer
peer/industry

Rubric: 0 fragmented/irrational; 1 mixed; 2 concentrated/rational attractive structure

HHI, top-3/top-5 share, competitor count, rationality score.

MCP data types: Web/Broker-textMacro/Reg

#205%

Relative economic spread versus rivals

Direct evidence of superior economics.

Type
Snapshot + trajectory
Data
Historical / observed
Peer
peer/industry

Rubric: 0 no spread; 1 modest; 2 clear superior economics vs peers

ROIC, gross/EBIT/FCF margin minus peer median/top quartile.

MCP data types: Fundamentals

#215%

Structural barrier evidence

Evidence of enforceable structural barriers: regulation, licences, IP/patents, cornered resources, scale/network effects, or arena boundaries.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
peer

Rubric: 0 = no enforceable barrier — contract assembly / ODM with no proprietary process, merchant PCB, commodity manufacturing without demonstrable scale economics, or a large assembler at low-single-digit margins; a moat claim also fails outright when returns have been near or below cost of capital through a cycle (a barrier that does not pay is not a moat). 1 = a real but replicable/contestable barrier — a licence held by many peers (the industry's barrier, not this company's), patents/IP, a certification or qualification regime, accumulated process know-how and yield, a branded consumer position, or most fabless design — clearable by a funded rival within roughly 3-5 years. 2 = a closed or irreplaceable barrier — a statutory monopoly or closed concession, a state-granted exclusive franchise, an irreproducible physical endowment (cornered resource / unique site), or frontier fabrication at the scale frontier. 2 requires that unlimited capital still cannot reproduce the position.

Apply the entry test (does unlimited capital plus 3-5 years suffice?), the licence-sharing test (is the permit/charter held by many peers? then it is the industry's barrier, not the company's), and the through-cycle return test (returns near/below cost of capital through a cycle fail the moat claim). Never credit a barrier the company does not own (a supplier's IP/fab/allocation, a customer's reference design, a parent's asset). Route brand, reputation, relationships, agency forces, and distribution networks to switching/search cost, not this factor. Record barrier type (regulatory/IP/licence/resource/scale/network/arena), boundary mechanism, and durability.

MCP data types: Filing-textTranscriptWeb/Broker-textMacro/Reg

#223%

Customer switching cost

Cost, disruption, and risk a customer bears to replace the company with an alternative.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
company

Rubric: 0 = trivial to switch — the customer can substitute inside ~2 quarters with nothing to re-certify, re-tool, re-permit or forfeit; brand habit, procurement inertia, membership counts, distribution reach and relationship banking are NOT switching cost (they are scored under search_reputation_cost / demand.retention). 1 = moderate friction — a real cost or delay to switch that does not prevent it: a lock that is a category feature shared with every rival (e.g. a life-insurance cash-value lock), a design-in or qualification that lasts one platform/generation/nomination cycle and is re-won each cycle, or a lock that covers only part of the revenue book. 2 = high switching-cost lock-in — a customer cannot move inside ~2 quarters without forfeiting real value, and the lock is company-specific and durable rather than a category feature: contracted volume with prepayments, statutory offtake, an architectural/instruction-set migration barrier, or company-specific retention that measurably exceeds peers.

Apply the switching test (what must the customer forfeit or re-do — re-certification, re-tooling, re-permitting, contracted volume, surrendered cash value — and does it exceed ~2 quarters?), the re-win test (a lock re-competed each platform/generation/nomination cycle caps at 1), and the margin override (gross margin below ~15% with no pricing power scores 0 on every moat factor regardless of position). A lock that is a category feature shared with every rival earns 1 unless company-specific evidence shows it binding harder (ranked persistency, multi-product retention). Route brand habit, reputation, relationships, agency forces, distribution reach, and membership counts to search_reputation_cost / demand.retention, not this factor. Split books are scored on the revenue-weighted mix of locked vs unlocked business.

MCP data types: Filing-textTranscriptWeb/Broker-text

#231%

Search and reputation cost

The work the name does that the product's own observable attributes do not: a first-time buyer defaulting to it to avoid a payment, identity, or authenticity error without trial.

Type
Snapshot
Data
Historical + expectation
Peer
company

Rubric: Score the name's trust-rail work, not the easiest SKU to trial. Deciding test: does a first-time buyer default to this name to avoid a payment, identity, or authenticity error without any trial? 0 = quality is observable before purchase — a spec, standard, assay, posted grade, a quick trial, a buyer who already knows the vendor set, or a shelf SKU one position away — OR the name is merely famous (a well-known trademark) with nothing unverifiable attached. 1 = first-time buyers default to this name as the trusted interface for payment, identity, or gifting to avoid an error without trial, AND trusted rivals clear the same bar. 2 = the attribute can only be assessed by consumption, AND this brand or trusted channel is the only route a buyer trusts against an authenticity or outcome error, with no equally-trusted alternative.

Score the captive surface only: the interface a first-time buyer defaults to (payment, identity, gifting), not the triable side SKU — a triable side segment cannot zero a default trust rail. Route away: (1) network effects and installed base — 'everyone is already on it', or an install prompted by someone else, is switching cost or a structural barrier, not search cost; this factor only fires when the name does work the network does not — a stranger choosing it to avoid a payment, identity, or authenticity error without trial. (2) certification, type-test, tape-out, PDK or own-qualification cost is moat.switching_cost, not this factor — an informed buyer who validates the product itself pays no search cost. (3) a trust premium shared by many peers (state backing, deposit insurance, a public procurement catalogue, G-SIB status) is the industry's asset, not the company's, so score 0. (4) a free, public reputation signal (league table, rating, published rank/share, reviews) imposes no search cost, so score 0. (5) a posted-grade or assayed commodity (fuel, coal, metals, panels, JEDEC parts) is verified rather than trusted, so score 0. (6) fame alone — a well-known trademark with nothing unverifiable attached — scores 0. Score 1 only when a first-time buyer defaults to the name to avoid a pre-purchase error and trusted rivals exist; 2 only when consumption is the sole assessment route and this name is the only trusted channel. Record the trust-rail basis (payment / identity / gifting / authenticity / product-quality / none) and the named trusted alternatives.

MCP data types: Web/Broker-textTranscriptNews

#243%

Counter-positioning

A superior business model incumbents cannot copy without damaging their existing economics.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
company

Rubric: 0 no counter-positioning; 1 partial/contestable; 2 clear incumbent self-harm to respond

Incumbent margin/channel/cannibalization conflict; evidence of incumbent inaction or failed response; model asymmetry.

MCP data types: Web/Broker-textTranscriptNews

#252%

Substitution and disruption exposure

Probability that the moat is being bypassed by substitutes, new channels, regulation, or AI-enabled value-chain change.

Type
Snapshot + trajectory
Data
Expectation
Peer
peer

Rubric: 0 high disruption risk; 1 manageable; 2 low risk or company advantaged

Text score from substitution, AI, regulatory, channel-shift, product-cycle, and competitor evidence.

MCP data types: Web/Broker-textTranscriptNews

8% of framework

Financial Safety & Accounting

Balance sheet, cash conversion, accruals, adjustments, and accounting red flags.

#FactorTypeDataPeerWtRubric (0/1/2)
26Balance-sheet resilienceAbility to survive shocks without external capital.Net debt/EBITDA, net cash/mcap, debt maturity vs cash + FCF.MCP data types: FundamentalsFiling-textSnapshot + trajectoryHistorical + expectationcompany30 fragile; 1 adequate; 2 fortress financial resilience
27Cash conversion qualityEarnings-to-cash reliability.FCF/net income, CFO/EBITDA, rolling median and downside periods, cash-conversion cycle days, accruals, capex/revenue.MCP data types: FundamentalsTrajectoryHistorical / observedcompany20 poor; 1 acceptable; 2 consistently strong cash conversion earned by the operations (score 2 is capped at 1 when the cash-conversion cycle is negative, since suppliers rather than customers are funding working capital; conversely, conversion depressed only by growth capex with clean accruals still qualifies)
28Accrual and working-capital qualityRisk that reported growth is not cash-realized.(Net income − CFO) / assets; receivables/inventory vs sales; CCC trend.MCP data types: FundamentalsTrajectoryHistorical / observedcompany10 accrual/WC red flags; 1 manageable; 2 clean cash-realized growth
29Adjustment and capitalization dependenceReliance on add-backs or capitalized costs.Adjusted/GAAP EPS gap, recurring restructuring, capitalized R&D/software.MCP data types: Filing-textTranscriptFundamentalsSnapshot + trajectoryHistorical / observedcompany10 heavy add-backs; 1 manageable; 2 low adjustment dependence
30Accounting red flagsRestatements, impairments, controls, related-party or auditor issues.Count/severity of impairments, restatements, MW, auditor changes.MCP data types: FundamentalsFiling-textNewsSnapshot + trajectoryHistorical / observedcompany10 material red flags; 1 minor; 2 clean accounting record
#263%

Balance-sheet resilience

Ability to survive shocks without external capital.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
company

Rubric: 0 fragile; 1 adequate; 2 fortress financial resilience

Net debt/EBITDA, net cash/mcap, debt maturity vs cash + FCF.

MCP data types: FundamentalsFiling-text

#272%

Cash conversion quality

Earnings-to-cash reliability.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 poor; 1 acceptable; 2 consistently strong cash conversion earned by the operations (score 2 is capped at 1 when the cash-conversion cycle is negative, since suppliers rather than customers are funding working capital; conversely, conversion depressed only by growth capex with clean accruals still qualifies)

FCF/net income, CFO/EBITDA, rolling median and downside periods, cash-conversion cycle days, accruals, capex/revenue.

MCP data types: Fundamentals

#281%

Accrual and working-capital quality

Risk that reported growth is not cash-realized.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 accrual/WC red flags; 1 manageable; 2 clean cash-realized growth

(Net income − CFO) / assets; receivables/inventory vs sales; CCC trend.

MCP data types: Fundamentals

#291%

Adjustment and capitalization dependence

Reliance on add-backs or capitalized costs.

Type
Snapshot + trajectory
Data
Historical / observed
Peer
company

Rubric: 0 heavy add-backs; 1 manageable; 2 low adjustment dependence

Adjusted/GAAP EPS gap, recurring restructuring, capitalized R&D/software.

MCP data types: Filing-textTranscriptFundamentals

#301%

Accounting red flags

Restatements, impairments, controls, related-party or auditor issues.

Type
Snapshot + trajectory
Data
Historical / observed
Peer
company

Rubric: 0 material red flags; 1 minor; 2 clean accounting record

Count/severity of impairments, restatements, MW, auditor changes.

MCP data types: FundamentalsFiling-textNews

10% of framework

Capital Allocation & Ownership

Per-share discipline, payouts, M&A, and governance alignment.

#FactorTypeDataPeerWtRubric (0/1/2)
31Per-share compounding disciplineWhether shareholders capture aggregate growth.Per-share revenue/FCF/EPS CAGR minus aggregate; diluted share CAGR.MCP data types: FundamentalsFiling-textTrajectoryHistorical / observedcompany30 dilution erodes growth; 1 neutral; 2 per-share tracks/exceeds aggregate
32Cash return disciplineQuality of dividends and buybacks — how much cash is actually returned to shareholders, and whether it is sustainable.Total shareholder yield (dividend + net buyback) / market cap; dividend payout ratio vs FCF coverage; buyback yield net of SBC/issuance (net diluted share-count change); idle-cash hoard where no return is made. Zero dividend + zero net buyback is 0, not 1: the factor scores the quality of returning cash, and returning none is poor discipline, however much cash is retained.MCP data types: PayoutFundamentalsTrajectoryHistorical / observedcompany20 = no net cash return OR value-destructive return. No net cash return means no dividend AND no buyback that reduces the share count — returning zero while retaining an idle cash hoard is poor discipline, not neutral. Value-destructive return means a buyback fully offset by SBC/issuance (no net share-count reduction), a dividend unfunded by FCF, or buybacks at peak valuations. 1 = adequate — a sustainable dividend OR a buyback that materially reduces the diluted share count net of SBC, but not consistently both, or at a low total yield. 2 = shareholder-friendly and sustainable — a growing dividend covered by FCF and/or buybacks that shrink the diluted share count through the cycle, net of SBC.
33M&A disciplineWhether acquisitions build or dilute compounder economics.Acquisition spend / FCF; goodwill/assets; post-deal margin/ROIC trend.MCP data types: FundamentalsFiling-textWeb/Broker-textSnapshot + trajectoryHistorical + expectationpeer20 value-destructive; 1 mixed; 2 disciplined value-creating M&A
34Owner/operator and governance alignmentIncentives and control structure: whether the people running the company get rich the same way a minority shareholder does.State ownership as a percentage (never 'founder-led' alone); pledge ratio on the control block; diluted share-count CAGR and the per-share vs aggregate spread; dividend/buyback record and payout vs FCF; dual-class/WVR or VIE wedge; dominant-parent-with-thin-float; related-party transactions; recapitalisations and their price-to-book. Three structural rules: (1) a dominant parent with a thin minority float is 0; (2) a WVR/dual-class wedge caps at 1 unless the economic stake is itself large; (3) a heavily pledged control stake, a founder who is selling down, or serial dilution each pull the score down a band. An SOE starts at 0 and is argued up to 1 only on a binding payout that has moved cash plus no value-destroying directive.MCP data types: InsiderHoldersFiling-textNewsSnapshot + trajectoryHistorical / observedcompany3Decide on three inputs, then apply the structural rules. Input 1 — skin in the game: does the founder/management hold a large economic stake, stated as a percentage? Input 2 — realised value: did minorities actually receive the compounding (long per-share growth AND cash returned: dividends or buybacks that shrink the count)? Input 3 — extraction and wedge: is there a control-economics wedge (dual class/WVR, a dominant parent with a thin float), a pledged control stake, related-party extraction, or serial dilution? 0 = misaligned — management owns effectively nothing and either (a) there is no per-share value creation (persistent per-share decline, liquidation-financed payouts, serial dilution), or (b) a dominant parent with a thin minority float, or (c) documented extraction (related-party cash removal, below-book issuance to the controlling shareholder); an SOE defaults to 0. 1 = acceptable — real ownership with a short or mixed record (an owner-operator whose listed record is under ~5 years, or whose per-share/payout record is mixed); OR professional management with a genuinely strong per-share record but little ownership; OR a WVR/dual-class structure whose economic stake is not itself large (WVR caps at 1 unless the economics are large); OR an SOE argued up on a binding, disclosed, multi-year payout commitment that has actually transferred cash AND no record of value-destroying policy directives. 2 = owner-oriented aligned governance — large founder/management economic ownership (unpledged or lightly pledged) PLUS a long delivered record (per-share compounding AND cash returned through the cycle) PLUS no wedge or extraction (single class, no dominant parent, no pledged-control encumbrance, no related-party extraction).
#313%

Per-share compounding discipline

Whether shareholders capture aggregate growth.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 dilution erodes growth; 1 neutral; 2 per-share tracks/exceeds aggregate

Per-share revenue/FCF/EPS CAGR minus aggregate; diluted share CAGR.

MCP data types: FundamentalsFiling-text

#322%

Cash return discipline

Quality of dividends and buybacks — how much cash is actually returned to shareholders, and whether it is sustainable.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 = no net cash return OR value-destructive return. No net cash return means no dividend AND no buyback that reduces the share count — returning zero while retaining an idle cash hoard is poor discipline, not neutral. Value-destructive return means a buyback fully offset by SBC/issuance (no net share-count reduction), a dividend unfunded by FCF, or buybacks at peak valuations. 1 = adequate — a sustainable dividend OR a buyback that materially reduces the diluted share count net of SBC, but not consistently both, or at a low total yield. 2 = shareholder-friendly and sustainable — a growing dividend covered by FCF and/or buybacks that shrink the diluted share count through the cycle, net of SBC.

Total shareholder yield (dividend + net buyback) / market cap; dividend payout ratio vs FCF coverage; buyback yield net of SBC/issuance (net diluted share-count change); idle-cash hoard where no return is made. Zero dividend + zero net buyback is 0, not 1: the factor scores the quality of returning cash, and returning none is poor discipline, however much cash is retained.

MCP data types: PayoutFundamentals

#332%

M&A discipline

Whether acquisitions build or dilute compounder economics.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
peer

Rubric: 0 value-destructive; 1 mixed; 2 disciplined value-creating M&A

Acquisition spend / FCF; goodwill/assets; post-deal margin/ROIC trend.

MCP data types: FundamentalsFiling-textWeb/Broker-text

#343%

Owner/operator and governance alignment

Incentives and control structure: whether the people running the company get rich the same way a minority shareholder does.

Type
Snapshot + trajectory
Data
Historical / observed
Peer
company

Rubric: Decide on three inputs, then apply the structural rules. Input 1 — skin in the game: does the founder/management hold a large economic stake, stated as a percentage? Input 2 — realised value: did minorities actually receive the compounding (long per-share growth AND cash returned: dividends or buybacks that shrink the count)? Input 3 — extraction and wedge: is there a control-economics wedge (dual class/WVR, a dominant parent with a thin float), a pledged control stake, related-party extraction, or serial dilution? 0 = misaligned — management owns effectively nothing and either (a) there is no per-share value creation (persistent per-share decline, liquidation-financed payouts, serial dilution), or (b) a dominant parent with a thin minority float, or (c) documented extraction (related-party cash removal, below-book issuance to the controlling shareholder); an SOE defaults to 0. 1 = acceptable — real ownership with a short or mixed record (an owner-operator whose listed record is under ~5 years, or whose per-share/payout record is mixed); OR professional management with a genuinely strong per-share record but little ownership; OR a WVR/dual-class structure whose economic stake is not itself large (WVR caps at 1 unless the economics are large); OR an SOE argued up on a binding, disclosed, multi-year payout commitment that has actually transferred cash AND no record of value-destroying policy directives. 2 = owner-oriented aligned governance — large founder/management economic ownership (unpledged or lightly pledged) PLUS a long delivered record (per-share compounding AND cash returned through the cycle) PLUS no wedge or extraction (single class, no dominant parent, no pledged-control encumbrance, no related-party extraction).

State ownership as a percentage (never 'founder-led' alone); pledge ratio on the control block; diluted share-count CAGR and the per-share vs aggregate spread; dividend/buyback record and payout vs FCF; dual-class/WVR or VIE wedge; dominant-parent-with-thin-float; related-party transactions; recapitalisations and their price-to-book. Three structural rules: (1) a dominant parent with a thin minority float is 0; (2) a WVR/dual-class wedge caps at 1 unless the economic stake is itself large; (3) a heavily pledged control stake, a founder who is selling down, or serial dilution each pull the score down a band. An SOE starts at 0 and is argued up to 1 only on a binding payout that has moved cash plus no value-destroying directive.

MCP data types: InsiderHoldersFiling-textNews

2% of framework

Operating Quality & Resilience

Supply-chain quality and guidance reliability.

#FactorTypeDataPeerWtRubric (0/1/2)
35Supply-chain and quality resilienceOperational fragility outside the income statement.Supplier concentration, redundancy, warranty/recall burden, sole-source components, single-site production, recall/warranty history. Mark status na when there is no physical supply chain or production quality to fail (a bank, insurer, broker, exchange or other financial — its vendors are service providers, not production inputs), and apply that na uniformly across every company in the industry: never na for one peer and scored for a same-business-model peer.MCP data types: Filing-textNewsWeb/Broker-textSnapshot + trajectoryHistorical + expectationcompany10 fragile; 1 manageable; 2 resilient supply/quality system
36Forecast and guidance reliabilityPredictability of near-term business execution and management promise-keeping.Promise-to-actual ledger, distinct-quarter/history span, controllable matched count, actual vs consensus/guidance misses, guide-down frequency, revision volatility.MCP data types: ForecastTranscriptTrajectoryHistorical + expectationcompany10 chronic misses; 1 mixed; 2 reliable guidance execution (score 2 requires ≥8 distinct quarters and ≥6 controllable matched promises)
#351%

Supply-chain and quality resilience

Operational fragility outside the income statement.

Type
Snapshot + trajectory
Data
Historical + expectation
Peer
company

Rubric: 0 fragile; 1 manageable; 2 resilient supply/quality system

Supplier concentration, redundancy, warranty/recall burden, sole-source components, single-site production, recall/warranty history. Mark status na when there is no physical supply chain or production quality to fail (a bank, insurer, broker, exchange or other financial — its vendors are service providers, not production inputs), and apply that na uniformly across every company in the industry: never na for one peer and scored for a same-business-model peer.

MCP data types: Filing-textNewsWeb/Broker-text

#361%

Forecast and guidance reliability

Predictability of near-term business execution and management promise-keeping.

Type
Trajectory
Data
Historical + expectation
Peer
company

Rubric: 0 chronic misses; 1 mixed; 2 reliable guidance execution (score 2 requires ≥8 distinct quarters and ≥6 controllable matched promises)

Promise-to-actual ledger, distinct-quarter/history span, controllable matched count, actual vs consensus/guidance misses, guide-down frequency, revision volatility.

MCP data types: ForecastTranscript

0% of framework

Culture & Management Overlay

Mission coherence and innovation cadence.

#FactorTypeDataPeerWtRubric (0/1/2)
37Mission, strategic coherence, and innovation cadenceWhether purpose, strategy, and new initiatives reinforce the core moat.Mission credibility score; relevant launches; new revenue contribution.MCP data types: Filing-textTranscriptWeb/Broker-textTrajectoryHistorical + expectationcompany00 incoherent; 1 plausible; 2 mission and innovation reinforce moat
#370%

Mission, strategic coherence, and innovation cadence

Whether purpose, strategy, and new initiatives reinforce the core moat.

Type
Trajectory
Data
Historical + expectation
Peer
company

Rubric: 0 incoherent; 1 plausible; 2 mission and innovation reinforce moat

Mission credibility score; relevant launches; new revenue contribution.

MCP data types: Filing-textTranscriptWeb/Broker-text

5% of framework

Proven Compounding Record

Long-horizon per-share fundamentals, benchmark-relative shareholder returns, and continuity through adverse cycles.

#FactorTypeDataPeerWtRubric (0/1/2)
38Long-horizon per-share fundamental compoundingSustained growth in revenue, earnings, and free cash flow per diluted share across a long audited record.Revenue, earnings, and FCF per-share CAGRs across 3/5/8/10-year horizons; median long-window CAGR; diluted-share history; years_listed (integer years since first listing). Tenure is true history, not vendor depth: a company public for ≥8 years satisfies the ≥8-year gate even when the vendor returned fewer periods, and the score is read from the longest available per-share window (5y) with the truncation flagged as a data gap rather than a short-record verdict.MCP data types: FundamentalsTrajectoryHistorical / observedcompany20 per-share earning power stagnates or declines; 1 positive but short, mixed, or modest record; 2 broad-based per-share compounding over ≥8 years of true history (years since first listing, not vendor statement depth)
39Benchmark-relative shareholder returnLong-run shareholder wealth creation after distributions relative to the primary listing's local market.Dividend/split-adjusted TSR; local benchmark TSR; full-period excess CAGR; median rolling five-year excess CAGR; coverage and benchmark identity. A positive excess below ~3% CAGR is market-like, not wealth creation: it scores 1, never 2 — banks or OEMs that merely track or barely edge the local index do not earn a full score.MCP data types: PricesTrajectoryHistorical / observedpeer20 sustained negative excess total return; 1 mixed, market-like, a <8-year record, or a bare beat under ~3% CAGR; 2 full-period AND median rolling excess ≥ ~3% CAGR over ≥8 years
40Cycle-tested compounding continuityPreservation and recovery of per-share earning power through adverse operating episodes.cycle_tested and its basis; revenue and FCF max drawdown; deep_earning_power_impairment; revenue/OI/FCF recovery; per-share FCF and earnings recovery; post-trough high-water marks.MCP data types: FundamentalsTrajectoryHistorical / observedcompany10 permanent impairment or recapitalization; 1 limited-cycle evidence, uneven recovery, or a drawdown deep enough to have impaired earning power at the trough; 2 ≥8-year cycle-tested record with per-share earning power preserved or recovered. Depth decides this factor, not episode count: riding a cycle without a deep dip qualifies, and a severe drawdown does not qualify however many times the company has recovered from one.
#382%

Long-horizon per-share fundamental compounding

Sustained growth in revenue, earnings, and free cash flow per diluted share across a long audited record.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 per-share earning power stagnates or declines; 1 positive but short, mixed, or modest record; 2 broad-based per-share compounding over ≥8 years of true history (years since first listing, not vendor statement depth)

Revenue, earnings, and FCF per-share CAGRs across 3/5/8/10-year horizons; median long-window CAGR; diluted-share history; years_listed (integer years since first listing). Tenure is true history, not vendor depth: a company public for ≥8 years satisfies the ≥8-year gate even when the vendor returned fewer periods, and the score is read from the longest available per-share window (5y) with the truncation flagged as a data gap rather than a short-record verdict.

MCP data types: Fundamentals

#392%

Benchmark-relative shareholder return

Long-run shareholder wealth creation after distributions relative to the primary listing's local market.

Type
Trajectory
Data
Historical / observed
Peer
peer

Rubric: 0 sustained negative excess total return; 1 mixed, market-like, a <8-year record, or a bare beat under ~3% CAGR; 2 full-period AND median rolling excess ≥ ~3% CAGR over ≥8 years

Dividend/split-adjusted TSR; local benchmark TSR; full-period excess CAGR; median rolling five-year excess CAGR; coverage and benchmark identity. A positive excess below ~3% CAGR is market-like, not wealth creation: it scores 1, never 2 — banks or OEMs that merely track or barely edge the local index do not earn a full score.

MCP data types: Prices

#401%

Cycle-tested compounding continuity

Preservation and recovery of per-share earning power through adverse operating episodes.

Type
Trajectory
Data
Historical / observed
Peer
company

Rubric: 0 permanent impairment or recapitalization; 1 limited-cycle evidence, uneven recovery, or a drawdown deep enough to have impaired earning power at the trough; 2 ≥8-year cycle-tested record with per-share earning power preserved or recovered. Depth decides this factor, not episode count: riding a cycle without a deep dip qualifies, and a severe drawdown does not qualify however many times the company has recovered from one.

cycle_tested and its basis; revenue and FCF max drawdown; deep_earning_power_impairment; revenue/OI/FCF recovery; per-share FCF and earnings recovery; post-trough high-water marks.

MCP data types: Fundamentals

Architecture

Subagents gather; scripts compute; LLMs adjudicate

The orchestrator owns workflow control but never calls MCPs directly. Seven evidence agents run in parallel after scoping, writing durable JSON and CSV artifacts under /mnt/session/outputs/. Skill scripts compute measurable inputs and build factor matrices; scorer/challenger subagents adjudicate non-formula factors and audit whether the evidence supports each rubric score.

0

Entry & routing

Orchestrator coordinates the run and never calls MCPs directly.

User request
Orchestratorcompounder-v2-orchestrator
Optional — fetch prior run
Archivistcompounder-archivist
Prior assessmentsaved scorecard
Fresh assessment
Scopercompounder-v2-scoper
Scope packscoper.json
1

Parallel evidence collection

Seven specialized subagents gather MCP-backed data into session artifacts.

Fundamentalsfinancial_series.csv
Peer cohortpeer_baselines.json
Segment & marketmarket_structure.json
Filings & transcriptsevidence_disclosures.json
Broker researchevidence_research.json
Web evidenceevidence_web.json
Guidance & expectationsexpectations.json
Raw data packsJSON / CSV under session outputs
2

Calculate & score

Scripts compute formula-driven inputs; scorer adjudicates qualitative and mixed factors against rubrics.

Factor inputscalc_reduced_factors.py
Computed + judgment inputsfactor_matrix.csv · factor_gaps.json
Scorercompounder-v2-scorer
Scorecardscorecard_v2.json
3

Challenge & confirm

Bear-case review, at most one targeted rescore, then analyst confirmation.

Challengercompounder-v2-challenger
Challenge packchallenge.json
Rescore onceonly flagged factors
Analyst confirm gate0 / 1 / 2 overrides
4

Aggregate, audit & verdict

Final script merges confirmed scores; auditor validates before the user-facing verdict.

Final scoringscore_compounder_v2.py
Auditorscorecard-v2-auditor
Final verdictverdict_v2.md
Optional

When the user asks to save, compounder-archivist writes the finished assessment to Synology NAS — never overwriting prior runs.

Subagents

Specialized roles with clear MCP ownership

SubagentRoleMCPsSkillsOutput
compounder-v2-orchestratorCoordinates workflow, confirm gate, and final summary. Never calls MCPs directly.compounder-scoping, compounder-v2-scoringUser-facing verdict
compounder-v2-scoperResolves issuer, listing, peer cohort, competitive arena, and factor applicability.yfinance, wind, defeatbeta, stockanalysis, sec-edgar, twsecompounder-scoping, company-scopingscoper.json
fundamentals-series-agentPulls company financials, per-share history, and company/local-benchmark total returns.wind, stockanalysis, defeatbeta, yfinance, sec-edgar, twsecompounder-v2-fundamentalsfinancial_series.json, core_metrics.json, proven_record_returns.json
peer-cohort-agentAligns the same metrics across peers; builds medians, ranks, and percentiles.wind, stockanalysis, defeatbeta, yfinance, sec-edgar, twsecompounder-v2-peer-cohort, compounder-v2-fundamentalspeer_baselines.json
segment-market-agentSegment/geography, market share, industry structure, and TAM runway.stockanalysis, wind, rag, firecrawlcompounder-v2-market-structuremarket_structure.json
filing-transcript-agentPricing power, switching cost, concentration, accounting, and governance text.sec-edgar, stockanalysis, defeatbeta, edgar-13fpublic-disclosure-extraction, moat-source-mappingevidence_disclosures.json
broker-research-agentBroker views on moat, runway, disruption, policy, and reference-class evidence.ragbroker-research-retrieval, compounder-v2-evidence-checksevidence_research.json
web-altdata-agentPublic web evidence: reputation, competitors, demand proxies.firecrawlcompounder-web-intel, compounder-v2-evidence-checksevidence_web.json
guidance-expectations-agentGuidance promise-to-actual ledger, forecasts, and expectation evidence separated from history.stockanalysis, wind, defeatbeta, ragcompounder-v2-expectations, compounder-v2-evidence-checksexpectations.json
compounder-v2-scorerApplies 0/1/2 rubrics, weights, score caps, and analyst overrides.compounder-v2-factor-calculation, compounder-v2-scoring, compounder-v2-evidence-checks, moat-source-mappingscorecard_v2.json
compounder-v2-challengerBear-case audit: peer gaming, expectation overreach, double counting.compounder-v2-scoring, compounder-v2-evidence-checks, comment-quality-rubricchallenge.json
scorecard-v2-auditorDeterministic validation: factor count, weights, evidence, aggregation.compounder-v2-scoringaudit.json
compounder-archivistFetch/save finished assessments on Synology NAS only.synologycompounder-archiveNAS artifacts
compounder-v2-orchestrator

Coordinates workflow, confirm gate, and final summary. Never calls MCPs directly.

MCPs
Skills
compounder-scoping, compounder-v2-scoring
Output
User-facing verdict
compounder-v2-scoper

Resolves issuer, listing, peer cohort, competitive arena, and factor applicability.

MCPs
yfinance, wind, defeatbeta, stockanalysis, sec-edgar, twse
Skills
compounder-scoping, company-scoping
Output
scoper.json
fundamentals-series-agent

Pulls company financials, per-share history, and company/local-benchmark total returns.

MCPs
wind, stockanalysis, defeatbeta, yfinance, sec-edgar, twse
Skills
compounder-v2-fundamentals
Output
financial_series.json, core_metrics.json, proven_record_returns.json
peer-cohort-agent

Aligns the same metrics across peers; builds medians, ranks, and percentiles.

MCPs
wind, stockanalysis, defeatbeta, yfinance, sec-edgar, twse
Skills
compounder-v2-peer-cohort, compounder-v2-fundamentals
Output
peer_baselines.json
segment-market-agent

Segment/geography, market share, industry structure, and TAM runway.

MCPs
stockanalysis, wind, rag, firecrawl
Skills
compounder-v2-market-structure
Output
market_structure.json
filing-transcript-agent

Pricing power, switching cost, concentration, accounting, and governance text.

MCPs
sec-edgar, stockanalysis, defeatbeta, edgar-13f
Skills
public-disclosure-extraction, moat-source-mapping
Output
evidence_disclosures.json
broker-research-agent

Broker views on moat, runway, disruption, policy, and reference-class evidence.

MCPs
rag
Skills
broker-research-retrieval, compounder-v2-evidence-checks
Output
evidence_research.json
web-altdata-agent

Public web evidence: reputation, competitors, demand proxies.

MCPs
firecrawl
Skills
compounder-web-intel, compounder-v2-evidence-checks
Output
evidence_web.json
guidance-expectations-agent

Guidance promise-to-actual ledger, forecasts, and expectation evidence separated from history.

MCPs
stockanalysis, wind, defeatbeta, rag
Skills
compounder-v2-expectations, compounder-v2-evidence-checks
Output
expectations.json
compounder-v2-scorer

Applies 0/1/2 rubrics, weights, score caps, and analyst overrides.

MCPs
Skills
compounder-v2-factor-calculation, compounder-v2-scoring, compounder-v2-evidence-checks, moat-source-mapping
Output
scorecard_v2.json
compounder-v2-challenger

Bear-case audit: peer gaming, expectation overreach, double counting.

MCPs
Skills
compounder-v2-scoring, compounder-v2-evidence-checks, comment-quality-rubric
Output
challenge.json
scorecard-v2-auditor

Deterministic validation: factor count, weights, evidence, aggregation.

MCPs
Skills
compounder-v2-scoring
Output
audit.json
compounder-archivist

Fetch/save finished assessments on Synology NAS only.

MCPs
synology
Skills
compounder-archive
Output
NAS artifacts

Scripts & skills

Scripts compute inputs; LLMs adjudicate judgment

Historical alignment, peer percentiles, factor input preparation, weighted aggregation, sensitivity analysis, and audit checks belong in Python scripts. Qualitative factors and mixed factors still require LLM adjudication directly on filings, transcripts, broker research, and web evidence.

compounder-v2-fundamentalsfundamentals-series-agent
  • build_financial_series.py

    Normalize raw MCP statement outputs into annual/quarterly financial series.

  • compute_core_metrics.py

    Compute ROIC, ROE, FCF, margins, accruals, working capital, and leverage.

  • check_series_quality.py

    Detect missing years, restatement breaks, currency changes, and negative-base CAGR issues.

  • compute_proven_record_returns.py

    Normalize company and local-benchmark total-return history and compute full-period and rolling five-year excess returns.

compounder-v2-peer-cohortpeer-cohort-agent
  • build_peer_metric_matrix.py

    Align company and peer metrics on the same fiscal-period grid.

  • compute_peer_percentiles.py

    Compute peer medians, percentiles, ranks, and relative spreads.

  • audit_peer_set.py

    Flag stale peers, missing data, and suspiciously favorable cohorts.

compounder-v2-market-structuresegment-market-agent
  • normalize_segments.py

    Standardize segment and geography revenue tables across filings and data vendors.

  • estimate_market_share.py

    Compute share, share change, HHI, top-player concentration, and category rank.

  • structure_runway_claims.py

    Convert TAM, penetration, capacity, and market-share claims into comparable fields.

compounder-v2-factor-calculationcompounder-v2-scorer
  • calc_reduced_factors.py

    Compute formula-driven factors and prepare structured inputs for judgment-heavy factors.

  • apply_factor_applicability.py

    Mark N/A by business model, listing region, disclosure coverage, and source availability.

  • build_factor_matrix.py

    Validate required inputs per data/peer need, then build one row per factor with computed value or adjudication prompt, source quality, data need, peer need, and gaps.

compounder-v2-expectationsguidance-expectations-agent
  • build_guidance_ledger.py

    Extract past guidance and match each promise to later actuals.

  • normalize_forecasts.py

    Normalize consensus and broker forecasts into comparable expectation fields. Reuses structure_runway_claims.py for TAM/penetration/share-outlook evidence.

compounder-v2-scoringcompounder-v2-scorer / auditor
  • score_compounder_v2.py

    Apply confirmed/adjudicated 0/1/2 scores, weights, score caps, headline score, and low-confidence/missing/override sensitivity flags.

  • audit_scorecard_v2.py

    Validate factor count, 100-point weights, evidence links, and aggregation ties; flag evidence double-counted across factors without a direct metric link.

Scoring

A single 0–100 composite score

Each factor contributes score / 2 × weight to a 0–100 composite score, which is the single output used to rank stocks. There are no non-compensatory pass/fail gates and no Compounder / Not Compounder verdict — a stock is placed by its composite.

Composite score

Each factor contributes score / 2 × weight to a 0–100 composite. The composite is the single output used to rank stocks — there are no pass/fail gates and no Compounder / Not Compounder verdict.

Moat drop-lowest-1

Moat Structure is scored on its best 7 of 8 factors: the lowest-scoring scored factor leaves the within-category calculation, then the resulting moat percentage is applied back to the full 24-point Moat category weight. Applied identically to every stock.

Coverage

Coverage (% of applicable weight scored) is reported for transparency. na factors leave the applicable base; low coverage is surfaced but does not gate the composite.

Proven-duration score caps

Nine factors carry a score_cap: a ceiling on score-2 eligibility set by how much evidence actually exists, computed deterministically from the data rather than judged. Short evidence caps a factor at 1 rather than forcing a 0, so a young company is scored as unproven, not as bad. The aggregator contributes min(assigned_score, score_cap), so a 2 written by a model or an analyst cannot bypass a factual limit; every applied cap and its reason are disclosed in the computed block. Roughly: eight annual observations for the durability and record factors, five positive operating-income or FCF years for the earnings factors, three dated observations spanning three years for market share, and eight quarters with six matched promises for guidance reliability.

Proven record

Four points recognize long-horizon per-share compounding, benchmark-relative total return, and continuity through adverse cycles. Short histories remain scoreable but cannot receive a fully proven 2.

Cycle-testing measures depth, not crashes

Durability caps ask for a cycle-tested record, satisfied either by surviving an adverse episode or by an eight-year record whose drawdowns stayed shallow. Requiring a registrable crash made volatility a precondition for a durability score, penalizing the low-amplitude businesses those factors exist to reward. Symmetrically, cycle continuity is capped at 1 when the trough was deep enough to impair earning power, however often the company has recovered from one.

Evidence gates

Three rules cap a 2 that is supported by the wrong observation — one the factor's own rubric does not ask for. Price/mix power requires a realized price that actually rose, since defending unit margin on a falling price is cost control, which the margin factors score. Retention requires a measured repeat or renewal rate, not market share, which the moat category already scores. Reinvestment quality is capped for a capital-hungry business with no demonstrated pricing power, since the capacity being added is what compresses the price. The gates run after scoring, so a 2 entered anyway is still reduced to 1.

Cash conversion quality

Cash conversion is capped at 1 when the cash-conversion cycle is negative, because suppliers rather than customers are then funding working capital — a financing choice, not earnings quality. Conversely, conversion depressed only by growth capex with clean accruals is not marked down; that is reinvestment, which the reinvestment factors judge.

Analyst confirm gate

A workflow review step (not a scoring gate): analysts may override individual 0/1/2 factors before final aggregation runs score_compounder_v2.py.

Analyst confirm gate: the frontend renders a scorecard with proposed 0/1/2 values, evidence summaries, gaps, and challenger objections. Analysts may override individual factors before final aggregation runs score_compounder_v2.py.