Content deleted Content added
(25 intermediate revisions by 13 users not shown) | |||
Line 1:
{{Short description|Historical performance of an investment portfolio}}
The '''modified Dietz method'''<ref name="Dietz1966">{{cite book
|author=Peter O. Dietz
Line 4 ⟶ 5:
|url=https://books.google.com/books?id=ZUQ_MwEACAAJ
|year=1966
|publisher=Free Press}}</ref><ref>{{Cite journal|last=Dietz|first=Peter|date=May 1968|title=Measurement of Performance of Security Portfolios COMPONENTS OF A MEASUREMENT MODEL: RATE OF RETURN, RISK, AND TIMING|journal=The Journal of Finance|volume=23|issue=2|pages=267–275|doi=10.1111/j.1540-6261.1968.tb00802.x}}</ref><ref name="CIPMCFA2009">{{cite book
|author1=Philip Lawton, CIPM
|author2=Todd Jankowski, CFA
Line 13 ⟶ 14:
|isbn=978-0-470-47371-9
|pages=828–
|quote=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.}}</ref> 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 average capital weights individual cash flows by the length of time between those cash flows until the end of the period. Flows which occur towards the beginning of the period have a higher weight than flows occurring towards the end. The result of the calculation is expressed as a percentage [[rate of return|return]] over the holding period.
Line 28 ⟶ 29:
|publisher=Institute of Chartered Financial Analysts.
|page=72
|quote=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.}}</ref> The original idea behind the work of Peter Dietz was to find a quicker, less computer-intensive way of calculating an IRR as the iterative approach using the then
==Formula==
Line 63 ⟶ 62:
==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.
Conversely, if there exists a portfolio valuation at any point in time, the implied modified Dietz valuation of cashflows at that point in time is quite unlikely to agree with the actual valuation.
With the advance of technology, most systems can calculate a
The modified Dietz method also has the practical advantage over [[internal rate of return]] (IRR) method that it does not require repeated trial and error to get a result.<ref name="Feibel2003">{{cite book
Line 118:
:<math>100 \times (1 + 125\%)+ 50 \times (1+125\%)^ \frac{2 - 1}{2} = 225 + 50 \times 150\% = 225 + 75 = 300</math>
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,
The IRR is 50% since:
:<math>100 \times (1 + 50\%)^2 + 50 \times (1+50\%)^ 1 = 225 + 50 \times 150\% = 225 + 75 = 300</math>
but the unannualized holding period return, using the IRR method, is 125%. Compounding an annual rate of 50% over two periods gives a holding period return of 125%:
:<math>(1 + 50\%)^2 - 1 = 2.25 - 1 = 1.25 = 125\%</math>
==The simple Dietz method==
Line 176 ⟶ 184:
There are no flows, so the gain or loss is:
:{{nowrap begin}}{{link if exists|end value}}
and the average capital equals the start value, so the modified Dietz return is:
:{{nowrap begin}}{{sfrac|{{link if exists|gain or loss}}|{{link if exists|average capital}}}} = {{sfrac|
===Contributions - when not to adjust the holding period===
Line 212 ⟶ 220:
:{{nowrap begin}}{{link if exists|average capital}}{{nowrap end}}
::{{nowrap begin}}= {{link if exists|start value}}
::{{nowrap begin}}= 10,000
::{{nowrap begin}}= 10,000
::{{nowrap begin}}= $8,000{{nowrap end}}
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 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 at the beginning of the last quarter, so:
:{{nowrap begin}}{{link if exists|average capital}}{{nowrap end}}
::{{nowrap begin}}= {{link if exists|start value}}
::{{nowrap begin}}= 0 + {{sfrac|1|4}} × $8,000{{nowrap end}}
::{{nowrap begin}}= $2,000{{nowrap end}}
Line 270 ⟶ 278:
==Money-weighted return==
The modified Dietz method is an example of a money (or dollar) weighted methodology (as opposed to [[time-weighted return|time-weighted]]). In particular, if the modified Dietz return on two portfolios are <math>R_1</math> and <math>R_2</math>, 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:
:<math>W_1 \times R_1+W_2 \times R_2</math>
Line 293 ⟶ 301:
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
:w*10/100 + (1
Such weights are absurd, because the second stock is not held short.
Line 315 ⟶ 323:
:At the end of Day 40, the remaining 20 shares are worth 12.50 dollars per share
The gain or loss is end value
:<math>20 \times 12.50 - 100 \times 10 + 80 \times 15</math>
Line 335 ⟶ 343:
:<math>\frac {\text {gain or loss}}{\text {average capital}} = \frac {450}{-50} = -900 \%</math>
Instead, we notice that the start value is positive, but the average capital is negative. Furthermore, there is no short sale. In other words, at all times, the number of shares held is positive.
We then measure the simple return from the shares sold:
Line 347 ⟶ 355:
and combine these returns with the weights of these two portions of the shares within the starting position, which are:
:<math>\frac {80}{100} = 80 \%</math> and <math>\frac {20}{100} = 20 \%</math> respectively.
This gives the contributions to the overall return, which are:
Line 370 ⟶ 378:
====Limitations====
This workaround has limitations. It is possible only if the holdings can be split up like this.
It is not ideal, for two further reasons, which are that it does not cover all cases, and it is inconsistent with the Modified Dietz method. Combined with Modified Dietz contributions for other assets, the sum of constituent contributions will fail to add up to the overall return.
Line 380 ⟶ 388:
==Visual Basic==
<
Function georet_MD(myDates, myReturns, FlowMap, scaler)
' This function calculates the modified Dietz return of a time series
Line 441 ⟶ 449:
End Function
</syntaxhighlight>
==Java method for modified Dietz return==
<
private static double modifiedDietz
/* emv: Ending Market Value
Line 460 ⟶ 468:
if (numCD <= 0) {
throw new ArithmeticException
}
for (int i = 0; i < cashFlow.length; i++) {
if (numD[i] < 0) {
throw new ArithmeticException
}
weight[i] = (double) (numCD - numD[i]) / numCD;
Line 471 ⟶ 479:
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];
}
Line 494 ⟶ 502:
return md;
}
</syntaxhighlight>
== Excel VBA function for modified Dietz return ==
<syntaxhighlight lang="
Public Function MDIETZ(dStartValue As Double, dEndValue As Double, iPeriod As Integer, rCash As Range, rDays As Range) As Double
|