@ -45,6 +45,7 @@ import {
getAssetProfileIdentifier ,
getAssetProfileIdentifier ,
getSum ,
getSum ,
isAccountExcluded ,
isAccountExcluded ,
isCashPosition ,
isDraftActivity ,
isDraftActivity ,
parseDate ,
parseDate ,
resetHours ,
resetHours ,
@ -1682,6 +1683,14 @@ export class PortfolioService {
for ( const position of holdings ) {
for ( const position of holdings ) {
const value = position . valueInBaseCurrency ;
const value = position . valueInBaseCurrency ;
if (
isCashPosition ( position . assetProfile ) ||
position . assetProfile . assetSubClass === AssetSubClass . CRYPTOCURRENCY
) {
// Cash and cryptocurrencies do not belong to any specific market
continue ;
}
if ( position . assetProfile . countries . length > 0 ) {
if ( position . assetProfile . countries . length > 0 ) {
markets . developedMarkets . valueInBaseCurrency +=
markets . developedMarkets . valueInBaseCurrency +=
position . markets . developedMarkets * value ;
position . markets . developedMarkets * value ;
@ -1714,14 +1723,28 @@ export class PortfolioService {
} )
} )
) . toNumber ( ) ;
) . toNumber ( ) ;
markets . developedMarkets . valueInPercentage =
// The total can be zero when the portfolio only holds cash and / or
markets . developedMarkets . valueInBaseCurrency / marketsTotalInBaseCurrency ;
// cryptocurrencies, which are not assigned to any market
markets . emergingMarkets . valueInPercentage =
const toPercentage = ( valueInBaseCurrency : number , total : number ) = > {
markets . emergingMarkets . valueInBaseCurrency / marketsTotalInBaseCurrency ;
return total ? valueInBaseCurrency / total : 0 ;
markets . otherMarkets . valueInPercentage =
} ;
markets . otherMarkets . valueInBaseCurrency / marketsTotalInBaseCurrency ;
markets [ UNKNOWN_KEY ] . valueInPercentage =
markets . developedMarkets . valueInPercentage = toPercentage (
markets [ UNKNOWN_KEY ] . valueInBaseCurrency / marketsTotalInBaseCurrency ;
markets . developedMarkets . valueInBaseCurrency ,
marketsTotalInBaseCurrency
) ;
markets . emergingMarkets . valueInPercentage = toPercentage (
markets . emergingMarkets . valueInBaseCurrency ,
marketsTotalInBaseCurrency
) ;
markets . otherMarkets . valueInPercentage = toPercentage (
markets . otherMarkets . valueInBaseCurrency ,
marketsTotalInBaseCurrency
) ;
markets [ UNKNOWN_KEY ] . valueInPercentage = toPercentage (
markets [ UNKNOWN_KEY ] . valueInBaseCurrency ,
marketsTotalInBaseCurrency
) ;
const marketsAdvancedTotal =
const marketsAdvancedTotal =
marketsAdvanced . asiaPacific . valueInBaseCurrency +
marketsAdvanced . asiaPacific . valueInBaseCurrency +
@ -1732,21 +1755,34 @@ export class PortfolioService {
marketsAdvanced . otherMarkets . valueInBaseCurrency +
marketsAdvanced . otherMarkets . valueInBaseCurrency +
marketsAdvanced [ UNKNOWN_KEY ] . valueInBaseCurrency ;
marketsAdvanced [ UNKNOWN_KEY ] . valueInBaseCurrency ;
marketsAdvanced . asiaPacific . valueInPercentage =
marketsAdvanced . asiaPacific . valueInPercentage = toPercentage (
marketsAdvanced . asiaPacific . valueInBaseCurrency / marketsAdvancedTotal ;
marketsAdvanced . asiaPacific . valueInBaseCurrency ,
marketsAdvanced . emergingMarkets . valueInPercentage =
marketsAdvancedTotal
marketsAdvanced . emergingMarkets . valueInBaseCurrency /
) ;
marketsAdvancedTotal ;
marketsAdvanced . emergingMarkets . valueInPercentage = toPercentage (
marketsAdvanced . europe . valueInPercentage =
marketsAdvanced . emergingMarkets . valueInBaseCurrency ,
marketsAdvanced . europe . valueInBaseCurrency / marketsAdvancedTotal ;
marketsAdvancedTotal
marketsAdvanced . japan . valueInPercentage =
) ;
marketsAdvanced . japan . valueInBaseCurrency / marketsAdvancedTotal ;
marketsAdvanced . europe . valueInPercentage = toPercentage (
marketsAdvanced . northAmerica . valueInPercentage =
marketsAdvanced . europe . valueInBaseCurrency ,
marketsAdvanced . northAmerica . valueInBaseCurrency / marketsAdvancedTotal ;
marketsAdvancedTotal
marketsAdvanced . otherMarkets . valueInPercentage =
) ;
marketsAdvanced . otherMarkets . valueInBaseCurrency / marketsAdvancedTotal ;
marketsAdvanced . japan . valueInPercentage = toPercentage (
marketsAdvanced [ UNKNOWN_KEY ] . valueInPercentage =
marketsAdvanced . japan . valueInBaseCurrency ,
marketsAdvanced [ UNKNOWN_KEY ] . valueInBaseCurrency / marketsAdvancedTotal ;
marketsAdvancedTotal
) ;
marketsAdvanced . northAmerica . valueInPercentage = toPercentage (
marketsAdvanced . northAmerica . valueInBaseCurrency ,
marketsAdvancedTotal
) ;
marketsAdvanced . otherMarkets . valueInPercentage = toPercentage (
marketsAdvanced . otherMarkets . valueInBaseCurrency ,
marketsAdvancedTotal
) ;
marketsAdvanced [ UNKNOWN_KEY ] . valueInPercentage = toPercentage (
marketsAdvanced [ UNKNOWN_KEY ] . valueInBaseCurrency ,
marketsAdvancedTotal
) ;
return { markets , marketsAdvanced } ;
return { markets , marketsAdvanced } ;
}
}