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)); }
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)); }
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); }
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)); }
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)); }
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)); }
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)); }
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)); }
/// <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); }
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); }