Browse Source

Fix time in market if no activity

pull/7428/head
Thomas Kaul 1 month ago
parent
commit
25b66ef4a2
  1. 44
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  2. 4
      apps/api/src/app/portfolio/portfolio.service.ts
  3. 2
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
  4. 2
      libs/common/src/lib/interfaces/portfolio-summary.interface.ts

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

@ -816,25 +816,39 @@ export abstract class PortfolioCalculator {
let firstAccountBalanceDate: Date;
let firstActivityDate: Date;
try {
const firstAccountBalanceDateString = this.accountBalanceItems[0]?.date;
firstAccountBalanceDate = firstAccountBalanceDateString
? parseDate(firstAccountBalanceDateString)
: new Date();
} catch (error) {
firstAccountBalanceDate = new Date();
if (this.accountBalanceItems?.length > 0) {
try {
const firstAccountBalanceDateString = this.accountBalanceItems[0].date;
firstAccountBalanceDate = firstAccountBalanceDateString
? parseDate(firstAccountBalanceDateString)
: new Date();
} catch (error) {
firstAccountBalanceDate = new Date();
}
}
try {
const firstActivityDateString = this.transactionPoints[0].date;
firstActivityDate = firstActivityDateString
? parseDate(firstActivityDateString)
: new Date();
} catch (error) {
firstActivityDate = new Date();
if (this.transactionPoints?.length > 0) {
try {
const firstActivityDateString = this.transactionPoints[0].date;
firstActivityDate = firstActivityDateString
? parseDate(firstActivityDateString)
: new Date();
} catch (error) {
firstActivityDate = new Date();
}
}
const dates = [firstAccountBalanceDate, firstActivityDate].filter(
(date) => {
return !!date;
}
);
if (dates.length === 0) {
return undefined;
}
return min([firstAccountBalanceDate, firstActivityDate]);
return min(dates);
}
protected abstract getSymbolMetrics({

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

@ -1986,7 +1986,9 @@ export class PortfolioService {
.minus(liabilities)
.toNumber();
const daysInMarket = differenceInDays(new Date(), dateOfFirstActivity);
const daysInMarket = dateOfFirstActivity
? differenceInDays(new Date(), dateOfFirstActivity)
: 0;
const annualizedPerformancePercent = getAnnualizedPerformancePercent({
daysInMarket,

2
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts

@ -116,7 +116,7 @@ export class GfPortfolioSummaryComponent implements OnChanges {
}
);
} else {
this.timeInMarket = '-';
this.timeInMarket = '';
}
} else {
this.timeInMarket = undefined;

2
libs/common/src/lib/interfaces/portfolio-summary.interface.ts

@ -6,7 +6,7 @@ export interface PortfolioSummary extends PortfolioPerformance {
annualizedPerformancePercent: number;
annualizedPerformancePercentWithCurrencyEffect: number;
cash: number;
dateOfFirstActivity: Date;
dateOfFirstActivity?: Date;
dividendInBaseCurrency: number;
emergencyFund: {
assets: number;

Loading…
Cancel
Save