numeraire.core.stats.performance_fee#
- numeraire.core.stats.performance_fee(candidate: NDArray[float64], benchmark: NDArray[float64], gamma: float) float[source]#
Quadratic-utility performance fee (Fleming-Kirby-Ostdiek; Kirby-Ostdiek 2012 eq. 23).
The maximum per-period fee an investor with
U(R) = R - gamma/2 R^2would pay to switch frombenchmarktocandidate(both raw return series): thefeesolvingE[U(benchmark)] = E[U(candidate - fee)]. Annualize asfee * periods(* 1e4for bp/yr). Positive => the candidate is worth paying for; NaN when no real fee equates the two utilities (a deeply dominated candidate). NaNs are dropped pairwise.