Browse Source

Added Timeweighted performance + huge refactoring

pull/5027/head
Daniel Devaud 2 years ago
parent
commit
371ce7ee93
  1. 1476
      apps/api/src/app/portfolio/portfolio-calculator.ts
  2. 6
      apps/api/src/app/portfolio/portfolio.controller.ts
  3. 14
      apps/api/src/app/portfolio/portfolio.service.ts

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

File diff suppressed because it is too large

6
apps/api/src/app/portfolio/portfolio.controller.ts

@ -359,7 +359,8 @@ export class PortfolioController {
@Query('assetClasses') filterByAssetClasses?: string,
@Query('range') dateRange: DateRange = 'max',
@Query('tags') filterByTags?: string,
@Query('withExcludedAccounts') withExcludedAccounts = false
@Query('withExcludedAccounts') withExcludedAccounts = false,
@Query('timeWeightedPerformance') calculateTimeWeightedPerformance = false
): Promise<PortfolioPerformanceResponse> {
const filters = this.apiService.buildFiltersFromQueryParams({
filterByAccounts,
@ -372,7 +373,8 @@ export class PortfolioController {
filters,
impersonationId,
withExcludedAccounts,
userId: this.request.user.id
userId: this.request.user.id,
calculateTimeWeightedPerformance
});
if (

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

@ -1153,13 +1153,15 @@ export class PortfolioService {
filters,
impersonationId,
userId,
withExcludedAccounts = false
withExcludedAccounts = false,
calculateTimeWeightedPerformance = false
}: {
dateRange?: DateRange;
filters?: Filter[];
impersonationId: string;
userId: string;
withExcludedAccounts?: boolean;
calculateTimeWeightedPerformance?: boolean;
}): Promise<PortfolioPerformanceResponse> {
userId = await this.getUserId(impersonationId, userId);
const user = await this.userService.user({ id: userId });
@ -1254,7 +1256,8 @@ export class PortfolioService {
portfolioOrders,
transactionPoints,
userCurrency,
userId
userId,
calculateTimeWeightedPerformance
});
const itemOfToday = items.find(({ date }) => {
@ -1463,7 +1466,8 @@ export class PortfolioService {
portfolioOrders,
transactionPoints,
userCurrency,
userId
userId,
calculateTimeWeightedPerformance
}: {
dateRange?: DateRange;
impersonationId: string;
@ -1471,6 +1475,7 @@ export class PortfolioService {
transactionPoints: TransactionPoint[];
userCurrency: string;
userId: string;
calculateTimeWeightedPerformance: boolean;
}): Promise<HistoricalDataContainer> {
if (transactionPoints.length === 0) {
return {
@ -1503,7 +1508,8 @@ export class PortfolioService {
const items = await portfolioCalculator.getChartData(
startDate,
endDate,
step
step,
calculateTimeWeightedPerformance
);
return {

Loading…
Cancel
Save