Browse Source

Do not count days with 0 investment when calculating average investment

pull/3393/head
Reto Kaul 1 year ago
parent
commit
99f042da00
  1. 28
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

28
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

@ -877,8 +877,6 @@ export class TWRPortfolioCalculator extends PortfolioCalculator {
startDate = addDays(start, 1); startDate = addDays(start, 1);
} }
let average = new Big(0);
const currentValuesAtStartDateWithCurrencyEffect = const currentValuesAtStartDateWithCurrencyEffect =
currentValuesWithCurrencyEffect[format(startDate, DATE_FORMAT)] ?? currentValuesWithCurrencyEffect[format(startDate, DATE_FORMAT)] ??
new Big(0); new Big(0);
@ -901,11 +899,13 @@ export class TWRPortfolioCalculator extends PortfolioCalculator {
return format(date, DATE_FORMAT); return format(date, DATE_FORMAT);
}); });
let average = new Big(0);
let dayCount = 0; let dayCount = 0;
for (const date of dates) { for (const date of dates) {
if ( if (
investmentValuesAccumulatedWithCurrencyEffect[date] instanceof Big investmentValuesAccumulatedWithCurrencyEffect[date] instanceof Big &&
investmentValuesAccumulatedWithCurrencyEffect[date].gt(0)
) { ) {
average = average.add( average = average.add(
investmentValuesAccumulatedWithCurrencyEffect[date].add( investmentValuesAccumulatedWithCurrencyEffect[date].add(
@ -917,18 +917,16 @@ export class TWRPortfolioCalculator extends PortfolioCalculator {
} }
} }
average = average.div(dayCount); if (dayCount > 0) {
average = average.div(dayCount);
// TODO: Why without minus? }
netPerformanceWithCurrencyEffectMap[dateRange] = average.gt(0)
? netPerformanceValuesWithCurrencyEffect[ netPerformanceWithCurrencyEffectMap[dateRange] =
format(endDate, DATE_FORMAT) netPerformanceValuesWithCurrencyEffect[
] /*.minus( format(endDate, DATE_FORMAT)
netPerformanceValuesWithCurrencyEffect[ ].minus(
format(startDate, DATE_FORMAT) netPerformanceValuesWithCurrencyEffect[format(startDate, DATE_FORMAT)]
] );
)*/
: new Big(0);
netPerformancePercentageWithCurrencyEffectMap[dateRange] = average.gt(0) netPerformancePercentageWithCurrencyEffectMap[dateRange] = average.gt(0)
? netPerformanceWithCurrencyEffectMap[dateRange].div(average) ? netPerformanceWithCurrencyEffectMap[dateRange].div(average)

Loading…
Cancel
Save