# Modified Dietz method

(Redirected from Modified Dietz Method)

The modified Dietz method[1][2] is a measure of the ex post (i.e. historical) performance of an investment portfolio in the presence of external flows. (External flows are movements of value such as transfers of cash, securities or other instruments in or out of the portfolio, with no equal simultaneous movement of value in the opposite direction, and which are not income from the investments in the portfolio, such as interest, coupons or dividends.) To calculate the modified Dietz return, divide the gain or loss in value, net of external flows, by the average capital over the period of measurement. The result of the calculation is expressed as a percentage return over the holding period. The average capital weights individual cash flows by the amount of time from when those cash flows occur until the end of the period.

This method has the practical advantage over internal rate of return (IRR) method that it does not require repeated trial and error to get a result.[3]

The cash flows used in the formula are weighted based on the time they occurred in the period. For example, if they occurred in the beginning of the month they would have a higher weight than if they occurred at the end of the month. This is different from the simple Dietz method, in which the cash flows are weighted equally regardless of when they occurred during the measurement period, which works on an assumption that the flows are distributed evenly throughout the period.

With the advance of technology, most systems can calculate a true time-weighted return by calculating a daily return and geometrically linking in order to get a monthly, quarterly, annual or any other period return. However, the modified Dietz method remains useful for performance attribution, because it still has the advantage of allowing modified Dietz returns on assets to be combined with weights in a portfolio, calculated according to average invested capital, and the weighted average gives the modified Dietz return on the portfolio. Time weighted returns do not allow this.

This method for return calculation is used in modern portfolio management. It is one of the methodologies of calculating returns recommended by the Investment Performance Council (IPC) as part of their Global Investment Performance Standards (GIPS). The GIPS are intended to provide consistency to the way portfolio returns are calculated internationally.[4]

The method is named after Peter O. Dietz.[5]

## Formula

The formula for the modified Dietz method is as follows:

${\displaystyle {\cfrac {\text{gain or loss}}{\text{average capital}}}={\cfrac {B-A-F}{A+\sum _{i=1}^{n}W_{i}\times F_{i}}}}$

where

${\displaystyle A}$ is the starting market value
${\displaystyle B}$ is the ending market value
${\displaystyle F=\sum _{i=1}^{n}F_{i}}$ is the net external inflow for the period (so contributions to a portfolio are treated as positive flows while withdrawals are negative flows)

and

${\displaystyle \sum _{i=1}^{n}W_{i}\times {F_{i}}=}$ the sum of each flow ${\displaystyle F_{i}}$ multiplied by its weight ${\displaystyle W_{i}}$

The weight ${\displaystyle W_{i}}$ is the proportion of the time period between the point in time when the flow ${\displaystyle F_{i}}$ occurs and the end of the period. Assuming that the flow happens at the end of the day, ${\displaystyle W_{i}}$ can be calculated as

${\displaystyle W_{i}={\frac {C-D_{i}}{C}}}$

where

${\displaystyle C}$ is the number of calendar days during the return period being calculated, which equals end date minus start date (plus 1, unless you adopt the convention that the start date is the same as the end date of the previous period)
${\displaystyle D_{i}}$ is the number of days from the start of the return period until the day on which the flow ${\displaystyle F_{i}}$ occurred.

This assumes that the flow happens at the end of the day. If the flow happens at the beginning of the day, the flow is in the portfolio for an additional day, so use the following formula for calculating the weight:

${\displaystyle W_{i}={\frac {C-D_{i}+1}{C}}}$

If either the start or the end value is zero, or both, the start and/or end dates need to be adjusted to cover the period over which the portfolio has content.

### Example

Suppose we are calculating the 2016 calendar year return, and that the portfolio is empty until a transfer in of EUR 1m cash in a non-interest bearing account on Friday 30 December. By the end of the day on Saturday 31 December 2016, the exchange rate between euros and Hong Kong dollars has changed from 8.1 HKD per EUR to 8.181, which is a 1 percent increase in value, measured in Hong Kong dollar terms, so the right answer to the question of what is the return in Hong Kong dollars is intuitively 1 percent.

However, blindly applying the modified Dietz formula, using an end-of-day transaction timing assumption, the day-weighting on the inflow of 8.1m HKD on 30 December, one day before the end of the year, is 1/366, and the average capital is calculated as:

start value + inflow × weight = 0 + 8.1m HKD × 1/366 = 22,131.15 HKD

and the gain is:

end value - start value - net inflow = 8,181,000 - 0 - 8,100,000 = 81,000 m HKD

