Learn how to track real fund performance by uploading transactions from capital statements, blend actuals with projections, and perform powerful variance analysis to understand plan vs actual.
Transactions (also called "actuals") are the real cashflow events that have occurred in your funds—capital calls, distributions, management fees, and other fund expenses. These are typically extracted from quarterly capital statements sent by your fund managers.
Actuals are historical facts—what actually happened. Projections are forecasts—what you expect to happen in the future. Nagare seamlessly blends both to give you a complete view of your fund's lifecycle: past, present, and future.
Here's what a typical capital statement transaction looks like:
{
"transactionId": "TXN-2024-Q1-001",
"fundId": "ACME-GROWTH-I",
"transactionDate": "2024-03-15",
"quarter": 9,
"type": "CAPITAL_CALL",
"amount": 5000000,
"currency": "USD",
"description": "Q1 2024 capital call for new investments",
"source": "Q1 2024 Capital Statement"
}Tracking actuals is critical for portfolio management. Here's why:
Know exactly where you stand today. Actuals replace projections for historical periods, giving you precise performance metrics.
Compare actual performance vs your forecasts. Understand why you're ahead or behind plan (deployment, returns, exits, fees, FX).
Learn from actual pacing and returns to refine future projections. Nagare's forecast drift detection shows you how your predictions evolve over time.
Answer questions like "What did we forecast in Q3 2023?" by comparing historical projections with what actually happened.
Most LPs receive capital statements quarterly (within 45-60 days after quarter-end). Establish a routine to upload transactions as soon as statements arrive. This keeps your portfolio view current and enables timely variance analysis.
Nagare supports multiple transaction types to capture all fund cashflows:
Investor contributions to the fund. These are draws on committed capital used to make new investments or pay fees/expenses.
Cash returned to investors from exits, dividends, or interest income. Distributions can be classified as return of capital or return on capital.
Periodic fees paid to the GP for managing the fund (typically 1.5-2% annually). Usually paid quarterly.
Performance fees paid to GP (typically 20% of profits above hurdle rate). Usually paid after clearing preferred return.
Fund-level expenses such as legal fees, audit fees, administrative costs, or organizational expenses.
Non-cash adjustments to fund NAV (e.g., unrealized gains/losses, fair value mark-to-market).
You can upload transactions one at a time or in bulk via CSV/Excel import.
Navigate to the fund details page
Click the "Transactions" tab
Click "Add Transaction" button
Fill out the transaction form:
Click "Save Transaction"
curl -X POST https://api.nagarehq.com/api/v1/funds/ACME-GROWTH-I/transactions \
-H "Authorization: Bearer fnd_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transactionDate": "2024-03-15",
"type": "CAPITAL_CALL",
"amount": 5000000,
"description": "Q1 2024 capital call",
"source": "Q1 2024 Capital Statement"
}'The API will auto-calculate the quarter from the transaction date and validate the transaction:
{
"transactionId": "TXN-1710518400000-ABC123",
"fundId": "ACME-GROWTH-I",
"transactionDate": "2024-03-15",
"quarter": 9,
"type": "CAPITAL_CALL",
"amount": 5000000,
"currency": "USD",
"description": "Q1 2024 capital call",
"source": "Q1 2024 Capital Statement",
"tenantId": "your-tenant",
"createdAt": "2024-03-16T10:30:00Z"
}For uploading multiple transactions at once (e.g., entire capital statement history), use the bulk import API:
curl -X POST https://api.nagarehq.com/api/v1/funds/ACME-GROWTH-I/transactions/bulk \
-H "Authorization: Bearer fnd_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transactions": [
{
"transactionDate": "2024-01-15",
"type": "CAPITAL_CALL",
"amount": 3000000,
"description": "Initial capital call"
},
{
"transactionDate": "2024-02-20",
"type": "MANAGEMENT_FEE",
"amount": 125000,
"description": "Q1 2024 management fee"
},
{
"transactionDate": "2024-03-15",
"type": "CAPITAL_CALL",
"amount": 5000000,
"description": "Q1 2024 capital call"
},
{
"transactionDate": "2024-06-30",
"type": "DISTRIBUTION",
"amount": 2000000,
"description": "Distribution from Exit A"
}
]
}'Bulk import response includes success/failure status for each transaction:
{
"success": true,
"created": 4,
"failed": 0,
"results": [
{
"index": 0,
"status": "created",
"transactionId": "TXN-1705329600000-XYZ"
},
{
"index": 1,
"status": "created",
"transactionId": "TXN-1708444800000-ABC"
},
{
"index": 2,
"status": "created",
"transactionId": "TXN-1710518400000-DEF"
},
{
"index": 3,
"status": "created",
"transactionId": "TXN-1719792000000-GHI"
}
]
}Build a simple script to parse capital statement CSVs and format them for bulk import. Most capital statements follow a consistent format, so you can automate 90% of the data entry work.
Nagare validates all transactions to ensure data integrity. Here are the key validation rules:
For PE funds, the first capital call must be on or after the fund's commitment date. You can't call capital before the fund legally exists.
The sum of all CAPITAL_CALL transactions cannot exceed the fund's totalCommitment (though Nagare allows a 5% buffer for rounding/fees).
Transaction dates must be valid ISO 8601 dates (YYYY-MM-DD). Future dates are allowed (for planned calls), but dates more than 1 year in the future trigger a warning.
All transaction amounts must be positive numbers. The transaction type determines whether it's an inflow or outflow, not the sign of the amount.
Transactions are automatically recorded in the fund's base currency. If you provide a currency field, it must match the fund's currency (no cross-currency transactions at transaction level).
Nagare's most powerful feature is the blended view—a seamless combination of historical actuals (what happened) and future projections (what you expect to happen).
For past quarters: Use ACTUAL data from transactions
For current quarter: Blend actuals + remaining projected cashflows
For future quarters: Use FORECAST projections
→ Result: Complete lifecycle view from inception to liquidation
curl -X GET https://api.nagarehq.com/api/v1/funds/ACME-GROWTH-I/blended \
-H "Authorization: Bearer fnd_live_YOUR_API_KEY"The response includes a dataSource field for each quarter:
{
"fundId": "ACME-GROWTH-I",
"currency": "USD",
"quarterlyData": [
{
"quarter": 1,
"year": 2024,
"capitalCall": 3000000,
"distribution": 0,
"nav": 2850000,
"dataSource": "ACTUAL" // ← From transactions
},
{
"quarter": 2,
"year": 2024,
"capitalCall": 5000000,
"distribution": 2000000,
"nav": 6500000,
"dataSource": "ACTUAL" // ← From transactions
},
{
"quarter": 3,
"year": 2024,
"capitalCall": 4000000,
"distribution": 0,
"nav": 10200000,
"dataSource": "FORECAST" // ← From projections
},
...
]
}In the Nagare UI, the Actuals tab shows the blended view by default. Charts automatically highlight the transition point between actuals and projections with a vertical line or color change.
When calculating projections, Nagare uses a data waterfall to determine which data source takes precedence. This ensures actuals always override projections.
Real historical data from transactions. Always wins. Immutable source of truth.
Custom fund-level projections (e.g., "This fund deploys $5M/quarter for next 4 quarters").
Default fund parameters (commitment, target TVPI, standard curves). Foundation for all funds.
Portfolio-wide scenario assumptions (e.g., "Bear case: -20% returns across all funds").
Example: If Q5 has an ACTUAL transaction, it uses that data, even if there's a FORECAST or SCENARIO override defined. Actuals always win.
Once you have actuals uploaded, you can perform variance analysis to understand why your portfolio is performing differently than planned.
Are you deploying faster or slower than planned? This impacts how much capital is at work.
Are your investments growing faster or slower than targeted growth rates?
Are exits happening earlier or later than expected? This affects distribution timing.
Are actual fees different from projected fees? Management fee changes, carry timing.
For multi-currency portfolios, currency fluctuations can impact returns significantly.
Sum of all variance components. Net effect on portfolio NAV/TVPI vs plan.
Navigate to the fund's Analysis tab to see variance breakdowns, or use the API:
GET /api/v1/funds/:fundId/variance?asOfDate=2024-06-30
// Returns variance attribution for all past quartersAs soon as you receive a capital statement (typically 45-60 days after quarter-end), upload the transactions. Fresh data enables timely variance analysis and better decision-making.
When onboarding a mature fund with years of history, don't enter transactions one by one. Parse the capital statement CSV and use bulk import to upload all historical transactions at once.
Always include a description (e.g., "Q1 2024 capital call") and source reference (e.g., "Q1 2024 Capital Statement"). This makes auditing and reconciliation much easier.
Periodically compare Nagare's blended NAV with your fund administrators' reported NAV. Small discrepancies are normal (timing, fee accruals), but large gaps indicate missing transactions.
Transactions represent historical facts. Only delete if you made a data entry error. If a capital statement was restated by the GP, update the transaction rather than deleting it.
Distinguish between CAPITAL_CALL (new capital for investments) and OTHER_EXPENSE (fund-level costs). Proper categorization ensures accurate fee and expense analysis.
curl -X GET "https://api.nagarehq.com/api/v1/funds/ACME-GROWTH-I/transactions?page=1&limit=50" \
-H "Authorization: Bearer fnd_live_YOUR_API_KEY"curl -X GET "https://api.nagarehq.com/api/v1/funds/ACME-GROWTH-I/transactions?startDate=2024-01-01&endDate=2024-06-30" \
-H "Authorization: Bearer fnd_live_YOUR_API_KEY"curl -X GET "https://api.nagarehq.com/api/v1/funds/ACME-GROWTH-I/transactions?type=DISTRIBUTION" \
-H "Authorization: Bearer fnd_live_YOUR_API_KEY"curl -X PUT https://api.nagarehq.com/api/v1/funds/ACME-GROWTH-I/transactions/TXN-123 \
-H "Authorization: Bearer fnd_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 5100000,
"description": "Q1 2024 capital call (restated)"
}'curl -X DELETE https://api.nagarehq.com/api/v1/funds/ACME-GROWTH-I/transactions/TXN-123 \
-H "Authorization: Bearer fnd_live_YOUR_API_KEY"Cause: You're trying to add a capital call before the fund's commitment date.
Solution: Check the fund's commitment date (in MASTER parameters). Either adjust the transaction date or update the fund's commitment date if it was entered incorrectly.
Cause: Missing transactions for some quarters, or transactions entered with incorrect dates.
Solution: Review capital statements for all quarters. Check transaction dates for typos (2023 vs 2024). Use the quarter filter to identify which quarters are missing data.
Common causes: Missing NAV_ADJUSTMENT transactions, fee accruals not captured, timing differences (as-of date mismatch).
Solution: Capital statements often include unrealized gains/losses. Add NAV_ADJUSTMENT transactions to capture these non-cash changes. Verify all fees are recorded.
Cause: Some transactions in the bulk upload failed validation (date errors, duplicate entries).
Solution: Check the bulk import response for error details. Fix the failing transactions and re-upload them individually or in a new bulk request.
Cause: Baseline forecast not set, or comparing against wrong scenario.
Solution: Variance analysis compares actuals vs a baseline. Ensure you've set the correct baseline scenario (usually your original forecast when the fund launched).
Now that you understand transactions and actuals, explore scenario modeling to create what-if projections and Monte Carlo simulations for risk analysis.