Fund Manager

LP Reporting That Writes Itself β€” TVPI, DPI, IRR Updated Quarterly

1-2 weeks + $5K β†’ 1 hour review (quarterly)Finance & Trading4 min read

Key Takeaway

Our AI agent generates institutional-quality LP reports with TVPI, DPI, and IRR calculations, benchmarked against Cambridge Associates β€” replacing a 2-week, $5K process with a 1-hour review.

The Problem

LP reporting is the tax of fund management. It's necessary, it's time-consuming, and nobody enjoys it.

Every quarter, the same ritual: collect portfolio company marks, calculate fund-level metrics, benchmark against industry, write the narrative, format the report, get it reviewed, send it out. With a fund admin, this takes 1-2 weeks and costs $3,000-$5,000 per quarter.

For a holding company like PyratzLabs β€” where we manage investments across Zama, Artificial-Lab, and external positions β€” the complexity compounds. Multiple vintages. Different valuation methodologies. Currency adjustments. It's not just math. It's accounting, formatting, and storytelling combined.

And here's the uncomfortable truth: most fund admins are doing the same formula calculations every quarter. The inputs change. The process doesn't. That's exactly the kind of work an agent should do.

The Solution

Warren β€” our CFO agent β€” runs a quarterly LP report generator. It pulls the latest portfolio company marks, calculates TVPI, DPI, and IRR at both fund and vintage level, benchmarks against Cambridge Associates data, and produces a formatted report with executive summary, portfolio overview, exits, and reserve analysis.

The human work: review the report, adjust any qualitative commentary, approve, and send. One hour instead of two weeks.

The Process

Report configuration:

yamlShow code
# lp-report config
schedule: "quarterly"  # triggered manually or by calendar
fund: "PyratzLabs Ventures"
vintages: [2022, 2023, 2024, 2025]
currency: EUR
benchmark: "Cambridge Associates EU VC Index"

portfolio_companies:
  - name: "Zama"
    vintage: 2022
    invested: 2500000
    current_mark: 18000000
    methodology: "last_round"
    status: "active"
  - name: "Artificial-Lab"
    vintage: 2023
    invested: 1200000
    current_mark: 8500000
    methodology: "last_round"
    status: "active"
  - name: "Billy"
    vintage: 2024
    invested: 800000
    current_mark: 3200000
    methodology: "revenue_multiple"
    status: "active"
  # ... additional positions

distributions:
  - date: "2025-06-15"
    amount: 450000
    source: "Secondary sale β€” Zama shares"
  - date: "2025-11-30"
    amount: 280000
    source: "Dividend β€” Billy"

Metric calculations:

pythonShow code
def calculate_fund_metrics(portfolio, distributions):
    total_invested = sum(p.invested for p in portfolio)
    total_value = sum(p.current_mark for p in portfolio)
    total_distributed = sum(d.amount for d in distributions)

    tvpi = (total_value + total_distributed) / total_invested
    dpi = total_distributed / total_invested
    rvpi = total_value / total_invested

    # IRR using cash flows
    cash_flows = []
    for p in portfolio:
        cash_flows.append((-p.invested, p.investment_date))
    for d in distributions:
        cash_flows.append((d.amount, d.date))
    # Terminal value as final positive cash flow
    cash_flows.append((total_value, report_date))

    irr = xirr(cash_flows)

    return FundMetrics(tvpi=tvpi, dpi=dpi, rvpi=rvpi, irr=irr)

def benchmark_comparison(metrics, benchmark_data):
    return {
        "tvpi_vs_median": metrics.tvpi - benchmark_data.median_tvpi,
        "tvpi_quartile": quartile_rank(metrics.tvpi, benchmark_data.tvpi_distribution),
        "irr_vs_median": metrics.irr - benchmark_data.median_irr,
        "irr_quartile": quartile_rank(metrics.irr, benchmark_data.irr_distribution)
    }

Report output structure:

View details
═══════════════════════════════════════════
  PYRATZLABS VENTURES β€” LP REPORT Q4 2025
═══════════════════════════════════════════

EXECUTIVE SUMMARY
Fund TVPI of 2.87x (top quartile vs Cambridge EU VC).
DPI of 0.14x β€” still early, distributions ramping.
Net IRR of 38.2% driven by Zama mark-up and Billy revenue growth.

FUND METRICS
| Metric    | Fund   | Benchmark Median | Quartile |
|-----------|--------|-----------------|----------|
| TVPI      | 2.87x  | 1.64x           | Top      |
| DPI       | 0.14x  | 0.22x           | 3rd      |
| Net IRR   | 38.2%  | 14.7%           | Top      |

VINTAGE BREAKDOWN
| Vintage | Invested  | Value     | TVPI  | IRR   |
|---------|-----------|-----------|-------|-------|
| 2022    | €2.5M     | €18.0M    | 7.20x | 62.1% |
| 2023    | €1.2M     | €8.5M     | 7.08x | 48.3% |
| 2024    | €0.8M     | €3.2M     | 4.00x | 31.7% |

PORTFOLIO COMPANY DETAIL
[Individual company sections with marks, methodology, milestones]

RESERVES & FOLLOW-ON
[Reserve allocation analysis]

DISTRIBUTIONS
[Distribution history and forward calendar]

The Results

MetricFund Admin (Before)Agent (After)
Time to produce1-2 weeks1 hour (review only)
Cost per quarter$3,000-$5,000~$0 (compute cost negligible)
Annual cost$12,000-$20,000~$0
Errors caughtPost-review (if at all)Pre-submission validation
Benchmark comparisonOften skippedAlways included
Format consistencyVaries quarter to quarterIdentical template

Try It Yourself

Install the startup-financial-modeling skill on Mr.Chief. Configure your portfolio with invested amounts, current marks, and valuation methodologies. The agent handles the math, benchmarking, and formatting.

Start with the metrics calculation β€” get comfortable that the TVPI and IRR match your manual calcs. Then let the agent format the full report. Quality check the first two quarters. After that, it's review-and-send.


LP reporting shouldn't be a 2-week project. It's math, formatting, and benchmarking. Let the agent do the work. You do the relationships.

LP-reportingTVPIIRRfund-managementventure-capital

Want results like these?

Start free with your own AI team. No credit card required.

LP Reporting That Writes Itself β€” TVPI, DPI, IRR Updated Quarterly β€” Mr.Chief