Arte SheetsLearn. Try. Understand.

Private Equity, Venture Capital & Institutional LP Reporting

PE & Venture Fund DPI, RVPI, Gross TVPI & Net TVPI Formula

Calculate ILPA Institutional LP Fund Multiples: Realized Cash-on-Cash DPI (Distributions / Paid-In Capital), Unrealized RVPI (Residual NAV / PIC), Gross Total Value to Paid-In (TVPI), and Accrued-Carry-Adjusted LP Net TVPI.

Separate hard cash realizations (DPI) from paper markups (RVPI) and accrued GP carry!

Institutional Limited Partners (pensions, endowments, and sovereign wealth funds) evaluate Private Equity and Venture Capital vintages under ILPA reporting standards by splitting Total Value into two distinct components over Paid-In Capital (PIC, cumulative capital actually called—NOT total committed capital!): Realized Distributions to Paid-In DPI = Realized_Distributions / PIC ("cash back in the bank") and Residual Value to Paid-In RVPI = Unrealized_NAV / PIC ("unexited paper value")! Before carried interest, Gross_TVPI = DPI + RVPI = (Distributions + Residual_NAV) / PIC; however, an analyst who forgets to accrue General Partner carried interest on unrealized gains overstates LP returns—LP Post-Carry Net TVPI deducts MAX(0, (Distributions + Residual_NAV - PIC) * Carry_Rate) before dividing by PIC!

Build a hand-verifiable Fund III quarterly capital-account table first—Paid_In_Capital PIC = $80M (B2), Realized_Distributions = $60M (B3), Residual_Unrealized_NAV = $100M (B4), and GP_Carry_Rate = 0.20 (20% whole-fund carry above 1.0x return of capital, B5): Realized DPI is 60 / 80 = 0.7500x (E2); Residual RVPI is 100 / 80 = 1.2500x (E3); Pre-Carry Gross TVPI is (60 + 100) / 80 = 2.0000x (E4); and LP Post-Carry Net TVPI deducts 20% of the $80M total fund profit ($16M accrued carry), leaving ($160M - $16M) / $80M = 1.8000x (E5)! If an associate asks the in-app Pro Assistant for a hint ("Ask what happens to accrued GP carry in E5 when Residual_NAV drops below Paid_In_Capital, without rewriting my formula yet"), the MAX(0, ...) floor ensures GP carry cannot turn negative when the fund is underwater!

ILPA Fund Multiple (PIC=$80M, Dist=$60M, NAV=$100M, 20% GP Carry)FormulaVerified Output
Realized Cash-on-Cash DPI (x)Realized_Distributions / Paid_In_Capital0.7500x
Unrealized Residual RVPI (x)Residual_NAV / Paid_In_Capital1.2500x (0.1250x @ $10M NAV)
Pre-Carry Gross TVPI (x)(Distributions + Residual_NAV) / PIC2.0000x (0.8750x @ $10M NAV)
LP Post-Carry Net TVPI (x)(Total_Value - MAX(0, Profit*Carry)) / PIC1.8000x (0.8750x @ $10M NAV)

ILPA Accrued-Carry-Guarded LP Net TVPI Formula

Validate Paid_In_Capital > 0, non-negative Distributions and Residual_NAV, and 0 <= Carry_Rate < 0.50!

=LET(pi_c, B2, ds_t, B3, rv_n, B4, cr_r, B5, IF(OR(pi_c <= 0, ds_t < 0, rv_n < 0, cr_r < 0, cr_r >= 0.5), "Invalid Fund Capital Input", LET(tv_g, ds_t + rv_n, gp_c, MAX(0, (tv_g - pi_c) * cr_r), ROUND((tv_g - gp_c) / pi_c, 4))))

Underwater J-Curve Markdown Check (Set Residual NAV = $10M)

Before accepting a contributor peer’s cell suggestion on a shared LP quarterly report, test a markdown to Residual_NAV B4 = $10M (Total Value = $70M < $80M PIC): Gross TVPI E4 and Net TVPI E5 both equal 0.8750x because MAX(0, -10 * 0.20) = $0 accrued carry!

=IF(ISTEXT(E2), E2, ROUND((B3 + B4) / B2, 4))

Try the example

Use the original values or change them to test your understanding.

Further reading