Click to copy
<role>The same desk, running on a synthetic sample so the human sees the output shape before trusting it on a real statement.</role>
<task>Run prompts 03 to 10 on the sample below with {{AS_OF_DATE}} 30 Jun 2026, {{BASE_CCY}} USD, {{TOLERANCE_BPS}} 10 on IRR and 0.005x on multiples, {{INDEX}} the sample index whose levels are printed. Then compare your output to the expected results line by line. Every figure must match to the precision shown. If one does not, say which and STOP, do not load a real statement until it matches.</task>
<sample>
Sample Buyout Fund V (GP Sample Capital), vintage 2021, commitment 150,000,000 USD.
Cash flow statement, LP seat, all amounts USD, sample index level on the same day in brackets:
C1 call, 15 Mar 2021, 30,000,000 (100.0)
C2 call, 30 Sep 2021, 25,000,000 (108.0)
C3 call, 15 Apr 2022, 30,000,000 (104.0)
C4 call, 30 Nov 2022, 20,000,000 (96.0)
C5 call, 15 Jun 2023, 15,000,000 (110.0)
D1 distribution, 15 Dec 2023, 18,000,000 (118.0)
D2 distribution, "Q3 2024" on the cash flow statement, 32,000,000. Distribution Notice No. 2 is in the file and states payment date 30 Sep 2024 (130.0).
D3 distribution, 30 Jun 2025, 25,000,000 (138.0)
Index level on 30 Jun 2026: 150.0
Capital account statement as of 30 Jun 2026: contributions to date 120,000,000, distributions to date 75,000,000, NAV 61,200,000, footnote 4: "NAV is presented before accrued carried interest of 1,200,000".
Roll forward FY2025 from the audited statements: opening NAV 82,000,000, distributions 25,000,000, net realised and unrealised gain 9,500,000, carried interest accrual 1,200,000, closing NAV 65,300,000. H1 2026: no flows, net change minus 5,300,000.
GP quarterly letter, Q4 2025: "net IRR 5.0 percent, net TVPI 1.14x since inception, as of 31 Dec 2025".
</sample>
<expected_parse>
D2 dates from Distribution Notice No. 2, not from the statement. If the notice had not been in the file, the expected output is: "D2 has no payment date. Produce Distribution Notice No. 2 of Sample Buyout Fund V. No IRR, PME or gate until then." Eight dated flows, log cum called 120,000,000 ties, log cum distributed 75,000,000 ties.
NAV carried for scoring: 60,000,000, net of the 1,200,000 accrued carry in footnote 4, because the LP would never receive the carry. 61,200,000 is logged as {{GP_STATED_NAV}}.
</expected_parse>
<expected_metrics>
called 120,000,000 | distributed 75,000,000 | NAV 60,000,000
DPI 0.625x | RVPI 0.500x | TVPI 1.125x
IRR from LP wire dates, NAV at 30 Jun 2026: 3.52 percent (3.5 percent)
IRR if NAV were zero today: minus 16.3 percent
Kaplan Schoar PME: future value of distributions plus NAV 146,978,346, future value of calls 174,695,998, KS PME 0.84
Long Nickels index IRR over the same flows: 8.95 percent, index equivalent NAV 87,717,653
Direct alpha: minus 5.2 percent a year, in the same sign as the PME
NAV haircut that takes TVPI to 1.00x: 25 percent (NAV 45,000,000)
NAV move that takes KS PME to 1.00x: plus 46 percent (NAV 87,717,653)
</expected_metrics>
<expected_roll>
FY2025 rolled closing 65,300,000 equals stated 65,300,000, TIES.
H1 2026 rolled closing 60,000,000. Statement shows 61,200,000. GAP 1,200,000, explained by footnote 4, carry shown gross. Status: BREAK, until {{APPROVER}} accepts that the LP's residual is 60,000,000.
</expected_roll>
<expected_register>
GP net IRR 5.0 percent at 31 Dec 2025 vs recomputed 3.5 percent at 30 Jun 2026: NOT COMPARABLE, period mismatch. Recomputed at 31 Dec 2025 with NAV 65,300,000 is 4.99 percent, TIES within 10 bps. Ask the GP for the 30 Jun 2026 figure.
GP TVPI 1.14x at 31 Dec 2025 vs recomputed 1.125x at 30 Jun 2026: NOT COMPARABLE, period mismatch, and the GP basis includes accrued carry. At the GP's own basis and date, (75,000,000 plus 65,300,000 plus 1,200,000) over 120,000,000 is 1.18x, so the letter's 1.14x does not tie to either basis. BREAK, owner {{APPROVER}}, question to the GP drafted.
</expected_register>
<expected_gate>
TVPI 1.13x reads fine. The gate still says BLOCK: residual is 60,000,000 on 120,000,000 called, half the multiple is a mark, KS PME 0.84 says the same wires into {{INDEX}} would hold 87,700,000 today against 60,000,000, and the roll forward carries an open break. The public path did the work.
</expected_gate>
<trap>The sample contains three ways a naive run goes wrong on purpose. D2 carries a quarter, not a date, and the naive run uses 30 Sep 2024 by assumption rather than by notice. The capital account prints 61,200,000 and the naive run scores it. The GP letter prints 1.14x and the naive run compares it to a figure six months later. If your run dated D2 without the notice, used 61,200,000 as NAV, or called the IRR a break rather than a period mismatch, the method was not followed.</trap>
<review_gate>Every figure in the expected blocks reproduced. State MATCH or the first mismatch, then stop or proceed.</review_gate>