|
@ -70,7 +70,7 @@ import { |
|
|
parseISO, |
|
|
parseISO, |
|
|
set |
|
|
set |
|
|
} from 'date-fns'; |
|
|
} from 'date-fns'; |
|
|
import { isEmpty, isNumber, uniq, uniqBy } from 'lodash'; |
|
|
import { isEmpty, isNumber, last, uniq, uniqBy } from 'lodash'; |
|
|
|
|
|
|
|
|
import { PortfolioCalculator } from './calculator/portfolio-calculator'; |
|
|
import { PortfolioCalculator } from './calculator/portfolio-calculator'; |
|
|
import { |
|
|
import { |
|
@ -1181,62 +1181,15 @@ export class PortfolioService { |
|
|
this.request.user.Settings.settings.isExperimentalFeatures |
|
|
this.request.user.Settings.settings.isExperimentalFeatures |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const { |
|
|
const { historicalData, errors, hasErrors } = |
|
|
chartData, |
|
|
await portfolioCalculator.getSnapshot(); |
|
|
currentValueInBaseCurrency, |
|
|
|
|
|
errors, |
|
|
|
|
|
grossPerformance, |
|
|
|
|
|
grossPerformancePercentage, |
|
|
|
|
|
grossPerformancePercentageWithCurrencyEffect, |
|
|
|
|
|
grossPerformanceWithCurrencyEffect, |
|
|
|
|
|
hasErrors, |
|
|
|
|
|
netPerformance, |
|
|
|
|
|
netPerformancePercentage, |
|
|
|
|
|
netPerformancePercentageWithCurrencyEffect, |
|
|
|
|
|
netPerformanceWithCurrencyEffect, |
|
|
|
|
|
totalInvestment |
|
|
|
|
|
} = await portfolioCalculator.getSnapshot(); |
|
|
|
|
|
|
|
|
|
|
|
console.timeEnd('------- PortfolioService.getPerformance - 3'); |
|
|
console.timeEnd('------- PortfolioService.getPerformance - 3'); |
|
|
console.time('------- PortfolioService.getPerformance - 4'); |
|
|
console.time('------- PortfolioService.getPerformance - 4'); |
|
|
|
|
|
|
|
|
let currentNetPerformance = netPerformance; |
|
|
|
|
|
|
|
|
|
|
|
let currentNetPerformancePercentage = netPerformancePercentage; |
|
|
|
|
|
|
|
|
|
|
|
let currentNetPerformancePercentageWithCurrencyEffect = |
|
|
|
|
|
netPerformancePercentageWithCurrencyEffect; |
|
|
|
|
|
|
|
|
|
|
|
let currentNetPerformanceWithCurrencyEffect = |
|
|
|
|
|
netPerformanceWithCurrencyEffect; |
|
|
|
|
|
|
|
|
|
|
|
let currentNetWorth = 0; |
|
|
|
|
|
|
|
|
|
|
|
console.timeEnd('------- PortfolioService.getPerformance - 4'); |
|
|
console.timeEnd('------- PortfolioService.getPerformance - 4'); |
|
|
console.time('------- PortfolioService.getPerformance - 5'); |
|
|
console.time('------- PortfolioService.getPerformance - 5'); |
|
|
|
|
|
|
|
|
const itemOfToday = chartData.find(({ date }) => { |
|
|
|
|
|
return date === format(new Date(), DATE_FORMAT); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
if (itemOfToday) { |
|
|
|
|
|
currentNetPerformance = new Big(itemOfToday.netPerformance); |
|
|
|
|
|
|
|
|
|
|
|
currentNetPerformancePercentage = new Big( |
|
|
|
|
|
itemOfToday.netPerformanceInPercentage |
|
|
|
|
|
).div(100); |
|
|
|
|
|
|
|
|
|
|
|
currentNetPerformancePercentageWithCurrencyEffect = new Big( |
|
|
|
|
|
itemOfToday.netPerformanceInPercentageWithCurrencyEffect |
|
|
|
|
|
).div(100); |
|
|
|
|
|
|
|
|
|
|
|
currentNetPerformanceWithCurrencyEffect = new Big( |
|
|
|
|
|
itemOfToday.netPerformanceWithCurrencyEffect |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
currentNetWorth = itemOfToday.netWorth; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
console.timeEnd('------- PortfolioService.getPerformance - 5'); |
|
|
console.timeEnd('------- PortfolioService.getPerformance - 5'); |
|
|
|
|
|
|
|
|
console.timeEnd('------ PortfolioService.getPerformance'); |
|
|
console.timeEnd('------ PortfolioService.getPerformance'); |
|
@ -1246,27 +1199,37 @@ export class PortfolioService { |
|
|
start: startDate |
|
|
start: startDate |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
const { |
|
|
|
|
|
grossPerformancePercent, |
|
|
|
|
|
netPerformance, |
|
|
|
|
|
netPerformanceInPercentage, |
|
|
|
|
|
netPerformanceInPercentageWithCurrencyEffect, |
|
|
|
|
|
netPerformanceWithCurrencyEffect, |
|
|
|
|
|
netWorth, |
|
|
|
|
|
totalInvestment, |
|
|
|
|
|
valueWithCurrencyEffect |
|
|
|
|
|
} = last(chart); |
|
|
|
|
|
|
|
|
return { |
|
|
return { |
|
|
chart, |
|
|
chart, |
|
|
errors, |
|
|
errors, |
|
|
hasErrors, |
|
|
hasErrors, |
|
|
firstOrderDate: parseDate(chartData[0]?.date), |
|
|
firstOrderDate: parseDate(historicalData[0]?.date), |
|
|
performance: { |
|
|
performance: { |
|
|
currentNetWorth, |
|
|
netPerformance, |
|
|
currentValueInBaseCurrency: currentValueInBaseCurrency.toNumber(), |
|
|
netPerformanceWithCurrencyEffect, |
|
|
grossPerformance: grossPerformance.toNumber(), |
|
|
totalInvestment, |
|
|
grossPerformancePercentage: grossPerformancePercentage.toNumber(), |
|
|
currentNetWorth: netWorth, |
|
|
grossPerformancePercentageWithCurrencyEffect: |
|
|
currentValueInBaseCurrency: valueWithCurrencyEffect, |
|
|
grossPerformancePercentageWithCurrencyEffect.toNumber(), |
|
|
// TODO
|
|
|
grossPerformanceWithCurrencyEffect: |
|
|
grossPerformance: 0, |
|
|
grossPerformanceWithCurrencyEffect.toNumber(), |
|
|
grossPerformancePercentage: grossPerformancePercent / 100, |
|
|
netPerformance: currentNetPerformance.toNumber(), |
|
|
grossPerformancePercentageWithCurrencyEffect: 0 / 100, |
|
|
netPerformancePercentage: currentNetPerformancePercentage.toNumber(), |
|
|
// TODO
|
|
|
|
|
|
grossPerformanceWithCurrencyEffect: 0, |
|
|
|
|
|
netPerformancePercentage: netPerformanceInPercentage / 100, |
|
|
netPerformancePercentageWithCurrencyEffect: |
|
|
netPerformancePercentageWithCurrencyEffect: |
|
|
currentNetPerformancePercentageWithCurrencyEffect.toNumber(), |
|
|
netPerformanceInPercentageWithCurrencyEffect / 100 |
|
|
netPerformanceWithCurrencyEffect: |
|
|
|
|
|
currentNetPerformanceWithCurrencyEffect.toNumber(), |
|
|
|
|
|
totalInvestment: totalInvestment.toNumber() |
|
|
|
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|