How to calculate portfolio performance when the profit comes from 1) Selling the securities, 2) Getting the dividends?

Imagine the following portfolio and transactions.

  1. 2018 - Buy 100 shares of Exxon Mobile, 10 USD a piece.
  2. 2019 - Buy 100 shares of Exxon Mobile, 11 USD a piece.
  3. 2020 - Get 100 USD dividends.
  4. 2020 - Sell 150 shares of Exxon Mobile, 15 USD a piece. Tha acquisition value is by FIFO method 1 550,0 USD.

Portfolio transactions

Now, the goal is to calculate the yield of whole portfolio of current year. But the problem is that how to calculate the acquisition value? The formula of calculating the Yield should be the following: Yield = Profit / Amount (Buy). Amount (Buy) is the acquisition value of securities.

But there may be different scenarios within certain year.

  1. Getting only dividends - Take into account the acquisition value of securities (column G, 2100 USD).
  2. Selling only securities - Take into account the acquisition value of securities (1550 USD).
  3. Getting dividends and selling securities - What is now the acquisition value? We cannot sum the 2100,0 USD and 1550,0 USD because we only have shares worth of 2100. And in my opinion 1550 USD is not right also because the dividends were received on the basis of 2100.

It's seems to be quite difficult to make difference when and how to count the acquisition value and when not. What should be the right way to make these calculations?

  • Was the dividend issued in 2020 when the shared were priced at $15? Commented Dec 25, 2020 at 8:49

2 Answers 2


There are actually multiple ways to calculate the rate of return of a portfolio: the money-weighted rate of return and the time-weighted rate of return. Typically for measuring individual performance (rather than performance of a fund), you would use the money-weighted rate of return, as this accounts for the depositing/withdrawal of funds over time. The money-weighted rate of return is the interest rate r that makes the present value of the cash inflows equal to the present value of the cash outflows, i.e.,

enter image description here

where CF_t is the net cash flow at time t. I'm a bit confused about exactly what you want to calculate, though, since you say "the yield of the whole portfolio for the current year" but provide 2 years' worth of transactions. Do you only want the yield between 2019 and 2020? If that is the case, then

CF_0 = - account value in 2019 = - 200 shares x $11 = - $2200

CF_1 = $100 + account value in 2020 = $100 + 200 shares x $15 = $3100

Then the yield is the solution to -2200 + 3100(1+r)^(-1) = 0, which is r = 40.9%.

If you want the annual money-weighted rate of return from 2018 to 2020 then you'd have

CF_0 = - value of shares purchased in 2018 = - 100 shares x $10 = - $1000

CF_1 = - value of shares purchased in 2019 = - 100 shares x $11 = - $1100

CF_2 = $100 + account value in 2020 = $100 + 200 shares x $15 = $3100

Then you'd solve -1000 - 1100(1+r)^(-1) + 3100(1+r)^(-2) = 0, which gives r = 29.5%.

The other answer calculates the time-weighted rate of return, i.e., calculating the rate of return over each year and then multiplying. This gives a rate of return of (1.1)(1.409)-1 = 55% over the two years, or (1.55)^(1/2)-1 = 24.5% annually. However as noted in the pages I liked above, this method would be used to measure the return of the underlying investment (in this case Exxon stock) rather than an investor's individual performance. You can check that the time-weighted rate of return does not change no matter how many shares are purchased in 2019, while the money-weighted rate of return does.


With no actual dates, I'll assume transactions occur at year end.

2018 you invested $1000 2019 - those shares saw a 10% return.

2019 you invested $1100 and the year ends with a value of $2200. 2020 the shares are worth $15 or $3000 total plus the $100 dividend. $3100/$2200 a 40.9% return.

How you combine the 2 years is debatable since there was a difference in the assets, i.e. a deposit. Combining 1.1 * 1.409 gives 1.55, a 55% return. (which of course doesn't quite match the 47.6 return given by 3100/2100.)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .