TimeWeighted Rate of Return
The TimeWeighted Rate of Return (TWR) gives each time period equal weight in the calculation of the return rate, regardless of the amount of money invested during those periods. . In contrast, the MoneyWeighted Rate of Return (MWROR) method assigns greater weight to periods with more money invested, taking into account the size and timing of cash flows.
General Method
In most financial management handbooks, calculating the timeweighted rate of return for a reporting period is described as a threestep process:

Divide the reporting period into subperiods based on cash flow dates: A subperiod runs from just before a cash flow until just before the next cash flow or the end of the reporting period. As such, the subperiods are likely to have unequal durations.

Calculate the subperiod growth rates using Equation 1:
$$\mathrm{1 + r = \frac{MVE + CFout}{MVB + CFin} \qquad \text{(Eq 1)}}$$
where MVE = the market value of the asset at the end of the holding period, MVB is the market value at the beginning of the holding period (which is the same value as the MVE of the previous holding period). CFin is the incoming cash flow, and CFout is the outgoing cash flow in that period.

Compound the subperiod returns into the overall performance for the reporting period using Equation 2:
$$\mathrm{r = [(1 + r_1) \cdots \times (1 + r_n)]  1 \qquad \text{(Eq 2)}}$$
where n is the number of holding periods and r_{t} is the return rate for holding period t.
Note
Figure 1 depicts a simplified example with three holding periods and known performances (10%, 5%, and 10%), which is, of course, not the case in the real world.
What is the TWR of this portfolio? According to Equation 2, this should be:
[(1+0.1)*(1+0.05)*(1+0.1)]1 = 27.05%
. Please note, that this is not an annualized return but a return for the entire period. The durations of the holding periods could differ but no information about durations is provided. Secondly, the sequence of the returns does not matter; (5%, 10%,10%) gives the same result. Lastly, the size and timing of the cash flows do not impact the result. If there were no cash flows, the intermediate values would be:100*1.1= 110; 110*1.05= 115.5
, and115.5*1.1= 127.5
, or the starting value100*1.275
.However, since there are cash flows, Equation 1 could be used to calculate the holding period returns (instead of assuming they were given):
 HP1: no cash flow:
(110/100)1 = 10%
.  HP2: cash inflow of 20:
[136.5/(110+20)]1=5%
.  HP3: cash outflow of 30:
[117.15/(136.530)]1
.
Please note that the formula for the cash outflow is slightly different than the one given in Equation 2 (see TTWROR at security level for an explanation).
 HP1: no cash flow:
