Exemplo n.º 1
0
    /// <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_;
 }