Skip to content

Composite Return (Dietz Aggregation)

1. Calculation Name

Composite Return via Dietz-Weighted Aggregation

2. Description and Mathematical Formula

The composite Dietz method combines account-level Dietz returns using each account’s average capital base. For account \( i \):

  • \( C_i \) = Dietz capital base (beginning market value plus weighted flows)
  • \( R_i \) = account-level Dietz return

Composite return:

\[ R_{\text{Composite}} = \frac{\sum_i C_i \times R_i}{\sum_i C_i}. \]

3. Input Sample Data

Account Beginning MV (USD) Net External Flow (USD) Dietz Capital Base \(C_i\) (USD) Dietz Return \(R_i\)
Fund Alpha 5,000,000 -200,000 4,900,000 4.50%
Fund Beta 3,000,000 +600,000 3,300,000 3.20%
Fund Gamma 2,000,000 0 2,000,000 5.10%
Totals 10,000,000 +400,000 10,200,000

4. Mathematical Solution

  • Weighted return contributions:
    Alpha \( = 4{,}900{,}000 \times 4.50\% = 220{,}500 \)
    Beta \( = 3{,}300{,}000 \times 3.20\% = 105{,}600 \)
    Gamma \( = 2{,}000{,}000 \times 5.10\% = 102{,}000 \)
  • Sum of contributions \( = 428{,}100 \)
  • Composite capital base \( = 10{,}200{,}000 \)
  • Composite return \( = 428{,}100 / 10{,}200{,}000 = 0.04197 \)4.20%

5. Sample Python and R Code

import pandas as pd

data = pd.DataFrame(
    {
        "account": ["Fund Alpha", "Fund Beta", "Fund Gamma"],
        "capital_base": [4_900_000, 3_300_000, 2_000_000],
        "dietz_return": [0.045, 0.032, 0.051],
    }
)

data["weighted"] = data["capital_base"] * data["dietz_return"]
composite_return = data["weighted"].sum() / data["capital_base"].sum()
print(f"Composite Dietz return: {composite_return:.4%}")
library(dplyr)

data <- tibble::tibble(
  account = c("Fund Alpha", "Fund Beta", "Fund Gamma"),
  capital_base = c(4900000, 3300000, 2000000),
  dietz_return = c(0.045, 0.032, 0.051)
)

data <- data %>% mutate(weighted = capital_base * dietz_return)
composite_return <- sum(data$weighted) / sum(data$capital_base)
scales::percent(composite_return, accuracy = 0.01)

6. Output Table

Metric Value
Composite Return 4.20%
Total Capital Base 10,200,000
Weighted Return Sum 428,100

7. Conclusion

The composite Dietz aggregation template keeps blended performance reporting consistent across accounts. FinFacts applies the same weighting under the hood, so this walkthrough doubles as a QA checklist for composite factsheets.