Implementation in PP
In the classical method described above, an asset valuation is required at each cash flow. You need to know the value of the portfolio or asset just before each cash flow. However, there are instances when this isn't feasible, and only monthly or quarterly valuations are available. These valuations may or may not coincide with the cash flows. In such cases, an approximation can be used. However, when a valuation is available just before each cash flow, a True TimeWeighted Rate Of Return (TTWROR) could be calculated. The term is coined to differentiate this method from the approximations mentioned above.
In the past, when computing power was expensive, it made sense to create longer holding periods to ease the computational burden, particularly for the required valuations at each cash flow. Today, this is no longer the case, and software like PP can calculate the market value of investments practically in real time. As an inbetween solution,PP creates valuations of the different components on a daily basis, regardless of whether there is a cash flow. Therefore, the holding periods all have equal durations of one day.
With daily valuations, it makes sense to assume that cash inflows occur at the very start of the day. The money is immediately available to invest during the day. Consequently, there will never be a portfolio with an MVB of 0, because cash inflows are added immediately to the portfolio. PP also assumes that cash outflows occur at the very end of the day, just before valuation. Thus, it makes sense to reflect this in Equation 1: inflows are added to the MVB, and outflows are added to the MVE.
TTWROR at portfolio level
The relevant cash flows for the performance calculation at portfolio level are: Deposit
, Withdrawal (removal)
, Delivery In
, and Delivery Out
. Refer to the Defining Cashflows section, and in particular Figure 3 from the chapter about MoneyWeighted Rate of Return for detailed information.
Note
Figure 2 displays the necessary info for calculating the TTWROR of demoportfolio03.
We will use a 2year reporting period starting from June 12, 2021 in the following examples. Since the initial purchase of share1
for 155 EUR occurred outside of this reporting period, there are only two cash flows that impact the performance. By June 12, the market value of share1
(MVB) was increased to 177.94 EUR; see the first chart in Figure 2.
If there aren't any cashflows in a holding period such as in HP1, one can use the simple rate of return formula: r = MVE/MVB  1 = 160.26/177.94  1 =  0.0994
or  9.94%.
The second holding period however starts just before a cash inflow (+ 84 EUR). The MVE is 264.57 EUR. According to Equation 1 the rate of return r = 264.57 / (160.26 + 84)
or 8.31%. By adding the cash inflow to the denominator, the influence of this cash flow on performance is neutralized.
The MVB of the HP3 is the same as the MVE of HP2 or 264.57 EUR. There is a cash inflow of 67 EUR and the MVE = 426.82 EUR. The performance r = 426.82 / (264.57 + 67)
or 28.73%.
It's important to emphasize that the timing of the cash flows is not considered in this calculation. It doesn't matter whether HP1 is short or long. Additionally, the performance is calculated independently of the size of the cash flow, with the cash inflow being added to the beginning Market Value of the Portfolio (MVB). This approach contrasts with the moneyweighted rate of return calculation, where both timing and size of cash flows are taken into account.
For each period, you need MVB or MVE_{t1} and the current MVE_{t} period. Because the market value is determined at the end of the trading day (closing price), MVE_{t1} is also the value immediately before the cashflow at the beginning of the day.
Note
One could argue that, as we are required to add the cash flow CFin to MVE_{t1} (as per Equation 1), an alternative approach is to consider the market value of MVE_{t}, which already includes this cash flow CFin_{t}. However, it's important to note that throughout the day, market forces may cause fluctuations in the original MVE_{t1}, and these variations should be excluded when determining the market value at the beginning of the day, just before the cash flow.
Exporting data from PP
Since computer time is inexpensive nowadays, there's no need to define long holding periods to minimize manual computation. Therefore, PP employs a single day as the holding period. You can easily export a CSVfile with the daily portfolio values. Select the menu View > Reports > Performance > Chart
and click the icon (top right) Export Data as CSV
. Choose Export Entire Portfolio
(see Figure 4 for an abbreviated example). Delta in %
corresponds with the computed rate of return r. The Cumulative Performance in %
is the cumulative or total TTWROR, compounding all returns from the previous days.
The calculation is analogous to the explanation of the manual calculation. Note that the majority of rows from the Excel sheet are hidden. The market value of the portfolio on 20210612
was 177.94 EUR. At the end of HP1 on 20220113
it has dropped to 160.26 EUR. On June 14, a deposit (and buy of share2) was made. The market value of the portfolio increases as a result to 264.57 EUR. Due to fees and taxes (see Figure 2), the daily performance is negative. The cumulative performance is calculated according to Equation 2, leading to a total performance of the portfolio of 25.58% for the entire reporting period.
TTWROR at security level
The previous section describes the performance of the whole portfolio, including deposit accounts. Understanding the performance calculation for a single security should not pose any problems by now. The same principles are applied. However, there are quite a few differences qua approach.
 Focusing on a single security ensures that other assets, such as deposit accounts, are not included in the calculation.
 Conversely, transactions such as dividends and sales are now incorporated into the performance calculation. Since the proceeds from a sale or dividend are deposited into a cash account, money exits the system from the perspective of the security and is thus factored into the calculation.
 Special provisions are made for taxes. These are not included in the calculation; see IRR for an explanation.
