Forecasting the Cash Flows and NAVs of PE Funds
Liquidity Planning and Commitment Pacing:
Limited Partners (LPs) commonly cite liquidity management and commitment pacing as two of the top challenges in managing private markets funds programs. This is unsurprising: private markets funds, unlike traditional investments, involve a series of capital calls and distributions over the span of several years. This creates unique cash flow considerations:
- How quickly will capital be called?
- How long will it take for capital to be distributed back?
- What cash reserves should I set aside?
- When can I start recycling distributions into new investments?
Frequent and large cash flows into and out of private markets funds also translate into large changes in NAVs exposures, leading to commitment pacing challenges:
- How long will it take for NAV to build up?
- When will NAV start tapering off?
- Should I overcommit to achieve my NAV exposure goals?
Effective liquidity planning allows LPs to manage cash reserves efficiently, while commitment pacing involves strategically timing and sizing commitments to maintain a balanced portfolio and achieve long-term investment goals. To tackle these challenges, LPs need to model out expected cash flows and NAV trajectories. This is where forecasting models enter the picture.
The Takahashi & Alexander Model:
One of the most popular forecasting tools is the Takahashi and Alexander model ("TA"), introduced at the Yale Endowment Fund in 2001. There are many reasons behind its success:
- It is very simple and intuitive
- It can be used to model all fund-level metrics: calls, distributions, NAVs, unfunded commitments, yields, TVPIs, DPIs, etc.
- It works for both existing and future commitments
- It links cash flows and NAVs in a coherent way
- It is easy to implement
Despite its flexibility, the TA model is incredibly parsimonious. You just need to fix 6 parameters to fully model out a fund's cash flows and NAVs:
- Termination date
- Call rate
- Yield rate
- Target IRR
- Call rate
- Bow factor
With these 6 parameters, plus the "initial conditions" (i.e. where the fund stands in terms of age, unfunded, and NAV), the model is rich enough to generate realistic cash flow and NAV dynamics. Let's understand how, by looking in turn at calls, distributions, and NAVs.
Capital Calls:
GPs call committed capital for various purposes, including:
- New and follow-on investments
- Management fees
- Vehicle expenses
The majority of these calls occur during the "investment period" - typically the first 5 years of a fund's life - before tapering off as the fund matures:
The TA model elegantly captures these effects via a simple formula:
| Calls[t] = Unfunded[t-1] × Call Rate |
where: | Unfunded[t-1] = Commitment − (All Calls Made To Date t-1) |
This modelling approach has two advantages:
- It is realistic: calls start steep (during the investment period), and taper off as the fund matures
- Cumulative calls never exceed committed capital
Capital Distributions:
Distributions begin when GPs start exiting investments (the "harvesting period"), typically after the initial five-year investment period. As the fund matures, the frequency and size of the distributions increase, until all residual NAV is liquidated at termination:
The TA model captures these characteristics by assuming that distributions in every period t are a fraction of the open NAV:
| Distributions[t] = NAV[t-1] (1 + Growth Rate) × Distribution Rate[t] |
where: | Distribution Rate[t] grows from 0% at fund inception to 100% at fund termination |
Notice how this approach ensures that:
- Distributions are in sync with NAVs: you cannot have high distributions if NAVs are low
- The distribution rate increases as the fund matures, consistent with the idea that funds sell off their investments during the harvesting period
- All residual NAV is liquidated at fund termination
The distribution Rate & The Bow Factor
But how exactly is the distribution rate defined? The TA model uses the formula:
| Distribution Rate[t] = max (Yield, Dist Rate ex Yield[t]) |
where: | Dist Rate ex Yield[t] = Fraction of Fund Life[t]) ^ Bow |
This is probably the most obscure component of the model, so let's try to make sense of it.
Let's start with the Dist Rate ex Yield component. As described in the previous section, this rate needs to satisfy three properties:
- It has to increase as fund age increases: funds distribute more as they mature
- It has to start at 0%: funds start with 0 distributions at inception
- It has to reach 100%: funds liquidate all outstanding NAV at termination
Many functions satisfy these criteria; the TA model uses a particularly simple but effective one:
| Dist Rate ex Yield[t] = Fraction of Fund Life[t]) ^ Bow |
The Bow exponent is key. It can be intuitively thought of as the "fund's duration": the higher the bow factor, the later will the fund distribute capital back to LPs.
As an example, consider the following diagram, showing how distribution rates change over a fund's life based on three different values for the bow factor: 1, 1.4, and 2.
Notice how all three profiles start at 0% and end at 100%, but have different "shapes": the distribution rate associated to a bow factor of 1 (in blue) increases smoothly over time, while the distribution rate associated to a bow factor of 2 (in grey), remains low and accelerates only when the fund is close to termination.
Finally, the formula allows to set a minimum distribution rate for yield-generating asset classes: this is very useful for strategies such as Private Debt, Infrastructure, and Real Estate. If the yield parameter is set to 0, it gets ignored by the formula, which then remains entirely driven by the Distribution Rate ex Yield component.
NAVs:
Finally, let's look at the NAV formula. Following accounting logic, the TA model specifies that NAVs grow as calls are paid in and assets are marked up, and decreases as distributions are paid out:
| NAV [t] = Open NAV [t-1] × (1 + Growth Rate) + Calls[t] − Distributions[t] |
The most assumption in this equation is the Growth Rate, which happens to coincide with the IRR of the fund: to see this, just simulate all cash flows and NAVs according to the equations above, calculate the IRR, and you will see that this is the same as the Growth Rate you have assumed.
Putting it All Together:
Here is a recap of all the equations needed to implement the TA model:
| Calls[t] = Unfunded[t-1] × Call Rate |
| Unfunded[t-1] = Commitment − (All Calls Made To Date t-1) |
| Distributions[t] = Open NAV[t] × Distribution Rate[t] |
| Distribution Rate[t] = max(Yield, Fraction of Fund Life[t]) ^ Bow ) |
| NAV [t] = NAV [t - 1] × (1 + Growth Rate) + Calls[t] − Distributions[t] |
If you are interested in playing around with an example in xlsx, scroll to the bottom of the page!
Attention to Details!
As for any forecasting exercise, it is important to recognise the limitations of the TA model:
- It is deterministic
- Call rates are not age-dependant: this make it hard, for instance, to model credit line facilities
- Growth rates are not age-dependant: as a consequence it is hard to capture GP smoothing effects and exit uplifts
All of these limitations can be actually handled by evolutions of the base model, which we can tackle in a future blog post.
Importantly, a sensible use of the TA model requires cross-checking inputs and understanding the sensitivities of the predictions to the assumptions. Sophisticated LPs tend to perform:
- Scenario Analysis: Running different scenarios helps LPs understand potential outcomes under varying macro-economic and fund-specific conditions.
- Sensitivity Analysis: Adjusting key assumptions, such as growth rates and call rates, can provide deeper insights into the model's robustness and predictive power.
Ultimately, forecasting is both art and science - factors such as fund manager performance, economic conditions, and intrinsic fund characteristics, all make forecasting challenging. By carefully considering all these factors, LPs can better manage their liquidity and commitment pacing, ensuring they are well-prepared for the unpredictable nature of private equity cash flows.
GET THE TAKAHASHI & ALEXANDER MODEL IN XLSX:
Related Blogs
Subscribe for the
exclusive Updates!
Heading 1
with a request body that specifies how to map the columns of your import file to the associated CRM properties in HubSpot.... In the request JSON, define the import file details, including mapping the spreadsheet's columns to HubSpot data. Your request JSON should include the following fields:... entry for each column.