Scorecard
Rubric · generated reports · per-metric audit of how each score is computed.
Sources across rubric: FMP (15) · Transcripts (3) · Web (10) · FMP+CIQ (10) · Edgar (10)
Business Model & Moat
13 metrics · 25 pts#82SG&A Efficiency vs. PeersquantFMP2 pts▸
Compares the company's SG&A as a percentage of revenue against its peer group median, measuring relative sales and operational efficiency.
| Variable | Endpoint | Field |
|---|---|---|
| selling_general_admin | /income-statement?limit=1 | sellingGeneralAndAdministrativeExpenses |
| revenue | /income-statement?limit=1 | revenue |
| peer_tickers | /stock-peers | peersList |
Use latest available period; return null if critical fields are missing.
Inputs: - Use mapped source variables from data_detail. Formula: SG&A Efficiency vs Peers = (Peer Median SGA% - Company SGA%) where SGA% = sellingGeneralAndAdministrativeExpenses / revenue (LTM). Positive spread = company is more efficient than peers. Rubric applied to the spread: company 20pp above peers = worst (0%), company 20pp below peers = best (100%). Computation Notes: - Return null if critical inputs are missing.
#79Employee AdvocacyqualTranscripts1 pts▸
Assesses Employee Advocacy using source-grounded qualitative evidence and returns a consistent 1-10 judgement signal.
Task: Score Employee Advocacy for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use earnings call transcript chunks only (prepared remarks and/or Q&A). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]}#78Platform & Ecosystem DependencyqualWeb2 pts▸
Assesses Platform & Ecosystem Dependency using source-grounded qualitative evidence and returns a consistent 1-10 judgement signal.
Task: Score Platform & Ecosystem Dependency for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Platform & Ecosystem Dependency — "Score {TICKER} ({COMPANY_NAME})'s revenue concentration risk from third-party platform dependency on a scale of 1-10. Consider: what percentage of revenue flows through or depends on Apple App Store, Google Play, AWS, Meta, Amazon marketplace, or equivalent gatekeepers? Any disclosed platform risk in 10-K Item 1A? Score 10 = fully independent distribution (own channels, no platform dependency), score 1 = majority of revenue dependent on a single third-party platform that could change terms or delist. Return a single integer 1-10."#76Regulatory & Policy ExposurequalEdgar2 pts▸
Assesses Regulatory & Policy Exposure using source-grounded qualitative evidence and returns a consistent 1-10 judgement signal.
Extract only relevant filing sections; return null when section evidence is unavailable.
Task: Score Regulatory & Policy Exposure for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use SEC filing chunks only (10-K/10-Q/8-K/DEF 14A as applicable). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Regulatory & Policy Exposure — "Score {TICKER} ({COMPANY_NAME})'s regulatory and policy risk exposure on a scale of 1-10. Primary source: 10-K Item 1A Risk Factors (regulatory section) + web search for pending legislation or enforcement actions. Score 10 = minimal regulatory exposure, operates in stable regulatory environment, score 1 = active government investigations, major pending legislation that could impair business model, or operates in heavily regulated sector facing reform. Return a single integer 1-10."#75Customer SentimentqualWeb2 pts▸
Assesses Customer Sentiment using source-grounded qualitative evidence and returns a consistent 1-10 judgement signal.
Task: Score Customer Sentiment for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: S#56Switching CostsqualWeb4 pts▸
Either intangible (brands, patents, licenses), switching costs, network effect, and/or cost advantage (processes, cornered resource, scale)
Task: Score Switching Costs for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Switching Costs — "Score {TICKER} ({COMPANY_NAME})'s customer switching costs on a scale of 1-10. Consider: financial cost to switch (contract termination fees, migration costs), operational friction (retraining, integration replacement, data migration), customer retention rate and NRR/NDR if disclosed. Score 10 = deeply embedded mission-critical software or regulated product (near-impossible to switch), score 1 = easily substituted with no friction. Return a single i#53Scale AdvantagequalWeb3 pts▸
Enduring long-term (e.g., 10Y) competitive advantage
Task: Score Scale Advantage for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Scale Advantage — "Score {TICKER} ({COMPANY_NAME})'s scale advantage in production cost vs peers on a scale of 1-10. Consider: cost per unit vs industry average (use gross margin as proxy), economies of scale in manufacturing/distribution, fixed cost leverage as revenue grows. Score 10 = clear cost leader in their category, score 1 = higher cost structure than peers with no scale benefit. Return a single integer 1-10."#36Competitor DensityqualWeb1 pts▸
Competitors focus on branding, not pricing
Task: Score Competitor Density for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Competitor Density — "Count the number of direct competitors to {TICKER} ({COMPANY_NAME}) in their primary market. Include only companies offering substantially similar products/services to the same customer segment. Return the count as an integer. If fewer than 2, return 1. If market is highly fragmented with 20+ competitors, return 20."#34Supplier LeveragequalWeb2 pts▸
Suppliers are fragmented
Task: Score Supplier Leverage for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Supplier Leverage — "Assess {TICKER} ({COMPANY_NAME})'s resilience to supplier concentration and leverage on a scale of 1-10. Consider: number of key suppliers, geographic concentration of supply chain, switching costs between suppliers, any disclosed supplier dependency risks (check 10-K Item 1A). Score 10 = highly diversified supply chain with strong bargaining position, score 1 = single-source dependency on critical inputs. Return a single integer 1-10."#33Customer Pricing PowerqualWeb2 pts▸
Customers are price takers
Task: Score Customer Pricing Power for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Customer Pricing Power — "Assess {TICKER} ({COMPANY_NAME})'s pricing power over customers on a scale of 1-10. Evidence to consider: gross margin stability or expansion over 3 years (can they raise prices without losing volume?), competitor price changes vs company's pricing, customer churn data, contract structure (long-term vs spot). Score 10 = dominant pricing power (customers have no alternative), score 1 = price-taker in a commodity market. Return a single integer 1-10."#32Intangible AssetsqualWeb2 pts▸
It is hard/expensive to become a competitor
Task: Score Intangible Assets for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Intangible Assets (Patent Portfolio & Brand Strength) — "Score {TICKER} ({COMPANY_NAME})'s intangible asset strength on a scale of 1-10. Consider: patent portfolio size and quality (search recent USPTO/EPO filings), brand recognition and premium pricing power, proprietary technology or trade secrets, regulatory licenses or certifications. A score of 10 indicates dominant IP moat (e.g. pharmaceutical patents, luxury brand), 1 indicates no meaningful intangible assets. Return a single integer 1-10."#20Revenue ConsumabilityqualWeb1 pts▸
People have to keep buying it (errs consumable over durable)
Task: Score Revenue Consumability for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: E#11Market SharequalWeb1 pts▸
Are there industry-specific clues that show how outstanding the company is in relation to its competition?
Task: Score Market Share for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use web search results and retrieved source snippets only. - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: EMarket Sentiment & Technicals
4 metrics · 10 pts#81Relative Volume (RVOL)quantFMP2 pts▸
Measures institutional conviction via volume relative to 20-day average, adjusted for price direction. High RVOL on green days signals accumulation; high RVOL on red days signals distribution.
| Variable | Endpoint | Field |
|---|---|---|
| daily_close | /historical-price-eod/full | close |
| daily_volume | /historical-price-eod/full | volume |
Use latest available period; return null if critical fields are missing.
Inputs: - Use mapped source variables from data_detail. Formula: Direction-Adjusted RVOL: current_price = prices[0]['close'] prior_price = prices[1]['close'] current_volume = prices[0]['volume'] avg_volume_20d = mean(prices[1:21]['volume']) RVOL = current_volume / avg_volume_20d price_direction = +1 if current_price >= prior_price else -1 Direction-Adjusted RVOL (DA_RVOL) = RVOL × price_direction Score (rubric applied to DA_RVOL): DA_RVOL <= 0.5 (high vol red day — distribution): 0.00 DA_RVOL 0.5–0.7 (avg/low vol or weak red): 0.25 DA_RVOL 0.7–1.0 (neutral — avg volume, flat): 0.50 DA_RVOL 1.0–1.5 (strong green day, above avg vol): 0.75 DA_RVOL > 1.5 (institutional accumulation signal): 1.00 Replaces: #66 Put/Call Ratio (FMP-gated, unavailable on current plan) Computation Notes: - Return null if critical inputs are missing.
#74Relative Strength IndexquantFMP1 pts▸
14-day RSI — lower values indicate oversold conditions, representing better entry points.
| Variable | Endpoint | Field |
|---|---|---|
| rsi_14 | /technical-indicator/daily/rsi?period=14 | rsi |
Use latest available period; return null if critical fields are missing.
Inputs: - [Avg Gain] = 14-Day Average of Upward Price Changes; [Avg Loss] = 14-Day Average of Downward Price Changes; [RS] = Avg Gain / Avg Loss; [14-Day Momentum RSI] = 100 - (100 / (1 + RS)) Formula: RSI_14 = 100 - (100 / (1 + RS)); RS = avg_gain_14 / avg_loss_14 Computation Notes: - Return null if critical inputs are missing.
#49Trend AlignmentquantFMP4 pts▸
Use price action to see if market is listening to your thesis, it must be hitting higher lows/highs
| Variable | Endpoint | Field |
|---|---|---|
| daily_close | /historical-price-eod/full | close |
Use latest available period; return null if critical fields are missing.
Inputs: - [Trend Score] = IF(Price < 200D & falling, 2, IF(Price < 200D & rising, 4, IF(Price > 50D but < 200D, 6, IF(Price > 200D but < 50D, 8, IF(Price > 50D > 200D, 10))))) Formula: Trend Score = step function based on price vs 50D SMA and 200D SMA: (1) price < 200D SMA and 200D SMA falling → 2; (2) price < 200D SMA and 200D SMA rising → 4; (3) price > 200D SMA but < 50D SMA → 6; (4) price > 50D SMA but < 200D SMA (death cross zone) → 8; (5) price > 50D SMA and price > 200D SMA (golden cross) → 10. MA direction = compare current MA to MA 20 days prior. Computation Notes: - Return null if critical inputs are missing.
#19200MA SupportquantFMP3 pts▸
Company is buying back shares
| Variable | Endpoint | Field |
|---|---|---|
| daily_close | /historical-price-eod/full | close |
Use latest available period; return null if critical fields are missing.
Inputs: - [Current Price] = Last Close Price; [200D MA] = 200-Day Moving Average; [200MA Support Spread] = (Current Price / 200D MA) - 1 Formula: 200MA Support Spread = (currentPrice / SMA_200) - 1; SMA_200 = sum of last 200 daily closing prices / 200 Computation Notes: - Return null if critical inputs are missing.
Management & Culture
7 metrics · 12 pts#80Internal Business OutlookqualTranscripts3 pts▸
Assesses Internal Business Outlook using source-grounded qualitative evidence and returns a consistent 1-10 judgement signal.
Task: Score Internal Business Outlook for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use earnings call transcript chunks only (prepared remarks and/or Q&A). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]}#69Say-on-Pay ApprovalqualEdgar1 pts▸
Assesses Say-on-Pay Approval using source-grounded qualitative evidence and returns a consistent 1-10 judgement signal.
Extract only relevant filing sections; return null when section evidence is unavailable.
Task: Score Say-on-Pay Approval for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use SEC filing chunks only (10-K/10-Q/8-K/DEF 14A as applicable). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: Y#18CEO Ownership MultiplequantEdgar2 pts▸
Insiders are buying
Extract only relevant filing sections; return null when section evidence is unavailable.
Inputs: - [CEO Equity Value] = Shares Held by CEO * Current Stock Price; [CEO Total Pay] = Annual Salary + Bonus + Stock Awards; [CEO Ownership Multiple] = CEO Equity Value / CEO Total Pay Formula: CEO Ownership Multiple_value = computed from mapped inputs Computation Notes: - CEO Ownership Multiple — CEO Ownership Multiple = (CEO Shares Held × Current Price) / CEO Total Annual Compensation - Return null if critical inputs are missing.
#15Compensation AlignmentqualEdgar3 pts▸
Does the management have unquestionable integrity?
Extract only relevant filing sections; return null when section evidence is unavailable.
Task: Score Compensation Alignment for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use SEC filing chunks only (10-K/10-Q/8-K/DEF 14A as applicable). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: A#14Crisis CommunicationqualTranscripts1 pts▸
Does management talk freely when things go well but "clam up" when troubles and disappointments occur?
Task: Score Crisis Communication for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use earnings call transcript chunks only (prepared remarks and/or Q&A). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: [Transparency Score] = LLM Sentiment Analysis of Earnings Call Q&A forthrightness and PR statements during adverse events (1-10); [Crisis Communication Index] = Transparency Score#9Leadership Bench StrengthqualEdgar1 pts▸
Does the company have depth to its management?
Extract only relevant filing sections; return null when section evidence is unavailable.
Task: Score Leadership Bench Strength for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use SEC filing chunks only (10-K/10-Q/8-K/DEF 14A as applicable). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: B#8C-Suite StabilityquantEdgar1 pts▸
Does the company have outstanding executive relations?
Extract only relevant filing sections; return null when section evidence is unavailable.
Inputs: - [Departure Count] = Sum of 8-K Item 5.02 Filings (Executive Departures) over trailing 36 months; [Leadership Attrition Rate] = Departure Count Formula: C-Suite Stability_value = computed from mapped inputs Computation Notes: - C-Suite Stability — Filing: 8-K Item 5.02 — all filings in trailing 36 months - Return null if critical inputs are missing.
Financial Health & Accounting
11 metrics · 17 pts#77Forward CapEx IntensityquantFMP+CIQ1 pts▸
Measures Forward CapEx Intensity using structured financial inputs to quantify performance and comparability across companies.
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_capex_est | — | — |
| sp_rev_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [Consensus FWD CapEx] = Consensus Estimate for Next Year CapEx; [Consensus FWD Revenue] = Consensus Estimate for Next Year Revenue; [Forward CapEx Intensity] = Consensus FWD CapEx / Consensus FWD Revenue Formula: FWD CapEx Intensity = SP_CAPEX_EST / SP_REV_EST (same period) Computation Notes: - Forward CapEx Intensity — Consensus FWD CapEx / Consensus FWD Revenue - Return null if critical inputs are missing.
#73Incremental ROICquantFMP1 pts▸
Measures the return generated on each new dollar of capital invested — distinguishes between return on existing assets vs new investment quality.
| Variable | Endpoint | Field |
|---|---|---|
| roic | /key-metrics?limit=2 | roic |
| total_equity | /balance-sheet-statement?limit=2 | totalEquity |
| total_debt | /balance-sheet-statement?limit=2 | totalDebt |
| cash_and_cash_equivalents | /balance-sheet-statement?limit=2 | cashAndCashEquivalents |
Use latest available period; return null if critical fields are missing.
Inputs: - [Delta NOPAT] = Current Year NOPAT - Previous Year NOPAT; [Delta Invested Capital] = Current Year Invested Capital - Previous Year Invested Capital; [Incremental ROIC] = Delta NOPAT / Delta Invested Capital Formula: iROIC = (ROIC_current x IC_current - ROIC_prior x IC_prior) / (IC_current - IC_prior); IC = totalEquity + totalDebt - cashAndCashEquivalents Computation Notes: - Incremental ROIC — iROIC = ΔNOPAT / ΔInvested Capital - Return null if critical inputs are missing.
#70Audit RiskqualEdgar1 pts▸
Assesses Audit Risk using source-grounded qualitative evidence and returns a consistent 1-10 judgement signal.
Extract only relevant filing sections; return null when section evidence is unavailable.
Task: Score Audit Risk for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use SEC filing chunks only (10-K/10-Q/8-K/DEF 14A as applicable). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: A#59Capital Return SpreadquantFMP3 pts▸
High return on equity, or return on incremental capital
| Variable | Endpoint | Field |
|---|---|---|
| roic_ttm | /key-metrics-ttm | roicTTM |
| wacc | /key-metrics-ttm | wacc |
| operating_income | /income-statement?limit=1 | operatingIncome |
Use latest available period; return null if critical fields are missing.
Inputs: - [ROIC] = NOPAT / Invested Capital; [WACC] = Weighted Average Cost of Capital; [Capital Return Spread] = ROIC - WACC Formula: Capital Return Spread = ROIC - WACC; Primary: use roicTTM from /key-metrics-ttm and wacc from /key-metrics-ttm if available; Fallback ROIC: NOPAT / Invested Capital where NOPAT = operatingIncome × (1 - effectiveTaxRate), IC = totalEquity + totalDebt - cashAndCashEquivalents; Fallback WACC: (E/V × Re) + (D/V × Rd × (1 - taxRate)) where Re = riskFreeRate + beta × 5.5% (equity risk premium), Rd = interestExpense / totalDebt, riskFreeRate from /treasury-rates (10Y), beta from /profile Computation Notes: - Capital Return Spread (ROIC - WACC) — ROIC = NOPAT / Invested Capital; spread vs WACC | Capital Return Spread (ROIC - WACC) — ROIC = NOPAT / Invested Capital - Return null if critical inputs are missing.
#58Debt Coverage RatioquantFMP2 pts▸
Margin for error, low debt and ability to service it
| Variable | Endpoint | Field |
|---|---|---|
| operating_cash_flow | /cash-flow-statement?limit=1 | operatingCashFlow |
| short_term_debt | /balance-sheet-statement?limit=1 | shortTermDebt |
| long_term_debt | /balance-sheet-statement?limit=1 | longTermDebt |
Use latest available period; return null if critical fields are missing.
Inputs: - [Operating Cash Flow] = Net Cash from Operating Activities; [Total Debt] = Short Term Debt + Long Term Debt; [Debt Coverage Ratio] = Operating Cash Flow / Total Debt Formula: Debt Coverage Ratio = operatingCashFlow / (shortTermDebt + longTermDebt) Computation Notes: - Debt Coverage Ratio — Debt Coverage Ratio = Operating Cash Flow / Total Debt - Return null if critical inputs are missing.
#57Forward FCF YieldquantFMP+CIQ2 pts▸
10Y of strong bottom-line performance
| Variable | Endpoint | Field |
|---|---|---|
| market_cap_ttm | /key-metrics-ttm | marketCapTTM |
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_fcf_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [Consensus FWD FCF] = Consensus FWD Operating Cash Flow - Consensus FWD CapEx; [Market Cap] = Shares Outstanding * Current Price; [Forward FCF Yield] = Consensus FWD FCF / Market Cap Formula: FWD FCF Yield = SP_FCF_EST (next FY) / Market Cap Computation Notes: - Forward FCF Yield — FWD FCF Yield = Consensus FWD FCF / Market Cap - Return null if critical inputs are missing.
#28Shareholder YieldquantFMP1 pts▸
Uninterrupted record of paying dividends for the last 20 years
| Variable | Endpoint | Field |
|---|---|---|
| dividends_paid | /cash-flow-statement?limit=1 | dividendsPaid |
| common_stock_repurchased | /cash-flow-statement?limit=1 | commonStockRepurchased |
| market_cap_ttm | /key-metrics-ttm | marketCapTTM |
| net_debt | /balance-sheet-statement?limit=2 | netDebt |
Use latest available period; return null if critical fields are missing.
Inputs: - [Dividend Yield] = Annual Dividends / Market Cap; [Buyback Yield] = Net Share Repurchases / Market Cap; [Debt Paydown Yield] = Net Debt Reduction / Market Cap; [Shareholder Yield] = Dividend Yield + Buyback Yield + Debt Paydown Yield Formula: Shareholder Yield = Dividend Yield + Buyback Yield + Debt Paydown Yield; Dividend Yield = abs(dividendsPaid) / marketCap; Buyback Yield = abs(commonStockRepurchased) / marketCap; Debt Paydown Yield = max(0, netDebt_prior - netDebt_current) / marketCap Computation Notes: - Shareholder Yield — Shareholder Yield = Dividend Yield + Buyback Yield + Debt Paydown Yield - Return null if critical inputs are missing.
#24Cash Conversion CyclequantFMP2 pts▸
If inventory is growing faster than sales, that’s a red flag
| Variable | Endpoint | Field |
|---|---|---|
| revenue | /income-statement?limit=1 | revenue |
| cost_of_revenue | /income-statement?limit=1 | costOfRevenue |
| net_receivables | /balance-sheet-statement?limit=1 | netReceivables |
| inventory | /balance-sheet-statement?limit=1 | inventory |
| account_payables | /balance-sheet-statement?limit=1 | accountPayables |
Use latest available period; return null if critical fields are missing.
Inputs: - [Days Sales Outstanding] = (Accounts Receivable / Revenue) * 365; [Days Inventory Outstanding] = (Inventory / COGS) * 365; [Days Payable Outstanding] = (Accounts Payable / COGS) * 365; [Cash Conversion Cycle] = Days Sales Outstanding + Days Inventory Outstanding - Days Payable Outstanding Formula: CCC = DSO + DIO - DPO; DSO = (netReceivables / revenue) × 365; DIO = (inventory / costOfRevenue) × 365; DPO = (accountPayables / costOfRevenue) × 365 Computation Notes: - Cash Conversion Cycle — CCC = DSO + DIO - DPO - Return null if critical inputs are missing.
#13Long-Term LeveragequantFMP1 pts▸
Will future growth require equity financing that cancels out the benefits for existing stockholders?
| Variable | Endpoint | Field |
|---|---|---|
| total_non_current_liabilities | /balance-sheet-statement?limit=1 | totalNonCurrentLiabilities |
| total_stockholders_equity | /balance-sheet-statement?limit=1 | totalStockholdersEquity |
Use latest available period; return null if critical fields are missing.
Inputs: - [Long Term Debt] = Total Non-Current Liabilities; [Total Equity] = Total Shareholders Equity; [Long-Term Leverage Ratio] = Long Term Debt / Total Equity Formula: Long-Term Leverage Ratio = totalNonCurrentLiabilities / totalStockholdersEquity Computation Notes: - Long-Term Leverage — Long-Term Leverage Ratio = Total Non-Current Liabilities / Total Shareholders Equity | not an issue, the field name is correct. Pushing to follow-up was unnecessary — ignoring. — #28 negative — agreed, simple abs(). No complexity. - Return null if critical inputs are missing.
#10Accounting IntegrityqualEdgar1 pts▸
How good are the company’s cost analysis and accounting controls?
Extract only relevant filing sections; return null when section evidence is unavailable.
Task: Score Accounting Integrity for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use SEC filing chunks only (10-K/10-Q/8-K/DEF 14A as applicable). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: I#5Consensus Margin ExpansionquantFMP2 pts▸
Does the company have a worthwhile profit margin?
| Variable | Endpoint | Field |
|---|---|---|
| net_income | /income-statement?limit=1 | netIncome |
| revenue | /income-statement?limit=1 | revenue |
Use latest available period; return null if critical fields are missing.
Inputs: - [Current Net Margin] = Net Income / Revenue; [Consensus FWD Net Margin] = Consensus FWD Net Income / Consensus FWD Revenue; [Margin Expansion Spread] = Consensus FWD Net Margin - Current Net Margin Formula: Margin Expansion Spread = FWD Net Margin - Current Net Margin; Current Net Margin = netIncome_LTM / revenue_LTM; FWD Net Margin = SP_NI_EST(CQ+1..CQ+4 annualised) / SP_REV_EST(CQ+1..CQ+4 annualised) Computation Notes: - Consensus Margin Expansion — Margin Expansion Spread = Consensus FWD Net Margin - Current Net Margin - Return null if critical inputs are missing.
Growth & Future Potential
8 metrics · 20 pts#72Estimate Revision MomentumquantFMP+CIQ3 pts▸
Measures Estimate Revision Momentum using structured financial inputs to quantify performance and comparability across companies.
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_eps_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [Current Consensus EPS] = Current 12-Month Forward EPS Estimate; [90-Day Ago Consensus EPS] = 12-Month Forward EPS Estimate from 90 Days Ago; [Estimate Revision Momentum] = (Current Consensus EPS - 90-Day Ago Consensus EPS) / abs(90-Day Ago Consensus EPS) Formula: Estimate Revision Acceleration (3-point): EPS_0 = SP_EPS_EST consensus, snapshot_date = most recent, period_label = FY+1 EPS_90 = SP_EPS_EST consensus, snapshot_date closest to (today - 90 days), same period_label EPS_180 = SP_EPS_EST consensus, snapshot_date closest to (today - 180 days), same period_label Rev_B (short-term) = (EPS_0 - EPS_90) / abs(EPS_90) # today vs 90d ago Rev_A (medium-term) = (EPS_90 - EPS_180) / abs(EPS_180) # 90d ago vs 180d ago Scoring logic (step function): If Rev_A < 0 AND Rev_B < 0: score = 0.00 (Dead Money — 6mo continuous decline) If Rev_A > 0 AND Rev_B < 0: score = 0.25 (The Fade — rolling over, catalyst priced in) If Rev_A > 0 AND Rev_B > 0 AND Rev_B <= Rev_A: score = 0.50 (Steady State — confirmed, not accelerating) If Rev_A < 0 AND Rev_B > 0: score = 0.75 (The Turnaround — significant sentiment shift) If Rev_A > 0 AND Rev_B > 0 AND Rev_B > Rev_A: score = 1.00 (Blue Sky Acceleration — hiking faster) Point split: 1.5 pts: absolute 90-day revision power (Rev_B magnitude) 1.5 pts: relative trend direction (Rev_B vs Rev_A comparison) Total: 3 pts Computation Notes: - Return null if critical inputs are missing.
#71Forward Revenue GrowthquantFMP+CIQ3 pts▸
Measures Forward Revenue Growth using structured financial inputs to quantify performance and comparability across companies.
| Variable | Endpoint | Field |
|---|---|---|
| revenue_ltm | /income-statement?limit=1 | revenue |
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_rev_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [Current Revenue] = Last Twelve Months Revenue; [Consensus FWD Revenue] = Consensus Revenue Estimate Next Twelve Months; [Forward Revenue Growth] = (Consensus FWD Revenue / Current Revenue) - 1 Formula: FWD Revenue Growth = (SP_REV_EST_FWD / revenue_LTM) - 1; FWD Revenue = sum SP_REV_EST CQ+1..CQ+4; fallback next FY Computation Notes: - Forward Revenue Growth — (Consensus FWD Revenue / LTM Revenue) - 1 - Return null if critical inputs are missing.
#68Technology ModernizationqualEdgar2 pts▸
Assesses Technology Modernization using source-grounded qualitative evidence and returns a consistent 1-10 judgement signal.
Extract only relevant filing sections; return null when section evidence is unavailable.
Task: Score Technology Modernization for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use SEC filing chunks only (10-K/10-Q/8-K/DEF 14A as applicable). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: [Tech Score] = LLM Analysis of AI/Automation implementation evidence (1-10); [Tech Intensity Rating] = Tech Score#63Rule of 40quantFMP2 pts▸
TTM revenue growth rate (%) + EBITDA margin (%)
| Variable | Endpoint | Field |
|---|---|---|
| revenue | /income-statement?limit=2 | revenue |
| free_cash_flow | /cash-flow-statement?limit=1 | freeCashFlow |
Use latest available period; return null if critical fields are missing.
Inputs: - [Revenue Growth Rate] = (Current Year Revenue / Previous Year Revenue) - 1; [FCF Margin] = Free Cash Flow / Total Revenue; [Rule of 40 Score] = Revenue Growth Rate + FCF Margin Formula: Rule of 40 = Revenue Growth Rate (YoY) + FCF Margin (LTM); Revenue Growth Rate = (revenue_LTM / revenue_LTM-1) - 1 where LTM = current full year, LTM-1 = prior full year; FCF Margin = freeCashFlow_LTM / revenue_LTM Computation Notes: - Rule of 40 — Rule of 40 = Revenue Growth Rate + FCF Margin - Return null if critical inputs are missing.
#40Human Capital LeveragequantFMP+CIQ2 pts▸
Workforce productivity measured as Revenue per Employee spread vs peer group median
| Variable | Endpoint | Field |
|---|---|---|
| revenue | /income-statement?limit=1 | revenue |
| employee_count | /historical-employee-count | employeeCount |
| peer_tickers | /stock-peers | peersList |
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_rev_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [Total Revenue] = Annual Revenue; [Total Employees] = Number of Full-Time Employees; [Revenue per Employee] = Total Revenue / Total Employees; [Industry Avg Rev per Employee] = Median Revenue per Employee for Peer Group; [Human Capital Leverage] = (Revenue per Employee / Industry Avg Rev per Employee) - 1 Formula: HCL = (Revenue_per_Employee / Peer_Median_Revenue_per_Employee) - 1 Computation Notes: - Return null if critical inputs are missing.
#29Forward EPS CAGRquantFMP+CIQ3 pts▸
EPS has grown at least 1/3 over the last 10 years
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_eps_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [FWD Year 1 EPS] = Consensus EPS Estimate Year 1; [FWD Year 3 EPS] = Consensus EPS Estimate Year 3; [Forward EPS CAGR] = ((FWD Year 3 EPS / FWD Year 1 EPS) ^ (1/2)) - 1 Formula: FWD EPS CAGR = ((SP_EPS_EST(FY+2) / SP_EPS_EST(FY+1)) ^ 0.5) - 1; uses 2-year CAGR from FY+1 to FY+3 where available; fallback: (SP_EPS_EST(FY+2) / SP_EPS_EST(FY+1)) - 1 if only 2 annual periods available Computation Notes: - Forward EPS CAGR — ((FWD EPS Year 3 / FWD EPS Year 1) ^ 0.5) - 1 - Return null if critical inputs are missing.
#12Reinvestment RatequantFMP2 pts▸
Does the company have a short-range or long-range outlook in regard to profits?
| Variable | Endpoint | Field |
|---|---|---|
| capital_expenditure | /cash-flow-statement?limit=1 | capitalExpenditure |
| depreciation_and_amortization | /cash-flow-statement?limit=1 | depreciationAndAmortization |
| operating_income | /income-statement?limit=1 | operatingIncome |
| effective_tax_rate_ttm | /ratios-ttm | effectiveTaxRateTTM |
Use latest available period; return null if critical fields are missing.
Inputs: - [Net CapEx] = Capital Expenditures - Depreciation & Amortization; [Change in NWC] = Current Year Net Working Capital - Previous Year Net Working Capital; [NOPAT] = EBIT * (1 - Tax Rate); [Reinvestment Rate] = (Net CapEx + Change in NWC) / NOPAT Formula: Reinvestment Rate = (Net CapEx + ΔNWC) / NOPAT; Net CapEx = capitalExpenditure - depreciationAndAmortization; ΔNWC = (totalCurrentAssets_t - cashAndCashEquivalents_t - totalCurrentLiabilities_t + shortTermDebt_t) - (same for t-1); NOPAT = operatingIncome × (1 - effectiveTaxRate) Computation Notes: - Reinvestment Rate — Reinvestment Rate = (Net CapEx + ΔNWC) / NOPAT - Return null if critical inputs are missing.
#2Product Pipeline StrengthqualEdgar3 pts▸
Does management intend to continue developing products/processes that will further increase sales when current lines are exploited?
Extract only relevant filing sections; return null when section evidence is unavailable.
Task: Score Product Pipeline Strength for {TICKER} ({COMPANY_NAME}) on a 1-10 scale. Source Context: - Use SEC filing chunks only (10-K/10-Q/8-K/DEF 14A as applicable). - If evidence is insufficient, return null. Evaluation Criteria: 1) Ground the score in explicit evidence. 2) Favor recent and specific evidence over vague language. 3) Return null when evidence is insufficient. Output Format: Return strict JSON: {"score": <1-10 or null>, "reasoning": "<max 80 words>", "evidence": ["<source note 1>", "<source note 2>"]} Reference Context: [Pipeline Score] = LLM Analysis of R&D pipeline announcements, patent filings, and clinical/product trial stages (1-10); [Pipeline Strength Index] = Pipeline ScoreValuation & Pricing
5 metrics · 16 pts#67Reverse DCF SpreadquantFMP+CIQ4 pts▸
Measures Reverse DCF Spread using structured financial inputs to quantify performance and comparability across companies.
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_eps_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - Use mapped source variables from data_detail. Formula: [Market Cap] = Current Price * Shares Outstanding; [PV of Cash Flows] = Sum(FCF * (1 + g)^n / (1 + WACC)^n); [Implied Growth] = Solve for 'g' where Market Cap = PV of Cash Flows + PV of TV; [Consensus Growth] = Consensus FWD EPS Growth; [Market Implied Growth Spread] = Consensus Growth - Implied Growth Computation Notes: - Return null if critical inputs are missing.
#55Peer Relative Forward P/EquantFMP+CIQ3 pts▸
Forward P/E valuation spread vs peer group median
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_eps_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [Company FWD P/E] = Current Price / Consensus FWD EPS; [Peer Median FWD P/E] = Median Forward P/E of Identified Peer Set; [Peer Valuation Discount] = (Company FWD P/E / Peer Median FWD P/E) - 1 Formula: Discount = (Company FWD P/E / Peer Median FWD P/E) - 1 Computation Notes: - Return null if critical inputs are missing.
#43Discounted Cash Flow (DCF)quantFMP4 pts▸
If I hold this company for 20 years, will the cash it produces be significantly higher than the price I am paying + 10% annual return?
Use latest available period; return null if critical fields are missing.
Inputs: - Use mapped source variables from data_detail. Formula: [Projected FCF] = Free Cash Flow * (1 + Growth Rate)^n; [PV of Cash Flows] = Sum(Projected FCF / (1 + Discount Rate)^n); [Terminal Value] = (Projected FCF_Final * (1 + Terminal Growth)) / (Discount Rate - Terminal Growth); [PV of TV] = Terminal Value / (1 + Discount Rate)^n; [Intrinsic Value] = (PV of Cash Flows + PV of TV) / Shares Outstanding; [Intrinsic Value Price Spread] = (Intrinsic Value / Current Price) - 1 Computation Notes: - Return null if critical inputs are missing.
#31Forward Multiple HistoryquantFMP+CIQ2 pts▸
5-year average LTM P/E ratio — historical valuation context
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_eps_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [Current FWD P/E] = Current Price / Consensus FWD EPS; [5-Year Avg FWD P/E] = Historical 5-Year Average of Forward P/E; [Historical Multiple Premium] = (Current FWD P/E / 5-Year Avg FWD P/E) - 1 Formula: 5Y Avg LTM P/E = mean(priceToEarningsRatio) for last 5 fiscal years Computation Notes: - Return null if critical inputs are missing.
#22Forward PEG RatioquantFMP+CIQ3 pts▸
PEG Ratio of 0.5-1.0
| Variable | Endpoint | Field |
|---|---|---|
| current_price | /quote | price |
Use latest available period; return null if critical fields are missing.
| Variable | Endpoint | Field |
|---|---|---|
| sp_eps_est | — | — |
Metric codes mapped from CIQmapping.csv; use consensus _EST only.
Inputs: - [Forward P/E] = Current Price / Consensus FWD EPS; [FWD EPS Growth Rate] = Consensus FWD 3-5 Year EPS Growth Rate; [Forward PEG Ratio] = Forward P/E / (FWD EPS Growth Rate * 100) Formula: Forward PEG = FWD P/E / (FWD EPS Growth Rate x 100); FWD P/E = currentPrice / SP_EPS_EST(CQ+1..CQ+4 annualised); FWD EPS Growth Rate = (SP_EPS_EST(FY+2) / SP_EPS_EST(FY+1)) - 1 Computation Notes: - Forward PEG Ratio — Forward PEG = (Current Price / Consensus FWD EPS) / (FWD EPS Growth Rate × 100) - Return null if critical inputs are missing.