so the modified Dietz return is calculated as:

gain or loss/average capital = 81,000/22,131.15 = 366 %

So which is the correct return, 1 percent or 366 percent?

The only sensible answer to the example above is that the holding period return is unambiguously 1 percent. This means the start date should be adjusted to the date of the initial external flow. Likewise, if the portfolio is empty at the end of the period, the end date should be adjusted to the final external flow. The end value is effectively the final external flow, not zero.

The return annualized using a simple method of multiplying-up 1 percent per day by the number of days in the year will give the answer 366 percent, but the holding period return is still 1 percent.

### Example Corrected

The example above is corrected if the start date is adjusted to the end of the day on 30 December, and the start value is now 8.1m HKD. There are no external flows thereafter.

The corrected gain or loss is the same as before:

end value - start value = 8,181,000 - 8,100,000 = 81,000 HKD

but the corrected average capital is now:

start value + weighted net inflows = 8.1m HKD

so the corrected modified Dietz return is now:

gain or loss/average capital = 81,000/8.1m = 1 %

### Second Example

Suppose that a bond is bought for HKD 1,128,728 including accrued interest and commission on trade date 14 November, and sold again three days later on trade date 17 November for HKD 1,125,990 (again, net of accrued interest and commission). Assuming transactions take place at the start of the day, what is the modified Dietz holding-period return in HKD for this bond holding over the year to-date until the end-of-day on 17 November?

The answer is that firstly, the reference to the holding period year to-date until the end-of-day on 17 November includes both the purchase and the sale. This means the effective adjusted holding period is actually from the purchase at the start of the day on 14 November until it is sold three days later on 17 November. The adjusted start value is the net amount of the purchase, the end value is the net amount of the sale, and there are no other external flows.

start value = 1,128,728 HKD
end value = 1,125,990 HKD

There are no flows, so the gain or loss is:

end value - start value = 1,125,990 - 1,128,728 = -2,738 HKD

and the average capital equals the start value, so the modified Dietz return is:

gain or loss/average capital = -2,738/1,128,728 = -0.24 % 2 d.p.

### Contributions - When Not To Adjust the Holding Period

This method of restricting the calculation to the actual holding period by applying an adjusted start or end date applies when the return is calculated on an investment in isolation. When the investment belongs inside a portfolio, and the weight of the investment in the portfolio, and the contribution of that return to that of the portfolio as a whole is required, it is necessary to compare like with like, in terms of a common holding period.

#### Example

Suppose that at the beginning of the year, a portfolio contains cash, of value 10,000 USD, in an account which bears interest without any charges. At the beginning of the third quarter, 8,000 USD of that cash is invested in some US dollar shares (in company X). The investor applies a buy-and-hold strategy, and there are further transactions for the remainder of the year. At the end of the year, the shares have increased in value by 10% to 8,800 USD, and 100 USD interest is capitalized into the cash account.

What is the return on the portfolio and the cash account over the year, and what are the contributions from the cash account and the shares? Furthermore, what is the return on the cash account?

The end value of the portfolio is 2,100 USD in cash, plus shares worth 8,800 USD, which is in total 10,900 USD. There has been a 9 percent increase in value since the beginning of the year. There are no external flows in or out of the portfolio over the year.

weighted flows = 0

so

average capital = start value = 10,000 USD

so the return is:

gain or loss/average capital = 900/10,000 = 9 %

This 9% portfolio return breaks down between 8 percent contribution from the 800 USD earned on the shares and 1 percent contribution from the 100 USD interest earned on the cash account, but how more generally can we calculate contributions?

The first step is to calculate the average capital in each of the cash account and the shares over the full year period. These should sum to the 10,000 USD average capital of the portfolio as a whole. From the average capital of each of the two components of the portfolio, we can calculate weights. The weight of the cash account is the average capital of the cash account, divided by the average capital (10,000 USD) of the portfolio, and the weight of the shares is the average capital of the shares over the whole year, divided by the average capital of the portfolio.

For convenience, we will assume the time weight of the outflow of 8,000 USD cash to pay for the shares is exactly 1/4. This means that the four quarters of the year are treated as having equal length.

The average capital of the cash account is:

average capital
= start value - time weight × outflow amount
= 10,000 - 1/4 × 8,000 USD
= 10,000 - 2,000 USD
= 8,000 USD

