From 3b846bc44be4acedf4468e7497363d65470e355e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 25 Oct 2024 20:42:24 +0200 Subject: [PATCH] Fix calculation of allocation cluster risk X-ray rules --- .../src/app/portfolio/portfolio.service.ts | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index ea366304a..28df6398d 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1169,6 +1169,12 @@ export class PortfolioService { withSummary: true }); + const marketsTotalInBaseCurrency = getSum( + Object.values(markets).map(({ valueInBaseCurrency }) => { + return new Big(valueInBaseCurrency); + }) + ).toNumber(); + return { rules: { accountClusterRisk: @@ -1193,12 +1199,12 @@ export class PortfolioService { [ new AllocationClusterRiskDevelopedMarkets( this.exchangeRateDataService, - summary.currentValueInBaseCurrency, + marketsTotalInBaseCurrency, markets.developedMarkets.valueInBaseCurrency ), new AllocationClusterRiskEmergingMarkets( this.exchangeRateDataService, - summary.currentValueInBaseCurrency, + marketsTotalInBaseCurrency, markets.emergingMarkets.valueInBaseCurrency ) ], @@ -1358,20 +1364,20 @@ export class PortfolioService { } } - const marketsTotal = - markets.developedMarkets.valueInBaseCurrency + - markets.emergingMarkets.valueInBaseCurrency + - markets.otherMarkets.valueInBaseCurrency + - markets[UNKNOWN_KEY].valueInBaseCurrency; + const marketsTotalInBaseCurrency = getSum( + Object.values(markets).map(({ valueInBaseCurrency }) => { + return new Big(valueInBaseCurrency); + }) + ).toNumber(); markets.developedMarkets.valueInPercentage = - markets.developedMarkets.valueInBaseCurrency / marketsTotal; + markets.developedMarkets.valueInBaseCurrency / marketsTotalInBaseCurrency; markets.emergingMarkets.valueInPercentage = - markets.emergingMarkets.valueInBaseCurrency / marketsTotal; + markets.emergingMarkets.valueInBaseCurrency / marketsTotalInBaseCurrency; markets.otherMarkets.valueInPercentage = - markets.otherMarkets.valueInBaseCurrency / marketsTotal; + markets.otherMarkets.valueInBaseCurrency / marketsTotalInBaseCurrency; markets[UNKNOWN_KEY].valueInPercentage = - markets[UNKNOWN_KEY].valueInBaseCurrency / marketsTotal; + markets[UNKNOWN_KEY].valueInBaseCurrency / marketsTotalInBaseCurrency; const marketsAdvancedTotal = marketsAdvanced.asiaPacific.valueInBaseCurrency +