Claude Skill

comps

Comparable company analysis, trading comps, peer multiples, EV/EBITDA comparison, P/E benchmarking, comps table, relative valuation, industry multiples, precedent transactions, trading comparable analysis

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download agentii-ai-agentii-investment-intelligence-plugins_vertical-plugins_models-and-pitches_skills_agentii_comps-1a2d679.zip · 14 KB
Part of agentii-ai/agentii-investment-intelligence — 46 skills

Install

skills CLI npx skills add https://github.com/agentii-ai/agentii-investment-intelligence/tree/main/plugins/vertical-plugins/models-and-pitches/skills/agentii/comps
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install agentii-ai-agentii-investment-intelligence@llmmart
Git git clone https://github.com/agentii-ai/agentii-investment-intelligence.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole agentii-ai/agentii-investment-intelligence collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Preflight

Run the canonical pre-flight sequence — MCP health probe, ticker resolution, workspace style.md override, memory load, and coverage check. See contracts/preflight.md.

Include the X-Agentii-Trace header on every tool call per contracts/x-agentii-trace-header.md.

Triggers

  • analyze comps analysis
  • run comps analysis analysis
  • produce comps analysis report
  • comps analysis breakdown
  • comps analysis deep dive
  • build a comps analysis
  • assess comps analysis
  • quantify comps analysis
  • compare comps analysis across peers
  • review comps analysis for
  • generate comps analysis on
  • comps analysis for investment decision

Defaults

Parameter Default Notes
lookback_years 3 Historical data window
include_peers false Whether to surface a peer comparison block

Methodology

Retrieval Scope

This skill performs unstructured document search at scale across SEC filings and earnings call transcripts (10-K, 10-Q, 8-K). The three-layer agent-use-ready retrieval protocol (Document Discovery → Page Map → Deep Read) applies to all unstructured document search at scale.

Retrieval Strategy

See contracts/retrieval.md for the canonical decision tree; skill-specific retrieval detail is in references/methodology.md.

Temporal Scope

Default: 12 fiscal quarters (max 20). Financial modeling: trailing 12 quarters (3 fiscal years) for long-range projection inputs.

Tool Allowlist

See frontmatter allowed_tools.

Protocol

Step-by-step execution detail is in references/methodology.md.

Deliverable Chain

Inputs → Build → Validate → Output → Next

  1. Inputs: resolved ticker + peers via search_companies + search_xbrl_facts for all tickers (revenue, EBITDA, EPS, multiples) + get_company_financials.
  2. Build: write a self-contained Python script using openpyxl that creates the comps workbook (peer profiles, trading multiples, valuation summary) per ## Output Structure. Execute via Bash: python3 script.py. Verify the .xlsx exists. If import openpyxl fails, fall back to .md summary with data_availability: degraded (see contracts/office-tooling.md).
  3. Validate: run LibreOffice recalc; audit per ## Validation Gates.
  4. Output: write the artifact path per ## Output File.
  5. Next: append to agentii.md; hand off to a downstream pitch/review skill if requested.

Validation Gates

  1. peer count: between 4 and 8. If failed: If < 4: flag in Coverage Gaps, proceed with available peers. If > 8: trim to top 8 by sector proximity.

  2. trading multiples: include EV/EBITDA + P/E at minimum. If failed: If either missing: flag which multiple is unavailable and why.

  3. comps statistics table: present with mean, median, high, low for each multiple. If failed: If statistics table missing: refuse delivery.

  4. tool diversity: distinct MCP tools used in this invocation >= min_tool_diversity (5). If failed: flag as depth-insufficient in Coverage Gaps, listing which tool categories were unused (structured data / document retrieval / company metadata / earnings calendar / coverage). This gate does NOT block analysis completion — it is a quality signal for your review.

Tool Fallbacks

Per-tool failure modes and fallback actions are tabulated in references/tool-fallbacks.md.

Output File

Write the final deliverable to _cross/{descriptive-slug}_{YYYY-MM-DD_HHMM}_comps_{affix}.md or _sector/{sector_name}/{YYYY-MM-DD_HHMM}_comps_{affix}.md .

Output Structure

The deliverable is a structured markdown report written to the path in ## Output File. Full section-by-section template (headings, tables, and field definitions) lives in references/output-structure.md. Required elements:

  1. Executive Summary — headline conclusions (≤200 words).
  2. Core analysis sections — per this skill's methodology and analyst modes.
  3. Data classification — tag findings [FACT] / [DEDUCTED] / [VIEW] per contracts/snapshot-synthesis.md.
  4. Coverage Gaps & Citations — inline /v/ citations are PRIMARY (immediately after each fact); the bottom Citations section is a non-duplicative roll-up index.
  5. Output frontmatter — emit the FR-090 structured block per contracts/output-frontmatter-schema.md.

