Beispiel #1
0
        public override Loan GenerateInstrument()
        {
            var numPaymentsPerYear = (int)TradeInfo.Frequency.ToFrequency().CountPerYear();
            var ppm = TradeInfo.AbsPrepaymentModel.ToEnumType <AbsPrepaymentModel>();
            var dm  = TradeInfo.AbsDefaultModel.ToEnumType <AbsDefaultModel>();

            IMortgagePrepayment prepaymentModel;

            if (ppm == AbsPrepaymentModel.Psa)
            {
                prepaymentModel = new Psa(TradeInfo.PsaMultiplier, 0.06, 30, numPaymentsPerYear);
            }
            else if (ppm == AbsPrepaymentModel.Cpr)
            {
                prepaymentModel = new Cpr(TradeInfo.AnnualCprRate, numPaymentsPerYear);
            }
            else
            {
                prepaymentModel = new Psa();
            }

            IMortgageDefault defaultModel;

            if (dm == AbsDefaultModel.Sda)
            {
                defaultModel = new Sda(TradeInfo.SdaMultiplier, TradeInfo.RecoveryRate, numPaymentsPerYear);
            }
            else if (dm == AbsDefaultModel.Cdr)
            {
                defaultModel = new Cdr(TradeInfo.AnnualCdrRate, numPaymentsPerYear, TradeInfo.RecoveryRate);
            }
            else
            {
                defaultModel = new Sda();
            }

            var mortgageCalcMethod = TradeInfo.MortgageCalcMethod.ToEnumType <MortgageCalcMethod>();

            return(new Loan(TradeInfo.StartDate.ToDate(),
                            TradeInfo.MaturityDate.ToDate(),
                            TradeInfo.FirstPaymentDate.ToDate(),
                            TradeInfo.Notional,
                            TradeInfo.NumOfPayment,
                            TradeInfo.DayCount.ToDayCountImpl(),
                            TradeInfo.Frequency.ToFrequency(),
                            TradeInfo.Coupon,
                            TradeInfo.ResetDate.ToDate(),
                            TradeInfo.IsFloatingRate,
                            string.IsNullOrEmpty(TradeInfo.IndexType) ? IndexType.None : TradeInfo.IndexType.ToIndexType(),
                            TradeInfo.FloatingRateMultiplier,
                            TradeInfo.Amortization.ToAmortizationType(),
                            TradeInfo.Currency.ToCurrencyCode(),
                            mortgageCalcMethod == MortgageCalcMethod.Simple ? new SimpleMortgageCalculator(prepaymentModel, defaultModel) : (IMortgageCalculator) new MortgageCalculator(prepaymentModel, defaultModel),
                            TradeInfo.TaxRate
                            ));
        }
Beispiel #2
0
 public override int GetHashCode()
 {
     return(Cpr.GetHashCode()
            ^ GivenName.GetHashCode()
            ^ SurName.GetHashCode()
            ^ Email.GetHashCode()
            ^ Occupation.GetHashCode()
            ^ Role.GetHashCode()
            ^ AuthorizationCode.GetHashCode());
 }
Beispiel #3
0
        /// <summary>
        /// Calculate the hash code of the instance.
        /// </summary>
        /// <returns>The hash code of the instance.</returns>
        public override int GetHashCode()
        {
            unchecked {
                var result = DbId;
                result = (result * 397) ^ (FirstName != null ? FirstName.GetHashCode() : 0);
                result = (result * 397) ^ (LastName != null ? LastName.GetHashCode() : 0);
                result = (result * 397) ^ (Street != null ? Street.GetHashCode() : 0);
                result = (result * 397) ^ (City != null ? City.GetHashCode() : 0);
                result = (result * 397) ^ (Cpr != null ? Cpr.GetHashCode() : 0);
                result = (result * 397) ^ VoterId;
                result = (result * 397) ^ (PollingVenue != null ? PollingVenue.GetHashCode() : 0);
                result = (result * 397) ^ (PollingTable != null ? PollingTable.GetHashCode() : 0);
                result = (result * 397) ^ Voted.GetHashCode();
                result = (result * 397) ^ VotedTime;
                result = (result * 397) ^ (VotedPollingTable != null ? VotedPollingTable.GetHashCode() : 0);
                result = (result * 397) ^ Exists.GetHashCode();

                return(result);
            }
        }