sotp-valuation · diff
git:20260614.5208b4c to git:20260615.1734111
27 added, 36 removed. Audit A to A.
---
name: sotp-valuation
multi_ticker_semantics: target_with_optional_peers
description: Sum of the Parts valuation, segment-based valuation, conglomerate valuation, business segment analysis, breakup value, segment sum valuation, parts worth more than whole, hidden asset value
temporal_scope:
default_quarters: 4
max_quarters: 12
description: "Latest segment data with up to 12 quarters for segment trend"
allowed_tools:
- search_xbrl_facts
- search_companies
- get_realtime_quote
- search_documents
- read_source_outline
- read_source_deep_outline
- read_source_pages
- get_statement_structure
retrieval_scope: unstructured_document_search
min_tool_diversity: 7
---
# Sum of the Parts (SOTP) Valuation
Values each business segment independently and sums for total enterprise value. Essential for conglomerates (GE, MMM, HON), multi-segment tech (AMZN: AWS + Retail + Ads, GOOG: Search + Cloud + YouTube), and holding companies. SOTP often reveals "hidden value" when the market undervalues individual segments.
## Preflight
- !curl -s -o /dev/null -w "%{http_code}" --max-time 2 https://mcp.agentii.ai/mcp/health 2>/dev/null || echo "UNREACHABLE"
-
- **Ticker resolution ** and **Workspace style.md override check ** apply. **`get_realtime_quote` availability **: If not deployed, sector multiples from `_cross/` comps outputs can substitute for current market data. Segment valuation is relative, not price-dependent.
-
+ Run the canonical pre-flight sequence — MCP health probe, ticker resolution, workspace `style.md` override, memory load, and coverage check. See `contracts/preflight.md`.
- **Agent Call Tracing**: The first tool you call will return a `_run_id` in its result. On every subsequent tool call, include HTTP header `X-Agentii-Trace: agent={skill_name}; parent={caller_name}; instance={instance_label}`. The MCP server will inject run_id, depth, and user_id automatically. When spawning parallel sub-agents of the same type, assign each a unique instance label (e.g., equity-research-1, equity-research-2). See `contracts/x-agentii-trace-header.md` for the full contract.
+ Include the `X-Agentii-Trace` header on every tool call per `contracts/x-agentii-trace-header.md`.
## Triggers
- sum of the parts valuation {ticker}
- SOTP analysis {ticker}
- segment-based valuation {ticker}
- breakup value {ticker}
- conglomerate valuation {ticker}
- parts worth more than whole {ticker}
- segment sum of parts {ticker}
- business segment valuation {ticker}
- hidden asset value {ticker}
- SOTP {ticker}
## Defaults
| Parameter | Default | Notes |
|-----------|---------|-------|
| segment_discovery | statement_tree | Use get_statement_structure for segment identification |
| peer_multiples | sector | Apply sector-appropriate multiples per segment |
| include_corporate | true | Subtract corporate overhead, net debt |
## Methodology
### Retrieval Scope
`unstructured_document_search` — SOTP requires segment financials from XBRL (structured) AND segment narrative/business description from MD&A (unstructured) for appropriate multiple selection.
### Retrieval Strategy
- Follow the retrieval strategy decision tree in `retrieval.md`. This skill uses:
- - Branch (a) for structured segment financials via `search_xbrl_facts` + `get_statement_structure` .
- - Branch (c) for MD&A segment narrative via `read_source_outline` → `read_source_pages`.
- - Branch (d) for simple lookups via `get_realtime_quote` / `search_companies`.
+ See `contracts/retrieval.md` for the canonical decision tree; skill-specific retrieval detail is in `references/methodology.md`.
### Temporal Scope
Default lookback: 4 fiscal quarter(s); maximum: 12. The default balances recency against the trend window this analysis requires.
### Tool Allowlist
Per frontmatter `allowed_tools`:
- `search_xbrl_facts` — primary structured financial facts (is_primary default)
- `search_companies` — ticker resolution + company context (entity-alias fuzzy match)
- `get_realtime_quote` — latest market price for valuation cross-checks
- `search_documents` — Layer 1 document discovery (page-level silver records)
- `read_source_outline` — Layer 2 lightweight page map (description + keywords)
- `read_source_deep_outline` — Layer 2.5a deep page map (table_titles/drivers/metrics)
- `read_source_pages` — Layer 3 deep read of selected pages with table markers
- `get_statement_structure` — XBRL presentation tree (concept hierarchy)
### Protocol
- 1. **Pre-retrieval**: `get_company_fiscal_calendar/{ticker}` then `get_ticker_coverage/{ticker}` .
- 2. **Segment discovery**: call `get_statement_structure/{ticker}?statement_type=income_statement&fiscal_year=<latest>` to identify segment-level concepts. Navigate from `Revenues` → segment children (ProductOrServiceAxis members).
- 3. **Segment financials**: query `search_xbrl_facts` for each segment's revenue, operating income, EBITDA, assets.
- 4. **Segment narrative**: `search_documents` + `read_source_pages` for MD&A segment discussion — business description, competitive position, growth outlook.
- 5. **Segment valuation**: assign appropriate multiple per segment based on industry comparables from `_cross/` outputs or sector norms:
- - High-growth segments → EV/Revenue
- - Mature/profitable segments → EV/EBITDA
- - Financial segments → P/B
- - Asset-heavy segments → EV/EBITDA
- 6. **Corporate adjustments**: subtract unallocated corporate overhead (capitalized at segment multiple), net debt, minority interest, add excess cash.
- 7. **SOTP bridge**: Segment A value + Segment B value + ... - Corporate Overhead - Net Debt + Cash = Total Equity Value ÷ Shares Outstanding = Per-Share Value.
- 8. **Output**: per with YAML frontmatter .
+ Step-by-step execution detail is in `references/methodology.md`.
## Deliverable Chain
**Inputs** → **Build** → **Validate** → **Output** → **Next**
1. **Inputs**: resolved ticker + structured facts (`search_xbrl_facts`, `get_company_financials`) and any filing pages from the three-layer protocol.
- 2. **Build**: assemble the workbook/deck spec and call `xlsx.build` / `pptx.build` (office plane).
- 3. **Validate**: run `xlsx.audit` (or recalc) and the `## Validation Gates` below.
+ 2. **Build**: write the `.md` sum-of-the-parts valuation (segment multiples, conglomerate-discount analysis) per `## Output Structure`.
+ 3. **Validate**: run the `## Validation Gates` below.
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.
## Output File
- Write to `{ticker}/{YYYY-MM-DD_HHMM}_sotp-valuation_segment-sum.md` .
+ Write the final deliverable to `{ticker}/{YYYY-MM-DD_HHMM}_sotp-valuation_{affix}.md`.
## Output Structure
- 1. **Executive Summary** — SOTP per-share value, premium/discount to current price, key value driver segment
- 2. **Segment Identification** — segments discovered via statement tree, business description per segment
- 3. **Segment Financials** — revenue, EBITDA, operating income, assets per segment with growth rates
- 4. **Segment Valuation** — multiple selection rationale, comparable companies, per-segment enterprise value
- 5. **SOTP Bridge** — segment-by-segment value → corporate overhead → net debt → cash → equity value → per-share
- 6. **Sensitivity** — per-share value at ±1x multiple for key segments
- 7. **Coverage Gaps & Citations**
+ 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:
- **Citation density**: ≥1 citation per 200 words. **Citation link format **: `[📄 {ticker} {form_type} p.{N}](https://agentii.ai/v/{ticker}/{citation_id}/{N})`. **agentii.md append ** applies.
+ 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`.
+
## Validation Gates
1. **Segment coverage**: segment revenues must sum to ≥80% of total reported revenue. *If failed*: flag segments representing <80% of revenue; note "significant unallocated revenue."
2. **Valuation consistency**: segment multiples justified by at least one comparable company or sector norm per segment. *If failed*: flag segments with unsubstantiated multiples.
3. **SOTP bridge integrity**: Segment Sum - Corporate + Adjustments = Total Equity within 1%. *If failed*: refuse delivery; check bridge arithmetic.
## Tool Fallbacks
- | Tool | Failure Mode | Fallback Action |
- |------|-------------|-----------------|
- | `get_statement_structure` | Tree unavailable | Use `search_documents` for "segment" keyword in 10-K MD&A |
- | `read_source_pages` | SQL error | Use `search_documents` for segment narrative; flag as partial |
+ Per-tool failure modes and fallback actions are tabulated in `references/tool-fallbacks.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 | Action | User-Facing Message |
|-------------|--------|---------------------|
| No segment data | Company reports as single segment | "{ticker} reports as a single operating segment — SOTP not applicable. Use DCF or comps." |
| Missing segment financials | Proceed with available data; flag gaps | "Segment financials incomplete for {segment_names}; SOTP based on partial data." |