The average capital of the shares over the last quarter requires no calculation, because there are no flows after the beginning of the last quarter. It is the 8,000 USD invested in the shares. However, the average capital in the shares over the whole year is something else. The start value of the shares at the beginning of the year was zero, and there was an inflow of 8,000 USD at the beginning of the last quarter, so:

average capital
= start value - time weight × outflow amount
= 0 + 1/4 × 8,000 USD
= 2,000 USD

We can see immediately that the weight of the cash account in the portfolio over the year was:

average capital in the cash account/average capital in the portfolio
= 8,000/10,000
= 80 %

and the weight of the shares was:

average capital in shares/average capital in the portfolio
= 2,000/10,000
= 20 %

which sum to 100 percent.

We can calculate the return on the cash account, which was:

gain or loss/average capital = 100/8,000 = 1.25 %

The contribution to the portfolio return is:

weight × return = 80 % × 1.25 % = 1 %

How about the contribution to the portfolio return from the shares?

The adjusted holding period return on the shares is 10 percent. If we multiply this by the 20 percent weight of the shares in the portfolio, the result is only 2 percent, but the correct contribution is 8 percent.

The answer is to use the return on the shares over the unadjusted full-year period to calculate the contribution:

= gain or loss/unadjusted period average capital
= 800/2,000
= 40 %

Then the contribution from the shares to the portfolio return is:

= 20% × 40 % = 8 %

This does not mean that the correct holding period return on the shares is 40 percent, but for calculation of the contribution, use the unadjusted period return, which is the 40 percent figure, not the actual 10 percent holding period return.

## Fees

To measure returns net of fees, allow the value of the portfolio to be reduced by the amount of the fees. To calculate returns gross of fees, compensate for them by treating them as an external flow, and exclude accrued fees from valuations.

## Comparison with Time-Weighted Return and Internal Rate of Return

The modified Dietz method has the practical advantage over the true time-weighted rate of return method, in that the calculation of a modified Dietz return does not require portfolio valuations at each point in time whenever an external flow occurs. The internal rate of return method shares this practical advantage with the modified Dietz method.

The modified Dietz method has the practical advantage over the internal rate of return method, in that there is a formula for the modified Dietz return, whereas iterative numerical methods are usually required to estimate the internal rate of return.

The modified Dietz method is based upon a simple rate of interest principle. It approximates the internal rate of return method, which applies a compounding principle, but if the flows and rates of return are large enough, the results of the Modified Dietz method will significantly diverge from the internal rate of return.

The modified Dietz return is the solution ${\displaystyle R}$ to the equation:

${\displaystyle B=A\times (1+R)+\sum _{i=1}^{n}F_{i}\times (1+R\times {\frac {T-t_{i}}{T}})}$

where

${\displaystyle A}$ is the start value
${\displaystyle B}$ is the end value
${\displaystyle T}$ is the total length of time period

and

${\displaystyle t_{i}}$ is the time between the start of the period and flow ${\displaystyle i}$

Compare this with the (unannualized) internal rate of return (IRR). The IRR (or more strictly speaking, an un-annualized holding period return version of the IRR) is a solution ${\displaystyle R}$ to the equation:

${\displaystyle B=A\times (1+R)+\sum _{i=1}^{n}F_{i}\times (1+R)^{\frac {T-t_{i}}{T}}}$

For example, suppose the value of a portfolio is 100 USD at the beginning of the first year, and 300 USD at the end of the second year, and there is an inflow of 50 USD at the end of the first year/beginning of the second year. (Suppose further that neither year is a leap year, so the two years are of equal length.)

To calculate the gain or loss over the two-year period,

${\displaystyle {\text{gain or loss}}=B-A-F=300-100-50=150{\text{ USD.}}}$

To calculate the average capital over the two-year period,

${\displaystyle {\text{average capital}}=A+\sum {\text{weight}}\times {\text{flow}}=100+0.5\times 50=125{\text{ USD,}}}$

so the modified Dietz return is:

${\displaystyle {\frac {\text{gain or loss}}{\text{average capital}}}={\frac {150}{125}}=120\%}$

The (unannualized) internal rate of return in this example is 125%:

${\displaystyle 300=100\times (1+125\%)+50\times (1+125\%)^{\frac {2-1}{2}}=225+50\times 150\%=225+75}$

so in this case, the modified Dietz return is noticeably less than the unannualized IRR. This divergence between the modified Dietz return and the unannualized internal rate of return is due to a significant flow within the period, and the fact that the returns are large.

## Annual Rate of Return

Note that the Modified Dietz return is not an annual rate of return, unless the period happens to be one year. Annualisation, which is conversion of the return to an annual rate of return, is a separate process.

## The Simple Dietz Method

Note also that the simple Dietz method is a special case of the Modified Dietz method, in which external flows are assumed to occur at the midpoint of the period, or equivalently, spread evenly throughout the period, whereas no such assumption is made when using the Modified Dietz method, and the timing of any external flows is taken into account.

## Money-Weighted Return

The modified Dietz method is an example of a money (or dollar) weighted methodology. In particular, if the modified Dietz return on two portfolios are ${\displaystyle R_{1}}$ and ${\displaystyle R_{2}}$, measured over a common matching time interval, then the modified Dietz return on the two portfolios put together over the same time interval is the weighted average of the two returns:

${\displaystyle W_{1}\times R_{1}+W_{2}\times R_{2}}$

where the weights of the portfolios depend on the average capital over the time interval:

${\displaystyle W_{i}={\frac {{\text{average capital}}_{i}}{{\text{average capital}}_{1}+{\text{average capital}}_{2}}}}$

## Linked Return versus True Time-Weighted Return

An alternative to the modified Dietz method is to link geometrically the modified Dietz returns for shorter periods. The linked modified Dietz method is classed as a time-weighted method, but it does not produce the same results as the true time weighted method, which requires valuations at the time of each cash flow.

## Issues

There are sometimes difficulties when calculating or decomposing portfolio returns, if all transactions are treated as occurring at a single time of day, such as the end of the day or beginning of the day. Whatever method is applied to calculate returns, an assumption that all transactions take place simultaneously at a single point in time each day can lead to errors.

For example, consider a scenario where a portfolio is empty at the start of a day, so that the start value A is zero. There is then an external inflow during a day of F = $100. By the close of the day, market prices have moved, and the end value is$99.

If all transactions are treated as occurring at the end of the day, then there is zero start value A, and zero value for average capital, because the day-weight on the inflow is zero, so no modified Dietz return can be calculated.

Some such problems are resolved if the modified Dietz method is further adjusted so as to put purchases at the open and sales at the close, but more sophisticated exception-handling produces better results.

There are sometimes other difficulties when decomposing portfolio returns, if all transactions are treated as occurring at a single point during the day.

For example, consider a fund opening with just $100 of a single stock that is sold for$110 during the day. During the same day, another stock is purchased for $110, closing with a value of$120. The returns on each stock are 10% and 120/110 - 1 = 9.0909% (4 d.p.) and the portfolio return is 20%. The asset weights wi (as opposed to the time weights Wi) required to get the returns for these two assets to roll up to the portfolio return are 1200% for the first stock and a negative 1100% for the second:

w*10/100 + (1-w)*10/110 = 20/100 → w = 12.

Such weights are absurd, because the second stock is not held short.

The problem only arises because the day is treated as a single, discrete time interval.

Function georet_MD(myDates, myReturns, FlowMap, scaler)
' This function calculates the modified Dietz return of a time series
'
' Inputs.
'   myDates. Tx1 vector of dates
'   myReturns. Tx1 vector of financial returns
'   FlowMap. Nx2 matrix of Dates (left column) and flows (right column)
'   scaler. Scales the returns to the appropriate frequency
'
' Outputs.
'   Modified Dietz Returns.
'
' Note that all the dates of the flows need to exist in the date vector that is provided.
' when a flow is entered, it only starts accumulating after 1 period.
'
Dim i, j, T, N As Long
Dim matchFlows(), Tflows(), cumFlows() As Double
Dim np As Long
Dim AvFlows, TotFlows As Double

' Get dimensions
If StrComp(TypeName(myDates), "Range") = 0 Then
T = myDates.Rows.Count
Else
T = UBound(myDates, 1)
End If
If StrComp(TypeName(FlowMap), "Range") = 0 Then
N = FlowMap.Rows.Count
Else
N = UBound(FlowMap, 1)
End If

' Redim arrays
ReDim cumFlows(1 To T, 1 To 1)
ReDim matchFlows(1 To T, 1 To 1)
ReDim Tflows(1 To T, 1 To 1)

' Create a vector of Flows
For i = 1 To N
j = Application.WorksheetFunction.Match(FlowMap(i, 1), myDates, True)
matchFlows(j, 1) = FlowMap(i, 2)
Tflows(j, 1) = 1 - (FlowMap(i, 1) - FlowMap(1, 1)) / (myDates(T, 1) - FlowMap(1, 1))
If i = 1 Then np = T - j
Next i

