Decomposing Private Equity#
Use the data in ../data/private_equity_data.xlsx
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (12,6)
plt.rcParams['font.size'] = 15
plt.rcParams['legend.fontsize'] = 13
import sys
sys.path.insert(0, '../cmds')
from portfolio import performanceMetrics, get_ols_metrics
from risk import *
import statsmodels.api as sm
from sklearn.linear_model import LinearRegression
LOADFILE = '../data/private_equity_data.xlsx'
info = pd.read_excel(LOADFILE,sheet_name='descriptions').set_index('ticker')
retsx = pd.read_excel(LOADFILE,sheet_name='excess returns').set_index('date')
FREQ = 52
info
| shortName | quoteType | currency | volume | totalAssets | longBusinessSummary | |
|---|---|---|---|---|---|---|
| ticker | ||||||
| SPY | SPDR S&P 500 | ETF | USD | 65058380 | 6.727266e+11 | The trust seeks to achieve its investment obje... |
| VTV | Vanguard Value ETF | ETF | USD | 2008018 | 2.069965e+11 | The manager employs an indexing investment app... |
| AGG | iShares Core U.S. Aggregate Bon | ETF | USD | 5268591 | 1.318272e+11 | The index measures the performance of the tota... |
| HYG | iShares iBoxx $ High Yield Corp | ETF | USD | 35079406 | 1.854291e+10 | The underlying index is a rules-based index co... |
| IEF | iShares 7-10 Year Treasury Bond | ETF | USD | 5154346 | 3.851085e+10 | The underlying index measures the performance ... |
| PSP | Invesco Global Listed Private E | ETF | USD | 46427 | 3.347804e+08 | The fund generally will invest at least 90% of... |
| PEX | ProShares Global Listed Private | ETF | USD | 4331 | 1.390970e+07 | The fund invests in financial instruments that... |
| APO | Apollo Global Management, Inc. | EQUITY | USD | 3430863 | NaN | Apollo Global Management, Inc. is a private eq... |
| BX | Blackstone Inc. | EQUITY | USD | 3218280 | NaN | Blackstone Inc. is an alternative asset manage... |
| KKR | KKR & Co. Inc. | EQUITY | USD | 4088698 | NaN | KKR & Co. Inc. is a private equity and real es... |
| CG | The Carlyle Group Inc. | EQUITY | USD | 3107906 | NaN | The Carlyle Group Inc. is an investment firm s... |
| SHV | iShares Short Treasury Bond ETF | ETF | USD | 2090735 | 2.070456e+10 | The fund will invest at least 80% of its asset... |
1. Performance#
Calculate performance stats for the assets, both stand-alone (mean, vol, Sharpe) as well as linear decompositions (alpha, beta, info ratio, r-squared).
performanceMetrics(retsx,FREQ).style.format('{:.1%}',na_rep='-')
| Mean | Vol | Sharpe | Min | Max | |
|---|---|---|---|---|---|
| SPY | 12.3% | 17.0% | 72.6% | -15.2% | 12.1% |
| VTV | 8.6% | 16.4% | 52.7% | -15.9% | 13.1% |
| AGG | -0.8% | 5.1% | -15.5% | -5.1% | 5.0% |
| HYG | -0.5% | 9.5% | -5.0% | -13.0% | 12.0% |
| IEF | -0.7% | 6.4% | -11.4% | -3.2% | 3.1% |
| PSP | 4.9% | 23.2% | 21.3% | -23.4% | 18.5% |
| PEX | -1.4% | 21.5% | -6.6% | -25.2% | 24.0% |
| APO | 23.2% | 36.8% | 62.9% | -25.5% | 32.1% |
| BX | 21.8% | 35.8% | 60.7% | -19.5% | 22.3% |
| KKR | 22.9% | 36.5% | 62.6% | -24.9% | 28.8% |
| CG | 14.5% | 36.7% | 39.4% | -18.1% | 20.9% |
tab = get_ols_metrics(retsx[['SPY']],retsx,FREQ)
tab.style.format('{:.1%}',na_rep='-')
| alpha | SPY | r-squared | Treynor Ratio | Info Ratio | |
|---|---|---|---|---|---|
| SPY | 0.0% | 100.0% | 100.0% | 12.3% | - |
| VTV | -2.4% | 89.6% | 85.9% | 9.6% | -38.8% |
| AGG | -1.6% | 6.6% | 4.8% | -12.0% | -32.1% |
| HYG | -5.7% | 42.4% | 56.9% | -1.1% | -91.0% |
| IEF | -0.4% | -2.7% | 0.5% | 26.9% | -6.2% |
| PSP | -9.6% | 118.1% | 74.8% | 4.2% | -82.6% |
| PEX | -13.5% | 97.8% | 59.7% | -1.5% | -98.8% |
| APO | 4.9% | 148.0% | 46.6% | 15.6% | 18.4% |
| BX | 3.7% | 146.4% | 48.1% | 14.9% | 14.5% |
| KKR | 3.5% | 157.4% | 53.6% | 14.5% | 14.0% |
| CG | -3.6% | 146.6% | 45.9% | 9.9% | -13.3% |
2. Replication#
Can we replicate private equity APO using the following?
public equity
SPYtreasury bonds
IEFhigh-yield corp bonds
HYG
How does that compare to APO against SPY alone?
TICK_TARGET = 'APO'
targ = retsx[[TICK_TARGET]]
instruments = retsx[['SPY', 'IEF', 'HYG']]
get_ols_metrics(instruments,targ,FREQ).style.format('{:.1%}',na_rep='-')
| alpha | SPY | IEF | HYG | r-squared | Info Ratio | |
|---|---|---|---|---|---|---|
| APO | 10.0% | 106.6% | -70.4% | 93.1% | 49.7% | 38.2% |
tab.loc[[TICK_TARGET]].style.format('{:.1%}',na_rep='-')
| alpha | SPY | r-squared | Treynor Ratio | Info Ratio | |
|---|---|---|---|---|---|
| APO | 4.9% | 148.0% | 46.6% | 15.6% | 18.4% |
For more on this topic, consider the 2016 paper by Eric Stafford, “Replicating Private Equity with Value Investing, Homemade Leverage, and Hold-to-Maturity Accounting”.