From 19bcd601d1857fe4075235dc78f2b6fa4209c426 Mon Sep 17 00:00:00 2001 From: Valentin Zickner Date: Wed, 7 Jul 2021 22:34:41 +0200 Subject: [PATCH] add gross performance --- .../src/app/core/portfolio-calculator.spec.ts | 160 +++++++++--------- apps/api/src/app/core/portfolio-calculator.ts | 2 +- 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/apps/api/src/app/core/portfolio-calculator.spec.ts b/apps/api/src/app/core/portfolio-calculator.spec.ts index 4fb06fe77..da150535e 100644 --- a/apps/api/src/app/core/portfolio-calculator.spec.ts +++ b/apps/api/src/app/core/portfolio-calculator.spec.ts @@ -573,19 +573,19 @@ describe('PortfolioCalculator', () => { expect(timeline).toEqual([ { date: '2019-01-01', - grossPerformance: 0, + grossPerformance: new Big('0'), investment: new Big('0'), value: new Big('0') }, { date: '2020-01-01', - grossPerformance: 0, + grossPerformance: new Big('498.3'), investment: new Big('2923.7'), value: new Big('3422') // 20 * (144.38 + days=335 * 0.08) }, { date: '2021-01-01', - grossPerformance: 0, + grossPerformance: new Big('349.35'), investment: new Big('652.55'), value: new Big('1001.9') // 5 * (144.38 + days=700 * 0.08) } @@ -613,181 +613,181 @@ describe('PortfolioCalculator', () => { expect(timeline).toEqual([ { date: '2019-01-01', - grossPerformance: 0, + grossPerformance: new Big('0'), investment: new Big('0'), value: new Big('0') }, { date: '2019-02-01', - grossPerformance: 0, + grossPerformance: new Big('0'), investment: new Big('1443.8'), value: new Big('1443.8') // 10 * (144.38 + days=0 * 0.08) }, { date: '2019-03-01', - grossPerformance: 0, + grossPerformance: new Big('22.4'), investment: new Big('1443.8'), value: new Big('1466.2') // 10 * (144.38 + days=28 * 0.08) }, { date: '2019-04-01', - grossPerformance: 0, + grossPerformance: new Big('47.2'), investment: new Big('1443.8'), value: new Big('1491') // 10 * (144.38 + days=59 * 0.08) }, { date: '2019-05-01', - grossPerformance: 0, + grossPerformance: new Big('71.2'), investment: new Big('1443.8'), value: new Big('1515') // 10 * (144.38 + days=89 * 0.08) }, { date: '2019-06-01', - grossPerformance: 0, + grossPerformance: new Big('96'), investment: new Big('1443.8'), value: new Big('1539.8') // 10 * (144.38 + days=120 * 0.08) }, { date: '2019-07-01', - grossPerformance: 0, + grossPerformance: new Big('120'), investment: new Big('1443.8'), value: new Big('1563.8') // 10 * (144.38 + days=150 * 0.08) }, { date: '2019-08-01', - grossPerformance: 0, + grossPerformance: new Big('144.8'), investment: new Big('1443.8'), value: new Big('1588.6') // 10 * (144.38 + days=181 * 0.08) }, { date: '2019-09-01', - grossPerformance: 0, + grossPerformance: new Big('303.1'), investment: new Big('2923.7'), value: new Big('3226.8') // 20 * (144.38 + days=212 * 0.08) }, { date: '2019-10-01', - grossPerformance: 0, + grossPerformance: new Big('351.1'), investment: new Big('2923.7'), value: new Big('3274.8') // 20 * (144.38 + days=242 * 0.08) }, { date: '2019-11-01', - grossPerformance: 0, + grossPerformance: new Big('400.7'), investment: new Big('2923.7'), value: new Big('3324.4') // 20 * (144.38 + days=273 * 0.08) }, { date: '2019-12-01', - grossPerformance: 0, + grossPerformance: new Big('448.7'), investment: new Big('2923.7'), value: new Big('3372.4') // 20 * (144.38 + days=303 * 0.08) }, { date: '2020-01-01', - grossPerformance: 0, + grossPerformance: new Big('498.3'), investment: new Big('2923.7'), value: new Big('3422') // 20 * (144.38 + days=335 * 0.08) }, { date: '2020-02-01', - grossPerformance: 0, + grossPerformance: new Big('547.9'), investment: new Big('2923.7'), value: new Big('3471.6') // 20 * (144.38 + days=365 * 0.08) }, { date: '2020-03-01', - grossPerformance: 0, + grossPerformance: new Big('226.95'), investment: new Big('652.55'), value: new Big('879.5') // 5 * (144.38 + days=394 * 0.08) }, { date: '2020-04-01', - grossPerformance: 0, + grossPerformance: new Big('239.35'), investment: new Big('652.55'), value: new Big('891.9') // 5 * (144.38 + days=425 * 0.08) }, { date: '2020-05-01', - grossPerformance: 0, + grossPerformance: new Big('251.35'), investment: new Big('652.55'), value: new Big('903.9') // 5 * (144.38 + days=455 * 0.08) }, { date: '2020-06-01', - grossPerformance: 0, + grossPerformance: new Big('263.75'), investment: new Big('652.55'), value: new Big('916.3') // 5 * (144.38 + days=486 * 0.08) }, { date: '2020-07-01', - grossPerformance: 0, + grossPerformance: new Big('275.75'), investment: new Big('652.55'), value: new Big('928.3') // 5 * (144.38 + days=516 * 0.08) }, { date: '2020-08-01', - grossPerformance: 0, + grossPerformance: new Big('288.15'), investment: new Big('652.55'), value: new Big('940.7') // 5 * (144.38 + days=547 * 0.08) }, { date: '2020-09-01', - grossPerformance: 0, + grossPerformance: new Big('300.55'), investment: new Big('652.55'), value: new Big('953.1') // 5 * (144.38 + days=578 * 0.08) }, { date: '2020-10-01', - grossPerformance: 0, + grossPerformance: new Big('312.55'), investment: new Big('652.55'), value: new Big('965.1') // 5 * (144.38 + days=608 * 0.08) }, { date: '2020-11-01', - grossPerformance: 0, + grossPerformance: new Big('324.95'), investment: new Big('652.55'), value: new Big('977.5') // 5 * (144.38 + days=639 * 0.08) }, { date: '2020-12-01', - grossPerformance: 0, + grossPerformance: new Big('336.95'), investment: new Big('652.55'), value: new Big('989.5') // 5 * (144.38 + days=669 * 0.08) }, { date: '2021-01-01', - grossPerformance: 0, + grossPerformance: new Big('349.35'), investment: new Big('652.55'), value: new Big('1001.9') // 5 * (144.38 + days=700 * 0.08) }, { date: '2021-02-01', - grossPerformance: 0, + grossPerformance: new Big('358.85'), investment: new Big('2684.05'), value: new Big('3042.9') // 15 * (144.38 + days=731 * 0.08) }, { date: '2021-03-01', - grossPerformance: 0, + grossPerformance: new Big('392.45'), investment: new Big('2684.05'), value: new Big('3076.5') // 15 * (144.38 + days=759 * 0.08) }, { date: '2021-04-01', - grossPerformance: 0, + grossPerformance: new Big('429.65'), investment: new Big('2684.05'), value: new Big('3113.7') // 15 * (144.38 + days=790 * 0.08) }, { date: '2021-05-01', - grossPerformance: 0, + grossPerformance: new Big('465.65'), investment: new Big('2684.05'), value: new Big('3149.7') // 15 * (144.38 + days=820 * 0.08) }, { date: '2021-06-01', - grossPerformance: 0, + grossPerformance: new Big('502.85'), investment: new Big('2684.05'), value: new Big('3186.9') // 15 * (144.38 + days=851 * 0.08) } @@ -819,49 +819,49 @@ describe('PortfolioCalculator', () => { expect(timeline).toEqual([ { date: '2019-01-01', - grossPerformance: 0, + grossPerformance: new Big('0'), investment: new Big('0'), value: new Big('0') }, { date: '2020-01-01', - grossPerformance: 0, + grossPerformance: new Big('498.3'), investment: new Big('2923.7'), value: new Big('3422') // 20 * (144.38 + days=335 * 0.08) }, { date: '2021-01-01', - grossPerformance: 0, + grossPerformance: new Big('349.35'), investment: new Big('652.55'), value: new Big('1001.9') // 5 * (144.38 + days=700 * 0.08) }, { date: '2021-02-01', - grossPerformance: 0, + grossPerformance: new Big('358.85'), investment: new Big('2684.05'), value: new Big('3042.9') // 15 * (144.38 + days=731 * 0.08) }, { date: '2021-03-01', - grossPerformance: 0, + grossPerformance: new Big('392.45'), investment: new Big('2684.05'), value: new Big('3076.5') // 15 * (144.38 + days=759 * 0.08) }, { date: '2021-04-01', - grossPerformance: 0, + grossPerformance: new Big('429.65'), investment: new Big('2684.05'), value: new Big('3113.7') // 15 * (144.38 + days=790 * 0.08) }, { date: '2021-05-01', - grossPerformance: 0, + grossPerformance: new Big('465.65'), investment: new Big('2684.05'), value: new Big('3149.7') // 15 * (144.38 + days=820 * 0.08) }, { date: '2021-06-01', - grossPerformance: 0, + grossPerformance: new Big('502.85'), investment: new Big('2684.05'), value: new Big('3186.9') // 15 * (144.38 + days=851 * 0.08) } @@ -897,223 +897,223 @@ describe('PortfolioCalculator', () => { expect(timeline).toEqual([ { date: '2019-01-01', - grossPerformance: 0, + grossPerformance: new Big('0'), investment: new Big('0'), value: new Big('0') }, { date: '2020-01-01', - grossPerformance: 0, + grossPerformance: new Big('498.3'), investment: new Big('2923.7'), value: new Big('3422') // 20 * (144.38 + days=335 * 0.08) }, { date: '2021-01-01', - grossPerformance: 0, + grossPerformance: new Big('349.35'), investment: new Big('652.55'), value: new Big('1001.9') // 5 * (144.38 + days=700 * 0.08) }, { date: '2021-02-01', - grossPerformance: 0, + grossPerformance: new Big('358.85'), investment: new Big('2684.05'), value: new Big('3042.9') // 15 * (144.38 + days=731 * 0.08) }, { date: '2021-03-01', - grossPerformance: 0, + grossPerformance: new Big('392.45'), investment: new Big('2684.05'), value: new Big('3076.5') // 15 * (144.38 + days=759 * 0.08) }, { date: '2021-04-01', - grossPerformance: 0, + grossPerformance: new Big('429.65'), investment: new Big('2684.05'), value: new Big('3113.7') // 15 * (144.38 + days=790 * 0.08) }, { date: '2021-05-01', - grossPerformance: 0, + grossPerformance: new Big('465.65'), investment: new Big('2684.05'), value: new Big('3149.7') // 15 * (144.38 + days=820 * 0.08) }, { date: '2021-06-01', - grossPerformance: 0, + grossPerformance: new Big('502.85'), investment: new Big('2684.05'), value: new Big('3186.9') // 15 * (144.38 + days=851 * 0.08) }, { date: '2021-06-02', - grossPerformance: 0, + grossPerformance: new Big('504.05'), investment: new Big('2684.05'), value: new Big('3188.1') // 15 * (144.38 + days=852 * 0.08) / +1.2 }, { date: '2021-06-03', - grossPerformance: 0, + grossPerformance: new Big('505.25'), investment: new Big('2684.05'), value: new Big('3189.3') // +1.2 }, { date: '2021-06-04', - grossPerformance: 0, + grossPerformance: new Big('506.45'), investment: new Big('2684.05'), value: new Big('3190.5') // +1.2 }, { date: '2021-06-05', - grossPerformance: 0, + grossPerformance: new Big('507.65'), investment: new Big('2684.05'), value: new Big('3191.7') // +1.2 }, { date: '2021-06-06', - grossPerformance: 0, + grossPerformance: new Big('508.85'), investment: new Big('2684.05'), value: new Big('3192.9') // +1.2 }, { date: '2021-06-07', - grossPerformance: 0, + grossPerformance: new Big('510.05'), investment: new Big('2684.05'), value: new Big('3194.1') // +1.2 }, { date: '2021-06-08', - grossPerformance: 0, + grossPerformance: new Big('511.25'), investment: new Big('2684.05'), value: new Big('3195.3') // +1.2 }, { date: '2021-06-09', - grossPerformance: 0, + grossPerformance: new Big('512.45'), investment: new Big('2684.05'), value: new Big('3196.5') // +1.2 }, { date: '2021-06-10', - grossPerformance: 0, + grossPerformance: new Big('513.65'), investment: new Big('2684.05'), value: new Big('3197.7') // +1.2 }, { date: '2021-06-11', - grossPerformance: 0, + grossPerformance: new Big('514.85'), investment: new Big('2684.05'), value: new Big('3198.9') // +1.2 }, { date: '2021-06-12', - grossPerformance: 0, + grossPerformance: new Big('516.05'), investment: new Big('2684.05'), value: new Big('3200.1') // +1.2 }, { date: '2021-06-13', - grossPerformance: 0, + grossPerformance: new Big('517.25'), investment: new Big('2684.05'), value: new Big('3201.3') // +1.2 }, { date: '2021-06-14', - grossPerformance: 0, + grossPerformance: new Big('518.45'), investment: new Big('2684.05'), value: new Big('3202.5') // +1.2 }, { date: '2021-06-15', - grossPerformance: 0, + grossPerformance: new Big('519.65'), investment: new Big('2684.05'), value: new Big('3203.7') // +1.2 }, { date: '2021-06-16', - grossPerformance: 0, + grossPerformance: new Big('520.85'), investment: new Big('2684.05'), value: new Big('3204.9') // +1.2 }, { date: '2021-06-17', - grossPerformance: 0, + grossPerformance: new Big('522.05'), investment: new Big('2684.05'), value: new Big('3206.1') // +1.2 }, { date: '2021-06-18', - grossPerformance: 0, + grossPerformance: new Big('523.25'), investment: new Big('2684.05'), value: new Big('3207.3') // +1.2 }, { date: '2021-06-19', - grossPerformance: 0, + grossPerformance: new Big('524.45'), investment: new Big('2684.05'), value: new Big('3208.5') // +1.2 }, { date: '2021-06-20', - grossPerformance: 0, + grossPerformance: new Big('525.65'), investment: new Big('2684.05'), value: new Big('3209.7') // +1.2 }, { date: '2021-06-21', - grossPerformance: 0, + grossPerformance: new Big('526.85'), investment: new Big('2684.05'), value: new Big('3210.9') // +1.2 }, { date: '2021-06-22', - grossPerformance: 0, + grossPerformance: new Big('528.05'), investment: new Big('2684.05'), value: new Big('3212.1') // +1.2 }, { date: '2021-06-23', - grossPerformance: 0, + grossPerformance: new Big('529.25'), investment: new Big('2684.05'), value: new Big('3213.3') // +1.2 }, { date: '2021-06-24', - grossPerformance: 0, + grossPerformance: new Big('530.45'), investment: new Big('2684.05'), value: new Big('3214.5') // +1.2 }, { date: '2021-06-25', - grossPerformance: 0, + grossPerformance: new Big('531.65'), investment: new Big('2684.05'), value: new Big('3215.7') // +1.2 }, { date: '2021-06-26', - grossPerformance: 0, + grossPerformance: new Big('532.85'), investment: new Big('2684.05'), value: new Big('3216.9') // +1.2 }, { date: '2021-06-27', - grossPerformance: 0, + grossPerformance: new Big('534.05'), investment: new Big('2684.05'), value: new Big('3218.1') // +1.2 }, { date: '2021-06-28', - grossPerformance: 0, + grossPerformance: new Big('535.25'), investment: new Big('2684.05'), value: new Big('3219.3') // +1.2 }, { date: '2021-06-29', - grossPerformance: 0, + grossPerformance: new Big('536.45'), investment: new Big('2684.05'), value: new Big('3220.5') // +1.2 }, { date: '2021-06-30', - grossPerformance: 0, + grossPerformance: new Big('537.65'), investment: new Big('2684.05'), value: new Big('3221.7') // +1.2 } @@ -1163,13 +1163,13 @@ describe('PortfolioCalculator', () => { expect(timeline).toEqual([ { date: '2019-01-01', - grossPerformance: 0, + grossPerformance: new Big('0'), investment: new Big('0'), value: new Big('0') }, { date: '2020-01-01', - grossPerformance: 0, + grossPerformance: new Big('267.2'), investment: new Big('11553.75'), value: new Big('11820.95') // 10 * (144.38 + days=334 * 0.08) + 5 * 2021.99 } diff --git a/apps/api/src/app/core/portfolio-calculator.ts b/apps/api/src/app/core/portfolio-calculator.ts index fc1ec1a89..2804388a5 100644 --- a/apps/api/src/app/core/portfolio-calculator.ts +++ b/apps/api/src/app/core/portfolio-calculator.ts @@ -187,7 +187,7 @@ export class PortfolioCalculator { ); timelinePeriod.push({ date: format(currentDate, DATE_FORMAT), - grossPerformance: 0, + grossPerformance: value.minus(investment), investment, value });