コード例 #1
0
        public static Money GetFutureValue(CapFloor capFloor, string baseParty)
        {
            List <Money> list = new List <Money>();

            InterestRateStream stream = capFloor.capFloorStream;
            Money futureValueOfStream = CashflowsHelper.GetForecastValue(stream.cashflows);

            list.AddRange(GetValue(stream.payerPartyReference.href, stream.receiverPartyReference.href, baseParty, futureValueOfStream));

            Money futureValueOfAdditionalPayments = GetValueOfAdditionalPayments(capFloor, baseParty);

            list.Add(futureValueOfAdditionalPayments);

            return(MoneyHelper.Sum(list));
        }
コード例 #2
0
        public static Money GetValueOfAdditionalPayments(CapFloor capFloor, string baseParty)
        {
            List <Money> list = new List <Money>();

            if (null != capFloor.additionalPayment)
            {
                foreach (Payment payment in capFloor.additionalPayment)
                {
                    list.AddRange(GetValue(payment.payerPartyReference.href, payment.receiverPartyReference.href, baseParty, payment.paymentAmount));
                }
            }


            return(MoneyHelper.Sum(list));
        }
コード例 #3
0
        public static List <Money> GetValue(string payer, string receiver, string baseParty, Money amount)
        {
            List <Money> result = new List <Money>();

            if (baseParty == payer)
            {
                result.Add(MoneyHelper.Neg(amount));
            }

            if (baseParty == receiver)
            {
                result.Add(amount);
            }

            return(result);
        }
コード例 #4
0
        public static Money GetPayPresentValueOfAdditionalPayments(CapFloor capFloor, string baseParty)
        {
            List <Money> valueList = new List <Money>();

            if (null != capFloor.additionalPayment)
            {
                foreach (Payment payment in capFloor.additionalPayment)
                {
                    if (baseParty == payment.payerPartyReference.href)
                    {
                        valueList.Add(payment.presentValueAmount);
                    }
                }
            }

            return(MoneyHelper.Sum(valueList));
        }
コード例 #5
0
ファイル: SwapHelper.cs プロジェクト: zhangz/Highlander.Net
        public static Money GetReceivePresentValueOfAdditionalPayments(Swap swap, string baseParty)
        {
            List <Money> valueList = new List <Money>();

            if (null != swap.additionalPayment)
            {
                foreach (Payment payment in swap.additionalPayment)
                {
                    if (baseParty == payment.receiverPartyReference.href)
                    {
                        valueList.Add(payment.presentValueAmount);
                    }
                }
            }

            return(MoneyHelper.Sum(valueList));
        }
コード例 #6
0
ファイル: SwapHelper.cs プロジェクト: zhangz/Highlander.Net
        public static Money GetFutureValue(Swap swap, string baseParty)
        {
            List <Money> list = new List <Money>();

            foreach (InterestRateStream stream in swap.swapStream)
            {
                Money futureValueOfStream = CashflowsHelper.GetForecastValue(stream.cashflows);

                list.AddRange(GetValue(stream.payerPartyReference.href, stream.receiverPartyReference.href, baseParty, futureValueOfStream));
            }

            Money futureValueOfAdditionalPayments = GetValueOfAdditionalPayments(swap, baseParty);

            list.Add(futureValueOfAdditionalPayments);

            return(MoneyHelper.Sum(list));
        }
コード例 #7
0
        public static Money GetPayFutureValue(CapFloor capFloor, string baseParty)
        {
            List <Money> list = new List <Money>();

            InterestRateStream stream = capFloor.capFloorStream;
            {
                Money presentValueOfStream = CashflowsHelper.GetForecastValue(stream.cashflows);

                if (baseParty == stream.payerPartyReference.href)
                {
                    list.Add(presentValueOfStream);
                }
            }

            Money payFutureValueOfAdditionalPayments = GetPayFutureValueOfAdditionalPayments(capFloor, baseParty);

            list.Add(payFutureValueOfAdditionalPayments);

            return(MoneyHelper.Sum(list));
        }
コード例 #8
0
ファイル: SwapHelper.cs プロジェクト: zhangz/Highlander.Net
        public static Money GetPayFutureValue(Swap swap, string baseParty)
        {
            List <Money> list = new List <Money>();

            foreach (InterestRateStream stream in swap.swapStream)
            {
                Money presentValueOfStream = CashflowsHelper.GetForecastValue(stream.cashflows);

                if (baseParty == stream.payerPartyReference.href)
                {
                    list.Add(presentValueOfStream);
                }
            }

            Money payFutureValueOfAdditionalPayments = GetPayFutureValueOfAdditionalPayments(swap, baseParty);

            list.Add(payFutureValueOfAdditionalPayments);

            return(MoneyHelper.Sum(list));
        }
コード例 #9
0
ファイル: SwapHelper.cs プロジェクト: zhangz/Highlander.Net
        /// <summary>
        /// Returns present value of the swap for a specified baseParty.
        /// </summary>
        /// <param name="swap"></param>
        /// <param name="baseParty">The party, from which point of view the valuations are computed.</param>
        /// <returns></returns>
        public static Money GetPresentValue(Swap swap, string baseParty)
        {
            var list = new List <Money>();

            foreach (InterestRateStream stream in swap.swapStream)
            {
                Money presentValueOfStream = CashflowsHelper.GetPresentValue(stream.cashflows);

                list.AddRange(GetValue(stream.payerPartyReference.href, stream.receiverPartyReference.href, baseParty, presentValueOfStream));
            }

            Money sumPVs = MoneyHelper.Sum(list);

            //only add a pv in the same currency.
            Money presentValueOfAdditionalPayments = GetPresentValueOfAdditionalPayments(swap, baseParty, sumPVs.currency);

            sumPVs = MoneyHelper.Add(sumPVs, presentValueOfAdditionalPayments);

            return(sumPVs);
        }
コード例 #10
0
        public static Swaption Create(Swap swap, decimal premiumAmount, DateTime expirationDate)
        {
            var swaption = new Swaption {
                swap = swap, premium = new[] { new Payment() }
            };

            swaption.premium[0].paymentAmount = MoneyHelper.GetAmount(premiumAmount);
            var europeanExercise = new EuropeanExercise
            {
                expirationDate = new AdjustableOrRelativeDate()
            };
            var adjustableDate = new AdjustableDate
            {
                unadjustedDate = new IdentifiedDate
                {
                    Value = expirationDate
                }
            };

            europeanExercise.expirationDate.Item = adjustableDate;
            XsdClassesFieldResolver.Swaption_SetEuropeanExercise(swaption, europeanExercise);
            return(swaption);
        }