From 6cd79fab310fe348c2faeb8ba8c81793b1d6988d Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sun, 16 Mar 2025 20:59:21 +0100
Subject: [PATCH] Feature/rename TWR to ROAI (#4453)
* Rename TWR to ROAI
---
.../calculator/portfolio-calculator.factory.ts | 8 ++++----
...culator-baln-buy-and-sell-in-two-activities.spec.ts | 2 +-
.../portfolio-calculator-baln-buy-and-sell.spec.ts | 2 +-
.../portfolio-calculator-baln-buy.spec.ts | 2 +-
...io-calculator-btcusd-buy-and-sell-partially.spec.ts | 2 +-
.../{twr => roai}/portfolio-calculator-fee.spec.ts | 2 +-
.../portfolio-calculator-googl-buy.spec.ts | 2 +-
.../{twr => roai}/portfolio-calculator-item.spec.ts | 2 +-
.../portfolio-calculator-liability.spec.ts | 2 +-
...portfolio-calculator-msft-buy-with-dividend.spec.ts | 2 +-
.../portfolio-calculator-no-orders.spec.ts | 2 +-
...olio-calculator-novn-buy-and-sell-partially.spec.ts | 2 +-
.../portfolio-calculator-novn-buy-and-sell.spec.ts | 2 +-
.../{twr => roai}/portfolio-calculator.spec.ts | 0
.../calculator/{twr => roai}/portfolio-calculator.ts | 2 +-
apps/api/src/app/portfolio/portfolio.service.ts | 10 +++++-----
.../portfolio-snapshot/portfolio-snapshot.processor.ts | 2 +-
.../portfolio-summary/portfolio-summary.component.html | 4 ++--
18 files changed, 25 insertions(+), 25 deletions(-)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts (96%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-baln-buy-and-sell.spec.ts (99%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-baln-buy.spec.ts (99%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts (99%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-fee.spec.ts (99%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-googl-buy.spec.ts (99%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-item.spec.ts (99%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-liability.spec.ts (98%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-msft-buy-with-dividend.spec.ts (99%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-no-orders.spec.ts (98%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-novn-buy-and-sell-partially.spec.ts (99%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-novn-buy-and-sell.spec.ts (96%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator.spec.ts (100%)
rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator.ts (99%)
diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts
index 18738373..70f27fe7 100644
--- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts
+++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts
@@ -10,11 +10,11 @@ import { Injectable } from '@nestjs/common';
import { MWRPortfolioCalculator } from './mwr/portfolio-calculator';
import { PortfolioCalculator } from './portfolio-calculator';
-import { TWRPortfolioCalculator } from './twr/portfolio-calculator';
+import { RoaiPortfolioCalculator } from './roai/portfolio-calculator';
export enum PerformanceCalculationType {
MWR = 'MWR', // Money-Weighted Rate of Return
- TWR = 'TWR' // Time-Weighted Rate of Return
+ ROAI = 'ROAI' // Return on Average Investment
}
@Injectable()
@@ -56,8 +56,8 @@ export class PortfolioCalculatorFactory {
portfolioSnapshotService: this.portfolioSnapshotService,
redisCacheService: this.redisCacheService
});
- case PerformanceCalculationType.TWR:
- return new TWRPortfolioCalculator({
+ case PerformanceCalculationType.ROAI:
+ return new RoaiPortfolioCalculator({
accountBalanceItems,
activities,
currency,
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts
similarity index 96%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts
index deb3cd72..e157e2d2 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts
@@ -137,7 +137,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts
index 7b4d53b2..a1650ea8 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts
@@ -122,7 +122,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts
index 002cbd5e..63a4d77b 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts
@@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts
index 640de398..2853e3d8 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts
@@ -136,7 +136,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts
index 6f030a73..b96e4f54 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts
@@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'USD',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts
index 4e25c17f..b3793a5b 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts
@@ -120,7 +120,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts
index 7fc5c526..d226fe6f 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts
@@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'USD',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts
similarity index 98%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts
index 5fa90e94..569212b9 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts
@@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'USD',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts
index 54398542..4c54ba7a 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts
@@ -135,7 +135,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'USD',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts
similarity index 98%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts
index 84898490..77e3f615 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts
@@ -84,7 +84,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities: [],
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts
index 37f22e2f..84bcc5bc 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts
@@ -116,7 +116,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts
similarity index 96%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts
index caf196f5..937fd8b4 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts
@@ -116,7 +116,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF',
userId: userDummyData.id
});
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.spec.ts
similarity index 100%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.spec.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.spec.ts
diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts
similarity index 99%
rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts
rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts
index 059b8544..5b918fa0 100644
--- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts
+++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts
@@ -15,7 +15,7 @@ import { Big } from 'big.js';
import { addMilliseconds, differenceInDays, format, isBefore } from 'date-fns';
import { cloneDeep, sortBy } from 'lodash';
-export class TWRPortfolioCalculator extends PortfolioCalculator {
+export class RoaiPortfolioCalculator extends PortfolioCalculator {
private chartDates: string[];
protected calculateOverallPerformance(
diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts
index ce03c802..e90ebd4a 100644
--- a/apps/api/src/app/portfolio/portfolio.service.ts
+++ b/apps/api/src/app/portfolio/portfolio.service.ts
@@ -295,7 +295,7 @@ export class PortfolioService {
activities,
filters,
userId,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: this.request.user.Settings.settings.baseCurrency
});
@@ -372,7 +372,7 @@ export class PortfolioService {
activities,
filters,
userId,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: userCurrency
});
@@ -680,7 +680,7 @@ export class PortfolioService {
const portfolioCalculator = this.calculatorFactory.createCalculator({
activities,
userId,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: userCurrency
});
@@ -950,7 +950,7 @@ export class PortfolioService {
activities,
filters,
userId,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: this.request.user.Settings.settings.baseCurrency
});
@@ -1116,7 +1116,7 @@ export class PortfolioService {
activities,
filters,
userId,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: userCurrency
});
diff --git a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts
index 93b34cbd..60c3cf69 100644
--- a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts
+++ b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts
@@ -68,7 +68,7 @@ export class PortfolioSnapshotProcessor {
const portfolioCalculator = this.calculatorFactory.createCalculator({
accountBalanceItems,
activities,
- calculationType: PerformanceCalculationType.TWR,
+ calculationType: PerformanceCalculationType.ROAI,
currency: job.data.userCurrency,
filters: job.data.filters,
userId: job.data.userId
diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
index 2a888022..1a52bd64 100644
--- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
+++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
@@ -117,8 +117,8 @@