diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/trades/Trade.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/trades/Trade.java index af0708e107..cade44029a 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/trades/Trade.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/trades/Trade.java @@ -3,6 +3,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Optional; @@ -77,6 +78,13 @@ public Trade(Security security, Portfolio portfolio, long shares) .sum() / (double) shares); } + // let's sort again because the list might not be sorted anymore due to transfers + Collections.sort(transactions, + (p1, p2) -> p1.getTransaction().getDateTime().compareTo(p2.getTransaction().getDateTime())); + + // re-set start date from first entry after sorting + this.setStart(transactions.get(0).getTransaction().getDateTime()); + calculateIRR(converter); } diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/trades/TradeCollector.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/trades/TradeCollector.java index 18472e62c6..4bdfabe136 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/trades/TradeCollector.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/trades/TradeCollector.java @@ -113,6 +113,10 @@ private Trade createNewTradeFromSell(Map p1.getTransaction().getDateTime().compareTo(p2.getTransaction().getDateTime())); for (TransactionPair candidate : new ArrayList<>(open)) {