private AssetSuitability GetManagedFundAssetSuitability() { var table = new ManagedInvestmentSuitabilityParameters(); var f0Score = new MICurrentParameter(); SetF0Score_ManagedInvestment(table, f0Score); f0Score.Total = f0Score.FiveYearTotalReturn + f0Score.FiveYearAlphaRatio + f0Score.FiveYearBeta + f0Score.FiveYearInformationRatio + f0Score.FiveYearStandardDeviation + f0Score.FiveYearSkewnessRatio + f0Score.FiveYearTrackingErrorRatio + f0Score.FiveYearSharpRatio + f0Score.GlobalCategory + f0Score.FundSize; var f1Score = new MIForecastParameter(); SetF1Score_ManagedInvestment(table, f1Score); f1Score.Total = f1Score.OneYearTotalReturn + f1Score.MorningStarAnalyst + f1Score.OneYearAlpha + f1Score.OneYearBeta + f1Score.OneYearInformationRatio + f1Score.OneYearTrackingError + f1Score.OneYearSharpRatio + f1Score.MaxManagementExpenseRatio + f1Score.PerformanceFee + f1Score.YearsSinceInception; return new AssetSuitability { F1Parameters = f1Score, SuitabilityRating = GetRatingScore(f1Score.Total + f0Score.Total), F0Parameters = f0Score, TotalScore = f1Score.Total + f0Score.Total }; }
private void SetCurrentBetaFiveYearScore_MI(ManagedInvestmentSuitabilityParameters table, MICurrentParameter f0Score) { if (F0Ratios.BetaFiveYears <= table.Mif0Parameters.Defensive.FiveYearBeta) { f0Score.FiveYearBeta = table.Mif0Parameters.Defensive.ScoreRanking; } else if (F0Ratios.BetaFiveYears <= table.Mif0Parameters.Conservative.FiveYearBeta) { f0Score.FiveYearBeta = table.Mif0Parameters.Conservative.ScoreRanking; } else if (F0Ratios.BetaFiveYears <= table.Mif0Parameters.Balance.FiveYearBeta) { f0Score.FiveYearBeta = table.Mif0Parameters.Balance.ScoreRanking; } else if (F0Ratios.BetaFiveYears <= table.Mif0Parameters.Assertive.FiveYearBeta) { f0Score.FiveYearBeta = table.Mif0Parameters.Assertive.ScoreRanking; } else { f0Score.FiveYearBeta = table.Mif0Parameters.Aggressive.ScoreRanking; } }
private void SetF0Score_ManagedInvestment(ManagedInvestmentSuitabilityParameters table, MICurrentParameter f0Score) { SetCurrentFiveYearReturnScore_MI(table, f0Score); SetCurrentFiveYearAlphaRatioScore_MI(table, f0Score); SetCurrentBetaFiveYearScore_MI(table, f0Score); SetCurrentFiveYearAlphaRatio_MI(table, f0Score); SetCurrentFiveYearInfomrationScore_MI(table, f0Score); SetCurrentFiveYearStandardDeviationScore_MI(table, f0Score); SetCurrentFiveYearSkewnessRatioScore_MI(table, f0Score); SetCurrentFiveYearTrackingErrorRatioScore_MI(table, f0Score); SetCurrentFiveYearSharpRatioScore_MI(table, f0Score); SetCurrentGlobalCategoryScore_MI(table, f0Score); SetCurrentFundsizeScore_MI(table, f0Score); }
private void SetCurrentGlobalCategoryScore_MI(ManagedInvestmentSuitabilityParameters table, MICurrentParameter f0Score) { var globalCategory = F0Ratios.GlobalCategory; if (globalCategory.HasValue) { if (globalCategory.Value >= table.Mif0Parameters.Defensive.GlobalCategory) { f0Score.GlobalCategory = table.Mif0Parameters.Defensive.ScoreRanking; } else if (globalCategory.Value >= table.Mif0Parameters.Conservative.GlobalCategory) { f0Score.GlobalCategory = table.Mif0Parameters.Conservative.ScoreRanking; } else if (globalCategory.Value >= table.Mif0Parameters.Balance.GlobalCategory) { f0Score.GlobalCategory = table.Mif0Parameters.Balance.ScoreRanking; } else if (globalCategory.Value >= table.Mif0Parameters.Assertive.GlobalCategory) { f0Score.GlobalCategory = table.Mif0Parameters.Assertive.ScoreRanking; } else { f0Score.GlobalCategory = table.Mif0Parameters.Aggressive.ScoreRanking; } } else { throw new Exception("Global Category is not populated for current asset, which is of type managed fund"); } }
private void SetCurrentFundsizeScore_MI(ManagedInvestmentSuitabilityParameters table, MICurrentParameter f0Score) { var fundSize = F0Ratios.FundSize; if (fundSize.HasValue) { if (fundSize.Value >= table.Mif0Parameters.Defensive.FundSize) { f0Score.FundSize = table.Mif0Parameters.Defensive.ScoreRanking; } else if (fundSize.Value >= table.Mif0Parameters.Conservative.FundSize) { f0Score.FundSize = table.Mif0Parameters.Conservative.ScoreRanking; } else if (fundSize.Value >= table.Mif0Parameters.Balance.FundSize) { f0Score.FundSize = table.Mif0Parameters.Balance.ScoreRanking; } else if (fundSize.Value >= table.Mif0Parameters.Assertive.FundSize) { f0Score.FundSize = table.Mif0Parameters.Assertive.ScoreRanking; } else { f0Score.FundSize = table.Mif0Parameters.Aggressive.ScoreRanking; } } else { throw new Exception("Fund Size is not populated for current asset, which is of type managed fund"); } }
private void SetCurrentFiveYearTrackingErrorRatioScore_MI(ManagedInvestmentSuitabilityParameters table, MICurrentParameter f0Score) { var fiveYearTrackingErrorRatio = F0Ratios.FiveYearTrackingErrorRatio; if (fiveYearTrackingErrorRatio.HasValue) { if (fiveYearTrackingErrorRatio.Value >= table.Mif0Parameters.Defensive.FiveYearTrackingErrorRatio) { f0Score.FiveYearTrackingErrorRatio = table.Mif0Parameters.Defensive.ScoreRanking; } else if (fiveYearTrackingErrorRatio.Value >= table.Mif0Parameters.Conservative.FiveYearTrackingErrorRatio) { f0Score.FiveYearTrackingErrorRatio = table.Mif0Parameters.Conservative.ScoreRanking; } else if (fiveYearTrackingErrorRatio.Value >= table.Mif0Parameters.Balance.FiveYearTrackingErrorRatio) { f0Score.FiveYearTrackingErrorRatio = table.Mif0Parameters.Balance.ScoreRanking; } else if (fiveYearTrackingErrorRatio.Value >= table.Mif0Parameters.Assertive.FiveYearTrackingErrorRatio) { f0Score.FiveYearTrackingErrorRatio = table.Mif1Parameters.Assertive.ScoreRanking; } else { f0Score.FiveYearTrackingErrorRatio = table.Mif0Parameters.Aggressive.ScoreRanking; } } else { throw new Exception( "Five year tracking error ratio is not populated for current asset, which is of type managed fund"); } }
private void SetCurrentFiveYearStandardDeviationScore_MI(ManagedInvestmentSuitabilityParameters table, MICurrentParameter f0Score) { var fiveYearStandardDeviation = F0Ratios.FiveYearStandardDeviation; if (fiveYearStandardDeviation.HasValue) { if (fiveYearStandardDeviation.Value >= table.Mif0Parameters.Defensive.FiveYearStandardDeviation) { f0Score.FiveYearStandardDeviation = table.Mif0Parameters.Defensive.ScoreRanking; } else if (fiveYearStandardDeviation.Value >= table.Mif0Parameters.Conservative.FiveYearStandardDeviation) { f0Score.FiveYearStandardDeviation = table.Mif0Parameters.Conservative.ScoreRanking; } else if (fiveYearStandardDeviation.Value >= table.Mif0Parameters.Balance.FiveYearStandardDeviation) { f0Score.FiveYearStandardDeviation = table.Mif0Parameters.Balance.ScoreRanking; } else if (fiveYearStandardDeviation.Value >= table.Mif0Parameters.Assertive.FiveYearStandardDeviation) { f0Score.FiveYearStandardDeviation = table.Mif0Parameters.Assertive.ScoreRanking; } else { f0Score.FiveYearStandardDeviation = table.Mif0Parameters.Aggressive.ScoreRanking; } } else { throw new Exception( "Five year standard deviation is not populated for current asset, which is of type managed fund"); } }
private void SetCurrentFiveYearReturnScore_MI(ManagedInvestmentSuitabilityParameters table, MICurrentParameter f0Score) { if (F0Ratios.FiveYearReturn >= table.Mif0Parameters.Defensive.FiveYearTotalReturn) { f0Score.FiveYearTotalReturn = table.Mif0Parameters.Defensive.ScoreRanking; } else if (F0Ratios.FiveYearReturn >= table.Mif0Parameters.Conservative.FiveYearTotalReturn) { f0Score.FiveYearTotalReturn = table.Mif0Parameters.Conservative.ScoreRanking; } else if (F0Ratios.FiveYearReturn >= table.Mif0Parameters.Balance.FiveYearTotalReturn) { f0Score.FiveYearTotalReturn = table.Mif0Parameters.Balance.ScoreRanking; } else if (F0Ratios.FiveYearReturn >= table.Mif0Parameters.Assertive.FiveYearTotalReturn) { f0Score.FiveYearTotalReturn = table.Mif0Parameters.Assertive.ScoreRanking; } else { f0Score.FiveYearTotalReturn = table.Mif0Parameters.Aggressive.ScoreRanking; } }