private static void CreateCreditCurveFromCDSInstruments() throws Exception {
    JulianDate dtStart = JulianDate.Today();

    /*
     * Populate the instruments, the calibration measures, and the calibration quotes
     */

    double[] adblQuotes = new double[5];
    String[] astrCalibMeasure = new String[5];
    CreditDefaultSwap[] aCDS = new CreditDefaultSwap[5];

    for (int i = 0; i < 5; ++i) {
      /*
       * The Calibration CDS
       */

      aCDS[i] = CDSBuilder.CreateSNAC(dtStart, (i + 1) + "Y", 0.01, "CORP");

      /*
       * Calibration Quote
       */

      adblQuotes[i] = 100.;

      /*
       * Calibration Measure
       */

      astrCalibMeasure[i] = "FairPremium";
    }

    /*
     * Flat Discount Curve
     */

    DiscountCurve dc = DiscountCurveBuilder.CreateFromFlatRate(dtStart, "USD", 0.05);

    /*
     * Create the Credit Curve from the give CDS instruments
     */

    CreditCurve cc =
        CreditScenarioCurveBuilder.CreateCreditCurve(
            "CORP", dtStart, aCDS, dc, adblQuotes, astrCalibMeasure, 0.4, false);

    /*
     * Valuation Parameters
     */

    ValuationParams valParams =
        ValuationParams.CreateValParams(dtStart, 0, "", Convention.DR_ACTUAL);

    /*
     * Standard Credit Pricer Parameters (check javadoc for details)
     */

    PricerParams pricerParams = PricerParams.MakeStdPricerParams();

    /*
     * Re-calculate the input calibration measures for the input CDSes
     */

    for (int i = 0; i < aCDS.length; ++i)
      System.out.println(
          "\t"
              + astrCalibMeasure[i]
              + "["
              + i
              + "] = "
              + aCDS[i].calcMeasureValue(
                  valParams,
                  pricerParams,
                  ComponentMarketParamsBuilder.CreateComponentMarketParams(
                      dc, null, null, cc, null, null, null),
                  null,
                  astrCalibMeasure[i]));
  }