|
|
@ -1338,12 +1338,12 @@ export class PortfolioService { |
|
|
}), |
|
|
}), |
|
|
rules: await this.rulesService.evaluate( |
|
|
rules: await this.rulesService.evaluate( |
|
|
[ |
|
|
[ |
|
|
new BuyingPower( |
|
|
new BuyingPower({ |
|
|
this.exchangeRateDataService, |
|
|
languageCode, |
|
|
this.i18nService, |
|
|
buyingPower: summary.cash, |
|
|
summary.cash, |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
languageCode |
|
|
i18nService: this.i18nService |
|
|
) |
|
|
}) |
|
|
], |
|
|
], |
|
|
userSettings |
|
|
userSettings |
|
|
) |
|
|
) |
|
|
@ -1356,24 +1356,24 @@ export class PortfolioService { |
|
|
}), |
|
|
}), |
|
|
rules: await this.rulesService.evaluate( |
|
|
rules: await this.rulesService.evaluate( |
|
|
[ |
|
|
[ |
|
|
new EmergencyFundSetup( |
|
|
new EmergencyFundSetup({ |
|
|
this.exchangeRateDataService, |
|
|
|
|
|
this.i18nService, |
|
|
|
|
|
languageCode, |
|
|
languageCode, |
|
|
totalEmergencyFundInBaseCurrency |
|
|
emergencyFundInBaseCurrency: totalEmergencyFundInBaseCurrency, |
|
|
), |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
|
|
|
i18nService: this.i18nService |
|
|
|
|
|
}), |
|
|
// The coverage is only meaningful once an emergency fund has been
|
|
|
// The coverage is only meaningful once an emergency fund has been
|
|
|
// set up, either by an amount or by the tagged holdings
|
|
|
// set up, either by an amount or by the tagged holdings
|
|
|
...(totalEmergencyFundInBaseCurrency > 0 |
|
|
...(totalEmergencyFundInBaseCurrency > 0 |
|
|
? [ |
|
|
? [ |
|
|
new EmergencyFundCoverage( |
|
|
new EmergencyFundCoverage({ |
|
|
this.exchangeRateDataService, |
|
|
cashBalanceInBaseCurrency, |
|
|
this.i18nService, |
|
|
|
|
|
languageCode, |
|
|
|
|
|
emergencyFundInBaseCurrency, |
|
|
|
|
|
emergencyFundHoldingsValueInBaseCurrency, |
|
|
emergencyFundHoldingsValueInBaseCurrency, |
|
|
cashBalanceInBaseCurrency |
|
|
emergencyFundInBaseCurrency, |
|
|
) |
|
|
languageCode, |
|
|
|
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
|
|
|
i18nService: this.i18nService |
|
|
|
|
|
}) |
|
|
] |
|
|
] |
|
|
: []) |
|
|
: []) |
|
|
], |
|
|
], |
|
|
@ -1389,18 +1389,18 @@ export class PortfolioService { |
|
|
rules: hasOpenHoldings |
|
|
rules: hasOpenHoldings |
|
|
? await this.rulesService.evaluate( |
|
|
? await this.rulesService.evaluate( |
|
|
[ |
|
|
[ |
|
|
new CurrencyClusterRiskBaseCurrencyCurrentInvestment( |
|
|
new CurrencyClusterRiskBaseCurrencyCurrentInvestment({ |
|
|
this.exchangeRateDataService, |
|
|
|
|
|
this.i18nService, |
|
|
|
|
|
holdings, |
|
|
holdings, |
|
|
languageCode |
|
|
languageCode, |
|
|
), |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
new CurrencyClusterRiskCurrentInvestment( |
|
|
i18nService: this.i18nService |
|
|
this.exchangeRateDataService, |
|
|
}), |
|
|
this.i18nService, |
|
|
new CurrencyClusterRiskCurrentInvestment({ |
|
|
holdings, |
|
|
holdings, |
|
|
languageCode |
|
|
languageCode, |
|
|
) |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
|
|
|
i18nService: this.i18nService |
|
|
|
|
|
}) |
|
|
], |
|
|
], |
|
|
userSettings |
|
|
userSettings |
|
|
) |
|
|
) |
|
|
@ -1415,18 +1415,18 @@ export class PortfolioService { |
|
|
rules: hasOpenHoldings |
|
|
rules: hasOpenHoldings |
|
|
? await this.rulesService.evaluate( |
|
|
? await this.rulesService.evaluate( |
|
|
[ |
|
|
[ |
|
|
new AssetClassClusterRiskEquity( |
|
|
new AssetClassClusterRiskEquity({ |
|
|
this.exchangeRateDataService, |
|
|
holdings, |
|
|
this.i18nService, |
|
|
|
|
|
languageCode, |
|
|
languageCode, |
|
|
holdings |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
), |
|
|
i18nService: this.i18nService |
|
|
new AssetClassClusterRiskFixedIncome( |
|
|
}), |
|
|
this.exchangeRateDataService, |
|
|
new AssetClassClusterRiskFixedIncome({ |
|
|
this.i18nService, |
|
|
holdings, |
|
|
languageCode, |
|
|
languageCode, |
|
|
holdings |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
) |
|
|
i18nService: this.i18nService |
|
|
|
|
|
}) |
|
|
], |
|
|
], |
|
|
userSettings |
|
|
userSettings |
|
|
) |
|
|
) |
|
|
@ -1442,18 +1442,18 @@ export class PortfolioService { |
|
|
summary.activityCount > 0 |
|
|
summary.activityCount > 0 |
|
|
? await this.rulesService.evaluate( |
|
|
? await this.rulesService.evaluate( |
|
|
[ |
|
|
[ |
|
|
new AccountClusterRiskCurrentInvestment( |
|
|
new AccountClusterRiskCurrentInvestment({ |
|
|
this.exchangeRateDataService, |
|
|
accounts, |
|
|
this.i18nService, |
|
|
|
|
|
languageCode, |
|
|
languageCode, |
|
|
accounts |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
), |
|
|
i18nService: this.i18nService |
|
|
new AccountClusterRiskSingleAccount( |
|
|
}), |
|
|
this.exchangeRateDataService, |
|
|
new AccountClusterRiskSingleAccount({ |
|
|
this.i18nService, |
|
|
accounts, |
|
|
languageCode, |
|
|
languageCode, |
|
|
accounts |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
) |
|
|
i18nService: this.i18nService |
|
|
|
|
|
}) |
|
|
], |
|
|
], |
|
|
userSettings |
|
|
userSettings |
|
|
) |
|
|
) |
|
|
@ -1468,20 +1468,22 @@ export class PortfolioService { |
|
|
rules: hasOpenHoldings |
|
|
rules: hasOpenHoldings |
|
|
? await this.rulesService.evaluate( |
|
|
? await this.rulesService.evaluate( |
|
|
[ |
|
|
[ |
|
|
new EconomicMarketClusterRiskDevelopedMarkets( |
|
|
new EconomicMarketClusterRiskDevelopedMarkets({ |
|
|
this.exchangeRateDataService, |
|
|
languageCode, |
|
|
this.i18nService, |
|
|
currentValueInBaseCurrency: marketsTotalInBaseCurrency, |
|
|
marketsTotalInBaseCurrency, |
|
|
developedMarketsValueInBaseCurrency: |
|
|
markets.developedMarkets.valueInBaseCurrency, |
|
|
markets.developedMarkets.valueInBaseCurrency, |
|
|
languageCode |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
), |
|
|
i18nService: this.i18nService |
|
|
new EconomicMarketClusterRiskEmergingMarkets( |
|
|
}), |
|
|
this.exchangeRateDataService, |
|
|
new EconomicMarketClusterRiskEmergingMarkets({ |
|
|
this.i18nService, |
|
|
languageCode, |
|
|
marketsTotalInBaseCurrency, |
|
|
currentValueInBaseCurrency: marketsTotalInBaseCurrency, |
|
|
|
|
|
emergingMarketsValueInBaseCurrency: |
|
|
markets.emergingMarkets.valueInBaseCurrency, |
|
|
markets.emergingMarkets.valueInBaseCurrency, |
|
|
languageCode |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
) |
|
|
i18nService: this.i18nService |
|
|
|
|
|
}) |
|
|
], |
|
|
], |
|
|
userSettings |
|
|
userSettings |
|
|
) |
|
|
) |
|
|
@ -1496,41 +1498,51 @@ export class PortfolioService { |
|
|
rules: hasOpenHoldings |
|
|
rules: hasOpenHoldings |
|
|
? await this.rulesService.evaluate( |
|
|
? await this.rulesService.evaluate( |
|
|
[ |
|
|
[ |
|
|
new RegionalMarketClusterRiskAsiaPacific( |
|
|
new RegionalMarketClusterRiskAsiaPacific({ |
|
|
this.exchangeRateDataService, |
|
|
|
|
|
this.i18nService, |
|
|
|
|
|
languageCode, |
|
|
languageCode, |
|
|
|
|
|
asiaPacificValueInBaseCurrency: |
|
|
|
|
|
marketsAdvanced.asiaPacific.valueInBaseCurrency, |
|
|
|
|
|
currentValueInBaseCurrency: |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvanced.asiaPacific.valueInBaseCurrency |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
), |
|
|
i18nService: this.i18nService |
|
|
new RegionalMarketClusterRiskEmergingMarkets( |
|
|
}), |
|
|
this.exchangeRateDataService, |
|
|
new RegionalMarketClusterRiskEmergingMarkets({ |
|
|
this.i18nService, |
|
|
|
|
|
languageCode, |
|
|
languageCode, |
|
|
|
|
|
currentValueInBaseCurrency: |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvanced.emergingMarkets.valueInBaseCurrency |
|
|
emergingMarketsValueInBaseCurrency: |
|
|
), |
|
|
marketsAdvanced.emergingMarkets.valueInBaseCurrency, |
|
|
new RegionalMarketClusterRiskEurope( |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
this.exchangeRateDataService, |
|
|
i18nService: this.i18nService |
|
|
this.i18nService, |
|
|
}), |
|
|
|
|
|
new RegionalMarketClusterRiskEurope({ |
|
|
languageCode, |
|
|
languageCode, |
|
|
|
|
|
currentValueInBaseCurrency: |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvanced.europe.valueInBaseCurrency |
|
|
europeValueInBaseCurrency: |
|
|
), |
|
|
marketsAdvanced.europe.valueInBaseCurrency, |
|
|
new RegionalMarketClusterRiskJapan( |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
this.exchangeRateDataService, |
|
|
i18nService: this.i18nService |
|
|
this.i18nService, |
|
|
}), |
|
|
|
|
|
new RegionalMarketClusterRiskJapan({ |
|
|
languageCode, |
|
|
languageCode, |
|
|
|
|
|
currentValueInBaseCurrency: |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvanced.japan.valueInBaseCurrency |
|
|
japanValueInBaseCurrency: |
|
|
), |
|
|
marketsAdvanced.japan.valueInBaseCurrency, |
|
|
new RegionalMarketClusterRiskNorthAmerica( |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
this.exchangeRateDataService, |
|
|
i18nService: this.i18nService |
|
|
this.i18nService, |
|
|
}), |
|
|
|
|
|
new RegionalMarketClusterRiskNorthAmerica({ |
|
|
languageCode, |
|
|
languageCode, |
|
|
|
|
|
currentValueInBaseCurrency: |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvancedTotalInBaseCurrency, |
|
|
marketsAdvanced.northAmerica.valueInBaseCurrency |
|
|
northAmericaValueInBaseCurrency: |
|
|
) |
|
|
marketsAdvanced.northAmerica.valueInBaseCurrency, |
|
|
|
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
|
|
|
i18nService: this.i18nService |
|
|
|
|
|
}) |
|
|
], |
|
|
], |
|
|
userSettings |
|
|
userSettings |
|
|
) |
|
|
) |
|
|
@ -1544,13 +1556,14 @@ export class PortfolioService { |
|
|
}), |
|
|
}), |
|
|
rules: await this.rulesService.evaluate( |
|
|
rules: await this.rulesService.evaluate( |
|
|
[ |
|
|
[ |
|
|
new FeeRatioTotalInvestmentVolume( |
|
|
new FeeRatioTotalInvestmentVolume({ |
|
|
this.exchangeRateDataService, |
|
|
|
|
|
this.i18nService, |
|
|
|
|
|
languageCode, |
|
|
languageCode, |
|
|
summary.totalBuy + summary.totalSell, |
|
|
exchangeRateDataService: this.exchangeRateDataService, |
|
|
summary.fees |
|
|
fees: summary.fees, |
|
|
) |
|
|
i18nService: this.i18nService, |
|
|
|
|
|
totalInvestmentVolumeInBaseCurrency: |
|
|
|
|
|
summary.totalBuy + summary.totalSell |
|
|
|
|
|
}) |
|
|
], |
|
|
], |
|
|
userSettings |
|
|
userSettings |
|
|
) |
|
|
) |
|
|
|