%%HTML
<style>.container{width:100%}</style>
import os.path as path
import pickle
import graphviz
import numpy as np
import pandas as pd
import ipywidgets as wids
from scipy.integrate import quad
from numba import jit
import matplotlib.pyplot as plt
import bokeh.plotting as bop
import bokeh.models as bom
from bokeh.palettes import Dark2_8
from bokeh.models import ColumnDataSource
from itertools import cycle
from IPython.display import HTML,Image,display
from lprep import render_graph
bop.output_notebook(hide_banner=True)
_colors = cycle(Dark2_8)
%matplotlib inline
from inspect import signature, _empty
def abcd(method):
n = sum([1 if pm.default == _empty else 0 for pm in signature(method).parameters.values()])
def f(*args):
if len(args) >= n:
return method(*args)
def k(*args2):
return f(*args, *args2)
k.__doc__ = method.__doc__
return k
f.__doc__ = method.__doc__
return f
def draw_bokeh(filename):
with open(filename, 'rb') as f:
xs, ys, vm = pickle.load(f)
fig = bop.figure(x_axis_label = 'r',
y_axis_label = 'flow',
plot_width = 500,
plot_height = 400,
title = '',
x_range = bom.Range1d(-1,1),
y_range = bom.Range1d(-1,1))
for phi in ys:
fig.line(xs, vm[phi], legend=str(phi), line_color=next(_colors))
bop.show(fig)
Jonathan B. Berk and Richard C. Green
Present by Yuming Lou
We derive a parsimonious rational model of active portfolio management that reproduces many regularities widely regarded as anomalous. Fund flows rationally respond to past performance in the model even though performance is not persistent and investments with active managers do not outperform passive benchmarks on average. The lack of persistence in returns does not imply that differential ability across managers is nonexistent or unrewarded or that gathering information about performance is socially wasteful. The model can quantitatively reproduce many salient features in the data. The flow-performance relationship is consistent with high average levels of skills and considerable heterogeneity across managers.
One of the central mysteries facing financial economics is why financial intermediaries appear to be so highly rewarded, despite the apparent fierce competition between them and the uncertainty about whether they add value through their activities. Research into mutual fund performance has provided evidence that deepens this puzzle.
In the face of this evidence many researchers have concluded that a consistent explanation of these regularities is impossible without appealing to behavioral arguments that depend on irrationality or to elaborate theories based on asymmetric information or moral hazard.
One thing that has been missing from this debate is a clear delineation of what a rational model, with no moral hazard or asymmetric information, implies about flows and performance. Before appealing to these additional effects, we believe that it makes sense to first establish which behaviors in the data are qualitatively and quantitatively consistent with more direct explanations.
The model combines three elements:
Together they can reproduce the salient features of the empirical evidence as equilibrium outcomes in a rational model.
The model explains several features:
In our model, investments with active managers do not outperform passive benchmarks because investors competitively supply funds to managers and there are decreasing returns for managers in deploying their superior ability. Managers increase the size of their funds, and their own compensation, to the point at which expected returns to investors are competitive going forward. The failure of managers as a group to outperform passive benchmarks does not imply that they lack skill. Furthermore, the lack of persistence does not imply that differential ability across managers is unrewarded, that gathering information about performance is socially wasteful, or that chasing performance is pointless. It merely implies that the provision of capital by investors to the mutual fund industry is competitive.
Performance is not persistent in the model precisely because investors chase performance and make full, rational, use of information about funds' histories in doing so. High performance is rationally interpreted by investors as evidence of the manager' s superior ability. New money flows to the fund to the point at which expected excess returns going forward are competitive. This process necessarily implies that investors cannot expect to make positive excess returns, so superior performance cannot be predictable. The response of fund flows to performance is simply evidence that capital flows to investments in which it is most productive.
Assumptions:
A manager's ability to beat this benchmark is unknown to both the manager and investors, who learn about this ability by observing the history of the managed portfolio's returns.
Let $$R_t=\alpha+\epsilon_t$$ denote the return, in excess of the passive benchmark, on the actively managed funds, without costs and fees. This is not the return actually earned and paid out by the fund, which is net of costs and fees.
and variance $\sigma^2$ and is independently distributed through time.
Assumption Uncertainty is idiosyncratic to the manager: by investing with a large number of these managers, investors can diversify away this risk.
Denote the precision of this uncertainty as $\omega=1/\sigma^2$.
Participants learn about $\alpha$ by observing the realized excess returns the manager produces. This learning is the source of the relationship between performance and the flow of funds.
To achieve high returns, management must identify undervalued securities and trade to exploit this knowledge without moving the price adversely. To do this, managers must expend resources and pay bid-ask spreads that diminish the return available to pay out to investors.
Assumption Costs of making excess returns are independent of ability and are increasing and convex in the amount of funds under active management.
Denote the size of the fund as $q_t$
Denote the costs incurred when actively managing a fund of size $q_t$ as $C(q_t)$
So that, $\forall q \ge 0$, $C(q)\ge 0$, $C'(q)\gt 0$, and $C' '(q)\gt 0$, with $C(0)=0$ and $\lim_{q\rightarrow 0}C'(q)=\infty$.
Assume that the fund managers are simply paid a fixed management fee, $f$, expressed as a fraction of the assets under management, $q_t$. (We shall relax this assumption shortly.) Managers accordingly accept and invest all the funds investors are willing to allocate to them. The amount investors will invest in the fund depends on their assessment of the managers' ability and on the costs they know managers face in expanding the fund's scale.
The excess total payout to investors over what would be earned on the passive benchmark is
$$TP_{t+1}=q_tR_{t+1}-C(q_t)-q_tf$$Let $r_t$ denote the excess return over the benchmark that investors in the fund receive in period $t$. Then
$$r_{t+1}=\frac{TP_{t+1}}{q_t}=R_{t+1}-\frac{C(q_t)}{q_t}-f=R_{t+1}-c(q_t)\tag{1}$$where $$c(q_t)\equiv\frac{C(q_t)}{q_t}+f\tag{2}$$
denotes the unit cost associated with investing in the actively managed fund. The return $r$ corresponds to the return empirically observed.
At the birth of the fund the participants' prior about the ability of the fund's management is that $\alpha$ is normally distributed with mean $\phi_0$ and variance $\eta^2$. Denote the precision of the prior $\gamma=1/\eta^2$.
Assumption
returns as Bayesians.
Thus, by observing the history $\{r_s,q_s\}_{s=0}^t$ , investors can infer the history $\{R_s\}_{s=0}^t$.
Let the posterior mean of management ability at time $t$ be denoted
$$\phi_t\equiv E(R_{t+1}|R_1,...,R_t)$$The timing convention is as follows. The fund enters period $t$ with $q_{t-1}$ funds under management and an estimate of managerial ability, $\phi_{t-1}$. Managers and investors observe $r_t$ (from which they can infer $R_t$ and update their estimate of the manager's ability by calculating $\phi_t$. Then capital flows into or out of the fund to determine $q_t$.
#render_graph("""
#digraph p{
# rankdir="LR";
#
# subgraph cluster_0 {
# rankdir="UD";
# label = <Step<SUB>t-1</SUB>>;
# node [style=filled,color=white];
# n0[label=<ϕ<SUB>t-1</SUB>>];
# n1[label=<q<SUB>t-1</SUB>>];
# n0 -> n1;
# }
#
# subgraph cluster_1 {
# rankdir="UD";
# label = <Step<SUB>t</SUB>>;
# node [style=filled,color=white];
# n2[label=<ϕ<SUB>t</SUB>>];
# n3[label=<q<SUB>t</SUB>>];
# n2 -> n3;
# }
#
# n1 -> n2[label=<Observe r<SUB>t</SUB> and then infer R<SUB>t</SUB>>];
#
# }
#""")
Assumption Investors supply capital with infinite elasticity to funds that have positive excess expected returns.
This can be justified as long as $\epsilon_t$ is idiosyncratic risk: by diversifying across funds with positive excess expected returns, investors can achieve the average excess expected return with certainty.
Similarly, they remove all funds from any fund that has a negative excess expected return. At each point in time, then, funds flow to and from each fund so that the expected excess return to investing in any surviving fund is zero:
$$E_t(r_{t+1})=0\tag{3}$$As in any equilibrium with perfect competition, the marginal return on the last dollar invested must be zero. In this case, however, since all investors in open-ended mutual funds earn the same return, all investors earn zero expected excess return in equilibrium. Condition (3) clearly implies that there is no predictability or persistence in funds' excess returns and that the average excess return of all managers will be zero, regardless of their overall level of skill. Finally, we shall now show that it implies that flows into and out of the fund respond to performance.
Taking expectations of both sides of (1), and requiring expected excess returns of zero as in (3), gives
$$\phi_t=c(q_t)=\frac{C(q_t)}{q_t}+f\tag{4}$$.
As $\phi_t$ changes, $q_t$ changes to ensure that this equation is satisfied at all points in time. The following proposition derives the flow of funds relation.
*PROPOSITION 1.* For any fund in operation at dates $t-1$ and $t$, the evolution of $\phi_t$ and the change in the amount of money under management at any date, as a function of the prior performance, are given by the solutions to
$$\phi_t=\phi_{t-1}+\frac{\omega}{\gamma+t\omega}r_t\tag{5}$$and
$$c(q_t)=c(q_{t-1})+\frac{\omega}{\gamma+t\omega}r_t\tag{6}$$Feature (6) reveals the relationship of $q_t$, $q_{t-1}$ and $r_t$ in the following way.
By taking derivative of (4) we get:
$$c'(q)=\frac 1 q \left[ C'(q) - \frac{C(q)}q\right]\gt 0$$So good performance (a positive realization of $r_t$ ) results in an inflow of funds ($q_t\gt q_{t-1}$). Similarly, bad performance results in an outflow of funds.
A smaller $t$ increases the weight on $r_t$, so flows to younger funds respond much more dramatically to performance than flows to more mature funds.
The assumption that fees are fixed may appear restrictive (in 1.2). A manager could, presumably, raise his compensation by choosing the fee optimally in each period, and in this way always invest efficiently. We now show that if managers can expand the fund by investing a portion of it in the passive benchmark, efficient outcomes can be achieved with a proportional fee that does not change over time and is not contingent on performance.
We begin by first allowing managers to optimally choose the fee they charge at each point in time, $f_t$. Every manager is constrained by the investor participation constraint (4): investors in the fund must earn (at least) zero excess returns. Rewriting (4) now gives
$$q_t\phi_t - C(q_t)=q_t f_t\tag{8}$$The manager's objective is to maximize compensation - the right-hand side of (8). He does this by first determining what level of $q_t$ maximizes the left-hand side of (8). This choice will set the expected excess return on the marginal dollar equal to the marginal cost of expansion:
$$\phi_t=C'(q_t)\tag{9}$$Let $q_t^*(\phi_t)$ be the solution of this equation.5 The manager then selects a fee to ensure that investors choose to invest $q_t^*(\phi_t)$ (by using (8)):
$$f_t^*=\phi_t-\frac{C(q_t^*(\phi_t))}{q_t^*(\phi_t)}\tag{10}$$Feature This compensation scheme allows managerial compensation to depend on history, but it is not contingent on current performance.
Feature Since this contract maximizes this value and then delivers it all to the manager, no other contract exists that could make the manager better off. Investors are constrained by competition to always make zero excess expected returns in any case. The contract is also Pareto efficient: no other contract could make both investors and the manager better off.
If we allow managers to index part of their funds, we can use any fixed fee, $f\gt 0$, to implement exactly the same compensation to the manager and returns to investors. Assume that of the total amount of money under management, $q_t$ , the manager always chooses to invest $q_t^*(\phi_t)$ in active management, and let q denote the remaining amount of money that the manager chooses to index. Investors still pay the management fee, $f$, on this money, but because it is not actively managed, it does not earn excess returns and does not contribute to the costs, $C(\cdot)$. Under these conditions the return investors earn on their money is
$$r_{t+1}=h(q_t)R_{t+1}-c(q_t)\tag{11}$$where $h(q_t)$ is the proportion of funds under active management, and the unit cost function is now given as
$$c(q_t)=\frac{C(q_t^*(\phi_t))}{q_t}-f\tag{12}$$Since the contract under which the manager is allowed to set his fee is efficient, the fixed-fee contract must be efficient as well.
*After some tedious algebra, we get*
$q_{It}$ gives the amount of money the manager chooses to manage passively:
$$q_{It}=q_t^*(\phi_t)\frac{f_t^*-f}f\tag{16}$$Adding the active and passive part of the manager's portfolio together gives the total funds under management using the fixed-fee contract:
$$q_t=q_t^*(\phi_t)+q_{It}=\frac {q_t^*(\phi_t)\phi_t-C(q_t^*(\phi_t))} f \tag{17}$$From (11)-(13), application of the same steps that prove proposition 1 gives the following expressions for updating expectations about managerial ability when the fee is fixed and managers index part of their funds:
$$\phi_t=\phi_{t-1}+\frac{r_t}{h(q_{t-1})}\left(\frac{\omega}{\gamma+t\omega}\right)\tag{18}$$and $$\frac{c(q_t)}{h(q_t)}=\frac{c(q_{t-1})}{h(q_{t-1})}+\frac{r_t}{h(q_{t-1})}\left(\frac{\omega}{\gamma+t\omega}\right)\tag{19}$$
These expressions are the basis for our analysis going forward. Note that all the variables governing the flow of funds are observable to investors. There is no asymmetric information or moral hazard in the model.
We now introduce assumptions that govern how funds enter and exit. This allows us to examine other behaviors that have been studied empirically for mutual funds, such as survival rates.
Suppose that managers incur known fixed costs of operation, denoted $F$, each period. These costs can be viewed as overhead, back-office expenses, and the opportunity cost of the manager's time. Managers will choose to shut down their funds when they cannot cover their fixed costs. From (14), the manager's compensation is $q_t^*(\phi_t)\phi_t-C(q_t^*(\phi_t))$, so the fund will be shut down whenever this expression is less than $F$.
Let $\bar{\phi}$ be defined as the lowest expectation of management ability for which the manager will still remain in business. It solves
$$q_t^*(\phi_t)\phi_t-C(q_t^*(\phi_t))=F$$Funds shut down the first time $\phi_t\lt\bar{\phi}$. In each period a cohort of new managers enter, and their abilities are distributed according to the market's initial prior. We shall also assume that when a manager goes into business for the first time, he incurs additional costs he must recover from his fees, so that when a cohort enters, $\phi_0\gt\bar{\phi}$.
In this section we derive the model's implications for the cross-sectional distribution of funds by cohort. The sections following this one use these results to predict cross-sectional survival rates and the unconditional flow of funds.
All funds start with the same expectation of managerial ability, $\phi_0$. From this point, posteriors diverge depending on the manager's track record.
As long as perceived ability in period $t$, $\phi_t$, is greater than or equal to $\bar{\phi}$, we shall say that "the fund survived through period $t$".
For such a fund, if perceived ability in period $t+1$, $\phi_{t+1}$, is less than $\bar{\phi}$ , then "the fund goes out of business in period $t+1$".
For a fund that starts at time 0, let $G_t(\phi)$ be the probability, conditional on the fund's survival though period $t$, that the perceived talent of the manager at $t$, $\phi_t$, is less than $\phi$. The conditioning event means that there is a zero probability assigned to values of $\phi\lt\bar{\phi}$ .
To derive this distribution, we shall first consider the joint probability that a fund born at date 0 both survives through period $t$ and has $\phi_t\le\phi$. We denote this joint probability as $\hat{G}_t(\phi)$.
We begin by conditioning on $\alpha$, the actual talent of the manager. Let $\hat{G}_t^\alpha(\phi)$ be the probability, conditional on having a manager with talent $\alpha$, that the fund survives through period $t$ and, at time $t$, that the perceived talent of the manager is $\phi$ or less.
Let $$g_t(\phi)\equiv d G_t(\phi)/d\phi$$ $$\hat{g}_t(\phi)\equiv d \hat{G}_t(\phi)/d\phi$$ $$\hat{g}_t^\alpha(\phi)\equiv d \hat{G}_t^\alpha(\phi)/d\phi$$be the associated densities.
Assumption managers cannot borrow or short sell the benchmark asset: $q_{It} \ge 0$.
This rules out dynamic strategies in which managers It with low expected ability borrow in hopes of building or restoring a reputation that would lead to high fees in the future. Managers can ensure that the short-sale constraint will never bind by choosing a fee $f\le f_t^*$. It is optimal from their perspective to make this choice. Since managers extract all the surplus in the model, they bear the cost of any inefficient outcomes, and a binding short-sale constraint would impose such costs.
We set the fee equal to the highest level that will ensure that the short-sale constraint will never bind over the range of outcomes in which the fund remains in business:
$$f=\frac F {q_t^*(\bar{\phi})} \tag{20}$$At this fee, the fund goes out of business whenever $q_t\lt q_t^*(\bar{\phi})$. Define $\bar{q}\equiv q_t^*(\bar{\phi})$ as the lowest value of q for which the fund remains viable.
*PROPOSITION 2.* Suppose that a manager with true ability $\alpha$ begins operating at time 0 when the market's prior on her ability is $\phi_0$. Then $\hat{g}_t^\alpha(\phi)$ is defined recursively as follows:
$$\hat{g}_t^\alpha(\phi)=\frac{\gamma+t\omega}\omega\int_\bar{\phi}^\infty\hat{g}_{t-1}^\alpha(v)n^\alpha\left(\frac{\gamma+t\omega}\omega\phi - \frac{\gamma+(t-1)\omega}\omega v \right)d v\tag{21}$$with the boundary condition
$$\hat{g}_1^\alpha(\phi)=\frac{\gamma+\omega}\omega n^\alpha\left(\frac{\gamma+\omega}\omega(\phi-\phi_0)+\phi_0\right)$$and $n^\alpha(\cdot)$ is a normal density function with mean $\alpha$ and precision $\omega$.
*PROPOSITION 3.* Suppose that a fund begins operating at time 0 when the market's prior on the fund manager's ability is $\phi_0$. Then
$$\hat{g}_t(\phi)=\int_{-\infty}^\infty\hat{g}_t^u(\phi)n^{\phi_0}(u)d u\tag{22}$$and $$\hat{G}_t(\phi)=\int_\bar{\phi}^\phi\hat{g}_t(u)d u\tag{23}$$ and $n^{\phi_0}(\cdot)$ is a normal density function with mean $\phi_0$ and precision $\gamma$.
The distribution of $\phi_t$, conditional on survival through date $t$, can now be computed directly using the unconditional probabilities:
$$G_t(\phi)=\frac{\int_\bar{\phi}^\phi\hat{g}_t(u)d u}{\int_\bar{\phi}^\infty\hat{g}_t(u)d u}\tag{24}$$with associated density function
$$g_t(\phi)=\frac{\hat{g}_t(\phi)}{\int_\bar{\phi}^\infty\hat{g}_t(u)d u}\tag{25}$$Recall that the conditioning event, survival through period $t$, implies that when $\phi_t\lt\bar{\phi}$, $G(\phi_t)=g(\phi_t)=0$
Survivorship bias for mutual funds has been an important area of empirical investigation. Clearly, empirical studies that ignore funds that failed will have biased estimates of the expected returns for the surviving funds (see, e.g., Carhart et al. 2002). More important, survival rates themselves communicate information about the abilities of active managers. For example, one could examine the hypothesis that no skilled managers exist by comparing the fit of our model with $\alpha=0$ to its performance with parameters of the prior distribution freely estimated. Survival rates are natural moments to focus on in such a test. Our model provides explicit expressions for them.
*PROPOSITION 4.* The unconditional probability that a fund that starts at time 0 survives through period $t$ is
$$P_t=\int_\bar{\phi}^\infty\hat{g}_t(\phi)d\phi=\hat{G}(\infty)$$and the unconditional probability that a fund shuts down in period $t$ is $P_{t-1}-P_t$, where $P_0=1$.
Now that we have derived the cross-sectional distribution of $\phi_t$, we can use the results to analytically describe, within an age cohort of funds, the cross-sectional relation between past performance and fund flows. We can then quantitatively compare the theoretical flow-performance relation to empirical findings in the literature.
We begin by first specifying a cost function and then using it to derive an explicit expression for the relation between performance and the flow of funds. We then parameterize this model and quantitatively compare the simulated results to the salient features of the data.
Assumption Let $C(q)=a q^2$, so the variable cost function is quadratic.
*After some tedious algebra, we get*
$$\frac{q_t-q_{t-1}}{q_{t-1}}=\frac{r_t}{f}\left(\frac\omega{\gamma+t\omega}\right)+\frac{r_t^2}{4 f^2}\left(\frac\omega{\gamma+t\omega}\right)^2 \tag{30}$$Feature Each of the parameters affecting the responsiveness of flows to performance has an intuitive role.
($\omega$ falls) relative to the precision of the priors, investors learn less from returns about ability, and a given return triggers less response in flows.
about the fund's performance, and flows respond less to the next return.
alternatives, and the manager earns his equilibrium compensation with a smaller amount of funds under management, making flows less sensitive to returns.
Feature The flow of funds is zero at an excess return of zero. Because of the quadratic term, flows respond more dramatically to extreme performance than to mediocre performance. While this quadratic behavior slows down the response to extreme negative performance, this effect will be offset in the cross section by the closure of funds when performance is extremely bad. That is, for $r_t$ negative enough, the flow of funds is simply $-q_{t-1}$.
Either the flow of funds responds continuously to $r_t$ (given by (30)) or $r_t$ is so bad that the fund shuts down and investors withdraw all funds. The latter will occur for any $r_t$ below a critical realization. Denote this critical realization as $r^*(\phi_{t-1})$. It is determined by finding the $r_t$ such that the market's posterior on the manager's ability falls to $\bar{\phi}$. From equation (18), this value is given by
$$\begin{align*} r^*(\phi_{t-1}) &= (\bar{\phi}-\phi_{t-1})h(q_{t-1})\frac{\gamma+t\omega}{\omega}\\ &= 2\left(\frac{\bar{\phi}-\phi_{t-1}}{\phi_{t-1}}\right)\left(\frac{\gamma+t\omega}{\omega}\right)\tag{31} \end{align*}$$In summary, the overall change in the assets under management is given by
$$\frac{q_t-q_{t-1}}{q_{t-1}}=\begin{cases} -1 & \text{ if } r_t\lt 2\left(\frac{\bar{\phi}-\phi_{t-1}}{\phi_{t-1}}\right)\left(\frac{\gamma+t\omega}{\omega}\right) \\ \frac{r_t}{f}\left(\frac\omega{\gamma+t\omega}\right)+\frac{r_t^2}{4 f^2}\left(\frac\omega{\gamma+t\omega}\right)^2 & \text{ otherwise } \end{cases}\tag{32}$$When empiricists study the relation between past returns and the flow of funds, they often condition on age but do not condition on perceived managerial ability. To derive this unconditional relation between the flow of funds and past returns, we integrate over the cross-sectional distribution of surviving funds in a cohort:
$$\begin{align*} N_t(r) &= -\int_\bar{\phi}^{\rho(r)}g_{t-1}(\phi)d\phi+ \int_{\rho(r)}^\infty\left\{ \left[\frac{1}{f}\left(\frac{\omega}{\gamma+t\omega}\right)-1\right]r+ \frac{1}{4 f^2}\left(\frac{\omega}{\gamma+t\omega}\right)^2 r^2 \right\}g_{t-1}(\phi)d\phi\\ &= \left[\frac{1}{f}\left(\frac{\omega}{\gamma+t\omega}\right)-1\right] \{1-G_{t-1}[\rho(r)]\}r+ \frac{1}{4 f^2}\left(\frac{\omega}{\gamma+t\omega}\right)^2 \{1-G_{t-1}[\rho(r)]\}r^2-G_{t-1}[\rho(r)]\tag{35} \\ \end{align*}$$where
$$\rho(r)\equiv\begin{cases} \frac{\bar{\phi}}{1+(r/2 f)[\omega/(\gamma+t\omega)]} & r\gt-2\left(\frac{\gamma+t\omega}{\omega}\right)f\\ \infty & r\le-2\left(\frac{\gamma+t\omega}{\omega}\right)f \end{cases}$$Feature For a given realization of $r_t$, $G_{t-1}[\rho(r_t)]$ gives the unconditional probability that the fund will go out of business at time $t$. Clearly, when $r_t\ge 0$ no fund goes out of business ($\rho(r_t)\lt\bar{\phi}$); so $G_{t-1}[\rho(r_t)]=0$ and the flow of funds is quadratic for any positive excess return. For a given negative excess return, the flow of funds is no longer quadratic because the unconditional probability that a fund will go out of business is positive. For very large negative returns (less than $-2\left(\frac{\gamma+t\omega}{\omega}\right)f$), shutting down is certain. It is clear that larger fees imply less sensitivity. Fund age also attenuates flow sensitivity.
Feature The conditional volatility is a decreasing function of the size of the fund. Since past positive returns increase the size of the fund, the volatility of the fund will decrease when managers do well. The opposite occurs with negative returns. Thus the model delivers the relation between risk and past performance that has been attributed in past research to attempts by managers to mislead investors.
In this model, funds with superior past performance invest a larger portion of their new capital in passive strategies and thus lower their overall volatility, or "tracking error." Similarly, funds with poor performance increase their volatility because as funds flow out, they preferentially liquidate capital that was allocated to passive strategies.
Parameter Values
Variable | Symbol | Value |
---|---|---|
Percentage fee | $f$ | 1.5% |
Prior precision | $\gamma$ | 277 |
Prior standard deviation | $\eta$ | 6% |
Return precision | $\omega$ | 25 |
Return standard deviation | $\sigma$ | 20% |
Mean of prior | $\phi_0$ | 6.5% |
Exit mean | $\bar{\phi}$ | 3% |
Figure 1 plots the flow of funds relationship for funds of different ages. The shapes of the relation between performance and flows are reminiscent of what researchers have found empirically (see, e.g., Chevalier and Ellison 1997, fig. 1).
*Fig. 1.-Flow of new funds as a function of return. The curves plot the response in the flow of new funds to the previous period's return (i.e., eq. [35]). The steepest curve shows the response for two-year-old funds (i.e., the return is from year 2 to year 3). The remaining curves show the response for five-, 10-, and 20-year-old funds, respectively.*draw_bokeh('./bok/sigma.pkl')
draw_bokeh('./bok/phi0.pkl')
draw_bokeh('./bok/phib.pkl')
In this paper we derive a number of empirical predictions of a rational model for active portfolio management when managerial talent is a scarce resource and is dissipated as the scale of operations increases. Many of these predictions reproduce empirical regularities that often have been taken as evidence of investor irrationality or agency costs between managers and investors. Not only is the rational model consistent with much of the empirical evidence, but it is also consistent with a high level of skill among active managers.
SIGMA = 0.2
PHI0 = 0.065
ETA = 1/277**0.5
PHIB = 0.03
F = 0.015
OMEGA = 1 / np.square(SIGMA)
GAMMA = 1 / np.square(ETA)
A = 0.065
def cost(q):
return A*q*q
# (26)
def q_tstar(phi_t):
return phi_t/2/A
# (27)
def q_t(phi_t):
return np.square(phi_t)/4/A/F
# (28)
def h(q_t):
return np.sqrt(F/A/q_t)
SLICE = 1e2
STEP = 1e-3
def fast_quad(func, lower, upper, step = STEP, slices = SLICE):
if(lower>=upper):
print('invalid range')
return 0,None
dx = min(step, (upper-lower)/slices)
xs = np.linspace(lower, upper, int((upper-lower)/dx))
if(len(xs)==0):
print('zero')
return 0,None
ys = [func(x)*dx for x in xs]
quad = sum(ys)
return quad,None
@jit(nopython=True)
def find_first(item, vec):
"""return the index of the first occurence of item in vec"""
for i in range(len(vec)):
if item == vec[i]:
return i
return -1
@jit(nopython=True)
def find_first_around(item, vec):
"""return the index of the first occurence of item in vec"""
for i in range(len(vec)-1):
if (item <= vec[i+1]) and (item >= vec[i]):
return i
return -1
g_alphahat_cache = {}
def fast_g_alphahat(t, phi, alpha):
if t > 1:
if(g_alphahat_cache.get(t)):
return g_alphahat_find(t, phi, alpha)
def sum0(v):
return fast_g_alphahat(t-1, v, alpha) * n_pe(alpha, OMEGA, (GAMMA + t * OMEGA) / OMEGA * phi - (GAMMA + (t-1) * OMEGA) / OMEGA * v)
upper = alpha + 6 * SIGMA
lower = max(alpha -6 * SIGMA, PHIB)
#print(upper,lower)
return (GAMMA + t * OMEGA) / OMEGA * fast_quad(sum0, lower, upper)[0]
elif t == 1:
return (GAMMA + OMEGA)/OMEGA * n_pe(alpha, OMEGA, (GAMMA + OMEGA)/OMEGA*(phi-PHI0) + PHI0)
else:
return 0
def g_alphahat_build(t, phi_l, phi_u, alpha_l, alpha_u, step = STEP, slices = SLICE):
dphi = min(step, (phi_u-phi_l)/slices)
dalpha = min(step, (alpha_u-alpha_l)/slices)
phis = np.linspace(phi_l, phi_u, int((phi_u-phi_l)/dphi))
alphas = np.linspace(alpha_l, alpha_u, int((alpha_u-alpha_l)/dalpha))
#pg1 = wids.IntProgress(max=len(phis))
pg2 = wids.IntProgress(max=len(alphas)+1)
#display(pg1)
display(pg2)
vss = []
for alpha in alphas:
vs = [fast_g_alphahat(t, phi, alpha) for phi in phis]
vss.append(vs)
pg2.value += 1
pg2.value += 1
layer = dict(phi = phis, alpha = alphas, g_alphahat = vss)
g_alphahat_cache[t] = layer
# (35)
def rho(t, r):
if r <= -2 * (GAMMA + t * OMEGA) / OMEGA * F:
return np.inf
return PHIB / (1 + (r/2/F)*OMEGA / (GAMMA + t * OMEGA))
def N_t(t, r):
g = G(t-1, rho(t, r))
tc = OMEGA / (GAMMA + t * OMEGA)
return (tc / F - 1)*(1 - g) * r + tc**2/(4*F**2)*(1-g)*r**2 - g
def n_pe(mu, pe, x):
return np.sqrt(pe/2/np.pi) * np.exp(-pe*(x-mu)**2/2)
# (21)
def g_alphahat(t, phi, alpha):
if t > 1:
def sum0(v):
return g_alphahat(t-1, v, alpha) * n_pe(alpha, OMEGA, (GAMMA + t * OMEGA) / OMEGA * phi - (GAMMA + (t-1) * OMEGA) / OMEGA * v)
upper = np.inf #alpha + 6 * SIGMA
lower = PHIB #max(alpha -6 * SIGMA, PHIB)
#print(upper,lower)
return (GAMMA + t * OMEGA) / OMEGA * quad(sum0, lower, upper)[0]
elif t == 1:
return (GAMMA + OMEGA)/OMEGA * n_pe(alpha, OMEGA, (GAMMA + OMEGA)/OMEGA*(phi-PHI0) + PHI0)
else:
return 0
# (22)
@abcd
def g_hat(t, phi):
upper = np.inf #PHI0 + 6*ETA
lower = -np.inf #PHI0 - 6*ETA
result = quad(lambda u: g_alphahat(t, phi, u) * n_pe(PHI0, GAMMA, u), lower, upper)[0]
#print(t,phi,result)
return result
# (24)
def G(t, phi):
if phi == np.inf:
return 1
elif phi <= PHIB:
return 0
upper = np.inf #2
return quad(g_hat(t), PHIB, phi)[0]/quad(g_hat(t), PHIB, upper)[0]
ys = np.linspace(0.05, 0.3, 6)
N = 300
pg = wids.IntProgress(max=6*N+1)
display(pg)
fig = bop.figure(x_axis_label = 'r', plot_width = 800, plot_height = 600,
title = 'flow',
x_range = bom.Range1d(-1,1),
y_range = bom.Range1d(-1,1))
vm = {}
xs = np.linspace(-1,0.5,N)
for y in ys:
SIGMA = y
OMEGA = 1 / np.square(SIGMA)
vs = []
for x in xs:
vs.append(N_t(2,x))
pg.value += 1
vm[y] = vs
pg.value += 1
for y in ys:
fig.line(xs, vm[y], legend=str(y), line_color=next(_colors))
with open('./bok/sigma.pkl', 'wb') as f:
pickle.dump((xs, ys, vm), f)