Browse Source

Smaller fixes for New Calculator

pull/5027/head
Dan 2 months ago
parent
commit
efd3fea6f2
  1. 54
      apps/api/src/app/portfolio/calculator/roi/portfolio-calculator-symbolmetrics-helper.ts
  2. 22
      apps/api/src/app/portfolio/portfolio.service.ts

54
apps/api/src/app/portfolio/calculator/roi/portfolio-calculator-symbolmetrics-helper.ts

@ -59,20 +59,11 @@ export class RoiPortfolioCalculatorSymbolMetricsHelper {
new Big(0))
) ?? new Big(0);
let investmentBasis =
symbolMetricsHelper.symbolMetrics.currentValuesWithCurrencyEffect[
rangeStartDateString
];
if (
!symbolMetricsHelper.symbolMetrics.currentValuesWithCurrencyEffect[
rangeStartDateString
]?.gt(0)
) {
investmentBasis =
symbolMetricsHelper.symbolMetrics
.timeWeightedInvestmentValuesWithCurrencyEffect[rangeEndDateString];
}
const investmentBasis = this.calculateInvestmentBasis(
symbolMetricsHelper,
rangeStartDateString,
rangeEndDateString
);
symbolMetricsHelper.symbolMetrics.netPerformancePercentageWithCurrencyEffectMap[
dateRange
@ -865,4 +856,39 @@ export class RoiPortfolioCalculatorSymbolMetricsHelper {
symbolMetricsHelper.exchangeRateAtOrderDate
);
}
private calculateInvestmentBasis(
symbolMetricsHelper: PortfolioCalculatorSymbolMetricsHelperObject,
rangeStartDateString: string,
rangeEndDateString: string
) {
let investmentBasis = this.getValueOrZero(
symbolMetricsHelper.symbolMetrics.currentValuesWithCurrencyEffect[
rangeStartDateString
]
).plus(
this.getValueOrZero(
symbolMetricsHelper.symbolMetrics
.timeWeightedInvestmentValuesWithCurrencyEffect[rangeEndDateString]
)?.minus(
this.getValueOrZero(
symbolMetricsHelper.symbolMetrics
.timeWeightedInvestmentValuesWithCurrencyEffect[
rangeStartDateString
]
)
)
);
if (!investmentBasis.gt(0)) {
investmentBasis =
symbolMetricsHelper.symbolMetrics
.timeWeightedInvestmentValuesWithCurrencyEffect[rangeEndDateString];
}
return investmentBasis;
}
private getValueOrZero(value: Big | undefined) {
return value ?? new Big(0);
}
}

22
apps/api/src/app/portfolio/portfolio.service.ts

@ -248,16 +248,18 @@ export class PortfolioService {
activities: Activity[];
groupBy?: GroupBy;
}): Promise<InvestmentItem[]> {
let dividends = activities.map(({ currency, date, value }) => {
return {
date: format(date, DATE_FORMAT),
investment: this.exchangeRateDataService.toCurrency(
value,
currency,
this.getUserCurrency()
)
};
});
let dividends = activities.map(
({ currency, date, value, SymbolProfile }) => {
return {
date: format(date, DATE_FORMAT),
investment: this.exchangeRateDataService.toCurrency(
value,
currency ?? SymbolProfile.currency,
this.getUserCurrency()
)
};
}
);
if (groupBy) {
dividends = this.getDividendsByGroup({ dividends, groupBy });

Loading…
Cancel
Save