-- removed inline image ---
Then I calculate previous rows and next rows, previous units and units for each row: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- removed inline image ---
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | Using tTranscation table I calculate # of units owned at each day
INDEX(tTransactions[Units];
N(IF(1; LARGE(IF(
((tTransactions[Date]<=$A2) * (tTransactions[Units]>0) * ((tTransactions[Next Row]=0) + (tTransactions[Next Row] > MAX(IF(tTransactions[Date]<=$A2; ROW(tTransactions[Date]))))) * ROW(tTransactions[B&A]))
>0;
((tTransactions[Date]<=$A2) * (tTransactions[Units]>0) * ((tTransactions[Next Row]=0) + (tTransactions[Next Row] > MAX(IF(tTransactions[Date]<=$A2; ROW(tTransactions[Date]))))) * ROW(tTransactions[B&A]))
); ROW($A$1:INDIRECT("A"&SUM(IF(
((tTransactions[Date]<=$A2) * (tTransactions[Units]>0) * ((tTransactions[Next Row]=0) + (tTransactions[Next Row] > MAX(IF(tTransactions[Date]<=$A2; ROW(tTransactions[Date]))))) * ROW(tTransactions[B&A]))
<>0;1;0))))) ))-1; 1);
e.g. for shares owned {"NOKIA";"KO";"MSFT"} on 2nd of July it gives me {24;28;8}
Then I calculate prices (using my old formula)
SUMIFS(HistoricalQuotes[Price];HistoricalQuotes[Date];"="&$A2; HistoricalQuotes[Ticker]; T(IF(1;
INDEX(tTransactions[Asset];
N(IF(1; LARGE(IF(
((tTransactions[Date]<=$A2) * (tTransactions[Units]>0) * ((tTransactions[Next Row]=0) + (tTransactions[Next Row] > MAX(IF(tTransactions[Date]<=$A2; ROW(tTransactions[Date]))))) * ROW(tTransactions[B&A]))
>0;
((tTransactions[Date]<=$A2) * (tTransactions[Units]>0) * ((tTransactions[Next Row]=0) + (tTransactions[Next Row] > MAX(IF(tTransactions[Date]<=$A2; ROW(tTransactions[Date]))))) * ROW(tTransactions[B&A]))
); ROW($A$1:INDIRECT("A"&SUM(IF(
((tTransactions[Date]<=$A2) * (tTransactions[Units]>0) * ((tTransactions[Next Row]=0) + (tTransactions[Next Row] > MAX(IF(tTransactions[Date]<=$A2; ROW(tTransactions[Date]))))) * ROW(tTransactions[B&A]))
<>0;1;0))))) ))-1; 1)
)) );
I get for {"NOKIA";"KO";"MSFT"} on 2nd of July {202,07;102,07;302,07}
Additionally I also calculate exchange rates, as I have shares in multiple currencies, but in my sample file I have marked all currency rates ones, to keep sample simple.
To get a portfolio value on a date I use SUMPRODUCT(units, prices, forexrates). I works as long there are prices for all shares on needed day.
You can find my sample file from here:
https://1drv.ms/x/s!AtMqEk6YiyvupbVM_Oq4To8_ilvutA
I wish that I could do portfolio calculation without any additional tables. I wonder if its feasible.
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
<tbody>
Date | Type | Broker | Asset | Currency | in EUR | Transacted Units | Transacted Price (per unit) | Fees | Stock Split Ratio | B&A | Prev Row | Next Row | Previous Units | Units | 21.4.2006 | Buy | Nordea | NOKIA | EUR | 1 | 100,0 | 18,380 | 2,00 | 1,0 | NordeaNOKIA | 0 | 4 | 0,0 | 100,00 | 2.1.2007 | Buy | Nordnet | MSFT | USD | 0,9 | 20,00 | 20,000 | 2,00 | 1,0 | NordnetMSFT | 0 | 5 | 0,0 | 20,00 | 28.2.2007 | Sell | Nordea | NOKIA | EUR | 1 | 26,00 | 12,350 | 2,00 | 1,0 | NordeaNOKIA | 2 | 7 | 100,0 | 74,00 | 5.3.2007 | Sell | Nordnet | MSFT | USD | 0,9 | 12,00 | 7,060 | 2,00 | 1,0 | NordnetMSFT | 3 | 10 | 20,0 | 8,00 | 14.3.2007 | Buy | Nordnet | KO | EUR | 0,95 | 28,00 | 5,400 | 2,00 | 1,0 | NordnetKO | 0 | 8 | 0,0 | 28,00 | 14.3.2007 | Sell | Nordea | NOKIA | EUR | 1 | 50,00 | 10,010 | 2,00 | 1,0 | NordeaNOKIA | 4 | 11 | 74,0 | 24,00 | 6.7.2007 | Buy | Nordnet | KO | USD | 0,9 | 2,00 | 40,000 | 4,00 | 1,0 | NordnetKO | 6 | 12 | 28,0 | 30,00 | 9.7.2007 | Buy | Nordnet | CCF | EUR | 1 | 3,00 | 380,000 | 4,00 | 1,0 | NordnetCCF | 0 | 0 | 0,0 | 3,00 | 9.7.2007 | Sell | Nordnet | MSFT | USD | 0,9 | 8,00 | 5,000 | 2,00 | 1,0 | NordnetMSFT | 5 | 0 | 8,0 | 0,00 | 9.7.2007 | Sell | Nordea | NOKIA | EUR | 1 | 24,00 | 14,000 | 2,00 | 1,0 | NordeaNOKIA | 7 | 0 | 24,0 | 0,00 | 9.7.2007 | Sell | Nordnet | KO | USD | 0,9 | 29,00 | 42,000 | 2,00 | 1,0 | NordnetKO | 8 | 0 | 30,0 | 1,00 |
<colgroup><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col></colgroup><tbody>
</tbody>
</tbody> | | | | | | | | | |