I may not be understanding your questions, but the REASON for income/outgo isn’t important to the calculation of rate of return. You just have money at the beginning, money coming in, and money going out.
I calculate annual rate of return by using a monthly calculation: that is, I make the simplifying assumption that every transaction (income or outgo) during a month happens on the same date; it’s easiest to use the 1st day or last day, but you can use the 15th. That’s an approximation that works fine given the numbers I’m dealing with. If you’re dealing with tens of millions, then you may want to go daily.
So, for a year, and assuming all transactions happen on last day of the month. For simplicity, assume you have $N income in March and $M outgo in September.
(1) - Start with amount B0 for beginning balance.
(2) - Add and subtract each income and outgo, without regard to when they happened during the year. In my example, that’s B0 + N - M = E. This is the Expected Value – it’s the amount you would have if there were no earnings at all, if the money were all kept in cash in a non-interest-bearing checking account.
(3) - Compare this to your actual balance at end of year (call it B1.) The difference B1 - E is the earnings (positive or negative.)
(4) - Come up with a weighted each monthly amount by the amount of time from the transaction to end of year. So, for example, if you have N as income in March, you’d use N9/12; if you have M income in September, you’d take M3/12. The idea is that you are weighing each monetary amount by the length of time that amount is actively earning.
(3)- Sum: B0 + N*(9/12) - M*(3/12) = W, the Weighted Amount.
(5) Divide: Earnings by Weighted Amount. That’s your (approx) rate of return.
Hope that’s clear.