Modified Dietz method

From Wikipedia, the free encyclopedia
  (Redirected from Modified Dietz Method)
Jump to: navigation, search

The modified Dietz method[1][2] is a measure of the 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 rate of return for the time 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) 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]


The formula for the modified Dietz method is as follows:


is the ending market value
is the beginning market value
is the net external inflow for the period (contributions to a portfolio are entered as positive flows while withdrawals are entered as negative flows)


the sum of each flow multiplied by its weight

The weight is the proportion of the time period between the point in time when the flow occurs and the end of the period. Assuming that the flow happens at the end of the day, can be calculated as


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)
is the number of days from the start of the return period until the day on which the flow occurred.

This assumes that the flow happens at the end of the day. If the flow happens at the beginning of the day, use the following formula for calculating weight:


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[edit]

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 to the equation:


is the ending market value
is the beginning market value
is the total length of time period


is the time between the start of the period and flow

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 to the equation:

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,

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

so the Modified Dietz return is:

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

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[edit]

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[edit]

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[edit]

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 and , 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:

where the weights of the portfolios depend on the Average Capital over the time interval:

Linked Return versus True Time-Weighted Return[edit]

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.


There are sometimes difficulties when calculating or decomposing portfolio returns, if all transactions are treated as occurring at a single point during 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 BMV = 0. There is then an external inflow during a day of F = $100. By the close of the day, market prices have moved, and EMV = $99.

If all transactions are treated as occurring at the end of the day, then there is zero start value BMV, and zero value for Average Capital, 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.

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


   T = UBound(myDates, 1)

End If If StrComp(TypeName(FlowMap), "Range") = 0 Then

   N = FlowMap.Rows.Count


   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)
       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[edit]

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) {
    catch (ArithmeticException e) {
    catch (Exception e) {

    return md;

See also[edit]


  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. 

Further reading[edit]

  • Carl Bacon. Practical Portfolio Performance Measurement and Attribution. West Sussex: Wiley, 2003. ISBN 0-470-85679-3
  • Bruce J. Feibel. Investment Performance Measurement. New York: Wiley, 2003. ISBN 0-471-26849-6
  • Christopherson, Jon A. et al. Portfolio Performance Measurement and Benchmarking. McGraw-Hill, 2009. ISBN 9780071496650