/// <summary> /// /// </summary> /// <param name="issueDate_"></param> /// <param name="maturityDate_"></param> /// <param name="cleanPriceInPercent_">in the form 1.01 not 101</param> /// <param name="couponInPercent_">in the form 2 rather than 0.02 </param> /// <param name="freq_"></param> /// <param name="settleDate_"></param> /// <param name="forwardDate_"></param> /// <param name="repoRateInPercent_">give 0.25 to imply a decimal of 0.0025</param> /// <param name="marketCode_"></param> /// <returns></returns> public static double GetForwardPrice ( DateTime effectiveDate_, DateTime maturityDate_, DateTime firstCouponDate_, double cleanPriceInPercent_, double couponInPercent_, CouponPaymentFrequency freq_, DateTime settleDate_, DateTime forwardDate_, double repoRateInPercent_, BondMarket market_ ) { return Symmetry.Analytics.BondAnalytics.CalcBondFwd( country: GetSymCountry(market_), settleDate: settleDate_, cleanPrice: cleanPriceInPercent_/100d, maturityDate: maturityDate_, coupon: couponInPercent_/100d, freq: freq_ == CouponPaymentFrequency.SemiAnnual ? 6 : 12, fwdDate: forwardDate_, repoRate: repoRateInPercent_/100d, startDate: effectiveDate_, firstCpnDate: firstCouponDate_)[0]*100d; //return Symmetry.Analytics.BondAnalytics.CalcBondFwd( // Country: market_.ToString(), // AsOfSettleDate: settleDate_, // CleanPrice: cleanPriceInPercent_/100d, // IssueDate: issueDate_, // MaturityDate: maturityDate_, // Coupon: couponInPercent_/100d, // Freq: freq_ == CouponPaymentFrequency.SemiAnnual ? 6 : 12, // FwdDate: forwardDate_, // repoRate: repoRateInPercent_/100d // )*100d; }
// public static IEnumerable<KeyValuePair<string,double>> GetForwardValues( // BondMarket markets_, // SI.Data.Bond bond_, // double cleanPriceInPercent_, // CouponPaymentFrequency freq_, // DateTime settleDate_, // DateTime forwardDate_, // double repoRateInPercent_ //) // { // var fwdPrice = FwdPriceCalculator.GetForwardPrice(bond_.IssueDate.Value, bond_.Maturity.Value, cleanPriceInPercent_, // bond_.Coupon, freq_, settleDate_, // forwardDate_, repoRateInPercent_); // var vals = CarbonHistoricRetriever.GetHistoricValues( // markets_: markets_, // asOf_: forwardDate_, // bond_: bond_, // price_: fwdPrice / 100d, // client_: CarbonSubscriber.GetInstance().GetCarbonClientInstance()); // return vals; // } /// <summary> /// Get the forward values given the inputs /// </summary> /// <param name="market_"></param> /// <param name="marketCode_"></param> /// <param name="bond_"></param> /// <param name="cleanPriceInPercent_">1.01 not 101.00</param> /// <param name="freq_"></param> /// <param name="settleDate_"></param> /// <param name="forwardDate_"></param> /// <param name="repoRateInPercent_">in decimals</param> /// <returns></returns> public static IEnumerable<KeyValuePair<string, double>> GetForwardValues( BondMarket market_, string marketCode_, MongoBond bond_, double cleanPriceInPercent_, CouponPaymentFrequency freq_, DateTime settleDate_, DateTime forwardDate_, double repoRateInPercent_ ) { var fwdPrice = FwdPriceCalculator.GetForwardPrice( effectiveDate_: bond_.IssueDate, maturityDate_: bond_.Maturity, firstCouponDate_:bond_.FirstCouponDate, cleanPriceInPercent_: cleanPriceInPercent_, couponInPercent_: bond_.Coupon, freq_: freq_, settleDate_: settleDate_, repoRateInPercent_: repoRateInPercent_, market_: market_, forwardDate_: forwardDate_); var vals = CarbonHistoricRetriever.GetHistoricValues( market_: market_, asOf_: forwardDate_, bond_: bond_, price_: fwdPrice / 100d, client_: CarbonSubscriber.GetInstance().GetCarbonClientInstance()); return vals; }
public CouponPaymentFreqAttribute(CouponPaymentFrequency freq_) { Freq = freq_; }