Ejemplo 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
            };
        }
Ejemplo n.º 2
0
 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;
     }
 }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
 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");
     }
 }
Ejemplo n.º 5
0
 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");
     }
 }
Ejemplo n.º 6
0
 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");
     }
 }
Ejemplo n.º 7
0
 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");
     }
 }
Ejemplo n.º 8
0
 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;
     }
 }