ignore missing values
This commit is contained in:
parent
8e4ee7feea
commit
cbe079ae66
@ -169,7 +169,10 @@ export class PortfolioCalculator {
|
||||
) {
|
||||
j++;
|
||||
}
|
||||
timelinePeriodPromises.push(this.getTimePeriodForDate(j, currentDate));
|
||||
const timePeriodForDate = this.getTimePeriodForDate(j, currentDate);
|
||||
if (timePeriodForDate != null) {
|
||||
timelinePeriodPromises.push(timePeriodForDate);
|
||||
}
|
||||
}
|
||||
console.timeEnd('calculate-timeline-calculations');
|
||||
|
||||
@ -185,7 +188,10 @@ export class PortfolioCalculator {
|
||||
return timelinePeriods;
|
||||
}
|
||||
|
||||
private async getTimePeriodForDate(j: number, currentDate: Date) {
|
||||
private async getTimePeriodForDate(
|
||||
j: number,
|
||||
currentDate: Date
|
||||
): Promise<TimelinePeriod> {
|
||||
let investment: Big = new Big(0);
|
||||
const promises = [];
|
||||
if (j >= 0) {
|
||||
@ -204,10 +210,19 @@ export class PortfolioCalculator {
|
||||
}
|
||||
}
|
||||
|
||||
const value = (await Promise.all(promises)).reduce(
|
||||
(a, b) => a.add(b),
|
||||
new Big(0)
|
||||
);
|
||||
const result = await Promise.all(promises).catch((e) => {
|
||||
console.error(
|
||||
`failed to fetch info for date ${currentDate} with exception`,
|
||||
e
|
||||
);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (result == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const value = result.reduce((a, b) => a.add(b), new Big(0));
|
||||
return {
|
||||
date: format(currentDate, DATE_FORMAT),
|
||||
grossPerformance: value.minus(investment),
|
||||
|
@ -26,7 +26,6 @@ import Big from 'big.js';
|
||||
import {
|
||||
add,
|
||||
addMonths,
|
||||
endOfToday,
|
||||
format,
|
||||
getDate,
|
||||
getMonth,
|
||||
@ -43,7 +42,6 @@ import {
|
||||
subDays,
|
||||
subYears
|
||||
} from 'date-fns';
|
||||
import { port } from 'envalid';
|
||||
import { isEmpty } from 'lodash';
|
||||
import * as roundTo from 'round-to';
|
||||
|
||||
@ -204,11 +202,13 @@ export class PortfolioService {
|
||||
format(new Date(), dateFormat)
|
||||
);
|
||||
|
||||
return timeline.map((timelineItem) => ({
|
||||
date: timelineItem.date,
|
||||
value: timelineItem.grossPerformance,
|
||||
marketPrice: timelineItem.value
|
||||
}));
|
||||
return timeline
|
||||
.filter((timelineItem) => timelineItem !== null)
|
||||
.map((timelineItem) => ({
|
||||
date: timelineItem.date,
|
||||
value: timelineItem.grossPerformance,
|
||||
marketPrice: timelineItem.value
|
||||
}));
|
||||
}
|
||||
|
||||
private getStartDate(aDateRange: DateRange, portfolioStart: Date) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user