carta-performance-benchmarks
Compare a fund's performance against peer benchmark cohorts. Use when asked about fund benchmarks, peer comparison, percentile ranking, Net IRR vs peers, TVPI benchmarks, or how a fund stacks up against its cohort. Do NOT use for cap table market benchmarks (option pool sizes, SAFE terms, cap structure patterns — use carta-market-benchmarks in carta-cap-table). Do NOT use for general fund financial data queries or NAV — use carta-explore-data.
What this skill does
<!-- Part of the official Carta AI Agent Plugin -->
# Performance Benchmarks
Compare a fund's historical Net IRR, TVPI, MOIC, or DPI against peer benchmark cohorts grouped by vintage year, AUM bucket, and entity type.
## When to Use
- "How does Fund I compare to its benchmark?"
- "Show me Net IRR benchmarks for [Fund]"
- "What percentile is [Fund] in for TVPI?"
- "Compare [Fund] against vintage 2020 peers"
- "Show me benchmark data for our funds"
- "How does our fund stack up against peers?"
- "How does our fund's IRR compare to peers?"
- "What percentile is our TVPI?"
- "Is Fund II above or below median DPI?"
- "Show me MOIC benchmarks for vintage 2021"
## When NOT to Use
- "What's the average option pool size for Series A?" → use `carta-market-benchmarks`
- "What are typical SAFE terms across our portfolio?" → use `carta-market-benchmarks`
- "Show me cap structure patterns for seed-stage companies" → use `carta-market-benchmarks`
- "What's the current NAV for Fund I?" → use `carta-explore-data`
- "Pull fund financial data for our quarterly report" → use `carta-explore-data`
## Prerequisites
- The user must have the Carta MCP server connected
- A `fund_name` is required — **ask if not provided**
- If this is the first query, call `list_contexts` and `set_context` to set the firm
### Optional Parameters
| Parameter | Default | Description |
|-----------|---------|-------------|
| `metric` | `net_irr` | One of: `net_irr`, `tvpi`, `moic`, `dpi` |
| `vintage_year` | Auto-resolved from fund | Filter cohort by vintage year |
| `aum_bucket` | Auto-resolved from fund | Filter by AUM bucket (e.g. `"25m-100m"`) |
| `entity_type` | Auto-resolved from fund | `"Fund"` or `"SPV"` |
| `start_date` | All history | Only show quarters on/after this date (YYYY-MM-DD) |
## Data Retrieval
Query the `FUND_ADMIN.TEMPORAL_FUND_COHORT_BENCHMARKS` table which contains fund metrics, benchmark percentiles, and cohort size in one denormalized table.
### SQL Query
Execute this query with `fetch("dwh:execute:query", {"sql": "..."})`, substituting the user's fund name and optional filters:
```sql
SELECT
fund_name,
fund_uuid,
performance_quarter_start_date AS quarter,
vintage_year,
fund_aum_bucket,
entity_type_name,
fund_count,
net_irr, tvpi, dpi, moic,
net_irr_10th, net_irr_25th, net_irr_50th, net_irr_75th, net_irr_90th,
tvpi_10, tvpi_25, tvpi_50, tvpi_75, tvpi_90,
dpi_10, dpi_25, dpi_50, dpi_75, dpi_90,
moic_10, moic_25, moic_50, moic_75, moic_90
FROM FUND_ADMIN.TEMPORAL_FUND_COHORT_BENCHMARKS
WHERE LOWER(fund_name) ILIKE '%{fund_name}%'
AND performance_quarter_start_date >= '{start_date}'
-- Add optional filters:
-- AND vintage_year = {vintage_year}
-- AND fund_aum_bucket = '{aum_bucket}'
-- AND entity_type_name = '{entity_type}'
ORDER BY performance_quarter_start_date
LIMIT 1000
```
**Important:** Build the WHERE clause dynamically — only include filters the user provided. Omitted filters are auto-resolved from the data.
### Handling Multiple Fund Matches
If the query returns rows for more than one distinct `fund_name`, list them and ask the user to be more specific:
> Multiple funds matched "[search term]":
> - Fund I
> - Fund II
>
> Please use a more specific fund name.
## Metric Configuration
| Metric | Column | Format | Percentile Columns |
|--------|--------|--------|--------------------|
| Net IRR | `net_irr` | Percentage (e.g. `8.0%`) | `net_irr_10th` through `net_irr_90th` |
| TVPI | `tvpi` | Multiple (e.g. `1.85x`) | `tvpi_10` through `tvpi_90` |
| MOIC | `moic` | Multiple (e.g. `2.10x`) | `moic_10` through `moic_90` |
| DPI | `dpi` | Multiple (e.g. `0.42x`) | `dpi_10` through `dpi_90` |
### Percentile Band Logic
Based on the fund's value relative to benchmarks in the latest quarter:
| Condition | Label |
|-----------|-------|
| Fund ≥ 90th percentile | Top 10th percentile |
| Fund ≥ 75th percentile | 75th–90th percentile |
| Fund ≥ 50th percentile | 50th–75th percentile (above median) |
| Fund ≥ 25th percentile | 25th–50th percentile (below median) |
| Fund < 25th percentile | Bottom 25th percentile |
## How to Present
Use the **latest quarter** (last row) for the summary, all rows for the timeline.
### Section 1 — Cohort Details
| | |
|---|---|
| Fund | {fund_name} |
| Metric | {metric_label} |
| Vintage Year | {vintage_year} |
| AUM Bucket | {aum_bucket} |
| Entity Type | {entity_type} |
| Date Range | {first_quarter} – {last_quarter} |
| Benchmark Sample Size | **{fund_count} funds** |
### Section 2 — Current Standing
| | {metric_label} |
|---|---|
| **{fund_name}** | **{fund_value}** |
| Benchmark Median (50th pct) | {p50} |
| Benchmark 75th pct | {p75} |
| Benchmark 90th pct | {p90} |
| Fund Percentile Band | {band_label} |
### Section 3 — Timeline by Quarter
| Quarter | {fund_name} | 10th pct | 25th pct | Median | 75th pct | 90th pct | Cohort (n) |
|---|---|---|---|---|---|---|---|
| 2023-01-01 | 8.5% | 2.1% | 5.0% | 7.8% | 10.2% | 14.5% | 45 |
### Formatting
- Net IRR: display as `X.X%` (values are stored as percentage points, e.g. 8.0 = 8%)
- TVPI/MOIC/DPI: display as `X.XXx`
- Use `—` for null values
- End with: *Cohort: {vintage} vintage · {bucket} AUM · {entity_type} · {count} funds as of latest quarter*
## Voice Guidelines
- Say "your fund ranks in the top quartile" not "the query returned a value above the 75th percentile"
- Frame the percentile band in plain language: "Fund I is performing above the median for its peer group"
## Best Effort
- **Computed:** percentile band classification, trend analysis
- **Authoritative:** fund metrics and benchmark percentiles come directly from the Carta data warehouse
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.