Citations & memory: follow contracts/citation-and-memory.md — ≥1 citation per 200 words; every material fact, table row, and metric is immediately followed by its inline clickable https://agentii.ai/v/{ticker}/{citation_id}/{N} link; a bottom Citations section provides a non-duplicative roll-up index; the closing TUI reply includes a compact Key Citations list (headline 5–10 facts) of clickable /v/ URLs; and append the run to agentii.md per contracts/agentii-md-schema.md.

Memory & Snapshot

  • Memory load (pre-flight): load prior workspace context for the ticker before retrieval — see contracts/memory-load.md.
  • Structured output frontmatter: emit the FR-090 block (key_metrics, conclusions, facts_count, deducted_count, views_count, citation_count) per contracts/output-frontmatter-schema.md.
  • Snapshot synthesis: after writing the deliverable, update the two-tier snapshot and classify findings as [FACT]/[DEDUCTED]/[VIEW] — see contracts/snapshot-synthesis.md.
  • Session archival: record the run under sessions/{YYYY-MM-DD}/ and update sessions/INDEX.md per contracts/session-format.md.

Final Summary (TUI)

End the closing chat reply with a compact Key Citations list (headline 5–10 facts), each a clickable https://agentii.ai/v/{ticker}/{citation_id}/{N} link, so the user can cmd+click straight to the exact SEC page. See contracts/citation-and-memory.md.

Error Handling