In PP you can retrieve the IRR and TTWROR of a security through the menu View > Reports > Performance > Securities
. However, these values are not displayed by default and should be made available with the Show or Hide columns
icon (top right).
The chart from the menu View > Reports > Performance > Chart
can exhibit multiple time series (click the Gear icon). In Figure 6, the cumulative TTWROR for the entire portfolio is depicted, along with individual graphs for share1
and share2
over a 2year reporting period, starting from June 12, 2021. As share2
was acquired on September 30, 2022, its performance until that date registers as zero (indicated by the horizontal yellow line). From that point onward, the performance of the portfolio diverges from that of share1
due to the notably successful yet relatively minor contribution of share2
within the overall portfolio. As can be seen, the periodic TTWROR of the entire portfolio or the last cumulative performance of the portfolio is 25.58%, as calculated in Figure 4.
For the manual calculation, you need to define the holding periods. This is fairly easy for share2
. One holding period should suffice: from just before the buying date until the end of the reporting period. The MVB of share2
at the beginning of the holding period (just before the buy) is 0 EUR. The MVE equals 111.76. The buytransaction cost (taxes excluded) is 66 EUR. The TTWROR is thus equal to 111.76/(0 + 66) = 69.33%
. You can see this in Figure 6, where the orange line ends just below 70%.
The manual calculation for share1
is more complex due to the involvement of multiple transactions, especially outflow transactions such as dividends and sales. The best approach to understanding the problem is to draw a timeline, as depicted in Figure 3 or Figure 8. The table below summarises all the relevant info and is based on the CSV export of the daily data (market value, daily rate of return, and cumulative rate of return) from the graph in Figure 6 (click the uppointing arrow at the topright).
Note that Figure 7 illustrates two distinct methods for defining holding periods. The first method, previously discussed, defines a holding period from immediately before a cash flow (or the start of the reporting period) until just before the next cash flow (or the end of the reporting period). In this case, the calculated TTWROR is 19.71%, which is higher than the PP indicator of 14.98% (see Figure 5). However, this method is inappropriate for this particular scenario due to the presence of cash outflows.
The reason is that, as shown in Equation 1, outflows are added to the Market Value End (MVE), while inflows are added to the Market Value Begin (MVB). Figure 8 presents a simplified example for clarification.
The reporting period spans 8 days, with a cash inflow (buy) on D1 and a cash outflow (sell) on D5, resulting in two holding periods. The MVB and MVE are displayed below. Note that MVB_{t} = MVE_{t1} and that MVE_{t} = quote x #shares for that day.
According to Equation 1, 1 + r = (MVE + CFout)/(MVB + CFin)
or for day 1: (1000+0)/(0+1000)
; which results in a performance of zero. Note that, since MVB_{t} = MVE_{t1}, the terms in the numerator and denominator cancel out, leaving the simplified formula for the return of the first holding period (HP1) as: 1 + r = (1010 / 1000), or r = 10%
.
However, this method cannot be applied to HP2, because the cash outflow (510 EUR) is added to the MVE of the selling date. The numerator of day 55 isn't equal to the denominator of day 6. The correct simplified formula for HP2 is thus separating the performance calculation for the transaction date from the following days, as is done in Figure 7 (lower part). If the first method was used, then the cash outflow would be added to the MVE of day 8; which is of course not the selling date.
Transferring this method to Figure 7, the return rate of HP1 is straightforward. r = [(160.26 + 0)/(177.94 + 0)]  1 = 9.94%
. HP2 contains a cash inflow (buy), which causes no problems: r = [(287.49 + 0)/(160.26 + 83)]  1 = 6.43%
.
HP3 and HP4 are special cases as they contain cash outflows. They are split into the day of the transaction itself and the remaining period. The MVE is increased with the cash outflow to neutralize the effect of this outflow. The MVE date of the third holding period is April 11, 2023, while the dividend is disbursed on December 12, 2022. Although an imperfect solution, one approach could involve modifying the formula to subtract the dividend from the MVB, which is at the correct date. However, remember that PP records inflows at the beginning of the trading day and outflows at the end of the day. While the difference for the dividend payment is relatively minor (e.g., 287.49 versus 283.47), it is more significant for the selling transaction (e.g., 339 versus 224). By splitting the holding period into two subperiods, this issue is resolved, enabling the retention of the original formula in Equation 1.
TTWROR p.a.
Figure 5 displays both the (periodic) TTWROR
and the TTWROR p.a.
(per annum or Latin for per year). The periodic TTWROR represents the performance for the entire reporting period. You can add the TTWROR p.a.
indicator in every table or widget with the icon.
The TTWROR p.a.
indicator is calculated by assuming that a year has 365 days.
For example, if the periodic TTWROR is 30% over two years or 730 days, the annualized value would be 14.02% or (1.3 ^ (365/730))1. This is equivalent to taking the square root of 1.3.
If the TTWOR for the month of January is 2%, the TTWROR p.a. would be calculated as (1.02 ^ (365/31))1, resulting in 26.26%.
The assumption of 365 days per year may cause a slight discrepancy between the periodic TTWROR
and TTWROR p.a.
when the reporting period includes February 29th in a leap year. However, for nonleap years like 2023, both values will be identical.