Browse Source

Harden getOrdersWithMarketPrices of the portfolio calculator base class

pull/7914/head
Thomas Kaul 4 weeks ago
parent
commit
0dc61230bb
  1. 11
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  2. 9
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts

11
apps/api/src/app/portfolio/calculator/portfolio-calculator.ts

@ -858,9 +858,18 @@ export abstract class PortfolioCalculator {
unitPriceAtEndDate: Big;
unitPriceAtStartDate: Big;
}): PortfolioOrderItem[] {
if (orders.length <= 0) {
return [];
}
const assetProfileIdentifier = getAssetProfileIdentifier(assetProfile);
const dateStringOfFirstActivity = orders[0].date;
const ordersWithMarketPrices = [...orders];
// Copy the items as they are enriched below. A shallow copy is sufficient
// because only top-level properties are written.
const ordersWithMarketPrices = orders.map((order) => {
return { ...order };
});
// Add a synthetic order at the start and the end date
ordersWithMarketPrices.push({

9
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts

@ -183,13 +183,8 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator {
symbol
});
// Copy the items as they are enriched below. A shallow copy is sufficient
// because only top-level properties are written.
let orders: PortfolioOrderItem[] = (
this.activitiesByAssetProfileIdentifier[assetProfileIdentifier] ?? []
).map((activity) => {
return { ...activity };
});
let orders: PortfolioOrderItem[] =
this.activitiesByAssetProfileIdentifier[assetProfileIdentifier] ?? [];
const isCash = orders[0]?.assetProfile?.assetSubClass === 'CASH';

Loading…
Cancel
Save