Failure Mode Detection Action User-Facing Message
Missing data Data API returns empty result set Widen date range and retry once "No data available for in requested window."
Partial data Data API returns <80% expected records Proceed with coverage gaps section "Analysis based on partial data; see Coverage Gaps section."
Sector mismatch Peer sector != target sector Filter out mismatched peers "Removed peer(s) due to sector mismatch."
Insufficient history Ticker <3 years on public markets Downgrade to limited-history profile "Limited historical data; analysis adjusted accordingly."
MCP unreachable Preflight probe fails Halt with actionable error "agentii data plane unreachable; check connection."
Files (agentii-investment-intelligence)
  • references
    • formula-sheet.md 280 B
      # Formula Sheet
      
      Canonical formulas for this model. All figures must tie to XBRL facts or cited filing pages.
      
      - Revenue growth = (Rev_t / Rev_{t-1}) - 1
      - Gross margin = GrossProfit / Revenues
      - Operating margin = OperatingIncomeLoss / Revenues
      - FCF = OperatingCashFlow - CapEx
      
    • institutional-defaults.md 302 B
      # Institutional Defaults
      
      - Lookback: per skill `temporal_scope`.
      - Currency: reporting currency from the first XBRL fact `unit` (no conversion at v1.0).
      - XBRL: `is_primary = true` default; `?include_all_sources=true` only for audit/reconciliation.
      - Dedup: API-side; do not re-implement client-side.
      
    • methodology.md 1.8 KB
      # comps — Methodology Detail
      
      Extracted from SKILL.md for progressive disclosure (US5).
      
      ## Retrieval Strategy
      
      Follow the retrieval strategy decision tree in `contracts/retrieval.md`. This skill uses:
      - Branch (a) for structured financial metrics via `search_xbrl_facts` with `list_xbrl_concepts` pre-condition for unfamiliar concepts. **Before querying XBRL facts for peer comparability, call `get_statement_structure(accession_number)` for each peer ticker to verify concept availability — prevents cross-company line-item incomparability where one peer uses a non-standard concept name .**
      - Branch (b) for multi-period unstructured queries via `search_cross_period`.
      - Branch (c) for single-period document queries via direct `read_source_outline` → `read_source_pages`.
      - Branch (d) for simple lookups via `get_company_profile` / `search_earnings_calendar`.
      
      ## Protocol
      
      1. Pre-retrieval: call `get_company_fiscal_calendar/{ticker}` to resolve fiscal period format.
      2. Concept discovery: call `list_xbrl_concepts(query=<term>, ticker=<T>)` for unfamiliar XBRL concepts.
      3. Retrieval: follow the three-layer protocol —
       - Layer 1: `search_documents` / `search_sec_filings` to discover candidate filings.
       - Layer 2: `read_source_outline` to scan page-level metadata.
       - Layer 2.5 (optional): `search_keyword_in_source` to filter large documents.
       - Layer 3: `read_source_pages` to deep-read only selected pages.
      4. Evidence-pack handoff: produce `evidence-pack.json` + `evidence-digest.md` per the evidence-pack output contract.
      5. **xlsx-financials output**: invoke `xlsx-financials` as sub-skill to produce formatted `.xlsx` comps table workbook. For multi-ticker comps, output to `_cross/{slug}_{date}_statement-income.xlsx` . For single-ticker, output to `{ticker}/{date}_{time}_statement-income.xlsx`.
      
    • modes.md 687 B
      # comps — Analyst Mode Definitions
      
      Derived from the skill's own methodology structure (scripts/mode_backfill.py, spec 046 M1).
      
      ### Mode: preflight
      
      **Objective**: Preflight analysis per the skill's methodology (see SKILL.md sections).
      
      ### Mode: triggers
      
      **Objective**: Triggers analysis per the skill's methodology (see SKILL.md sections).
      
      ### Mode: defaults
      
      **Objective**: Defaults analysis per the skill's methodology (see SKILL.md sections).
      
      ### Mode: methodology
      
      **Objective**: Methodology analysis per the skill's methodology (see SKILL.md sections).
      
      ### Mode: retrieval-scope
      
      **Objective**: Retrieval Scope analysis per the skill's methodology (see SKILL.md sections).
      
    • output-structure.md 1.9 KB
      # comps — Output Structure (full template)
      
      Extracted from SKILL.md for progressive disclosure (US5). The skill body keeps a compact summary under `## Output Structure`.
      
      1. **Executive Summary** — target company's relative valuation conclusion (premium/discount/fair vs. peers), key multiple that drives the spread
      2. **Peer Selection Rationale** — 4-8 peers (Validation Gate 1), sector/industry alignment, size proximity (market cap, revenue scale), business model comparability
      3. **Company Profiles** — one paragraph per peer: ticker, market cap, revenue, EBITDA, key business segments, 1-sentence differentiation from target
      4. **Trading Multiples Table** — P/E (LTM + NTM), EV/EBITDA (LTM + NTM), EV/Revenue, P/B, PEG ratio for each peer (Validation Gate 2: EV/EBITDA + P/E at minimum)
      5. **Valuation Summary** — mean, median, high, low for each multiple (Validation Gate 3: statistics table mandatory). Implied valuation range for target
      6. **Relative Value Assessment** — target vs. peer median: premium/discount analysis, justified premium factors (growth, margins, moat), unjustified discount factors (overhang, complexity)
      7. **Cross-Company Comparability Notes** — concept availability verified (`get_statement_structure` for each peer), accounting differences flagged, fiscal-year misalignment noted
      8. **Coverage Gaps & Citations** — data not retrievable + full citation index in `{ticker} {citation_id} page<N>` format
      
      **Citations & memory**: follow `contracts/citation-and-memory.md` — ≥1 citation per 200 words; every material fact, table row, and metric is immediately followed by its inline clickable `https://agentii.ai/v/{ticker}/{citation_id}/{N}` link; a bottom **Citations** section provides a non-duplicative roll-up index; the closing TUI reply includes a compact **Key Citations** list (headline 5–10 facts) of clickable `/v/` URLs; and append the run to `agentii.md` per `contracts/agentii-md-schema.md`.
      
    • tool-fallbacks.md 1.8 KB
      # comps — Tool Fallbacks
      
      Extracted from SKILL.md for progressive disclosure (US5).
      
      | Tool | Failure Mode | Fallback Action | Coverage Annotation |
      |------|-------------|-----------------|---------------------|
      | `read_source_pages` | SQL error / PROXY_ERROR | Use `search_keyword_in_source(document_id, keyword)` if document_id known; otherwise `search_documents` with same query | "source file unavailable; used keyword search instead" |
      | `read_source_deep_outline` | PROXY_ERROR / 404 | Use lightweight `read_source_outline` and flag `deep_outline_degraded: true` | "deep outline unavailable; used lightweight page map instead" |
      | `read_source_outline` | PROXY_ERROR / 404 | Use `list_sources` for document-level metadata | "page map unavailable; used document listing instead" |
      | `list_xbrl_concepts` | Timeout / 503 | Use direct `search_xbrl_facts` with standard US-GAAP concepts (Revenues, NetIncomeLoss, EarningsPerShareDiluted, OperatingIncomeLoss, Assets) | "concept discovery skipped due to timeout; using standard US-GAAP concepts" |
      | `get_company_fiscal_calendar` | Cross-validation failed | Use XBRL-derived period grid from `search_xbrl_facts` `period_end` dates | "fiscal calendar mismatch; using XBRL-derived period grid" |
      | `search_unified` | Intermittent error | Use parallel `search_documents` + `search_xbrl_facts` with the same query | "unified search unavailable; used parallel document + XBRL search" |
      | `batch_search` | PROXY_ERROR | Use sequential individual calls (one per sub-query) | "batch search unavailable; used sequential calls" |
      
      Tool errors are retried ONCE with the fallback action before escalating to the retrieval gaps failure policy. If both Layer 2 and Layer 3 tools are unavailable, enter document access degradation mode (structured data + metadata only, flag output as degraded).
      
    • validation-checklist.md 313 B
      # Validation Checklist
      
      - [ ] Every input figure cites a filing page or XBRL accession.
      - [ ] Recalc/audit returns no hardcoded-over-formula cells.
      - [ ] Statement identities balance within rounding.
      - [ ] Period labels match `get_company_fiscal_calendar`.
      - [ ] Coverage gaps are surfaced, not silently dropped.
      
    • wsp-methodology.md 15.8 KB
      # Trading Comps Methodology -- Institutional Best Practices
      
      ## Protocol
      
      **Peer Selection.** Identify 5-10 publicly traded comparables using a dual-path approach: sector classification (industry, product mix, end-market exposure) combined with fundamentals screening (size, growth trajectory, margins, capital intensity). Business life cycle filtering is critical -- early-stage, growth, mature, and declining companies should not be mixed without explicit adjustment. The target company must be included in its own peer group; the intuition is that the market prices the sector correctly on average but can misprice individual names.
      
      **Multiple Selection.** Compute multiples across three time horizons -- LTM (trailing), Year 1 Forward, and Year 2 Forward. Enterprise value multiples (EV/Revenue, EV/EBITDA, EV/EBIT) are analyzed alongside equity multiples (P/E, PEG). Use median for groups of five or more to limit outlier distortion; mean is acceptable for smaller groups without outliers. Weighting between LTM and forward multiples is context-dependent: forward multiples carry more weight when LTM contains material nonrecurring items or significant margin and growth rate shifts are expected. LTM serves as the baseline when results are clean and the company is in steady state.
      
      **Calendarization.** All companies are normalized to a December 31 calendar year end before multiples are compared. The adjustment uses pro-rata allocation: calendar-year metric equals (months of FY1 falling in CY / 12 x FY1 consensus) plus (months of FY2 falling in CY / 12 x FY2 consensus). Without calendarization, cross-company comparisons across different fiscal year endings are meaningless.
      
      ## Key Formulas
      
      ```
      Enterprise Value = Equity Value + Net Debt
      Net Debt = Gross Debt + Noncontrolling Interests + Preferred Stock
                 - Cash & Equivalents - Marketable Securities
      
      Implied EV = Peer Median Multiple x Target Operating Metric
      Implied Share Price = (Implied EV - Target Net Debt) / Diluted Shares Outstanding
      
      LTM = Latest FY + Latest Interim Period - Prior Year Equivalent Interim Period
      PEG = P/E Ratio / Long-Term EPS Growth Rate (%)
      
      Diluted Shares (Treasury Stock Method):
        Net Dilution = Gross Options - (Gross Proceeds / Current Share Price)
        Only in-the-money options are included (exercise price < market price).
      
      Normalized Operating Income = GAAP Op Income + Excluded Operating Expenses
      Normalized Net Income = GAAP Net Income + Pre-Tax Adjustments - Tax Effect
      Tax Effect = Sum of Taxable Adjustments x Marginal Tax Rate
      ```
      
      ## Practitioner Standards
      
      **Non-GAAP Comparability Adjustments.** Three categories of items require exclusion before multiples are computed:
      
      1. **Stock-Based Compensation.** Treated as a non-cash expense analogous to depreciation. In heavy-SBC industries (technology, biotech), it is universally excluded. The associated tax benefit must also be removed -- eliminating the expense is equivalent to pretending it never occurred.
      
      2. **Nonrecurring Items.** Restructuring charges, severance, litigation settlements, gains/losses on asset sales, inventory write-downs, one-time CEO transition costs, acquisition and integration costs, purchase accounting adjustments, and amortization of acquired intangibles are stripped out. These are typically embedded within COGS, SG&A, or non-operating income on the GAAP income statement and disclosed only in footnotes or press release reconciliation tables.
      
      3. **Industry-Specific Exclusions.** Oil and gas companies use EBITDAX to neutralize full-cost vs. successful-efforts exploration accounting. REITs use FFO/AFFO to add back D&A and gains on sale. Technology companies frequently exclude amortization of acquired intangibles and capitalized software development costs.
      
      **Entry Convention.** Excluded operating expenses are entered as positive numbers; excluded income as negative. The tax effect is a separate line netting the tax shield impact of all taxable adjustments.
      
      **Source Hierarchy.** Non-GAAP reconciliation is most reliably found in earnings press releases and conference call transcripts (retrieve via `search_documents(ticker={T}, form_type="earnings_call_transcript")` → `read_source_pages`; citation prefix `ect<N>`). SEC filings (10-K, 10-Q) embed adjustments within major expense categories with details only in footnotes.
      
      **Statistical Output.** Report High, Low, Median, Mean, and Mean-excluding-target for every multiple across every time period. The Mean-excluding-target row detects when the target's own multiple skews the peer average.
      
      **Valuation Matrix.** Implied share prices are calculated for Median, High, and Low scenarios across all multiples and time periods. Results feed into a football field floating bar chart where the "Lower Value" and "Column Value" segments use invisible fills and upper value labels are placed at "Inside Base" alignment. The Y-axis must be hardcoded to a fixed maximum.
      
      ## Data Integration
      
      **Input Data Requirements.** For each peer company: market data (ticker, quarter dates, FYE, stock price), shares data (basic shares, options by tranche with strike prices, convertible securities), GAAP financials (full income statement for latest FY and interim quarters), non-GAAP exclusions (operating, non-operating, tax effect), forward estimates (revenue, EBITDA, EBIT, EPS for Year 1 and Year 2, plus long-term growth rate), and balance sheet items (ST/LT debt, noncontrolling interests, preferred stock, cash).
      
      **Dynamic Output Architecture.** The output sheet uses VLOOKUP nested with MATCH: `IF(ISBLANK($A9),"",VLOOKUP(B9,Input!$A$6:$L$300,MATCH($A9,Input!$B$6:$L$6,0)+1,FALSE))`. This enables dropdown-driven company selection that automatically repopulates all financials and multiples. The target company always occupies the first data row.
      
      **Workbook Structure.** Five tabs: Cover, Input, Output, Valuation Matrix, Football Field.
      
      ## Output Structure
      
      **Financial Metrics Table.** Columns by time period -- LTM, Year 1 Forecast, Year 2 Forecast -- each with Revenue, EBITDA, EBIT, EPS. Supplementary columns: Market Cap, Enterprise Value, LT Growth Rate, Net Debt, Diluted Shares Outstanding.
      
      **Valuation Multiples Table.** Matching structure: EV/Revenue, EV/EBITDA, EV/EBIT, P/E for each period, plus PEG. Statistical summary rows: High, Low, Median, Mean, Mean(excl. target), Target.
      
      **Valuation Matrix.** For each scenario (Median, High, Low) and each multiple/time-period combination: Multiple x Target Metric = Enterprise Value, less Net Debt = Equity Value, divided by Shares Outstanding = Implied Share Price.
      
      **Football Field Chart.** Six floating bars (LTM EV/Revenue, LTM EV/EBITDA, LTM EV/EBIT, LTM P/E, Year 1 EV/EBITDA, PEG) bracket the Low-to-High implied share price range, with current share price overlaid as a reference line.
      
      ## Industry-Specific Multiples
      
      | Sector | Primary Multiple | Rationale |
      |---|---|---|
      | Technology | EV/Revenue, EV/EBITDA | Negative earnings tolerance; growth-stage prevalence |
      | Financial Institutions | P/B, P/Tangible Book | Marked-to-market equity; asset-based valuation |
      | Oil & Gas | EV/DACF, EV/EBITDAX | Neutralizes full-cost vs. successful-efforts exploration accounting |
      | REITs | Price/FFO, Price/AFFO | D&A distorts real estate profitability |
      | Internet (Pre-Revenue) | EV/Subscribers, EV/Website Hits | User base as monetization proxy; use with extreme caution |
      | Asset-Intensive/Capital Goods | P/B, EV/EBIT | Capital intensity comparability; D&A differences material |
      
      ## Transaction Comps Supplement
      
      ### Protocol
      
      **Deal Screening Criteria.** Precedent transaction selection follows a layered filtration process distinct from trading comp screening. Primary filters are industry classification (SIC or NAICS code of the target), transaction size (enterprise value, revenue, EBITDA floors), and recency (six-to-seven-year maximum lookback; deal premiums and multiples are acutely sensitive to the prevailing M&A cycle and deals older than this window produce stale multiples). A nominal transaction value floor ($5M is customary in middle-market screens) eliminates micro-deals that lack institutional relevance regardless of industry fit. Deal type is restricted to acquisitions/mergers and majority stakes; minority investments and spin-offs are excluded from the initial screen. Transaction status includes completed, pending, and canceled deals -- pending deals retain their agreed multiples absent a material adverse change clause, and canceled deals preserve the originally negotiated multiple as a market-clearing data point.
      
      Secondary filters sharpen relevance when the raw screen produces excessive results: industry position, seasonality, cyclicality, capital structure leverage, and growth trajectory. The most powerful secondary technique is screening by acquirer name from the target's trading comp peer group -- a peer's past acquisition target is structurally more likely to operate in the same line of business than a random industry-code match. A revenue filter serves dual purpose: it ensures size comparability and automatically eliminates private deals with no financial disclosures in the database.
      
      Three discovery paths operate in parallel: (1) colleague and internal comp sets from prior pitches or deals; (2) database screening via CapIQ, FactSet, Bloomberg, Thompson, or industry-specific platforms (SNL for financial institutions); (3) fairness opinions filed in S-4s or proxy statements (DEF 14A) of comparable transactions. Fairness opinions contain investment bank-compiled precedent transaction lists that frequently surface deals missing from database screens. S-1 registration statements -- when a peer has recently gone public -- serve as an additional discovery source, as they routinely catalog landmark industry acquisitions. Database-screen data must be verified against source SEC filings; databases are optimized for screening breadth, not data accuracy, and errors in deal terms or financials are common.
      
      **Premium Analysis.** The control premium is calculated against the target's unaffected share price at three intervals: one day, one week, and one month prior to announcement. The one-day price is most commonly cited but is frequently contaminated by rumor-driven volume spikes; cross-referencing across all three horizons and monitoring trading volume for anomalous surges is essential. Control premiums typically range from 25% to 50%+ above standalone market value, with the distribution sensitive to credit cycles, equity market conditions, and competitive bidder dynamics. Strategic acquirers systematically pay higher premiums than financial buyers due to anticipated synergy extraction. Historical share prices for delisted targets are retained in paid databases (Bloomberg, FactSet) but are absent from free sources. When all databases fail, fairness opinions themselves frequently disclose the historical prices used in the premium calculation.
      
      **Synergy Exclusion.** Transaction multiples embed the present value of expected synergies that strategic acquirers can extract -- cost reductions, revenue cross-sell, and tax benefits -- which is why transaction multiples structurally exceed trading multiples. Announced synergies are found not in the merger agreement itself but in the deal announcement conference call transcript (retrieve via `search_documents(form_type="earnings_call_transcript")`; CapIQ/FactSet if unavailable), press releases quoting management, or sell-side research reports. The presence of material synergy expectations directly inflates observed deal multiples; all else equal, comps with announced synergies must be contextualized against those without. Transaction multiples are therefore upper-bound valuation references, not intrinsic value indicators.
      
      **Deal Structure and Transaction Value.** Form of consideration (all-cash, all-stock, or mixed) affects the observed multiple independently of target quality; stock consideration embeds the acquirer's own valuation and creates circularity in the multiple. Transaction value (TV) equals offer value plus assumed net debt, where net debt calculation requires explicit scrutiny of intercompany and affiliate balances -- affiliate debt that will be eliminated at closing must be excluded from net debt, as the acquirer neither assumes the liability nor receives the corresponding asset. Failure to identify intercompany eliminations produces material TV overstatement. Offer price per share and diluted share count are frequently undisclosed for private targets; in such cases, the disclosed aggregate offer value is entered directly via the override mechanism, and equity multiples (P/E) cannot be computed.
      
      **Calendarization.** LTM financials = latest fiscal year + latest interim (stub) period - prior-year equivalent interim period. For public targets, the stub is the most recent 10-Q; for private targets, financials are embedded in the acquirer's 8-K filing (filed 4-12 months post-close) and the reporting date may not align perfectly with the announcement date -- the closest available period is used as a practical approximation. Fiscal-year forecasts (Year 1, Year 2) are sourced from equity research for public targets, from the proxy statement or fairness opinion projections when available, and are frequently unavailable for private targets, producing incomplete comps with only LTM multiples.
      
      **Non-GAAP Normalization in Transaction Context.** Transaction comps demand consistent treatment of non-GAAP exclusions across all deals in the set. The technology sector convention of excluding stock-based compensation and amortization of purchased intangibles from EBIT creates a specific hazard: the D&A add-back to reach EBITDA must exclude the already-eliminated amortization component, or a double-count error occurs. For private targets without press-release reconciliation tables, the analyst must infer appropriate exclusions from industry convention and any footnote disclosures embedded in the acquirer's 8-K filing. The cross-check is arithmetic: the sum of individual D&A components from footnote disclosures must reconcile to the aggregate D&A figure on the cash flow statement.
      
      **Handling Outliers.** Deals with extreme profitability divergence (targets with near-breakeven or negative margins versus profitable peers) produce multiples that are not directly comparable. The Enterasys transaction (0.5x LTM revenue, 6.8x LTM EBITDA versus peer medians of 2.0x and 9.8x) illustrates how low-margin targets trade at substantially compressed multiples that distort the mean. Such outliers should be flagged, excluded from headline statistics, and discussed separately as "related but not identical" comps. Median is the preferred central tendency measure; mean is reported but de-emphasized when dispersion is wide.
      
      ### Practitioner Standards
      
      **Output Structure.** Comparable transaction analysis output aggregates target metrics (revenue, EBITDA, EBIT, EPS), transaction value, offer value, premiums paid, and computed multiples (TV/Revenue, TV/EBITDA, TV/EBIT, Offer Price/EPS) across LTM, Year 1 Forward, and Year 2 Forward periods. Statistical summary rows report High, Low, Median, Mean, and Mean-excluding-outlier for every multiple. A dropdown-driven output tab enables dynamic inclusion/exclusion of individual comps, allowing real-time assessment of each transaction's impact on the central tendency.
      
      **Data Verification Protocol.** Every deal term and financial figure extracted from a database must be confirmed against the source SEC filing: announcement 8-K (deal terms), target 10-K/10-Q (historical financials), proxy statement or S-4 (forecasts and fairness opinion), and closing 8-K (finalized terms, which may differ from announcement terms). The announcement conference call transcript is the primary source for synergy expectations (`search_documents(ticker={T}, form_type="earnings_call_transcript")` → `read_source_pages` on the qa pages where management fields synergy questions). Deal status verification requires either a closing press release 8-K or confirmation in a subsequent 10-K/10-Q.
      
  • SKILL.md 7.9 KB
    ---
    name: comps
    multi_ticker_semantics: target_with_required_peers
    description: Comparable company analysis, trading comps, peer multiples, EV/EBITDA comparison, P/E benchmarking, comps table, relative valuation, industry multiples, precedent transactions, trading comparable analysis
    # Curated subset inherited from skill-registry.yaml (spec 058 T004, resolving Check 31).
    # Its provenance is unexplained: the kit's only documented derivation — "essentials_modes =
    # their first <=3 modes" (scripts/mode_backfill.py) — would give [preflight, triggers,
    # defaults], which are this file's own document sections, not analysis modes. Declared here
    # so the source of truth stops contradicting the registry. The curation itself is OUTSTANDING
    # and belongs to whoever owns this skill's methodology; this declaration is not a review of it.
    essentials_modes: [retrieval-scope]
    temporal_scope:
     default_quarters: 4
     max_quarters: 12
     description: "Typical lookback: 4 quarters, max: 12"
    allowed_tools:
     - search_companies
     - search_xbrl_facts
     - get_company_financials
     - search_earnings_calendar
     - get_company_profile
     - list_xbrl_concepts
     - batch_search
     - search_documents
     - search_sec_filings
     - read_source_outline
     - read_source_deep_outline
     - read_source_pages
     - search_keyword_in_source
     - search_cross_period
     - get_statement_structure
     - xlsx-read
    retrieval_scope: unstructured_document_search
    min_tool_diversity: 5
    ---
    
    ## Preflight
    
    Run the canonical pre-flight sequence — MCP health probe, ticker resolution, workspace `style.md` override, memory load, and coverage check. See `contracts/preflight.md`.
    
    Include the `X-Agentii-Trace` header on every tool call per `contracts/x-agentii-trace-header.md`.
    ## Triggers
    
    - analyze comps analysis
    - run comps analysis analysis
    - produce comps analysis report
    - comps analysis breakdown
    - comps analysis deep dive
    - build a comps analysis
    - assess comps analysis
    - quantify comps analysis
    - compare comps analysis across peers
    - review comps analysis for
    - generate comps analysis on
    - comps analysis for investment decision
    
    ## Defaults
    
    | Parameter | Default | Notes |
    |---|---|---|
    | lookback_years | 3 | Historical data window |
    | include_peers | false | Whether to surface a peer comparison block |
    
    ## Methodology
    
    ### Retrieval Scope
    
    This skill performs unstructured document search at scale across SEC filings and earnings call transcripts (10-K, 10-Q, 8-K). The three-layer agent-use-ready retrieval protocol (Document Discovery → Page Map → Deep Read) applies to all unstructured document search at scale.
    
    ### Retrieval Strategy
    
    See `contracts/retrieval.md` for the canonical decision tree; skill-specific retrieval detail is in `references/methodology.md`.
    
    ### Temporal Scope
    
    Default: 12 fiscal quarters (max 20). Financial modeling: trailing 12 quarters (3 fiscal years) for long-range projection inputs.
    
    ### Tool Allowlist
    
    See frontmatter `allowed_tools`.
    
    ### Protocol
    
    Step-by-step execution detail is in `references/methodology.md`.
    
    ## Deliverable Chain
    
    **Inputs** → **Build** → **Validate** → **Output** → **Next**
    
    1. **Inputs**: resolved ticker + peers via `search_companies` + `search_xbrl_facts` for all tickers (revenue, EBITDA, EPS, multiples) + `get_company_financials`.
    2. **Build**: write a self-contained Python script using `openpyxl` that creates the comps workbook (peer profiles, trading multiples, valuation summary) per `## Output Structure`. Execute via `Bash: python3 script.py`. Verify the `.xlsx` exists. If `import openpyxl` fails, fall back to `.md` summary with `data_availability: degraded` (see `contracts/office-tooling.md`).
    3. **Validate**: run LibreOffice recalc; audit per `## Validation Gates`.
    4. **Output**: write the artifact path per `## Output File`.
    5. **Next**: append to `agentii.md`; hand off to a downstream pitch/review skill if requested.
    
    ## Validation Gates
    
    1. **peer count**: between 4 and 8. *If failed*: If < 4: flag in Coverage Gaps, proceed with available peers. If > 8: trim to top 8 by sector proximity.
    2. **trading multiples**: include EV/EBITDA + P/E at minimum. *If failed*: If either missing: flag which multiple is unavailable and why.
    3. **comps statistics table**: present with mean, median, high, low for each multiple. *If failed*: If statistics table missing: refuse delivery.
    
    4. **tool diversity**: distinct MCP tools used in this invocation >= `min_tool_diversity` (5). *If failed*: flag as depth-insufficient in Coverage Gaps, listing which tool categories were unused (structured data / document retrieval / company metadata / earnings calendar / coverage). This gate does NOT block analysis completion — it is a quality signal for your review.
    
    ## Tool Fallbacks
    
    Per-tool failure modes and fallback actions are tabulated in `references/tool-fallbacks.md`.
    
    ## Output File
    
    Write the final deliverable to `_cross/{descriptive-slug}_{YYYY-MM-DD_HHMM}_comps_{affix}.md` or `_sector/{sector_name}/{YYYY-MM-DD_HHMM}_comps_{affix}.md` .
    
    ## Output Structure
    
    The deliverable is a structured markdown report written to the path in `## Output File`. Full section-by-section template (headings, tables, and field definitions) lives in `references/output-structure.md`. Required elements:
    
    1. **Executive Summary** — headline conclusions (≤200 words).
    2. **Core analysis sections** — per this skill's methodology and analyst modes.
    3. **Data classification** — tag findings `[FACT]` / `[DEDUCTED]` / `[VIEW]` per `contracts/snapshot-synthesis.md`.
    4. **Coverage Gaps & Citations** — inline `/v/` citations are PRIMARY (immediately after each fact); the bottom **Citations** section is a non-duplicative roll-up index.
    5. **Output frontmatter** — emit the FR-090 structured block per `contracts/output-frontmatter-schema.md`.
    
    **Citations & memory**: follow `contracts/citation-and-memory.md` — ≥1 citation per 200 words; every material fact, table row, and metric is immediately followed by its inline clickable `https://agentii.ai/v/{ticker}/{citation_id}/{N}` link; a bottom **Citations** section provides a non-duplicative roll-up index; the closing TUI reply includes a compact **Key Citations** list (headline 5–10 facts) of clickable `/v/` URLs; and append the run to `agentii.md` per `contracts/agentii-md-schema.md`.
    
    ## Memory & Snapshot
    
    - **Memory load** (pre-flight): load prior workspace context for the ticker before retrieval — see `contracts/memory-load.md`.
    - **Structured output frontmatter**: emit the FR-090 block (`key_metrics`, `conclusions`, `facts_count`, `deducted_count`, `views_count`, `citation_count`) per `contracts/output-frontmatter-schema.md`.
    - **Snapshot synthesis**: after writing the deliverable, update the two-tier snapshot and classify findings as `[FACT]`/`[DEDUCTED]`/`[VIEW]` — see `contracts/snapshot-synthesis.md`.
    - **Session archival**: record the run under `sessions/{YYYY-MM-DD}/` and update `sessions/INDEX.md` per `contracts/session-format.md`.
    
    ## Final Summary (TUI)
    
    End the closing chat reply with a compact **Key Citations** list (headline 5–10 facts), each a clickable `https://agentii.ai/v/{ticker}/{citation_id}/{N}` link, so the user can cmd+click straight to the exact SEC page. See `contracts/citation-and-memory.md`.
    
    ## Error Handling
    
    | Failure Mode | Detection | Action | User-Facing Message |
    |---|---|---|---|
    | Missing data | Data API returns empty result set | Widen date range and retry once | "No data available for {ticker} in requested window." |
    | Partial data | Data API returns <80% expected records | Proceed with coverage gaps section | "Analysis based on partial data; see Coverage Gaps section." |
    | Sector mismatch | Peer sector != target sector | Filter out mismatched peers | "Removed {n} peer(s) due to sector mismatch." |
    | Insufficient history | Ticker <3 years on public markets | Downgrade to limited-history profile | "Limited historical data; analysis adjusted accordingly." |
    | MCP unreachable | Preflight probe fails | Halt with actionable error | "agentii data plane unreachable; check connection." |
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related