Fund Performance Snapshot (Claude Skill)
Last updated: July 6, 2026
This Claude Skill teaches Claude to produce fund-level performance reports: NAV, net IRR, DPI/TVPI/MOIC, committed and called capital, as a quarterly or annual series or a single-period snapshot with deltas, in chat, Excel, PDF, or HTML.
How to set it up (one time)
Download the attached file just above.
In Claude, go to Settings > Capabilities > Skills and upload the file.
Done. There is nothing to configure.
How to use it
Just ask Claude, for example:
"How did [fund] do in Q1?"
"Show NAV and TVPI by quarter since inception"
"Q2 performance snapshot as a PDF"
What's inside the skill (reference only)
You don't need to read anything below to use the skill. It's the full instruction set packaged in the attached file, shown here for reference.
Fund Metrics Report
Produce a fund-level metrics report for the firm's funds on the Hanover Park platform. The person asking is a principal at the firm — a GP, CFO, controller, or their finance team — and every figure may be forwarded to an LP, so accuracy and honest labeling beat completeness.
Metrics in every report
Metric | Source | Notes |
|---|---|---|
NAV | get_fund_performance | Total NAV (LP + GP) for snapshots; LP-only NAV in period series (label which one you're showing) |
Net IRR | get_fund_performance | ITD, as of each period end |
DPI / TVPI / MOIC | get_fund_performance | ITD multiples, as of each period end |
Committed capital | get_user_context / get_fund_performance | Current total commitments (see labeling rule below) |
Called capital | get_capital_activity | ITD calls as of the period end |
Period capital activity | get_capital_activity | Calls and distributions during the reporting period |
Step 1 — Establish context
Call get_user_context once. It returns the firm, its funds, and today's date; use that firm's firmId on every subsequent call. Note each fund's commencementDate and latestVettedPerformanceDate — you'll need both for period handling.
Step 2 — One round of clarification
Collect anything the request didn't specify, in a single round of questions (use the AskUserQuestion tool when available, otherwise ask plainly in chat). Never re-ask something the user already said.
Funds — which fund(s), or all funds? If the firm has ≤4 funds, offer them as options with "All funds" first; otherwise offer "All funds" and let them name specific ones.
Period — one of the four modes below, if the request didn't pin one down.
Output — Excel, PDF, HTML, or chat summary.
Asking everything at once matters: this skill's users are busy GPs and CFOs, and three sequential question rounds will lose them.
Step 3 — Pull the data
Period modes
ITD by quarter (series): call
get_fund_performancein history mode with only endDate (today or the requested cutoff) — passing endDate alone returns the full series since inception. Keep rows whose asOfDate falls at a quarter end (month 03, 06, 09, 12); label them Q1-Q4 by month. If the latest vetted month isn't a quarter end, append it as one extra row labeled "Latest (MMM YYYY)".ITD by year (series): same call; keep the December rows, label by year, and append the latest partial-year row labeled "YTD (MMM YYYY)" when the current year has no December row yet.
Specific quarter (snapshot + deltas): for quarter ending E with prior quarter end P: snapshot via
get_fund_performancewith asOfDate: E (latest mode includes total NAV as of E); deltas via history mode with endDate: E — take the rows at P and E from the same vetted series and report the movement in LP NAV, TVPI, DPI, and net IRR (in points, e.g. "TVPI 1.20x → 1.25x"); use the history rows for deltas — mixing the live snapshot with history rows makes the math inconsistent. Period activity viaget_capital_activity(actions view) with startDate = first day of the quarter, endDate: E. ITD called / distributed as of E viaget_capital_activitywith only endDate: E.Specific year: same as specific quarter with January 1 / December 31 boundaries and prior December 31 as the comparison point.
Capital activity rules
Call get_capital_activity once per fund and read summary.byDirection for totals. The summary respects the same filters as the rows, so a fund-scoped call gives correct fund totals — never sum the paginated rows yourself (pages are partial), and never add investor filters when you want fund-level totals.
Integrity rules (non-negotiable)
Never compute IRR, DPI, TVPI, or MOIC from cashflows — those come only from
get_fund_performance.Never derive GP NAV as total NAV minus LP NAV; the two come from different sources.
totalCommitments and totalCalled from the performance snapshot are current values, not historical. In a report for a past period, label commitments "current commitments" and take called-as-of-period-end from capital activity instead.
If the requested period end is after latestVettedPerformanceDate, use the latest vetted data and say so prominently ("as of [most recent vetted date] — most recent vetted data"). Never present stale data as current or extrapolate.
A fund with no data for the period (commenced later, nothing vetted) gets an explicit "no data for this period" line — never a zero, never an estimate.
Funds with $0 commitments are included but footnoted.
Step 4 — Build the output
Formatting conventions everywhere: money as whole dollars with thousands separators ($125,000,000; $125.0M acceptable in charts and cards), IRR as a percentage with one decimal (14.0%), multiples with two decimals and an x (1.25x), quarters as "Q1 2026", as-of dates as "March 31, 2026".
Branding is firm-first: the firm's name is the headline of every output; a discreet "Prepared by Hanover Park · [date]" footer appears on file outputs. Styling stays neutral and professional (charcoal/navy headings on white) — do not apply Hanover Park brand colors or logos to the body of the firm's report.
Chat: a compact table (funds × metrics, or periods × metrics for a series) plus 2-3 sentences of commentary on what moved. No files.
Excel / PDF / HTML: Excel uses the xlsx + excel-formatting skills (summary sheet + one tab per fund). HTML and PDF include trend charts for series reports and metric cards for single-period snapshots.
Every file output states: firm, funds covered, period, as-of date of the underlying data, and the NAV basis (total vs LP-only) wherever NAV appears.
Save files to the user's project folder and present them with the file-presentation tool.
Example
User: how did [Fund 1] do in Q1 2026? excel please
Flow: get_user_context → fund matched ([Fund 1]), period (Q1 2026) and format (Excel) are given → no questions needed → asOfDate 2026-03-31 snapshot + history endDate 2026-03-31 for the 2025-12-31 vs 2026-03-31 deltas + capital activity for 2026-01-01..2026-03-31 and ITD to 2026-03-31 → build workbook → present file.
If the request is for one investor rather than a fund ("what does [LP 1] have with us"), hand off to the lp-position-snapshot skill instead.