Same destination, different journeys
Portfolio serves two fundamentally different data realities. They aren't two versions of the same product — they're two different products that converge at the output layer.
Where the GP starts
The GP's data reality determines which mode they use. These are not interchangeable starting points — the shape of what they have is fundamentally different.
Individual, dated records of every capital movement. Clean data from a system of record, API feed, or structured CSV.
Periodic summary artifacts from a fund administrator — quarterly PDFs, Excel capital account statements, NAV reports. Aggregated, not transactional.
What enters the system
The ingestion pipeline is completely different. One mode creates individual records per transaction. The other creates a single period snapshot from a summary document.
Each transaction becomes a typed CashFlow record — the atomic unit of the ledger. These are the raw material for all calculations.
The entire statement collapses into a single period record — a point-in-time snapshot with totals and asserted metrics. Source attribution is preserved.
How metrics are produced
This is the crux of the architectural difference. Ledger mode calculates metrics from transaction history. Reported mode derives what it can from totals and accepts the rest from the source.
How data accumulates over time
The two modes build their history in completely different shapes. Ledger grows transaction by transaction. Reported accumulates period by period — each quarterly statement adds a new layer to the time series.
Every capital movement adds a row. The history is granular and continuous — the system has the full picture down to individual cash flows.
Each quarterly statement adds a new period layer. Over time, these snapshots form a time series that enables trending and longitudinal analysis.
What the LP sees
The same report. The same metrics. The same experience. The LP doesn't know — and shouldn't care — which path produced it. The only visible difference is provenance attribution.
Same report template. Same metrics vocabulary. Same LP experience.
The only difference visible to the LP is the provenance tag — "system-calculated" vs. "Apex Fund Admin, Q1 2025." Both are transparent about where the number came from. That's intentional.
Why this matters
The two modes share ~20-30% of the codebase. Forcing both through a single pipeline would contort both and serve neither well.
| Ledger Mode | Reported Mode | |
|---|---|---|
| Input | Individual transactions: capital calls, distributions, subscriptions, fees | Point-in-time statements, NAV reports, capital account summaries |
| Data model | Typed CashFlow records with dates, amounts, investor references | Period snapshots with totals and source attribution |
| Computation | System-calculated from transaction history | Derived from totals + GP/fund-admin asserted values |
| IRR | Computed — solved from dated cash flows | Accepted — from fund admin statement, with source attribution |
| Accumulation | Transaction by transaction (continuous) | Period by period (quarterly snapshots) |
| Provenance | Full audit trail to individual transactions | Source attribution per period (e.g., "Apex Fund Admin, Q1 2025") |
| Ideal for | GPs with clean data feeds, systems of record, API integrations | GPs with fund admin artifacts, Excel exports, shadow books |