|
|
@ -201,6 +201,26 @@ export class GfAllocationsPageComponent implements OnInit { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private extractCurrency({ |
|
|
|
|
|
assetClass, |
|
|
|
|
|
assetSubClass, |
|
|
|
|
|
currency |
|
|
|
|
|
}: { |
|
|
|
|
|
assetClass: PortfolioPosition['assetProfile']['assetClass']; |
|
|
|
|
|
assetSubClass: PortfolioPosition['assetProfile']['assetSubClass']; |
|
|
|
|
|
currency?: PortfolioPosition['assetProfile']['currency']; |
|
|
|
|
|
}) { |
|
|
|
|
|
if ( |
|
|
|
|
|
assetClass === AssetClass.COMMODITY || |
|
|
|
|
|
assetSubClass === AssetSubClass.CRYPTOCURRENCY |
|
|
|
|
|
) { |
|
|
|
|
|
// Commodities and cryptocurrencies have no meaningful currency exposure
|
|
|
|
|
|
return UNKNOWN_KEY; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return currency; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
private extractEtfProvider({ |
|
|
private extractEtfProvider({ |
|
|
assetSubClass, |
|
|
assetSubClass, |
|
|
name |
|
|
name |
|
|
@ -339,7 +359,7 @@ export class GfAllocationsPageComponent implements OnInit { |
|
|
position.assetProfile.assetSubClass || (UNKNOWN_KEY as AssetSubClass), |
|
|
position.assetProfile.assetSubClass || (UNKNOWN_KEY as AssetSubClass), |
|
|
assetSubClassLabel: |
|
|
assetSubClassLabel: |
|
|
position.assetProfile.assetSubClassLabel || UNKNOWN_KEY, |
|
|
position.assetProfile.assetSubClassLabel || UNKNOWN_KEY, |
|
|
currency: position.assetProfile.currency, |
|
|
currency: this.extractCurrency(position.assetProfile), |
|
|
etfProvider: this.extractEtfProvider({ |
|
|
etfProvider: this.extractEtfProvider({ |
|
|
assetSubClass: position.assetProfile.assetSubClass, |
|
|
assetSubClass: position.assetProfile.assetSubClass, |
|
|
name: position.assetProfile.name |
|
|
name: position.assetProfile.name |
|
|
@ -348,8 +368,7 @@ export class GfAllocationsPageComponent implements OnInit { |
|
|
name: position.assetProfile.name |
|
|
name: position.assetProfile.name |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
if (position.assetProfile.assetClass !== AssetClass.LIQUIDITY) { |
|
|
// Prepare analysis data by continents, countries, holdings and sectors
|
|
|
// Prepare analysis data by continents, countries, holdings and sectors except for liquidity
|
|
|
|
|
|
|
|
|
|
|
|
if (position.assetProfile.countries.length > 0) { |
|
|
if (position.assetProfile.countries.length > 0) { |
|
|
for (const country of position.assetProfile.countries) { |
|
|
for (const country of position.assetProfile.countries) { |
|
|
@ -461,7 +480,6 @@ export class GfAllocationsPageComponent implements OnInit { |
|
|
? this.portfolioDetails.holdings[symbol].valueInBaseCurrency |
|
|
? this.portfolioDetails.holdings[symbol].valueInBaseCurrency |
|
|
: this.portfolioDetails.holdings[symbol].valueInPercentage; |
|
|
: this.portfolioDetails.holdings[symbol].valueInPercentage; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (this.holdings[symbol].assetSubClass === 'ETF') { |
|
|
if (this.holdings[symbol].assetSubClass === 'ETF') { |
|
|
this.totalValueInEtf += this.holdings[symbol].value; |
|
|
this.totalValueInEtf += this.holdings[symbol].value; |
|
|
|