/// <summary> /// /// </summary> /// <param name="redemption"></param> /// <param name="currency"></param> /// <param name="paymentCalendar"></param> /// <returns></returns> public static PriceablePrincipalExchange CreatePriceableBondRedemption(PrincipalExchange redemption, string currency, IBusinessCalendar paymentCalendar) { var multiplier = 1; if (redemption != null) { var adjustedPaymentDate = redemption.adjustedPrincipalExchangeDate; var amount = multiplier * redemption.principalExchangeAmount; var exchange = new PriceablePrincipalExchange("FinalRedemption", false, amount, currency, adjustedPaymentDate, paymentCalendar); return(exchange); } return(null); }
/// <summary> /// /// </summary> /// <param name="payerIsBase"></param> /// <param name="exchanges"></param> /// <param name="currency"></param> /// <param name="paymentCalendar"></param> /// <returns></returns> public static List <PriceablePrincipalExchange> CreatePriceablePrincipalExchanges(bool payerIsBase, PrincipalExchange[] exchanges, string currency, IBusinessCalendar paymentCalendar) { List <PriceablePrincipalExchange> priceableCashflows = null; var multiplier = payerIsBase ? -1 : 1; if (exchanges != null) { priceableCashflows = new List <PriceablePrincipalExchange>(); var index = 0; foreach (var principalExchange in exchanges) { var adjustedPaymentDate = principalExchange.adjustedPrincipalExchangeDate; var amount = multiplier * principalExchange.principalExchangeAmount; var exchange = new PriceablePrincipalExchange("PrincipalExchange_" + index, payerIsBase, amount, currency, adjustedPaymentDate, paymentCalendar); priceableCashflows.Add(exchange); index++; } } return(priceableCashflows); }