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.
Follow the specified fee waterfall
- Annual rate m over Δt years on the chosen NAV base gives . Subtract M from gross ending NAV to obtain pre-incentive NAV.
- Eligible gain is . 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.
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- Reconcile the fund before reporting its return
- Model fees and high-water marks explicitly
- Match portfolio liquidity to funding promises
- Capstone: defend a complete hypothetical fund
Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations