Browse Source

portfolioCalculator performance calculation redundant async removed

pull/6468/head
Attila Cseh 2 weeks ago
parent
commit
0c4ca8f3ac
  1. 6
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  2. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts
  3. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts
  4. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts
  5. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts
  6. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts
  7. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts
  8. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts
  9. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts
  10. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts
  11. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts
  12. 10
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts
  13. 9
      apps/api/src/app/portfolio/portfolio.service.ts

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

@ -711,7 +711,7 @@ export abstract class PortfolioCalculator {
return this.snapshot.totalLiabilitiesWithCurrencyEffect; return this.snapshot.totalLiabilitiesWithCurrencyEffect;
} }
public async getPerformance({ data }: { data: HistoricalDataItem[] }) { public getPerformance({ data }: { data: HistoricalDataItem[] }) {
const chart: HistoricalDataItem[] = []; const chart: HistoricalDataItem[] = [];
let netPerformanceAtStartDate: number; let netPerformanceAtStartDate: number;
@ -771,7 +771,7 @@ export abstract class PortfolioCalculator {
return { chart }; return { chart };
} }
public async getPerformanceByGroup({ public getPerformanceByGroup({
data, data,
groupBy groupBy
}: { }: {
@ -784,7 +784,7 @@ export abstract class PortfolioCalculator {
const dataByYear = ldGroupBy(data, (item) => item.date.slice(0, 4)); const dataByYear = ldGroupBy(data, (item) => item.date.slice(0, 4));
for (const year of Object.keys(dataByYear)) { for (const year of Object.keys(dataByYear)) {
const { chart: yearChart } = await this.getPerformance({ const { chart: yearChart } = this.getPerformance({
data: Object.values(dataByYear[year]) data: Object.values(dataByYear[year])
}); });

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts

@ -138,12 +138,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big('595.6'), currentValueInBaseCurrency: new Big('595.6'),

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts

@ -154,12 +154,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big('0'), currentValueInBaseCurrency: new Big('0'),

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts

@ -138,12 +138,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big('0'), currentValueInBaseCurrency: new Big('0'),

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts

@ -128,12 +128,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big('297.8'), currentValueInBaseCurrency: new Big('297.8'),

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts

@ -137,12 +137,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot.historicalData[0]).toEqual({ expect(portfolioSnapshot.historicalData[0]).toEqual({
date: '2021-12-11', date: '2021-12-11',

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts

@ -151,12 +151,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big('13298.425356'), currentValueInBaseCurrency: new Big('13298.425356'),

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts

@ -137,12 +137,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot.historicalData[0]).toEqual({ expect(portfolioSnapshot.historicalData[0]).toEqual({
date: '2021-12-11', date: '2021-12-11',

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts

@ -134,12 +134,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big('103.10483'), currentValueInBaseCurrency: new Big('103.10483'),

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts

@ -134,12 +134,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big('0'), currentValueInBaseCurrency: new Big('0'),

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts

@ -98,12 +98,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big(0), currentValueInBaseCurrency: new Big(0),

10
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts

@ -134,12 +134,10 @@ describe('PortfolioCalculator', () => {
groupBy: 'year' groupBy: 'year'
}); });
const performanceByYear = await portfolioCalculator.getPerformanceByGroup( const performanceByYear = portfolioCalculator.getPerformanceByGroup({
{ data: portfolioSnapshot.historicalData,
data: portfolioSnapshot.historicalData, groupBy: 'year'
groupBy: 'year' });
}
);
expect(portfolioSnapshot).toMatchObject({ expect(portfolioSnapshot).toMatchObject({
currentValueInBaseCurrency: new Big('87.8'), currentValueInBaseCurrency: new Big('87.8'),

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

@ -1055,18 +1055,19 @@ export class PortfolioService {
return !isBefore(date, startDate) && !isAfter(date, endDate); return !isBefore(date, startDate) && !isAfter(date, endDate);
}); });
const { chart: intervalChart } = await portfolioCalculator.getPerformance({ const { chart: intervalChart } = portfolioCalculator.getPerformance({
data: items data: items
}); });
let chart = intervalChart; let chart = intervalChart;
if (groupBy) { if (groupBy) {
const { chart: groupedChart } = const { chart: groupedChart } = portfolioCalculator.getPerformanceByGroup(
await portfolioCalculator.getPerformanceByGroup({ {
data: items, data: items,
groupBy groupBy
}); }
);
chart = groupedChart; chart = groupedChart;
} }

Loading…
Cancel
Save