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.