Esempio n. 1
0
        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
            };
        }
Esempio n. 2
0
 private void SetForecastYearSinceInceptionScore_MI(ManagedInvestmentSuitabilityParameters table,
     MIForecastParameter f1Score)
 {
     var yearsSinceInception = F1Recommendation.YearsSinceInception;
     if (yearsSinceInception.HasValue)
     {
         if (yearsSinceInception.Value >= table.Mif1Parameters.Defensive.YearsSinceInception)
         {
             f1Score.YearsSinceInception = table.Mif1Parameters.Defensive.ScoreRanking;
         }
         else if (yearsSinceInception.Value >= table.Mif1Parameters.Conservative.YearsSinceInception)
         {
             f1Score.YearsSinceInception = table.Mif1Parameters.Conservative.ScoreRanking;
         }
         else if (yearsSinceInception.Value >= table.Mif1Parameters.Balance.YearsSinceInception)
         {
             f1Score.YearsSinceInception = table.Mif1Parameters.Balance.ScoreRanking;
         }
         else if (yearsSinceInception.Value >= table.Mif1Parameters.Assertive.YearsSinceInception)
         {
             f1Score.YearsSinceInception = table.Mif1Parameters.Assertive.ScoreRanking;
         }
         else
         {
             f1Score.YearsSinceInception = table.Mif1Parameters.Aggressive.ScoreRanking;
         }
     }
     else
     {
         throw new Exception(
             "Years since inception for forecast recommendation is not populated for current asset, which is of type managed fund.");
     }
 }
Esempio n. 3
0
 private void SetForecastPerformanceFeeScore_MI(ManagedInvestmentSuitabilityParameters table,
     MIForecastParameter f1Score)
 {
     var performanceFee = F1Recommendation.PerformanceFee;
     if (performanceFee.HasValue)
     {
         if (performanceFee.Value <= table.Mif1Parameters.Defensive.PerformanceFee)
         {
             f1Score.PerformanceFee = table.Mif1Parameters.Defensive.ScoreRanking;
         }
         else if (performanceFee.Value <= table.Mif1Parameters.Conservative.PerformanceFee)
         {
             f1Score.PerformanceFee = table.Mif1Parameters.Conservative.ScoreRanking;
         }
         else if (performanceFee.Value <= table.Mif1Parameters.Balance.PerformanceFee)
         {
             f1Score.PerformanceFee = table.Mif1Parameters.Balance.ScoreRanking;
         }
         else if (performanceFee.Value <= table.Mif1Parameters.Assertive.PerformanceFee)
         {
             f1Score.PerformanceFee = table.Mif1Parameters.Assertive.ScoreRanking;
         }
         else
         {
             f1Score.PerformanceFee = table.Mif1Parameters.Aggressive.ScoreRanking;
         }
     }
     else
     {
         throw new Exception(
             "Performance fee for forecast recommendation is not populated for current asset, which is of type managed fund.");
     }
 }
Esempio n. 4
0
 private void SetForecastOneYearTrackingErrorScore_MI(ManagedInvestmentSuitabilityParameters table,
     MIForecastParameter f1Score)
 {
     var oneYearTrackingError = F1Recommendation.OneYearTrackingError;
     if (oneYearTrackingError.HasValue)
     {
         if (oneYearTrackingError.Value >= table.Mif1Parameters.Defensive.OneYearTrackingError)
         {
             f1Score.OneYearTrackingError = table.Mif1Parameters.Defensive.ScoreRanking;
         }
         else if (oneYearTrackingError.Value >= table.Mif1Parameters.Conservative.OneYearTrackingError)
         {
             f1Score.OneYearTrackingError = table.Mif1Parameters.Conservative.ScoreRanking;
         }
         else if (oneYearTrackingError.Value >= table.Mif1Parameters.Balance.OneYearTrackingError)
         {
             f1Score.OneYearTrackingError = table.Mif1Parameters.Balance.ScoreRanking;
         }
         else if (oneYearTrackingError.Value >= table.Mif1Parameters.Assertive.OneYearTrackingError)
         {
             f1Score.OneYearTrackingError = table.Mif1Parameters.Assertive.ScoreRanking;
         }
         else
         {
             f1Score.OneYearTrackingError = table.Mif1Parameters.Aggressive.ScoreRanking;
         }
     }
     else
     {
         throw new Exception(
             "One Year tracking error for forecast recommendation is not populated for current asset, which is of type managed fund.");
     }
 }
