Trading Dev AcademyFree quant education

Free lesson · Fund operations & capstone

Model fees and high-water marks explicitly

Open interactive lessonPractice calculationsExplore labs

Start with the idea

Fee calculations are contractual waterfalls, so order matters. Management fees reduce the capital on which a subsequent incentive may be calculated, and high-water marks prevent charging performance fees repeatedly on the same recovered value under specified terms.

Symbols, units & horizon
  • M: currency management fee
  • m: annual decimal management-fee rate
  • NAV_base: contractually specified fee base
  • Δt: fraction of year
  • I: currency incentive fee
  • p: incentive-fee fraction
  • NAV_pre incentive: value after management fees and before incentive fees in this example
  • H: comparable high-water mark, adjusted for flows when needed
  • max(0,x): charge on positive gains only

When and why to use this

Use explicit fee assumptions when comparing gross research results with investor returns. Hand-check one period before implementing a ledger.

Fee terms depend on the fund documents. Management fees can use opening, average, or other defined NAV; performance fees may apply after management fees, above a hurdle, and only above a high-water mark. Crystallisation timing changes outcomes. There is no universal “2 and 20” accounting formula.

M=mNAVbaseΔt,I=pmax⁡(0,NAVpre incentive−H)
Algebra and arithmetic

Follow the specified fee waterfall

  1. Annual rate m over Δt years on the chosen NAV base gives M=mNAVbaseΔt. Subtract M from gross ending NAV to obtain pre-incentive NAV.
  2. Eligible gain is max⁡(0,NAVpre−H). Multiply by incentive rate p, then subtract it for closing NAV. Under the simple no-flow convention, update H only when net NAV exceeds it.
Work it by hand

Start $10m, gain $1.2m, management rate 2% on opening NAV, H=$10m, incentive 20%: M=$.2m; pre-incentive NAV=$11m; I=$.2m; closing NAV=$10.8m.

This simplified illustration uses a management rate m, period length Δt in years, performance rate p, no hurdle, and a high-water mark H on a no-flow account. With subscriptions or redemptions, use per-share or properly equalised accounting so new capital does not create artificial profits or transfer fees between investors.

Further reading: Investor.gov: hedge fund structure, fees and investor considerations ↗

Python implementation

Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.

def fee_waterfall(fee_base, ending_pre_fee_nav, annual_management_rate,
                  year_fraction, incentive_rate, high_water_mark):
    """Illustrative no-flow waterfall: management first, then incentive above HWM.
    Actual contracts may use hurdles, crystallisation dates and equalisation.
    """
    management = annual_management_rate*fee_base*year_fraction
    pre_incentive = ending_pre_fee_nav-management
    incentive = incentive_rate*max(0,pre_incentive-high_water_mark)
    ending_net = pre_incentive-incentive
    return management, incentive, ending_net, max(high_water_mark,ending_net)

print(fee_waterfall(100,110,.02,1,.2,100))

Continue learning

Fund Operations & Investment Committee — all lessons
  1. Reconcile the fund before reporting its return
  2. Model fees and high-water marks explicitly
  3. Match portfolio liquidity to funding promises
  4. Capstone: defend a complete hypothetical fund

Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations