NousResearch/hermes-agent/optional-skills/finance/comps-analysis/SKILL.md
comps-analysis
Build comparable-company valuation workbooks in Excel.
- Source repository stars
- 235,927
- Declared platforms
- 0
- Static risk flags
- 0
- Last source update
- 2026-08-25
- Source checked
- 2026-08-25
Decision brief
What it does: where it fits
This skill assumes headless openpyxl — you are producing an .xlsx file on disk. Follow the excel-author skill's conventions for cell coloring, formulas, named ranges, and sensitivity tables. Recalculate before delivery: python /path/to/excel-author/scripts/recalc.py ./out/model.…
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
What changed when the Skill was used
In this controlled same-task single run, enabling comps-analysis changed the output from 2262 non-whitespace characters and 16 headings to 2628 characters and 14 headings. Matches among 8 signals extracted from the pinned source changed from 1 to 0. Both actual outputs are shown; this is a structural observation, not a quality score or a universal performance claim.
Same test task
Create an implementation guide for adding a webhook retry queue to a TypeScript service. Include prerequisites, steps, verification, and common mistakes. The deliverable must specifically reflect this user intent: Build comparable-company valuation workbooks in Excel.

Baseline: 2262 non-whitespace characters, 16 headings, and 58 list items.

With Skill: 2628 non-whitespace characters, 14 headings, and 66 list items.
| Observation | Without Skill | With Skill |
|---|---|---|
| Source-signal coverage | 1/8: source | 0/8: none |
| Output structure | 2262 chars · 16 headings · 58 list items · 0 code blocks | 2628 chars · 14 headings · 66 list items · 1 code blocks |
| Verification and caution signals | 14 verification signals · 4 risk/limitation signals | 9 verification signals · 3 risk/limitation signals |
A prompt you can use
Use the comps-analysis Skill pinned at 6851841112e9 for my task. Follow its source-specific constraints around `comps-analysis`, `environment`, `comparable`, `company`, then return the finished deliverable with explicit assumptions, verification, failure conditions, and limits. Do not treat the Skill text as a factual source or claim that a single demonstration proves universal performance.
Method and limitationsExpandCollapse
Test method
- Baseline and treatment used the same task, model (gpt-5.3-codex-low), and runner; the only planned difference was whether the complete target Skill text was injected.
- The treatment used snapshot 8f2712725af78c98c9ef7cdd447d14cb9348428d; the current source commit 6851841112e921537eb7195ef6e8be7d2ca2d2f6 was verified against content hash 4425119f1b0c. The baseline explicitly prohibited loading any Skill or external rule file.
- The same deterministic script counted characters, headings, lists, code blocks, verification terms, caution terms, and source signals in both artifacts. Source signals: `comps-analysis`, `environment`, `comparable`, `company`, `analysis`, `critical`, `source`, `priority`.
- The visuals are local screenshots of the actual Markdown artifacts in a fixed 1200 × 800 evidence canvas, not recreated product mockups. Raw JSON artifacts and request records are retained in the research directory.
Do not over-read this demo
- This is one controlled demonstration per condition, not a multi-run statistical benchmark; the model is stochastic.
- Character, structure, and keyword counts show observable differences but cannot by themselves prove correctness, originality, or business impact.
- The task is a representative test designed for repeatability, not every real-world use of the Skill; rerun after a material source change.
- Editorial review
- SkillSignal editorial
- Runner
- Cursor Agent 2026.07.09-a3815c0
- Model
- gpt-5.3-codex-low
- Refresh due
- 2026-11-18
- Reviewed commit
- 6851841112e921537eb7195ef6e8be7d2ca2d2f6
- Test snapshot
- 8f2712725af78c98c9ef7cdd447d14cb9348428d
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/NousResearch/hermes-agent --skill "optional-skills/finance/comps-analysis"Inspect the Agent Skill "comps-analysis" from https://github.com/NousResearch/hermes-agent/blob/64a6f42cb38def7ad6524bdfe640a16997c88760/optional-skills/finance/comps-analysis/SKILL.md at commit 64a6f42cb38def7ad6524bdfe640a16997c88760. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
⚠️ CRITICAL: Formulas Over Hardcodes + Step-by-Step Verification
Formulas, not hardcodes: - Every derived value (margin, multiple, statistic) MUST be an Excel formula referencing input cells — never a pre-computed number pasted in - When using Python/openpyxl to build the sheet: write cell.value = "=E7/C7" (formula string), NOT cell.value = 0…
Every derived value (margin, multiple, statistic) MUST be an Excel formula referencing input cells — never a pre-computed number pasted inWhen using Python/openpyxl to build the sheet: write cell.value = "=E7/C7" (formula string), NOT cell.value = 0.687 (computed result)The only hardcoded values should be raw input data (revenue, EBITDA, share price, etc.) — and every one of those gets a cell comment with its source - 02
Section 1: Document Structure & Setup
Why this matters: Establishes context immediately. Anyone opening this file knows what they're looking at, when it was created, and how to interpret the numbers.
User's explicit formatting preferencesFormatting from any uploaded template filesCompany/team style guides - 03
Section 7: Workflow & Practical Tips
1. Set up structure (30 minutes) - Create all headers - Format cells (blue for inputs, black for formulas) - Lock in units and date references
Set up structure (30 minutes)Create all headersFormat cells (blue for inputs, black for formulas) - 04
Step-by-Step Process
1. Set up structure (30 minutes) - Create all headers - Format cells (blue for inputs, black for formulas) - Lock in units and date references
Set up structure (30 minutes)Create all headersFormat cells (blue for inputs, black for formulas) - 05
Environment
This skill assumes headless openpyxl — you are producing an .xlsx file on disk. Follow the excel-author skill's conventions for cell coloring, formulas, named ranges, and sensitivity tables. Recalculate before delivery: python /path/to/excel-author/scripts/recalc.py ./out/model.…
This skill assumes headless openpyxl — you are producing an .xlsx file on disk. Follow the excel-author skill's conventions for cell coloring, formulas, named ranges, and sensitivity tables. Recalculate before delivery:…
Permission review
Static risk signals and limitations
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 90/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 235,927 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | tested outcome page | Tested | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- NousResearch/hermes-agent
- Skill path
- optional-skills/finance/comps-analysis/SKILL.md
- Commit
- 64a6f42cb38def7ad6524bdfe640a16997c88760
- License
- MIT
- Collected
- 2026-08-25
- Default branch
- main
View the original SKILL.md
Environment
This skill assumes headless openpyxl — you are producing an .xlsx file on disk.
Follow the excel-author skill's conventions for cell coloring, formulas, named ranges, and sensitivity tables.
Recalculate before delivery: python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx.
Comparable Company Analysis
⚠️ CRITICAL: Data Source Priority (READ FIRST)
ALWAYS follow this data source hierarchy:
- FIRST: Check for MCP data sources - If S&P Kensho MCP, FactSet MCP, or Daloopa MCP are available, use them exclusively for financial and trading information
- DO NOT use web search if the above MCP data sources are available
- ONLY if MCPs are unavailable: Then use Bloomberg Terminal, SEC EDGAR filings, or other institutional sources
- NEVER use web search as a primary data source - it lacks the accuracy, audit trails, and reliability required for institutional-grade analysis
Why this matters: MCP sources provide verified, institutional-grade data with proper citations. Web search results can be outdated, inaccurate, or unreliable for financial analysis.
Overview
This skill teaches the agent to build institutional-grade comparable company analyses that combine operating metrics, valuation multiples, and statistical benchmarking. The output is a structured Excel/spreadsheet that enables informed investment decisions through peer comparison.
Reference Material & Contextualization:
An example comparable company analysis is provided in examples/comps_example.xlsx. When using this or other example files in this skill directory, use them intelligently:
DO use examples for:
- Understanding structural hierarchy (how sections flow)
- Grasping the level of rigor expected (statistical depth, documentation standards)
- Learning principles (clear headers, transparent formulas, audit trails)
DO NOT use examples for:
- Exact reproduction of format or metrics
- Copying layout without considering context
- Applying the same visual style regardless of audience
ALWAYS ask yourself first:
- "Do you have a preferred format or should I adapt the template style?"
- "Who is the audience?" (Investment committee, board presentation, quick reference, detailed memo)
- "What's the key question?" (Valuation, growth analysis, competitive positioning, efficiency)
- "What's the context?" (M&A evaluation, investment decision, sector benchmarking, performance review)
Adapt based on specifics:
- Industry context: Big tech mega-caps need different metrics than emerging SaaS startups
- Sector-specific needs: Add relevant metrics early (e.g., cloud ARR, enterprise customers, developer ecosystem for tech)
- Company familiarity: Well-known companies may need less background, more focus on delta analysis
- Decision type: M&A requires different emphasis than ongoing portfolio monitoring
Core principle: Use template principles (clear structure, statistical rigor, transparent formulas) but vary execution based on context. The goal is institutional-quality analysis, not institutional-looking templates.
User-provided examples and explicit preferences always take precedence over defaults.
Core Philosophy
"Build the right structure first, then let the data tell the story."
Start with headers that force strategic thinking about what matters, input clean data, build transparent formulas, and let statistics emerge automatically. A good comp should be immediately readable by someone who didn't build it.
⚠️ CRITICAL: Formulas Over Hardcodes + Step-by-Step Verification
Formulas, not hardcodes:
- Every derived value (margin, multiple, statistic) MUST be an Excel formula referencing input cells — never a pre-computed number pasted in
- When using Python/openpyxl to build the sheet: write
cell.value = "=E7/C7"(formula string), NOTcell.value = 0.687(computed result) - The only hardcoded values should be raw input data (revenue, EBITDA, share price, etc.) — and every one of those gets a cell comment with its source
- Why: the model must update automatically when an input changes. A hardcoded margin is a silent bug waiting to happen.
Verify step-by-step with the user:
- After setting up the structure → show the user the header layout before filling data
- After entering raw inputs → show the user the input block and confirm sources/periods before building formulas
- After building operating metrics formulas → show the calculated margins and sanity-check with the user before moving to valuation
- After building valuation multiples → show the multiples and confirm they look reasonable before adding statistics
- Do NOT build the entire sheet end-to-end and then present it — catch errors early by confirming each section
Section 1: Document Structure & Setup
Header Block (Rows 1-3)
Row 1: [ANALYSIS TITLE] - COMPARABLE COMPANY ANALYSIS
Row 2: [List of Companies with Tickers] • [Company 1 (TICK1)] • [Company 2 (TICK2)] • [Company 3 (TICK3)]
Row 3: As of [Period] | All figures in [USD Millions/Billions] except per-share amounts and ratios
Why this matters: Establishes context immediately. Anyone opening this file knows what they're looking at, when it was created, and how to interpret the numbers.
Visual Convention Standards (OPTIONAL - User preferences and uploaded templates always override)
IMPORTANT: These are suggested defaults only. Always prioritize:
- User's explicit formatting preferences
- Formatting from any uploaded template files
- Company/team style guides
- These defaults (only if no other guidance provided)
Suggested Font & Typography:
- Font family: Times New Roman (professional, readable, industry standard)
- Font size: 11pt for data cells, 12pt for headers
- Bold text: Section headers, company names, statistic labels
Default Color & Shading — Professional Blue/Grey Palette (minimal is better):
- Keep it restrained — only blues and greys. Do NOT introduce greens, oranges, reds, or multiple accent colors. A clean comps sheet uses 3-4 colors total.
- Section headers (e.g., "OPERATING STATISTICS & FINANCIAL METRICS"):
- Dark blue background (
#1F4E79or#17365Dnavy) - White bold text
- Full row shading across all columns
- Dark blue background (
- Column headers (e.g., "Company", "Revenue", "Margin"):
- Light blue background (
#D9E1F2or similar pale blue) - Black bold text
- Centered alignment
- Light blue background (
- Data rows:
- White background for company data
- Black text for formulas; blue text for hardcoded inputs
- Statistics rows (Maximum, 75th Percentile, etc.):
- Light grey background (
#F2F2F2) - Black text, left-aligned labels
- Light grey background (
- That's the whole palette: dark blue + light blue + light grey + white. Nothing else unless the user's template says otherwise.
Suggested Formatting Conventions:
- Decimal precision:
- Percentages: 1 decimal (12.3%)
- Multiples: 1 decimal (13.5x)
- Dollar amounts: No decimals, thousands separator (69,632)
- Margins shown as percentages: 1 decimal (68.7%)
- Borders: No borders (clean, minimal appearance)
- Alignment: All metrics center-aligned for clean, uniform appearance
- Cell dimensions: All column widths should be uniform/even, all row heights should be consistent (creates clean, professional grid)
Note: If the user provides a template file or specifies different formatting, use that instead.
Section 2: Operating Statistics & Financial Metrics
Core Columns (Start with these)
- Company - Names with consistent formatting
- Revenue - Size metric (can be LTM, quarterly, or annual depending on context)
- Revenue Growth - Year-over-year percentage change
- Gross Profit - Revenue minus cost of goods sold
- Gross Margin - GP/Revenue (fundamental profitability)
- EBITDA - Earnings before interest, tax, depreciation, amortization
- EBITDA Margin - EBITDA/Revenue (operating efficiency)
Optional Additions (Choose based on industry/purpose)
- Quarterly vs LTM - Include both if seasonality matters
- Free Cash Flow - For capital-intensive or SaaS businesses
- FCF Margin - FCF/Revenue (cash generation efficiency)
- Net Income - For mature, profitable companies
- Operating Income - For businesses with varying D&A
- CapEx metrics - For asset-heavy industries
- Rule of 40 - Specifically for SaaS (Growth % + Margin %)
- FCF Conversion - For quality of earnings analysis (advanced)
Formula Examples (Using Row 7 as example)
// Core ratios - these are always calculated
Gross Margin (F7): =E7/C7
EBITDA Margin (H7): =G7/C7
// Optional ratios - include if relevant
FCF Margin: =[FCF]/[Revenue]
Net Margin: =[Net Income]/[Revenue]
Rule of 40: =[Growth %]+[FCF Margin %]
Golden Rule: Every ratio should be [Something] / [Revenue] or [Something] / [Something from this sheet]. Keep it simple.
Statistics Block (After company data)
CRITICAL: Add statistics formulas for all comparable metrics (ratios, margins, growth rates, multiples).
[Leave one blank row for visual separation]
- Maximum: =MAX(B7:B9)
- 75th Percentile: =QUARTILE(B7:B9,3)
- Median: =MEDIAN(B7:B9)
- 25th Percentile: =QUARTILE(B7:B9,1)
- Minimum: =MIN(B7:B9)
Columns that NEED statistics (comparable metrics):
- Revenue Growth %, Gross Margin %, EBITDA Margin %, EPS
- EV/Revenue, EV/EBITDA, P/E, Dividend Yield %, Beta
Columns that DON'T need statistics (size metrics):
- Revenue, EBITDA, Net Income (absolute size varies by company scale)
- Market Cap, Enterprise Value (not comparable across different-sized companies)
Note: Add one blank row between company data and statistics rows for visual separation. Do NOT add a "SECTOR STATISTICS" or "VALUATION STATISTICS" header row.
Why quartiles matter: They show distribution, not just average. A 75th percentile multiple tells you what "premium" companies trade at.
Section 3: Valuation Multiples & Investment Metrics
Core Valuation Columns (Start with these)
- Company - Same order as operating section
- Market Cap - Current market valuation
- Enterprise Value - Market Cap ± Net Debt/Cash
- EV/Revenue - How much market pays per dollar of sales
- EV/EBITDA - How much market pays per dollar of earnings
- P/E Ratio - Price relative to net earnings
Optional Valuation Metrics (Choose based on context)
- FCF Yield - FCF/Market Cap (for cash-focused analysis)
- PEG Ratio - P/E/Growth Rate (for growth companies)
- Price/Book - Market value vs. book value (for asset-heavy businesses)
- ROE/ROA - Return metrics (for profitability comparison)
- Revenue/EBITDA CAGR - Historical growth rates (for trend analysis)
- Asset Turnover - Revenue/Assets (for operational efficiency)
- Debt/Equity - Leverage (for capital structure analysis)
Key Principle: Include 3-5 core multiples that matter for your industry. Don't include every possible metric just because you can.
Formula Examples
// Core multiples - always include these
EV/Revenue: =[Enterprise Value]/[LTM Revenue]
EV/EBITDA: =[Enterprise Value]/[LTM EBITDA]
P/E Ratio: =[Market Cap]/[Net Income]
// Optional multiples - include if data available
FCF Yield: =[LTM FCF]/[Market Cap]
PEG Ratio: =[P/E]/[Growth Rate %]
Cross-Reference Rule
CRITICAL: Valuation multiples MUST reference the operating metrics section. Never input the same raw data twice. If revenue is in C7, then EV/Revenue formula should reference C7.
Statistics Block
Same structure as operating section: Max, 75th, Median, 25th, Min for every metric. Add one blank row for visual separation between company data and statistics. Do NOT add a "VALUATION STATISTICS" header row.
Section 4: Notes & Methodology Documentation
Required Components
Data Sources & Quality:
- Where did the data come from? (S&P Kensho MCP, FactSet MCP, Daloopa MCP, Bloomberg, SEC filings)
- What period does it cover? (Q4 2024, audited figures)
- How was it verified? (Cross-checked against 10-K/10-Q)
- Note: Prioritize MCP data sources (S&P Kensho, FactSet, Daloopa) if available for better accuracy and traceability
Key Definitions:
- EBITDA calculation method (Gross Profit + D&A, or Operating Income + D&A)
- Free Cash Flow formula (Operating CF - CapEx)
- Special metrics explained (Rule of 40, FCF Conversion)
- Time period definitions (LTM, CAGR calculation periods)
Valuation Methodology:
- How was Enterprise Value calculated? (Market Cap + Net Debt)
- What growth rates were used? (Historical CAGR, forward estimates)
- Any adjustments made? (One-time items excluded, normalized margins)
Analysis Framework:
- What's the investment thesis? (Cloud/SaaS efficiency)
- What metrics matter most? (Cash generation, capital efficiency)
- How should readers interpret the statistics? (Quartiles provide context)
Section 5: Choosing the Right Metrics (Decision Framework)
Start with "What question am I answering?"
"Which company is undervalued?" → Focus on: EV/Revenue, EV/EBITDA, P/E, Market Cap → Skip: Operational details, growth metrics
"Which company is most efficient?" → Focus on: Gross Margin, EBITDA Margin, FCF Margin, Asset Turnover → Skip: Size metrics, absolute dollar amounts
"Which company is growing fastest?" → Focus on: Revenue Growth %, EBITDA CAGR, User/Customer Growth → Skip: Margin metrics, leverage ratios
"Which is the best cash generator?" → Focus on: FCF, FCF Margin, FCF Conversion, CapEx intensity → Skip: EBITDA, P/E ratios
Industry-Specific Metric Selection
Software/SaaS: Must have: Revenue Growth, Gross Margin, Rule of 40 Optional: ARR, Net Dollar Retention, CAC Payback Skip: Asset Turnover, Inventory metrics
Manufacturing/Industrials: Must have: EBITDA Margin, Asset Turnover, CapEx/Revenue Optional: ROA, Inventory Turns, Backlog Skip: Rule of 40, SaaS metrics
Financial Services: Must have: ROE, ROA, Efficiency Ratio, P/E Optional: Net Interest Margin, Loan Loss Reserves Skip: Gross Margin, EBITDA (not meaningful for banks)
Retail/E-commerce: Must have: Revenue Growth, Gross Margin, Inventory Turnover Optional: Same-Store Sales, Customer Acquisition Cost Skip: Heavy R&D or CapEx metrics
The "5-10 Rule"
5 operating metrics - Revenue, Growth, 2-3 margins/efficiency metrics 5 valuation metrics - Market Cap, EV, 3 multiples = 10 total columns - Enough to tell the story, not so many you lose the thread
If you have more than 15 metrics, you're probably including noise. Edit ruthlessly.
Section 6: Best Practices & Quality Checks
Before You Start
- Define the peer group - Companies must be truly comparable (similar business model, scale, geography)
- Choose the right period - LTM smooths seasonality; quarterly shows trends
- Standardize units upfront - Millions vs. billions decision affects everything
- Map data sources - Know where each number comes from
As You Build
-
Input all raw data first - Complete the blue text before writing formulas
-
Add cell comments to ALL hard-coded inputs - Right-click cell → Insert Comment → Document source OR assumption
For sourced data, cite exactly where it came from:
- Example: "Bloomberg Terminal - MSFT Equity DES, accessed 2024-10-02"
- Example: "Q4 2024 10-K filing, page 42, line item 'Total Revenue'"
- Example: "FactSet consensus estimate as of 2024-10-02"
- Include hyperlinks when possible: Right-click cell → Link → paste URL to SEC filing, data source, or report
For assumptions, explain the reasoning:
- Example: "Assumed 15% EBITDA margin based on peer median, company does not disclose"
- Example: "Estimated Enterprise Value as Market Cap + $50M net debt (from Q3 balance sheet, Q4 not yet available)"
- Example: "Forward P/E based on street consensus EPS of $3.45 (average of 12 analyst estimates)"
Why this matters: Enables audit trails, data verification, assumption transparency, and future updates
-
Build formulas row by row - Test each calculation before moving on
-
Use absolute references for headers - $C$6 locks the header row
-
Format consistently - Percentages as percentages, not decimals
-
Add conditional formatting - Highlight outliers automatically
Sanity Checks
- Margin test: Gross margin > EBITDA margin > Net margin (always true by definition)
- Multiple reasonableness:
- EV/Revenue: typically 0.5-20x (varies widely by industry)
- EV/EBITDA: typically 8-25x (fairly consistent across industries)
- P/E: typically 10-50x (depends on growth rate)
- Growth-multiple correlation: Higher growth usually means higher multiples
- Size-efficiency trade-off: Larger companies often have better margins (scale benefits)
Common Mistakes to Avoid
❌ Mixing market cap and enterprise value in formulas ❌ Using different time periods for numerator and denominator (LTM vs quarterly) ❌ Hardcoding numbers into formulas instead of cell references ❌ Hard-coded inputs without cell comments citing the source OR explaining the assumption ❌ Missing hyperlinks to SEC filings or data sources when available ❌ Including too many metrics without clear purpose ❌ Including non-comparable companies (different business models) ❌ Using outdated data without disclosure ❌ Calculating averages of percentages incorrectly (should be median)
Section 6: Advanced Features
Dynamic Headers
For columns showing calculations, use clear unit labels:
Revenue Growth (YoY) % | EBITDA Margin | FCF Margin | Rule of 40
Quartile Analysis Benefits
Instead of just mean/median, quartiles show:
- 75th percentile = "Premium" companies trade here
- Median = Typical market valuation
- 25th percentile = "Discount" territory
This helps answer: "Is our target company trading rich or cheap vs. peers?"
Industry-Specific Modifications
Software/SaaS:
- Add: ARR, Net Dollar Retention, CAC Payback Period
- Emphasize: Rule of 40, FCF margins, gross margins >70%
Healthcare:
- Add: R&D/Revenue, Pipeline value, Regulatory status
- Emphasize: EBITDA margins, growth rates, reimbursement risk
Industrials:
- Add: Backlog, Order book trends, Geographic mix
- Emphasize: ROIC, asset turnover, cyclical adjustments
Consumer:
- Add: Same-store sales, Customer acquisition cost, Brand value
- Emphasize: Revenue growth, gross margins, inventory turns
Section 7: Workflow & Practical Tips
Step-by-Step Process
-
Set up structure (30 minutes)
- Create all headers
- Format cells (blue for inputs, black for formulas)
- Lock in units and date references
-
Gather data (60-90 minutes)
- Pull from primary sources (S&P Kensho MCP, FactSet MCP, Daloopa MCP if available; otherwise Bloomberg, SEC)
- Input all raw numbers in blue
- Document sources in notes section
-
Build formulas (30 minutes)
- Start with simple ratios (margins)
- Progress to multiples (EV/Revenue)
- Add cross-checks (do margins make sense?)
-
Add statistics (15 minutes)
- Copy formula structure for all columns
- Verify ranges are correct (B7:B9, not B7:B10)
- Check quartile logic
-
Quality control (30 minutes)
- Run sanity checks
- Verify formula references
- Check for #DIV/0! or #REF! errors
- Compare against known benchmarks
-
Documentation (15 minutes)
- Complete notes section
- Add data sources
- Define methodologies
- Date-stamp the analysis
Pro Tips
- Save templates: Build once, reuse forever
- Color-code outliers: Conditional formatting for values >2 standard deviations
- Link to source files: Hyperlink to Bloomberg screenshots or SEC filings
- Version control: Save as "Comps_v1_2024-12-15" with clear dating
- Collaborative reviews: Have someone else check your formulas
Excel Formatting Checklist (Optional - adapt to user preferences)
- Font set to user's preferred style (default: Times New Roman, 11pt data, 12pt headers)
- Section headers formatted per user's template (default: dark blue #17365D with white bold text)
- Column headers formatted per user's template (default: light blue/gray #D9E2F3 with black bold text)
- Statistics rows formatted per user's template (default: light gray #F2F2F2)
- No borders applied (clean, minimal appearance)
- Column widths set to uniform/even width (creates clean, professional appearance)
- Row heights set to consistent height (typically 20-25pt for data rows)
- Numbers formatted with proper decimal precision and thousands separators
- All metrics center-aligned for clean, uniform appearance
- One blank row for separation between company data and statistics rows
- No separate "SECTOR STATISTICS" or "VALUATION STATISTICS" header rows
- Every hard-coded input cell has a comment with either: (1) exact data source, OR (2) assumption explanation
- Hyperlinks added to cells where applicable (SEC filings, data provider pages, reports)
Section 8: Example Template Layout
Simple Version (Start here):
┌─────────────────────────────────────────────────────────────┐
│ TECHNOLOGY - COMPARABLE COMPANY ANALYSIS │
│ Microsoft • Alphabet • Amazon │
│ As of Q4 2024 | All figures in USD Millions │
├─────────────────────────────────────────────────────────────┤
│ OPERATING METRICS │
├──────────┬─────────┬─────────┬──────────┬──────────────────┤
│ Company │ Revenue │ Growth │ Gross │ EBITDA │ EBITDA │
│ │ (LTM) │ (YoY) │ Margin │ (LTM) │ Margin │
├──────────┼─────────┼─────────┼──────────┼─────────┼────────┤
│ MSFT │ 261,400 │ 12.3% │ 68.7% │ 205,100 │ 78.4% │
│ GOOGL │ 349,800 │ 11.8% │ 57.9% │ 239,300 │ 68.4% │
│ AMZN │ 638,100 │ 10.5% │ 47.3% │ 152,600 │ 23.9% │
│ │ │ │ │ │ │ [blank row]
│ Median │ =MEDIAN │ =MEDIAN │ =MEDIAN │ =MEDIAN │=MEDIAN │
│ 75th % │ =QUART │ =QUART │ =QUART │ =QUART │=QUART │
│ 25th % │ =QUART │ =QUART │ =QUART │ =QUART │=QUART │
├─────────────────────────────────────────────────────────────┤
│ VALUATION MULTIPLES │
├──────────┬──────────┬──────────┬──────────┬────────────────┤
│ Company │ Mkt Cap │ EV │ EV/Rev │ EV/EBITDA │ P/E│
├──────────┼──────────┼──────────┼──────────┼───────────┼────┤
│ MSFT │3,550,000 │3,530,000 │ 13.5x │ 17.2x │36.0│
│ GOOGL │2,030,000 │1,960,000 │ 5.6x │ 8.2x │24.5│
│ AMZN │2,226,000 │2,320,000 │ 3.6x │ 15.2x │58.3│
│ │ │ │ │ │ │ [blank row]
│ Median │ =MEDIAN │ =MEDIAN │ =MEDIAN │ =MEDIAN │=MED│
│ 75th % │ =QUART │ =QUART │ =QUART │ =QUART │=QRT│
│ 25th % │ =QUART │ =QUART │ =QUART │ =QUART │=QRT│
└──────────┴──────────┴──────────┴──────────┴───────────┴────┘
Add complexity only when needed:
- Include quarterly AND LTM if seasonality matters
- Add FCF metrics if cash generation is key story
- Include industry-specific metrics (Rule of 40 for SaaS, etc.)
- Add more statistics rows if you have >5 companies
Section 9: Industry-Specific Additions (Optional)
Only add these if they're critical to your analysis. Most comps work fine with just core metrics.
Software/SaaS: Add if relevant: ARR, Net Dollar Retention, Rule of 40
Financial Services: Add if relevant: ROE, Net Interest Margin, Efficiency Ratio
E-commerce: Add if relevant: GMV, Take Rate, Active Buyers
Healthcare: Add if relevant: R&D/Revenue, Pipeline Value, Patent Timeline
Manufacturing: Add if relevant: Asset Turnover, Inventory Turns, Backlog
Section 10: Red Flags & Warning Signs
Data Quality Issues
🚩 Inconsistent time periods (mixing quarterly and annual)
🚩 Missing data without explanation
🚩 Significant differences between data sources (>10% variance)
Valuation Red Flags
🚩 Negative EBITDA companies being valued on EBITDA multiples (use revenue multiples instead)
🚩 P/E ratios >100x without hypergrowth story
🚩 Margins that don't make sense for the industry
Comparability Issues
🚩 Different fiscal year ends (causes timing problems)
🚩ixing pure-play and conglomerates
🚩 Materially different business models labeled as "comps"
When in doubt, exclude the company. Better to have 3 perfect comps than 6 questionable ones.
Section 11: Formulas Reference Guide
Essential Excel Formulas
// Statistical Functions
=AVERAGE(range) // Simple mean
=MEDIAN(range) // Middle value
=QUARTILE(range, 1) // 25th percentile
=QUARTILE(range, 3) // 75th percentile
=MAX(range) // Maximum value
=MIN(range) // Minimum value
=STDEV.P(range) // Standard deviation
// Financial Calculations
=B7/C7 // Simple ratio (Margin)
=SUM(B7:B9)/3 // Average of multiple companies
=IF(B7>0, C7/B7, "N/A") // Conditional calculation
=IFERROR(C7/D7, 0) // Handle divide by zero
// Cross-Sheet References
='Sheet1'!B7 // Reference another sheet
=VLOOKUP(A7, Table1, 2) // Lookup from data table
=INDEX(MATCH()) // Advanced lookup
// Formatting
=TEXT(B7, "0.0%") // Format as percentage
=TEXT(C7, "#,##0") // Thousands separator
Common Ratio Formulas
Gross Margin = Gross Profit / Revenue
EBITDA Margin = EBITDA / Revenue
FCF Margin = Free Cash Flow / Revenue
FCF Conversion = FCF / Operating Cash Flow
ROE = Net Income / Shareholders' Equity
ROA = Net Income / Total Assets
Asset Turnover = Revenue / Total Assets
Debt/Equity = Total Debt / Shareholders' Equity
Key Principles Summary
- Structure drives insight - Right headers force right thinking
- Less is more - 5-10 metrics that matter beat 20 that don't
- Choose metrics for your question - Valuation analysis ≠ efficiency analysis
- Statistics show patterns - Median/quartiles reveal more than average
- Transparency beats complexity - Simple formulas everyone understands
- Comparability is king - Better to exclude than force a bad comp
- Document your choices - Explain which metrics and why in notes section
Output Checklist
Before delivering a comp analysis, verify:
- All companies are truly comparable
- Data is from consistent time periods
- Units are clearly labeled (millions/billions)
- Formulas reference cells, not hardcoded values
- All hard-coded input cells have comments with either: (1) exact data source with citation, OR (2) clear assumption with explanation
- Hyperlinks added where relevant (SEC EDGAR filings, Bloomberg pages, research reports)
- Statistics include at least 5 metrics (Max, 75th, Med, 25th, Min)
- Notes section documents sources and methodology
- Visual formatting follows conventions (blue = input, black = formula)
- Sanity checks pass (margins logical, multiples reasonable)
- Date stamp is current ("As of [Date]")
- Formula auditing shows no errors (#DIV/0!, #REF!, #N/A)
Continuous Improvement
After completing a comp analysis, ask:
- Did the statistics reveal unexpected insights?
- Were there any data gaps that limited analysis?
- Did stakeholders ask for metrics you didn't include?
- How long did it take vs. how long should it take?
- What would make this more useful next time?
The best comp analyses evolve with each iteration. Save templates, learn from feedback, and refine the structure based on what decision-makers actually use.
Data sources — MCP first, web fallback
Many passages below say "use the S&P Kensho MCP / Daloopa MCP / FactSet MCP". Those are commercial financial-data MCPs from the original Cowork plugin context. In Hermes:
- If you have any structured financial-data MCP configured (Hermes supports MCP — see
native-mcpskill), prefer it for point-in-time comps, precedent transactions, and filings. - Otherwise, fall back to:
web_search/web_extractagainst SEC EDGAR (https://www.sec.gov/cgi-bin/browse-edgar) for US filings- Company IR pages for press releases, earnings decks
browser_navigatefor interactive data portals- User-provided data (explicitly ask when the context doesn't have it)
- Never fabricate. If a multiple, precedent, or filing number can't be sourced, flag the cell as
[UNSOURCED]and surface it to the user.
Attribution
This skill is adapted from Anthropic's Claude for Financial Services plugin suite (Apache-2.0). The Office-JS / Cowork live-Excel paths have been removed; this version targets headless openpyxl via the excel-author skill's conventions. Original: https://github.com/anthropics/financial-services
Frequently asked questions
What to verify before installation and use
What does the comps-analysis source document cover?
This skill assumes headless openpyxl — you are producing an .xlsx file on disk. Follow the excel-author skill's conventions for cell coloring, formulas, named ranges, and sensitivity tables. Recalculate before delivery: python /path/to/excel-author/scripts/recalc.py ./out/model.…
How do I install comps-analysis?
The source record exposes this install command: npx skills add https://github.com/NousResearch/hermes-agent --skill "optional-skills/finance/comps-analysis". Inspect the command and pinned source before running it.
Alternatives
Compare before choosing
NintendaDev/unikit-ai
unikit-docs
Generate and maintain the project's TECHNICAL documentation from its codebase — scans the project structure, tech stack, and module boundaries, then writes a lean README landing page plus detailed topic pages (architecture, modules, setup, build, APIs), only the docs that are relevant. Use whenever the user wants to create, update, or validate documentation of the CODE or the project itself, e.g. "generate documentation", "create docs", "write the README", "update the project docs", "document th
eugenelim/agent-ready-repo
work-loop
Use when implementing or resuming a non-trivial repository change: a feature, behavior-changing fix, refactor, migration, framework or dependency upgrade, schema or API change, performance work, infrastructure or build-system change, reversion, or an existing build spec under `docs/specs/`. Also use for bare continuation commands ('resume', 'continue', 'keep going', 'pick up where I left off', 'let's get going') when conversation or workspace context identifies active build work. Do not use for
objectstack-ai/objectstack
objectstack-ui
Author ObjectStack UI metadata — Views (list/form/kanban/calendar/gantt), Apps (navigation), Pages (structured plus the HTML and React source-authoring tiers, ADR-0080/0081), Dashboards, Reports, Charts, Actions, and package Docs (`src/docs/*.md`). Use when the user is adding `*.view.ts` / `*.app.ts` / `*.dashboard.ts` / `*.action.ts` / `src/docs/*.md` files or designing a Studio-rendered UI surface, including dataset-bound dashboard/report widgets. Do not use for: data schema (see objectstack-d
mgiovani/cc-arsenal
team-review
Multi-agent review team: architecture, security, performance, testing, style, docs/UX, plus an adversary that cross-examines the other 6, for security-sensitive, architectural, or large PRs (15+ files) where a single-agent pass risks missing cross-cutting issues. Use for auth/payments/PII changes, schema/pattern changes, compliance sign-off, or when asked to 'get the review team on this' / 'multi-agent review' / 'thorough review before merge'. For a standard PR or a quick pre-merge check, use /r