Esempio n. 5
0
 private void SetForecastMorningstarAnalystScore_MI(MIForecastParameter f1Score,
     ManagedInvestmentSuitabilityParameters table)
 {
     if (F1Recommendation.MorningStarAnalyst == MorningStarAnalyst.Gold)
     {
         f1Score.MorningStarAnalyst = table.Mif1Parameters.Defensive.ScoreRanking;
     }
     else if (F1Recommendation.MorningStarAnalyst == MorningStarAnalyst.Silver)
     {
         f1Score.MorningStarAnalyst = table.Mif1Parameters.Conservative.ScoreRanking;
     }
     else if (F1Recommendation.MorningStarAnalyst == MorningStarAnalyst.Bronze)
     {
         f1Score.MorningStarAnalyst = table.Mif1Parameters.Balance.ScoreRanking;
     }
     else if (F1Recommendation.MorningStarAnalyst == MorningStarAnalyst.Neutral)
     {
         f1Score.MorningStarAnalyst = table.Mif1Parameters.Assertive.ScoreRanking;
     }
     else if (F1Recommendation.MorningStarAnalyst == MorningStarAnalyst.Negative)
     {
         f1Score.MorningStarAnalyst = table.Mif1Parameters.Aggressive.ScoreRanking;
     }
     else
     {
         f1Score.MorningStarAnalyst = table.Mif1Parameters.Aggressive.ScoreRanking*20;
     }
 }
Esempio n. 6
0
 private void SetForecastMaxManagementExpenseRatioScore_MI(ManagedInvestmentSuitabilityParameters table,
     MIForecastParameter f1Score)
 {
     var maxManagementExpenseRatio = F1Recommendation.MaxManagementExpenseRatio;
     if (maxManagementExpenseRatio.HasValue)
     {
         if (maxManagementExpenseRatio.Value <= table.Mif1Parameters.Defensive.MaxManagementExpenseRatio)
         {
             f1Score.MaxManagementExpenseRatio = table.Mif1Parameters.Defensive.ScoreRanking;
         }
         else if (maxManagementExpenseRatio.Value <=
                  table.Mif1Parameters.Conservative.MaxManagementExpenseRatio)
         {
             f1Score.MaxManagementExpenseRatio = table.Mif1Parameters.Conservative.ScoreRanking;
         }
         else if (maxManagementExpenseRatio.Value <= table.Mif1Parameters.Balance.MaxManagementExpenseRatio)
         {
             f1Score.MaxManagementExpenseRatio = table.Mif1Parameters.Balance.ScoreRanking;
         }
         else if (maxManagementExpenseRatio.Value <= table.Mif1Parameters.Assertive.MaxManagementExpenseRatio)
         {
             f1Score.MaxManagementExpenseRatio = table.Mif1Parameters.Assertive.ScoreRanking;
         }
         else
         {
             f1Score.MaxManagementExpenseRatio = table.Mif1Parameters.Aggressive.ScoreRanking;
         }
     }
     else
     {
         throw new Exception(
             "Max management expense ratio for forecast recommendation is not populated for current asset, which is of type managed fund.");
     }
 }
Esempio n. 7
0
 private void SetF1Score_ManagedInvestment(ManagedInvestmentSuitabilityParameters table,
     MIForecastParameter f1Score)
 {
     SetForecastOneYearReturnScore_MI(table, f1Score);
     SetForecastMorningstarAnalystScore_MI(f1Score, table);
     SetForecastOneYearAlphaScore_MI(table, f1Score);
     SetForecastOneYearBetaScore_MI(table, f1Score);
     SetForecastOneYearInformationScore_MI(table, f1Score);
     SetForecastOneYearTrackingErrorScore_MI(table, f1Score);
     SetForecastOneYearSharpRatioScore_MI(table, f1Score);
     SetForecastMaxManagementExpenseRatioScore_MI(table, f1Score);
     SetForecastPerformanceFeeScore_MI(table, f1Score);
     SetForecastYearSinceInceptionScore_MI(table, f1Score);
 }