' Cumulated Flows
For i = 1 To T
If i = 1 Then
cumFlows(i, 1) = matchFlows(i, 1)
Else
cumFlows(i, 1) = cumFlows(i - 1, 1) * (1 + myReturns(i, 1)) + matchFlows(i, 1)
End If
Next i

AvFlows = Application.WorksheetFunction.SumProduct(matchFlows, Tflows)
TotFlows = Application.WorksheetFunction.Sum(matchFlows)

georet_MD = (1 + (cumFlows(T, 1) - TotFlows) / AvFlows) ^ (scaler / np) - 1

End Function

## Java Method for Modified Dietz Return

private static double modifiedDietz (double emv, double bmv, double cashFlow[], int numCD, int numD[]) {

/* emv:        Ending Market Value
* bmv:        Beginning Market Value
* cashFlow[]: Cash Flow
* numCD:      actual number of days in the period
* numD[]:     number of days between beginning of the period and date of cashFlow[]
*/

double md = -99999; // initialize modified dietz with a debugging number

try {

double[] weight = new double[cashFlow.length];

if (numCD <= 0) {
throw new ArithmeticException ("numCD <= 0");
}

for (int i=0; i<cashFlow.length; i++) {
if (numD[i] < 0) {
throw new ArithmeticException ("numD[i]<0 , " + "i=" + i);
}
weight[i] = (double) (numCD - numD[i]) / numCD;
}

double ttwcf = 0;      // total time weighted cash flows
for (int i=0; i<cashFlow.length; i++) {
ttwcf += weight[i] * cashFlow[i];
}

double tncf = 0;      // total net cash flows
for (int i=0; i<cashFlow.length; i++) {
tncf += cashFlow[i];
}

md = (emv - bmv - tncf) / (bmv + ttwcf);
}
catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
catch (ArithmeticException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}

return md;
}

## Excel VBA function for modified Dietz return

Public Function MDIETZ(dStartValue As Double, dEndValue As Double, iPeriod As Integer, rCash As Range, rDays As Range) As Double

'Jelle-Jeroen Lamkamp 10 Jan 2008
Dim i As Integer: Dim Cash() As Double: Dim Days() As Integer
Dim Cell As Range: Dim SumCash As Double: Dim TempSum As Double

'Some error trapping
If rCash.Cells.Count <> rDays.Cells.Count Then MDIETZ = CVErr(xlErrValue): Exit Function
If Application.WorksheetFunction.Max(rDays) > iPeriod Then MDIETZ = CVErr(xlErrValue): Exit Function

ReDim Cash(rCash.Cells.Count - 1)
ReDim Days(rDays.Cells.Count - 1)

i = 0
For Each Cell In rCash
Cash(i) = Cell.Value: i = i + 1
Next Cell

i = 0
For Each Cell In rDays
Days(i) = Cell.Value: i = i + 1
Next Cell

SumCash = Application.WorksheetFunction.Sum(rCash)

TempSum = 0
For i = 0 To (rCash.Cells.Count - 1)
TempSum = TempSum + (((iPeriod - Days(i)) / iPeriod) * Cash(i))
Next i

MDIETZ = (dEndValue - dStartValue - SumCash) / (dStartValue + TempSum)

End Function

## References

1. ^ Peter O. Dietz (1966). Pension Funds: Measuring Investment Performance. Free Press.
2. ^ Philip Lawton, CIPM; Todd Jankowski, CFA (18 May 2009). Investment Performance Measurement: Evaluating and Presenting Results. John Wiley & Sons. pp. 828–. ISBN 978-0-470-47371-9. Peter O. Dietz published his seminal work, Pension Funds: Measuring Investment Performance, in 1966. The Bank Administration Institute (BAI), a U.S.-based organization serving the financial services industry, subsequently formulated rate-of-return calculation guidelines based on Dietz's work.
3. ^ Bruce J. Feibel (21 April 2003). Investment Performance Measurement. John Wiley & Sons. pp. 41–. ISBN 978-0-471-44563-0. One of these return calculation methods, the Modified Dietz method, is still the most common way of calculating periodic investment returns.
4. ^ "Global Investment Performance Standards (GIPS®) Guidance Statement on Calculation Methodology" (pdf). IPC. Retrieved 13 January 2015.
5. ^ The C.F.A. Digest. 32-33. Institute of Chartered Financial Analysts. 2002. p. 72. A slightly improved version of this method is the day-weighted, or modified Dietz, method. This method adjusts the cash flow by a factor that corresponds to the amount of time between the cash flow and the beginning of the period.