Bond.java

  1. package org.drip.product.definition;

  2. /*
  3.  * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  4.  */

  5. /*!
  6.  * Copyright (C) 2020 Lakshmi Krishnamurthy
  7.  * Copyright (C) 2019 Lakshmi Krishnamurthy
  8.  * Copyright (C) 2018 Lakshmi Krishnamurthy
  9.  * Copyright (C) 2017 Lakshmi Krishnamurthy
  10.  * Copyright (C) 2016 Lakshmi Krishnamurthy
  11.  * Copyright (C) 2015 Lakshmi Krishnamurthy
  12.  * Copyright (C) 2014 Lakshmi Krishnamurthy
  13.  * Copyright (C) 2013 Lakshmi Krishnamurthy
  14.  * Copyright (C) 2012 Lakshmi Krishnamurthy
  15.  *
  16.  *  This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
  17.  *      asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
  18.  *      analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
  19.  *      equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
  20.  *      numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
  21.  *      and computational support.
  22.  *  
  23.  *      https://lakshmidrip.github.io/DROP/
  24.  *  
  25.  *  DROP is composed of three modules:
  26.  *  
  27.  *  - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
  28.  *  - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
  29.  *  - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
  30.  *
  31.  *  DROP Product Core implements libraries for the following:
  32.  *  - Fixed Income Analytics
  33.  *  - Loan Analytics
  34.  *  - Transaction Cost Analytics
  35.  *
  36.  *  DROP Portfolio Core implements libraries for the following:
  37.  *  - Asset Allocation Analytics
  38.  *  - Asset Liability Management Analytics
  39.  *  - Capital Estimation Analytics
  40.  *  - Exposure Analytics
  41.  *  - Margin Analytics
  42.  *  - XVA Analytics
  43.  *
  44.  *  DROP Computational Core implements libraries for the following:
  45.  *  - Algorithm Support
  46.  *  - Computation Support
  47.  *  - Function Analysis
  48.  *  - Model Validation
  49.  *  - Numerical Analysis
  50.  *  - Numerical Optimizer
  51.  *  - Spline Builder
  52.  *  - Statistical Learning
  53.  *
  54.  *  Documentation for DROP is Spread Over:
  55.  *
  56.  *  - Main                     => https://lakshmidrip.github.io/DROP/
  57.  *  - Wiki                     => https://github.com/lakshmiDRIP/DROP/wiki
  58.  *  - GitHub                   => https://github.com/lakshmiDRIP/DROP
  59.  *  - Repo Layout Taxonomy     => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
  60.  *  - Javadoc                  => https://lakshmidrip.github.io/DROP/Javadoc/index.html
  61.  *  - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
  62.  *  - Release Versions         => https://lakshmidrip.github.io/DROP/version.html
  63.  *  - Community Credits        => https://lakshmidrip.github.io/DROP/credits.html
  64.  *  - Issues Catalog           => https://github.com/lakshmiDRIP/DROP/issues
  65.  *  - JUnit                    => https://lakshmidrip.github.io/DROP/junit/index.html
  66.  *  - Jacoco                   => https://lakshmidrip.github.io/DROP/jacoco/index.html
  67.  *
  68.  *  Licensed under the Apache License, Version 2.0 (the "License");
  69.  *      you may not use this file except in compliance with the License.
  70.  *  
  71.  *  You may obtain a copy of the License at
  72.  *      http://www.apache.org/licenses/LICENSE-2.0
  73.  *  
  74.  *  Unless required by applicable law or agreed to in writing, software
  75.  *      distributed under the License is distributed on an "AS IS" BASIS,
  76.  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  77.  *  
  78.  *  See the License for the specific language governing permissions and
  79.  *      limitations under the License.
  80.  */

  81. /**
  82.  * <i>Bond</i> abstract class implements the pricing, the valuation, and the RV analytics functionality for
  83.  * the bond product.
  84.  *
  85.  *  <br><br>
  86.  *  <ul>
  87.  *      <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ProductCore.md">Product Core Module</a></li>
  88.  *      <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/FixedIncomeAnalyticsLibrary.md">Fixed Income Analytics</a></li>
  89.  *      <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/product/README.md">Product Components/Baskets for Credit, FRA, FX, Govvie, Rates, and Option AssetClasses</a></li>
  90.  *      <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/product/credit/README.md">Fixed Income Components/Baskets Definitions</a></li>
  91.  *  </ul>
  92.  * <br><br>
  93.  *
  94.  * @author Lakshmi Krishnamurthy
  95.  */

  96. public abstract class Bond extends CreditComponent {

  97.     /**
  98.      * Retrieve the work-out information from price
  99.      *
  100.      * @param valParams Valuation Parameters
  101.      * @param csqs Bond Market Parameters
  102.      * @param vcp Valuation Customization Parameters
  103.      * @param dblPrice Price
  104.      *
  105.      * @return The Optimal Work-out Information
  106.      */

  107.     public abstract org.drip.param.valuation.WorkoutInfo exerciseYieldFromPrice (
  108.         final org.drip.param.valuation.ValuationParams valParams,
  109.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  110.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  111.         final double dblPrice);

  112.     /**
  113.      * Retrieve the array of double for the bond's secondary treasury spreads from the Valuation
  114.      *  Parameters and the component market parameters
  115.      *
  116.      * @param valParams ValuationParams
  117.      * @param csqs ComponentMarketParams
  118.      *
  119.      * @return Array of double for the bond's secondary treasury spreads
  120.      */

  121.     public abstract double[] secTreasurySpread (
  122.         final org.drip.param.valuation.ValuationParams valParams,
  123.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs);

  124.     /**
  125.      * Retrieve the effective treasury benchmark yield from the valuation, the component market parameters,
  126.      *  and the market price
  127.      *
  128.      * @param valParams ValuationParams
  129.      * @param csqs ComponentMarketParams
  130.      * @param vcp Valuation Customization Parameters
  131.      * @param dblPrice Market price
  132.      *
  133.      * @return Effective treasury benchmark yield
  134.      *
  135.      * @throws java.lang.Exception Thrown if the effective benchmark cannot be calculated
  136.      */

  137.     public abstract double effectiveTreasuryBenchmarkYield (
  138.         final org.drip.param.valuation.ValuationParams valParams,
  139.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  140.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  141.         final double dblPrice)
  142.         throws java.lang.Exception;

  143.     /**
  144.      * Get the ISIN
  145.      *
  146.      * @return ISIN string
  147.      */

  148.     public abstract java.lang.String isin();

  149.     /**
  150.      * Get the CUSIP
  151.      *
  152.      * @return CUSIP string
  153.      */

  154.     public abstract java.lang.String cusip();

  155.     /**
  156.      * Get the bond's loss flow from price
  157.      *
  158.      * @param valParams ValuationParams
  159.      * @param pricerParams PricerParams
  160.      * @param csqs ComponentMarketParams
  161.      * @param vcp Valuation Customization Parameters
  162.      * @param dblPrice Input price
  163.      *
  164.      * @return List of LossQuadratureMetrics
  165.      */

  166.     public abstract java.util.List<org.drip.analytics.cashflow.LossQuadratureMetrics> lossFlowFromPrice (
  167.         final org.drip.param.valuation.ValuationParams valParams,
  168.         final org.drip.param.pricer.CreditPricerParams pricerParams,
  169.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  170.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  171.         final double dblPrice);

  172.     /**
  173.      * Return whether the bond is a floater
  174.      *
  175.      * @return True if the bond is a floater
  176.      */

  177.     public abstract boolean isFloater();

  178.     /**
  179.      * Return the rate index of the bond
  180.      *
  181.      * @return Rate index
  182.      */

  183.     public abstract java.lang.String rateIndex();

  184.     /**
  185.      * Return the current bond coupon
  186.      *
  187.      * @return Current coupon
  188.      */

  189.     public abstract double currentCoupon();

  190.     /**
  191.      * Return the floating spread of the bond
  192.      *
  193.      * @return Floating spread
  194.      */

  195.     public abstract double floatSpread();

  196.     /**
  197.      * Return the bond ticker
  198.      *
  199.      * @return Bond Ticker
  200.      */

  201.     public abstract java.lang.String ticker();

  202.     /**
  203.      * Indicate if the bond is callable
  204.      *
  205.      * @return True - callable
  206.      */

  207.     public abstract boolean callable();

  208.     /**
  209.      * Indicate if the bond is putable
  210.      *
  211.      * @return True - putable
  212.      */

  213.     public abstract boolean putable();

  214.     /**
  215.      * Indicate if the bond is sinkable
  216.      *
  217.      * @return True - sinkable
  218.      */

  219.     public abstract boolean sinkable();

  220.     /**
  221.      * Indicate if the bond has variable coupon
  222.      *
  223.      * @return True - has variable coupon
  224.      */

  225.     public abstract boolean variableCoupon();

  226.     /**
  227.      * Indicate if the bond has been exercised
  228.      *
  229.      * @return True - Has been exercised
  230.      */

  231.     public abstract boolean exercised();

  232.     /**
  233.      * Indicate if the bond has defaulted
  234.      *
  235.      * @return True - Bond has defaulted
  236.      */

  237.     public abstract boolean defaulted();

  238.     /**
  239.      * Indicate if the bond is perpetual
  240.      *
  241.      * @return True - Bond is Perpetual
  242.      */

  243.     public abstract boolean perpetual();

  244.     /**
  245.      * Calculate if the bond is tradeable on the given date
  246.      *
  247.      * @param valParams Valuation Parameters
  248.      *
  249.      * @return True indicates the bond is tradeable
  250.      *
  251.      * @throws java.lang.Exception Thrown if inputs are invalid
  252.      */

  253.     public abstract boolean tradeable (
  254.         final org.drip.param.valuation.ValuationParams valParams)
  255.         throws java.lang.Exception;

  256.     /**
  257.      * Return the bond's embedded call schedule
  258.      *
  259.      * @return EOS Call
  260.      */

  261.     public abstract org.drip.product.params.EmbeddedOptionSchedule callSchedule();

  262.     /**
  263.      * Return the bond's embedded put schedule
  264.      *
  265.      * @return EOS Put
  266.      */

  267.     public abstract org.drip.product.params.EmbeddedOptionSchedule putSchedule();

  268.     /**
  269.      * Return the bond's coupon type
  270.      *
  271.      * @return Bond's coupon Type
  272.      */

  273.     public abstract java.lang.String couponType();

  274.     /**
  275.      * Return the bond's coupon day count
  276.      *
  277.      * @return Coupon day count string
  278.      */

  279.     public abstract java.lang.String couponDC();

  280.     /**
  281.      * Return the bond's accrual day count
  282.      *
  283.      * @return Accrual day count string
  284.      */

  285.     public abstract java.lang.String accrualDC();

  286.     /**
  287.      * Return the bond's maturity type
  288.      *
  289.      * @return Bond's maturity type
  290.      */

  291.     public abstract java.lang.String maturityType();

  292.     /**
  293.      * Return the bond's coupon frequency
  294.      *
  295.      * @return Bond's coupon frequency
  296.      */

  297.     public abstract int freq();

  298.     /**
  299.      * Return the bond's final maturity
  300.      *
  301.      * @return Bond's final maturity
  302.      */

  303.     public abstract org.drip.analytics.date.JulianDate finalMaturity();

  304.     /**
  305.      * Return the bond's calculation type
  306.      *
  307.      * @return Bond's calculation type
  308.      */

  309.     public abstract java.lang.String calculationType();

  310.     /**
  311.      * Return the bond's redemption value
  312.      *
  313.      * @return Bond's redemption value
  314.      */

  315.     public abstract double redemptionValue();

  316.     /**
  317.      * Return the bond's coupon currency
  318.      *
  319.      * @return Bond's coupon currency
  320.      */

  321.     public abstract java.lang.String currency();

  322.     /**
  323.      * Return the bond's redemption currency
  324.      *
  325.      * @return Bond's redemption currency
  326.      */

  327.     public abstract java.lang.String redemptionCurrency();

  328.     /**
  329.      * Indicate whether the given date is in the first coupon period
  330.      *
  331.      * @param iDate Valuation Date
  332.      *
  333.      * @return True - The given date is in the first coupon period
  334.      *
  335.      * @throws java.lang.Exception Thrown if inputs are invalid
  336.      */

  337.     public abstract boolean inFirstCouponPeriod (
  338.         final int iDate)
  339.         throws java.lang.Exception;

  340.     /**
  341.      * Indicate whether the given date is in the final coupon period
  342.      *
  343.      * @param iDate Valuation Date
  344.      *
  345.      * @return True - The given date is in the last coupon period
  346.      *
  347.      * @throws java.lang.Exception Thrown if inputs are invalid
  348.      */

  349.     public abstract boolean inLastCouponPeriod (
  350.         final int iDate)
  351.         throws java.lang.Exception;

  352.     /**
  353.      * Return the bond's floating coupon convention
  354.      *
  355.      * @return Bond's floating coupon convention
  356.      */

  357.     public abstract java.lang.String floatCouponConvention();

  358.     /**
  359.      * Get the bond's reset date for the period identified by the valuation date
  360.      *
  361.      * @param iValueDate Valuation Date
  362.      *
  363.      * @return Reset JulianDate
  364.      */

  365.     public abstract org.drip.analytics.date.JulianDate periodFixingDate (
  366.         final int iValueDate);

  367.     /**
  368.      * Return the coupon date for the period prior to the specified date
  369.      *
  370.      * @param dt Valuation Date
  371.      *
  372.      * @return Previous Coupon Date
  373.      */

  374.     public abstract org.drip.analytics.date.JulianDate previousCouponDate (
  375.         final org.drip.analytics.date.JulianDate dt);

  376.     /**
  377.      * Return the coupon rate for the period prior to the specified date
  378.      *
  379.      * @param dt Valuation Date
  380.      * @param csqs Component Market Params
  381.      *
  382.      * @return Previous Coupon Rate
  383.      *
  384.      * @throws java.lang.Exception Thrown if the previous coupon rate cannot be calculated
  385.      */

  386.     public abstract double previousCouponRate (
  387.         final org.drip.analytics.date.JulianDate dt,
  388.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs)
  389.         throws java.lang.Exception;

  390.     /**
  391.      * Return the coupon date for the period containing the specified date
  392.      *
  393.      * @param dt Valuation Date
  394.      *
  395.      * @return Current Coupon Date
  396.      */

  397.     public abstract org.drip.analytics.date.JulianDate currentCouponDate (
  398.         final org.drip.analytics.date.JulianDate dt);

  399.     /**
  400.      * Return the coupon date for the period subsequent to the specified date
  401.      *
  402.      * @param dt Valuation Date
  403.      *
  404.      * @return Next Coupon Date
  405.      */

  406.     public abstract org.drip.analytics.date.JulianDate nextCouponDate (
  407.         final org.drip.analytics.date.JulianDate dt);

  408.     /**
  409.      * Return the next exercise info of the given exercise type (call/put) subsequent to the specified date
  410.      *
  411.      * @param dt Valuation Date
  412.      * @param bGetPut TRUE - Gets the next put date
  413.      *
  414.      * @return Next Exercise Information
  415.      */

  416.     public abstract org.drip.analytics.output.ExerciseInfo nextValidExerciseDateOfType (
  417.         final org.drip.analytics.date.JulianDate dt,
  418.         final boolean bGetPut);

  419.     /**
  420.      * Return the next exercise info subsequent to the specified date
  421.      *
  422.      * @param dt Valuation Date
  423.      *
  424.      * @return Next Exercise Info
  425.      */

  426.     public abstract org.drip.analytics.output.ExerciseInfo nextValidExerciseInfo (
  427.         final org.drip.analytics.date.JulianDate dt);

  428.     /**
  429.      * Return the coupon rate for the period corresponding to the specified date
  430.      *
  431.      * @param dt Valuation Date
  432.      * @param csqs Component Market Params
  433.      *
  434.      * @return Next Coupon Rate
  435.      *
  436.      * @throws java.lang.Exception Thrown if the current period coupon rate cannot be calculated
  437.      */

  438.     public abstract double currentCouponRate (
  439.         final org.drip.analytics.date.JulianDate dt,
  440.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs)
  441.         throws java.lang.Exception;

  442.     /**
  443.      * Return the coupon rate for the period subsequent to the specified date
  444.      *
  445.      * @param dt Valuation Date
  446.      * @param csqs Component Market Params
  447.      *
  448.      * @return Next Coupon Rate
  449.      *
  450.      * @throws java.lang.Exception Thrown if the subsequent coupon rate cannot be calculated
  451.      */

  452.     public abstract double nextCouponRate (
  453.         final org.drip.analytics.date.JulianDate dt,
  454.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs)
  455.         throws java.lang.Exception;

  456.     /**
  457.      * Calculate the bond's accrued for the period identified by the valuation date
  458.      *
  459.      * @param iDate Valuation Date
  460.      * @param csqs Bond market parameters
  461.      *
  462.      * @return The coupon accrued in the current period
  463.      *
  464.      * @throws java.lang.Exception Thrown if accrual cannot be calculated
  465.      */

  466.     public abstract double accrued (
  467.         final int iDate,
  468.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs)
  469.         throws java.lang.Exception;

  470.     /**
  471.      * Calculate the Bond's Weighted Average Maturity Date from the Valuation Date
  472.      *
  473.      * @param valParams ValuationParams
  474.      * @param csqc ComponentMarketParams
  475.      * @param iWorkoutDate Work-out date
  476.      * @param dblWorkoutFactor Double Work-out factor
  477.      *
  478.      * @return The Bond's Weighted Average Maturity Date from the Valuation Date
  479.      *
  480.      * @throws java.lang.Exception Thrown if Bond's Weighted Average Maturity Date cannot be calculated
  481.      */

  482.     public abstract int weightedAverageMaturityDate (
  483.         final org.drip.param.valuation.ValuationParams valParams,
  484.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc,
  485.         final int iWorkoutDate,
  486.         final double dblWorkoutFactor)
  487.         throws java.lang.Exception;

  488.     /**
  489.      * Calculate the Bond's Weighted Average Maturity Date To Maturity from the Valuation Date
  490.      *
  491.      * @param valParams ValuationParams
  492.      * @param csqc ComponentMarketParams
  493.      *
  494.      * @return The Bond's Weighted Average Life from the Valuation Date
  495.      *
  496.      * @throws java.lang.Exception Thrown if Bond's Weighted Average Maturity Date To Maturity cannot be
  497.      *  calculated
  498.      */

  499.     public abstract int weightedAverageMaturityDate (
  500.         final org.drip.param.valuation.ValuationParams valParams,
  501.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc)
  502.         throws java.lang.Exception;

  503.     /**
  504.      * Calculate the Bond's Weighted Average Life from the Valuation Date
  505.      *
  506.      * @param valParams ValuationParams
  507.      * @param csqc ComponentMarketParams
  508.      * @param iWorkoutDate Work-out date
  509.      * @param dblWorkoutFactor Double Work-out factor
  510.      *
  511.      * @return The Bond's Weighted Average Life from the Valuation Date
  512.      *
  513.      * @throws java.lang.Exception Thrown if Bond's Weighted Average Life cannot be calculated
  514.      */

  515.     public abstract double weightedAverageLife (
  516.         final org.drip.param.valuation.ValuationParams valParams,
  517.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc,
  518.         final int iWorkoutDate,
  519.         final double dblWorkoutFactor)
  520.         throws java.lang.Exception;

  521.     /**
  522.      * Calculate the Bond's Weighted Average Life To Maturity from the Valuation Date
  523.      *
  524.      * @param valParams ValuationParams
  525.      * @param csqc ComponentMarketParams
  526.      *
  527.      * @return The Bond's Weighted Average Life from the Valuation Date
  528.      *
  529.      * @throws java.lang.Exception Thrown if Bond's Weighted Average Life To Maturity cannot be calculated
  530.      */

  531.     public abstract double weightedAverageLife (
  532.         final org.drip.param.valuation.ValuationParams valParams,
  533.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc)
  534.         throws java.lang.Exception;

  535.     /**
  536.      * Calculate the Bond's Principal Only Weighted Average Life from the Valuation Date
  537.      *
  538.      * @param valParams ValuationParams
  539.      * @param csqc ComponentMarketParams
  540.      * @param iWorkoutDate Work-out date
  541.      * @param dblWorkoutFactor Double Work-out factor
  542.      *
  543.      * @return The Bond's Principal Only Weighted Average Life from the Valuation Date
  544.      *
  545.      * @throws java.lang.Exception Thrown if Bond's Weighted Average Life cannot be calculated
  546.      */

  547.     public abstract double weightedAverageLifePrincipalOnly (
  548.         final org.drip.param.valuation.ValuationParams valParams,
  549.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc,
  550.         final int iWorkoutDate,
  551.         final double dblWorkoutFactor)
  552.         throws java.lang.Exception;

  553.     /**
  554.      * Calculate the Bond's Principal Only Weighted Average Life To Maturity from the Valuation Date
  555.      *
  556.      * @param valParams ValuationParams
  557.      * @param csqc ComponentMarketParams
  558.      *
  559.      * @return The Bond's Weighted Average Life from the Valuation Date
  560.      *
  561.      * @throws java.lang.Exception Thrown if Bond's Principal Only Weighted Average Life To Maturity
  562.      *  cannot be calculated
  563.      */

  564.     public abstract double weightedAverageLifePrincipalOnly (
  565.         final org.drip.param.valuation.ValuationParams valParams,
  566.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc)
  567.         throws java.lang.Exception;

  568.     /**
  569.      * Calculate the Bond's Coupon Only Weighted Average Life from the Valuation Date
  570.      *
  571.      * @param valParams ValuationParams
  572.      * @param csqc ComponentMarketParams
  573.      * @param iWorkoutDate Work-out date
  574.      * @param dblWorkoutFactor Double Work-out factor
  575.      *
  576.      * @return The Bond's Coupon Only Weighted Average Life from the Valuation Date
  577.      *
  578.      * @throws java.lang.Exception Thrown if Bond's Weighted Average Life cannot be calculated
  579.      */

  580.     public abstract double weightedAverageLifeCouponOnly (
  581.         final org.drip.param.valuation.ValuationParams valParams,
  582.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc,
  583.         final int iWorkoutDate,
  584.         final double dblWorkoutFactor)
  585.         throws java.lang.Exception;

  586.     /**
  587.      * Calculate the Bond's Coupon Only Weighted Average Life To Maturity from the Valuation Date
  588.      *
  589.      * @param valParams ValuationParams
  590.      * @param csqc ComponentMarketParams
  591.      *
  592.      * @return The Bond's Coupon Only Weighted Average Life from the Valuation Date
  593.      *
  594.      * @throws java.lang.Exception Thrown if Bond's Coupon Only Weighted Average Life To Maturity cannot be
  595.      *  calculated
  596.      */

  597.     public abstract double weightedAverageLifeCouponOnly (
  598.         final org.drip.param.valuation.ValuationParams valParams,
  599.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc)
  600.         throws java.lang.Exception;

  601.     /**
  602.      * Calculate the Bond's Weighted Average Life of Losses Only from the Valuation Date
  603.      *
  604.      * @param valParams ValuationParams
  605.      * @param csqc ComponentMarketParams
  606.      * @param iWorkoutDate Work-out date
  607.      * @param dblWorkoutFactor Double Work-out factor
  608.      *
  609.      * @return The Bond's Weighted Average Life from the Valuation Date
  610.      *
  611.      * @throws java.lang.Exception Thrown if Bond's Weighted Average Life of Losses Only cannot be calculated
  612.      */

  613.     public abstract double weightedAverageLifeLossOnly (
  614.         final org.drip.param.valuation.ValuationParams valParams,
  615.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc,
  616.         final int iWorkoutDate,
  617.         final double dblWorkoutFactor)
  618.         throws java.lang.Exception;

  619.     /**
  620.      * Calculate the Bond's Weighted Average Life of Losses Only To Maturity from the Valuation Date
  621.      *
  622.      * @param valParams ValuationParams
  623.      * @param csqc ComponentMarketParams
  624.      *
  625.      * @return The Bond's Weighted Average Life from the Valuation Date
  626.      *
  627.      * @throws java.lang.Exception Thrown if Bond's Weighted Average Life of Losses Only To Maturity cannot
  628.      *  be calculated
  629.      */

  630.     public abstract double weightedAverageLifeLossOnly (
  631.         final org.drip.param.valuation.ValuationParams valParams,
  632.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc)
  633.         throws java.lang.Exception;

  634.     /**
  635.      * Calculate the Credit Adjusted Weighted Average Life from the Valuation Date
  636.      *
  637.      * @param valParams ValuationParams
  638.      * @param csqc ComponentMarketParams
  639.      * @param iWorkoutDate Work-out Date
  640.      * @param dblWorkoutFactor Double Work-out Factor
  641.      *
  642.      * @return The Credit Adjusted Weighted Average Life from the Valuation Date
  643.      *
  644.      * @throws java.lang.Exception Thrown if the Credit Adjusted Weighted Average Life cannot be calculated
  645.      */

  646.     public abstract double weightedAverageLifeCredit (
  647.         final org.drip.param.valuation.ValuationParams valParams,
  648.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc,
  649.         final int iWorkoutDate,
  650.         final double dblWorkoutFactor)
  651.         throws java.lang.Exception;

  652.     /**
  653.      * Calculate the Credit Adjusted Weighted Average Life To Maturity from the Valuation Date
  654.      *
  655.      * @param valParams ValuationParams
  656.      * @param csqc ComponentMarketParams
  657.      *
  658.      * @return The Credit Adjusted Weighted Average Life from the Valuation Date
  659.      *
  660.      * @throws java.lang.Exception Thrown if Credit Adjusted Weighted Average Life To Maturity cannot be
  661.      *  calculated
  662.      */

  663.     public abstract double weightedAverageLifeCredit (
  664.         final org.drip.param.valuation.ValuationParams valParams,
  665.         final org.drip.param.market.CurveSurfaceQuoteContainer csqc)
  666.         throws java.lang.Exception;

  667.     /**
  668.      * Calculate the bond's non-credit risky theoretical price from the Bumped Zero Curve
  669.      *
  670.      * @param valParams ValuationParams
  671.      * @param csqs ComponentMarketParams
  672.      * @param vcp Valuation Customization Parameters
  673.      * @param iZeroCurveBaseDC The Discount Curve to derive the zero curve off of
  674.      * @param iWorkoutDate Work-out date
  675.      * @param dblWorkoutFactor Double Work-out factor
  676.      * @param dblZCBump Bump to be applied to the zero curve
  677.      *
  678.      * @return Bond's non-credit risky theoretical price
  679.      *
  680.      * @throws java.lang.Exception Thrown if the price cannot be calculated
  681.      */

  682.     public abstract double priceFromZeroCurve (
  683.         final org.drip.param.valuation.ValuationParams valParams,
  684.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  685.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  686.         final int iZeroCurveBaseDC,
  687.         final int iWorkoutDate,
  688.         final double dblWorkoutFactor,
  689.         final double dblZCBump)
  690.         throws java.lang.Exception;

  691.     /**
  692.      * Calculate the bond's non-credit risky theoretical price from the Bumped Funding curve
  693.      *
  694.      * @param valParams ValuationParams
  695.      * @param csqs ComponentMarketParams
  696.      * @param iWorkoutDate Work-out date
  697.      * @param dblWorkoutFactor Double Work-out factor
  698.      * @param dblDCBump Bump to be applied to the DC
  699.      *
  700.      * @return Bond's non-credit risky theoretical price from the Bumped Funding curve
  701.      *
  702.      * @throws java.lang.Exception Thrown if the price cannot be calculated
  703.      */

  704.     public abstract double priceFromFundingCurve (
  705.         final org.drip.param.valuation.ValuationParams valParams,
  706.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  707.         final int iWorkoutDate,
  708.         final double dblWorkoutFactor,
  709.         final double dblDCBump)
  710.         throws java.lang.Exception;

  711.     /**
  712.      * Calculate the bond's non-credit risky theoretical price from the Bumped Funding curve
  713.      *
  714.      * @param valParams ValuationParams
  715.      * @param csqs ComponentMarketParams
  716.      * @param iWorkoutDate Work-out date
  717.      * @param dblWorkoutFactor Double Work-out factor
  718.      * @param dblDCBump Bump to be applied to the DC
  719.      *
  720.      * @return Bond's non-credit risky theoretical price from the Bumped Treasury curve
  721.      *
  722.      * @throws java.lang.Exception Thrown if the price cannot be calculated
  723.      */

  724.     public abstract double priceFromTreasuryCurve (
  725.         final org.drip.param.valuation.ValuationParams valParams,
  726.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  727.         final int iWorkoutDate,
  728.         final double dblWorkoutFactor,
  729.         final double dblDCBump)
  730.         throws java.lang.Exception;

  731.     /**
  732.      * Calculate the bond's credit risky theoretical price from the bumped credit curve
  733.      *
  734.      * @param valParams ValuationParams
  735.      * @param csqs ComponentMarketParams
  736.      * @param iWorkoutDate Work-out date
  737.      * @param dblWorkoutFactor Double Work-out factor
  738.      * @param dblCreditBasis Bump to be applied to the credit curve
  739.      * @param bFlat Is the CDS Curve flat (for PECS)
  740.      *
  741.      * @return Bond's credit risky theoretical price
  742.      *
  743.      * @throws java.lang.Exception Thrown if the bond's credit risky theoretical price cannot be calculated
  744.      */

  745.     public abstract double priceFromCreditCurve (
  746.         final org.drip.param.valuation.ValuationParams valParams,
  747.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  748.         final int iWorkoutDate,
  749.         final double dblWorkoutFactor,
  750.         final double dblCreditBasis,
  751.         final boolean bFlat)
  752.         throws java.lang.Exception;

  753.     /**
  754.      * Calculate ASW from Bond Basis to Work-out
  755.      *
  756.      * @param valParams Valuation Parameters
  757.      * @param csqs Market Parameters
  758.      * @param vcp Valuation Customization Parameters
  759.      * @param iWorkoutDate Work-out date
  760.      * @param dblWorkoutFactor Work-out Factor
  761.      * @param dblBondBasis Bond Basis to Work-out
  762.      *
  763.      * @return ASW from Bond Basis to Work-out
  764.      *
  765.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  766.      */

  767.     public abstract double aswFromBondBasis (
  768.         final org.drip.param.valuation.ValuationParams valParams,
  769.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  770.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  771.         final int iWorkoutDate,
  772.         final double dblWorkoutFactor,
  773.         final double dblBondBasis)
  774.         throws java.lang.Exception;

  775.     /**
  776.      * Calculate ASW from Bond Basis to Maturity
  777.      *
  778.      * @param valParams Valuation Parameters
  779.      * @param csqs Market Parameters
  780.      * @param vcp Valuation Customization Parameters
  781.      * @param dblBondBasis Bond Basis to Maturity
  782.      *
  783.      * @return ASW from Bond Basis to Maturity
  784.      *
  785.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  786.      */

  787.     public abstract double aswFromBondBasis (
  788.         final org.drip.param.valuation.ValuationParams valParams,
  789.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  790.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  791.         final double dblBondBasis)
  792.         throws java.lang.Exception;

  793.     /**
  794.      * Calculate ASW from Bond Basis to Optimal Exercise
  795.      *
  796.      * @param valParams Valuation Parameters
  797.      * @param csqs Market Parameters
  798.      * @param vcp Valuation Customization Parameters
  799.      * @param dblBondBasis Bond Basis to Optimal Exercise
  800.      *
  801.      * @return ASW from Bond Basis to Optimal Exercise
  802.      *
  803.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  804.      */

  805.     public abstract double aswFromBondBasisToOptimalExercise (
  806.         final org.drip.param.valuation.ValuationParams valParams,
  807.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  808.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  809.         final double dblBondBasis)
  810.         throws java.lang.Exception;

  811.     /**
  812.      * Calculate ASW from Credit Basis to Work-out
  813.      *
  814.      * @param valParams Valuation Parameters
  815.      * @param csqs Market Parameters
  816.      * @param vcp Valuation Customization Parameters
  817.      * @param iWorkoutDate Work-out date
  818.      * @param dblWorkoutFactor Work-out Factor
  819.      * @param dblCreditBasis Credit Basis to Work-out
  820.      *
  821.      * @return ASW from Credit Basis to Work-out
  822.      *
  823.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  824.      */

  825.     public abstract double aswFromCreditBasis (
  826.         final org.drip.param.valuation.ValuationParams valParams,
  827.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  828.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  829.         final int iWorkoutDate,
  830.         final double dblWorkoutFactor,
  831.         final double dblCreditBasis)
  832.         throws java.lang.Exception;

  833.     /**
  834.      * Calculate ASW from Credit Basis to Maturity
  835.      *
  836.      * @param valParams Valuation Parameters
  837.      * @param csqs Market Parameters
  838.      * @param vcp Valuation Customization Parameters
  839.      * @param dblCreditBasis Credit Basis to Maturity
  840.      *
  841.      * @return ASW from Credit Basis to Maturity
  842.      *
  843.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  844.      */

  845.     public abstract double aswFromCreditBasis (
  846.         final org.drip.param.valuation.ValuationParams valParams,
  847.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  848.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  849.         final double dblCreditBasis)
  850.         throws java.lang.Exception;

  851.     /**
  852.      * Calculate ASW from Credit Basis to Optimal Exercise
  853.      *
  854.      * @param valParams Valuation Parameters
  855.      * @param csqs Market Parameters
  856.      * @param vcp Valuation Customization Parameters
  857.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  858.      *
  859.      * @return ASW from Credit Basis to Optimal Exercise
  860.      *
  861.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  862.      */

  863.     public abstract double aswFromCreditBasisToOptimalExercise (
  864.         final org.drip.param.valuation.ValuationParams valParams,
  865.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  866.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  867.         final double dblCreditBasis)
  868.         throws java.lang.Exception;

  869.     /**
  870.      * Calculate ASW from Discount Margin to Work-out
  871.      *
  872.      * @param valParams Valuation Parameters
  873.      * @param csqs Market Parameters
  874.      * @param vcp Valuation Customization Parameters
  875.      * @param iWorkoutDate Work-out Date
  876.      * @param dblWorkoutFactor Work-out Factor
  877.      * @param dblDiscountMargin Discount Margin to Work-out
  878.      *
  879.      * @return ASW from Discount Margin to Work-out
  880.      *
  881.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  882.      */

  883.     public abstract double aswFromDiscountMargin (
  884.         final org.drip.param.valuation.ValuationParams valParams,
  885.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  886.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  887.         final int iWorkoutDate,
  888.         final double dblWorkoutFactor,
  889.         final double dblDiscountMargin)
  890.         throws java.lang.Exception;

  891.     /**
  892.      * Calculate ASW from Discount Margin to Maturity
  893.      *
  894.      * @param valParams Valuation Parameters
  895.      * @param csqs Market Parameters
  896.      * @param vcp Valuation Customization Parameters
  897.      * @param dblDiscountMargin Discount Margin to Maturity
  898.      *
  899.      * @return ASW from Discount Margin to Maturity
  900.      *
  901.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  902.      */

  903.     public abstract double aswFromDiscountMargin (
  904.         final org.drip.param.valuation.ValuationParams valParams,
  905.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  906.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  907.         final double dblDiscountMargin)
  908.         throws java.lang.Exception;

  909.     /**
  910.      * Calculate ASW from Discount Margin to Optimal Exercise
  911.      *
  912.      * @param valParams Valuation Parameters
  913.      * @param csqs Market Parameters
  914.      * @param vcp Valuation Customization Parameters
  915.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  916.      *
  917.      * @return ASW from Discount Margin to Optimal Exercise
  918.      *
  919.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  920.      */

  921.     public abstract double aswFromDiscountMarginToOptimalExercise (
  922.         final org.drip.param.valuation.ValuationParams valParams,
  923.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  924.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  925.         final double dblDiscountMargin)
  926.         throws java.lang.Exception;

  927.     /**
  928.      * Calculate ASW from E Spread to Work-out
  929.      *
  930.      * @param valParams Valuation Parameters
  931.      * @param csqs Market Parameters
  932.      * @param vcp Valuation Customization Parameters
  933.      * @param iWorkoutDate Work-out Date
  934.      * @param dblWorkoutFactor Work-out Factor
  935.      * @param dblESpread E Spread to Work-out
  936.      *
  937.      * @return ASW from E Spread to Work-out
  938.      *
  939.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  940.      */

  941.     public abstract double aswFromESpread (
  942.         final org.drip.param.valuation.ValuationParams valParams,
  943.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  944.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  945.         final int iWorkoutDate,
  946.         final double dblWorkoutFactor,
  947.         final double dblESpread)
  948.         throws java.lang.Exception;

  949.     /**
  950.      * Calculate ASW from E Spread to Maturity
  951.      *
  952.      * @param valParams Valuation Parameters
  953.      * @param csqs Market Parameters
  954.      * @param vcp Valuation Customization Parameters
  955.      * @param dblESpread E Spread to Maturity
  956.      *
  957.      * @return ASW from E Spread to Maturity
  958.      *
  959.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  960.      */

  961.     public abstract double aswFromESpread (
  962.         final org.drip.param.valuation.ValuationParams valParams,
  963.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  964.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  965.         final double dblESpread)
  966.         throws java.lang.Exception;

  967.     /**
  968.      * Calculate ASW from E Spread to Optimal Exercise
  969.      *
  970.      * @param valParams Valuation Parameters
  971.      * @param csqs Market Parameters
  972.      * @param vcp Valuation Customization Parameters
  973.      * @param dblESpread E Spread to Optimal Exercise
  974.      *
  975.      * @return ASW from E Spread to Optimal Exercise
  976.      *
  977.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  978.      */

  979.     public abstract double aswFromESpreadToOptimalExercise (
  980.         final org.drip.param.valuation.ValuationParams valParams,
  981.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  982.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  983.         final double dblESpread)
  984.         throws java.lang.Exception;

  985.     /**
  986.      * Calculate ASW from G Spread to Work-out
  987.      *
  988.      * @param valParams Valuation Parameters
  989.      * @param csqs Market Parameters
  990.      * @param vcp Valuation Customization Parameters
  991.      * @param iWorkoutDate Work-out Date
  992.      * @param dblWorkoutFactor Work-out Factor
  993.      * @param dblGSpread G Spread to Work-out
  994.      *
  995.      * @return ASW from G Spread to Work-out
  996.      *
  997.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  998.      */

  999.     public abstract double aswFromGSpread (
  1000.         final org.drip.param.valuation.ValuationParams valParams,
  1001.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1002.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1003.         final int iWorkoutDate,
  1004.         final double dblWorkoutFactor,
  1005.         final double dblGSpread)
  1006.         throws java.lang.Exception;

  1007.     /**
  1008.      * Calculate ASW from G Spread to Maturity
  1009.      *
  1010.      * @param valParams Valuation Parameters
  1011.      * @param csqs Market Parameters
  1012.      * @param vcp Valuation Customization Parameters
  1013.      * @param dblGSpread G Spread to Maturity
  1014.      *
  1015.      * @return ASW from G Spread to Maturity
  1016.      *
  1017.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1018.      */

  1019.     public abstract double aswFromGSpread (
  1020.         final org.drip.param.valuation.ValuationParams valParams,
  1021.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1022.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1023.         final double dblGSpread)
  1024.         throws java.lang.Exception;

  1025.     /**
  1026.      * Calculate ASW from G Spread to Optimal Exercise
  1027.      *
  1028.      * @param valParams Valuation Parameters
  1029.      * @param csqs Market Parameters
  1030.      * @param vcp Valuation Customization Parameters
  1031.      * @param dblGSpread G Spread to Optimal Exercise
  1032.      *
  1033.      * @return ASW from G Spread to Optimal Exercise
  1034.      *
  1035.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1036.      */

  1037.     public abstract double aswFromGSpreadToOptimalExercise (
  1038.         final org.drip.param.valuation.ValuationParams valParams,
  1039.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1040.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1041.         final double dblGSpread)
  1042.         throws java.lang.Exception;

  1043.     /**
  1044.      * Calculate ASW from I Spread to Work-out
  1045.      *
  1046.      * @param valParams Valuation Parameters
  1047.      * @param csqs Market Parameters
  1048.      * @param vcp Valuation Customization Parameters
  1049.      * @param iWorkoutDate Work-out Date
  1050.      * @param dblWorkoutFactor Work-out Factor
  1051.      * @param dblISpread I Spread to Work-out
  1052.      *
  1053.      * @return ASW from I Spread to Work-out
  1054.      *
  1055.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1056.      */

  1057.     public abstract double aswFromISpread (
  1058.         final org.drip.param.valuation.ValuationParams valParams,
  1059.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1060.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1061.         final int iWorkoutDate,
  1062.         final double dblWorkoutFactor,
  1063.         final double dblISpread)
  1064.         throws java.lang.Exception;

  1065.     /**
  1066.      * Calculate ASW from I Spread to Maturity
  1067.      *
  1068.      * @param valParams Valuation Parameters
  1069.      * @param csqs Market Parameters
  1070.      * @param vcp Valuation Customization Parameters
  1071.      * @param dblISpread I Spread to Maturity
  1072.      *
  1073.      * @return ASW from I Spread to Maturity
  1074.      *
  1075.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1076.      */

  1077.     public abstract double aswFromISpread (
  1078.         final org.drip.param.valuation.ValuationParams valParams,
  1079.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1080.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1081.         final double dblISpread)
  1082.         throws java.lang.Exception;

  1083.     /**
  1084.      * Calculate ASW from I Spread to Optimal Exercise
  1085.      *
  1086.      * @param valParams Valuation Parameters
  1087.      * @param csqs Market Parameters
  1088.      * @param vcp Valuation Customization Parameters
  1089.      * @param dblISpread I Spread to Optimal Exercise
  1090.      *
  1091.      * @return ASW from I Spread to Optimal Exercise
  1092.      *
  1093.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1094.      */

  1095.     public abstract double aswFromISpreadToOptimalExercise (
  1096.         final org.drip.param.valuation.ValuationParams valParams,
  1097.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1098.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1099.         final double dblISpread)
  1100.         throws java.lang.Exception;

  1101.     /**
  1102.      * Calculate ASW from J Spread to Work-out
  1103.      *
  1104.      * @param valParams Valuation Parameters
  1105.      * @param csqs Market Parameters
  1106.      * @param vcp Valuation Customization Parameters
  1107.      * @param iWorkoutDate Work-out Date
  1108.      * @param dblWorkoutFactor Work-out Factor
  1109.      * @param dblJSpread J Spread to Work-out
  1110.      *
  1111.      * @return ASW from J Spread to Work-out
  1112.      *
  1113.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1114.      */

  1115.     public abstract double aswFromJSpread (
  1116.         final org.drip.param.valuation.ValuationParams valParams,
  1117.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1118.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1119.         final int iWorkoutDate,
  1120.         final double dblWorkoutFactor,
  1121.         final double dblJSpread)
  1122.         throws java.lang.Exception;

  1123.     /**
  1124.      * Calculate ASW from J Spread to Maturity
  1125.      *
  1126.      * @param valParams Valuation Parameters
  1127.      * @param csqs Market Parameters
  1128.      * @param vcp Valuation Customization Parameters
  1129.      * @param dblJSpread J Spread to Maturity
  1130.      *
  1131.      * @return ASW from J Spread to Maturity
  1132.      *
  1133.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1134.      */

  1135.     public abstract double aswFromJSpread (
  1136.         final org.drip.param.valuation.ValuationParams valParams,
  1137.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1138.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1139.         final double dblJSpread)
  1140.         throws java.lang.Exception;

  1141.     /**
  1142.      * Calculate ASW from J Spread to Optimal Exercise
  1143.      *
  1144.      * @param valParams Valuation Parameters
  1145.      * @param csqs Market Parameters
  1146.      * @param vcp Valuation Customization Parameters
  1147.      * @param dblJSpread J Spread to Optimal Exercise
  1148.      *
  1149.      * @return ASW from J Spread to Optimal Exercise
  1150.      *
  1151.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1152.      */

  1153.     public abstract double aswFromJSpreadToOptimalExercise (
  1154.         final org.drip.param.valuation.ValuationParams valParams,
  1155.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1156.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1157.         final double dblJSpread)
  1158.         throws java.lang.Exception;

  1159.     /**
  1160.      * Calculate ASW from N Spread to Work-out
  1161.      *
  1162.      * @param valParams Valuation Parameters
  1163.      * @param csqs Market Parameters
  1164.      * @param vcp Valuation Customization Parameters
  1165.      * @param iWorkoutDate Work-out Date
  1166.      * @param dblWorkoutFactor Work-out Factor
  1167.      * @param dblNSpread N Spread to Work-out
  1168.      *
  1169.      * @return ASW from N Spread to Work-out
  1170.      *
  1171.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1172.      */

  1173.     public abstract double aswFromNSpread (
  1174.         final org.drip.param.valuation.ValuationParams valParams,
  1175.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1176.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1177.         final int iWorkoutDate,
  1178.         final double dblWorkoutFactor,
  1179.         final double dblNSpread)
  1180.         throws java.lang.Exception;

  1181.     /**
  1182.      * Calculate ASW from N Spread to Maturity
  1183.      *
  1184.      * @param valParams Valuation Parameters
  1185.      * @param csqs Market Parameters
  1186.      * @param vcp Valuation Customization Parameters
  1187.      * @param dblNSpread N Spread to Maturity
  1188.      *
  1189.      * @return ASW from N Spread to Maturity
  1190.      *
  1191.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1192.      */

  1193.     public abstract double aswFromNSpread (
  1194.         final org.drip.param.valuation.ValuationParams valParams,
  1195.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1196.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1197.         final double dblNSpread)
  1198.         throws java.lang.Exception;

  1199.     /**
  1200.      * Calculate ASW from JN Spread to Optimal Exercise
  1201.      *
  1202.      * @param valParams Valuation Parameters
  1203.      * @param csqs Market Parameters
  1204.      * @param vcp Valuation Customization Parameters
  1205.      * @param dblNSpread N Spread to Optimal Exercise
  1206.      *
  1207.      * @return ASW from N Spread to Optimal Exercise
  1208.      *
  1209.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1210.      */

  1211.     public abstract double aswFromNSpreadToOptimalExercise (
  1212.         final org.drip.param.valuation.ValuationParams valParams,
  1213.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1214.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1215.         final double dblNSpread)
  1216.         throws java.lang.Exception;

  1217.     /**
  1218.      * Calculate ASW from OAS to Work-out
  1219.      *
  1220.      * @param valParams Valuation Parameters
  1221.      * @param csqs Market Parameters
  1222.      * @param vcp Valuation Customization Parameters
  1223.      * @param iWorkoutDate Work-out Date
  1224.      * @param dblWorkoutFactor Work-out Factor
  1225.      * @param dblOAS OAS to Work-out
  1226.      *
  1227.      * @return ASW from OAS to Work-out
  1228.      *
  1229.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1230.      */

  1231.     public abstract double aswFromOAS (
  1232.         final org.drip.param.valuation.ValuationParams valParams,
  1233.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1234.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1235.         final int iWorkoutDate,
  1236.         final double dblWorkoutFactor,
  1237.         final double dblOAS)
  1238.         throws java.lang.Exception;

  1239.     /**
  1240.      * Calculate ASW from OAS to Maturity
  1241.      *
  1242.      * @param valParams Valuation Parameters
  1243.      * @param csqs Market Parameters
  1244.      * @param vcp Valuation Customization Parameters
  1245.      * @param dblOAS OAS to Maturity
  1246.      *
  1247.      * @return ASW from OAS to Maturity
  1248.      *
  1249.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1250.      */

  1251.     public abstract double aswFromOAS (
  1252.         final org.drip.param.valuation.ValuationParams valParams,
  1253.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1254.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1255.         final double dblOAS)
  1256.         throws java.lang.Exception;

  1257.     /**
  1258.      * Calculate ASW from OAS to Optimal Exercise
  1259.      *
  1260.      * @param valParams Valuation Parameters
  1261.      * @param csqs Market Parameters
  1262.      * @param vcp Valuation Customization Parameters
  1263.      * @param dblOAS OAS to Optimal Exercise
  1264.      *
  1265.      * @return ASW from OAS to Optimal Exercise
  1266.      *
  1267.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1268.      */

  1269.     public abstract double aswFromOASToOptimalExercise (
  1270.         final org.drip.param.valuation.ValuationParams valParams,
  1271.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1272.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1273.         final double dblOAS)
  1274.         throws java.lang.Exception;

  1275.     /**
  1276.      * Calculate ASW from PECS to Work-out
  1277.      *
  1278.      * @param valParams Valuation Parameters
  1279.      * @param csqs Market Parameters
  1280.      * @param vcp Valuation Customization Parameters
  1281.      * @param iWorkoutDate Work-out Date
  1282.      * @param dblWorkoutFactor Work-out Factor
  1283.      * @param dblPECS PECS to Work-out
  1284.      *
  1285.      * @return ASW from PECS to Work-out
  1286.      *
  1287.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1288.      */

  1289.     public abstract double aswFromPECS (
  1290.         final org.drip.param.valuation.ValuationParams valParams,
  1291.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1292.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1293.         final int iWorkoutDate,
  1294.         final double dblWorkoutFactor,
  1295.         final double dblPECS)
  1296.         throws java.lang.Exception;

  1297.     /**
  1298.      * Calculate ASW from PECS to Maturity
  1299.      *
  1300.      * @param valParams Valuation Parameters
  1301.      * @param csqs Market Parameters
  1302.      * @param vcp Valuation Customization Parameters
  1303.      * @param dblPECS PECS to Maturity
  1304.      *
  1305.      * @return ASW from PECS to Maturity
  1306.      *
  1307.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1308.      */

  1309.     public abstract double aswFromPECS (
  1310.         final org.drip.param.valuation.ValuationParams valParams,
  1311.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1312.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1313.         final double dblPECS)
  1314.         throws java.lang.Exception;

  1315.     /**
  1316.      * Calculate ASW from PECS to Optimal Exercise
  1317.      *
  1318.      * @param valParams Valuation Parameters
  1319.      * @param csqs Market Parameters
  1320.      * @param vcp Valuation Customization Parameters
  1321.      * @param dblPECS PECS to Optimal Exercise
  1322.      *
  1323.      * @return ASW from PECS to Optimal Exercise
  1324.      *
  1325.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1326.      */

  1327.     public abstract double aswFromPECSToOptimalExercise (
  1328.         final org.drip.param.valuation.ValuationParams valParams,
  1329.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1330.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1331.         final double dblPECS)
  1332.         throws java.lang.Exception;

  1333.     /**
  1334.      * Calculate ASW from Price to Work-out
  1335.      *
  1336.      * @param valParams Valuation Parameters
  1337.      * @param csqs Market Parameters
  1338.      * @param vcp Valuation Customization Parameters
  1339.      * @param iWorkoutDate Work-out Date
  1340.      * @param dblWorkoutFactor Work-out Factor
  1341.      * @param dblPrice Price to Work-out
  1342.      *
  1343.      * @return ASW from Price to Work-out
  1344.      *
  1345.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1346.      */

  1347.     public abstract double aswFromPrice (
  1348.         final org.drip.param.valuation.ValuationParams valParams,
  1349.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1350.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1351.         final int iWorkoutDate,
  1352.         final double dblWorkoutFactor,
  1353.         final double dblPrice)
  1354.         throws java.lang.Exception;

  1355.     /**
  1356.      * Calculate ASW from Price to Maturity
  1357.      *
  1358.      * @param valParams Valuation Parameters
  1359.      * @param csqs Market Parameters
  1360.      * @param vcp Valuation Customization Parameters
  1361.      * @param dblPrice Price to Maturity
  1362.      *
  1363.      * @return ASW from Price to Maturity
  1364.      *
  1365.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1366.      */

  1367.     public abstract double aswFromPrice (
  1368.         final org.drip.param.valuation.ValuationParams valParams,
  1369.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1370.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1371.         final double dblPrice)
  1372.         throws java.lang.Exception;

  1373.     /**
  1374.      * Calculate ASW from Price to Optimal Exercise
  1375.      *
  1376.      * @param valParams Valuation Parameters
  1377.      * @param csqs Market Parameters
  1378.      * @param vcp Valuation Customization Parameters
  1379.      * @param dblPrice Price to Optimal Exercise
  1380.      *
  1381.      * @return ASW from Price to Optimal Exercise
  1382.      *
  1383.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1384.      */

  1385.     public abstract double aswFromPriceToOptimalExercise (
  1386.         final org.drip.param.valuation.ValuationParams valParams,
  1387.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1388.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1389.         final double dblPrice)
  1390.         throws java.lang.Exception;

  1391.     /**
  1392.      * Calculate ASW from TSY Spread to Work-out
  1393.      *
  1394.      * @param valParams Valuation Parameters
  1395.      * @param csqs Market Parameters
  1396.      * @param vcp Valuation Customization Parameters
  1397.      * @param iWorkoutDate Work-out Date
  1398.      * @param dblWorkoutFactor Work-out Factor
  1399.      * @param dblTSYSpread TSY Spread to Work-out
  1400.      *
  1401.      * @return ASW from TSY Spread to Work-out
  1402.      *
  1403.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1404.      */

  1405.     public abstract double aswFromTSYSpread (
  1406.         final org.drip.param.valuation.ValuationParams valParams,
  1407.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1408.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1409.         final int iWorkoutDate,
  1410.         final double dblWorkoutFactor,
  1411.         final double dblTSYSpread)
  1412.         throws java.lang.Exception;

  1413.     /**
  1414.      * Calculate ASW from TSY Spread to Maturity
  1415.      *
  1416.      * @param valParams Valuation Parameters
  1417.      * @param csqs Market Parameters
  1418.      * @param vcp Valuation Customization Parameters
  1419.      * @param dblTSYSpread TSY Spread to Maturity
  1420.      *
  1421.      * @return ASW from TSY Spread to Maturity
  1422.      *
  1423.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1424.      */

  1425.     public abstract double aswFromTSYSpread (
  1426.         final org.drip.param.valuation.ValuationParams valParams,
  1427.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1428.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1429.         final double dblTSYSpread)
  1430.         throws java.lang.Exception;

  1431.     /**
  1432.      * Calculate ASW from TSY Spread to Optimal Exercise
  1433.      *
  1434.      * @param valParams Valuation Parameters
  1435.      * @param csqs Market Parameters
  1436.      * @param vcp Valuation Customization Parameters
  1437.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  1438.      *
  1439.      * @return ASW from TSY Spread to Optimal Exercise
  1440.      *
  1441.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1442.      */

  1443.     public abstract double aswFromTSYSpreadToOptimalExercise (
  1444.         final org.drip.param.valuation.ValuationParams valParams,
  1445.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1446.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1447.         final double dblTSYSpread)
  1448.         throws java.lang.Exception;

  1449.     /**
  1450.      * Calculate ASW from Yield to Work-out
  1451.      *
  1452.      * @param valParams Valuation Parameters
  1453.      * @param csqs Market Parameters
  1454.      * @param vcp Valuation Customization Parameters
  1455.      * @param iWorkoutDate Work-out Date
  1456.      * @param dblWorkoutFactor Work-out Factor
  1457.      * @param dblYield Yield to Work-out
  1458.      *
  1459.      * @return ASW from Yield to Work-out
  1460.      *
  1461.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1462.      */

  1463.     public abstract double aswFromYield (
  1464.         final org.drip.param.valuation.ValuationParams valParams,
  1465.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1466.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1467.         final int iWorkoutDate,
  1468.         final double dblWorkoutFactor,
  1469.         final double dblYield)
  1470.         throws java.lang.Exception;

  1471.     /**
  1472.      * Calculate ASW from Yield to Maturity
  1473.      *
  1474.      * @param valParams Valuation Parameters
  1475.      * @param csqs Market Parameters
  1476.      * @param vcp Valuation Customization Parameters
  1477.      * @param dblYield Yield to Maturity
  1478.      *
  1479.      * @return ASW from Yield to Maturity
  1480.      *
  1481.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1482.      */

  1483.     public abstract double aswFromYield (
  1484.         final org.drip.param.valuation.ValuationParams valParams,
  1485.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1486.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1487.         final double dblYield)
  1488.         throws java.lang.Exception;

  1489.     /**
  1490.      * Calculate ASW from Yield to Optimal Exercise
  1491.      *
  1492.      * @param valParams Valuation Parameters
  1493.      * @param csqs Market Parameters
  1494.      * @param vcp Valuation Customization Parameters
  1495.      * @param dblYield Yield to Optimal Exercise
  1496.      *
  1497.      * @return ASW from Yield to Optimal Exercise
  1498.      *
  1499.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1500.      */

  1501.     public abstract double aswFromYieldToOptimalExercise (
  1502.         final org.drip.param.valuation.ValuationParams valParams,
  1503.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1504.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1505.         final double dblYield)
  1506.         throws java.lang.Exception;

  1507.     /**
  1508.      * Calculate ASW from Yield Spread to Work-out
  1509.      *
  1510.      * @param valParams Valuation Parameters
  1511.      * @param csqs Market Parameters
  1512.      * @param vcp Valuation Customization Parameters
  1513.      * @param iWorkoutDate Work-out Date
  1514.      * @param dblWorkoutFactor Work-out Factor
  1515.      * @param dblYieldSpread Yield Spread to Work-out
  1516.      *
  1517.      * @return ASW from Yield Spread to Work-out
  1518.      *
  1519.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1520.      */

  1521.     public abstract double aswFromYieldSpread (
  1522.         final org.drip.param.valuation.ValuationParams valParams,
  1523.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1524.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1525.         final int iWorkoutDate,
  1526.         final double dblWorkoutFactor,
  1527.         final double dblYieldSpread)
  1528.         throws java.lang.Exception;

  1529.     /**
  1530.      * Calculate ASW from Yield Spread to Maturity
  1531.      *
  1532.      * @param valParams Valuation Parameters
  1533.      * @param csqs Market Parameters
  1534.      * @param vcp Valuation Customization Parameters
  1535.      * @param dblYieldSpread Yield Spread to Maturity
  1536.      *
  1537.      * @return ASW from Yield Spread to Maturity
  1538.      *
  1539.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1540.      */

  1541.     public abstract double aswFromYieldSpread (
  1542.         final org.drip.param.valuation.ValuationParams valParams,
  1543.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1544.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1545.         final double dblYieldSpread)
  1546.         throws java.lang.Exception;

  1547.     /**
  1548.      * Calculate ASW from Yield Spread to Optimal Exercise
  1549.      *
  1550.      * @param valParams Valuation Parameters
  1551.      * @param csqs Market Parameters
  1552.      * @param vcp Valuation Customization Parameters
  1553.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  1554.      *
  1555.      * @return ASW from Yield Spread to Optimal Exercise
  1556.      *
  1557.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1558.      */

  1559.     public abstract double aswFromYieldSpreadToOptimalExercise (
  1560.         final org.drip.param.valuation.ValuationParams valParams,
  1561.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1562.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1563.         final double dblYieldSpread)
  1564.         throws java.lang.Exception;

  1565.     /**
  1566.      * Calculate ASW from Z Spread to Work-out
  1567.      *
  1568.      * @param valParams Valuation Parameters
  1569.      * @param csqs Market Parameters
  1570.      * @param vcp Valuation Customization Parameters
  1571.      * @param iWorkoutDate Work-out Date
  1572.      * @param dblWorkoutFactor Work-out Factor
  1573.      * @param dblZSpread Z Spread to Work-out
  1574.      *
  1575.      * @return ASW from Z Spread to Work-out
  1576.      *
  1577.      * @throws java.lang.Exception Thrown if the ASW cannot be calculated
  1578.      */

  1579.     public abstract double aswFromZSpread (
  1580.         final org.drip.param.valuation.ValuationParams valParams,
  1581.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1582.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1583.         final int iWorkoutDate,
  1584.         final double dblWorkoutFactor,
  1585.         final double dblZSpread)
  1586.         throws java.lang.Exception;

  1587.     /**
  1588.      * Calculate ASW from Z Spread to Maturity
  1589.      *
  1590.      * @param valParams Valuation Parameters
  1591.      * @param csqs Market Parameters
  1592.      * @param vcp Valuation Customization Parameters
  1593.      * @param dblZSpread Z Spread to Maturity
  1594.      *
  1595.      * @return ASW from Z Spread to Maturity
  1596.      *
  1597.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1598.      */

  1599.     public abstract double aswFromZSpread (
  1600.         final org.drip.param.valuation.ValuationParams valParams,
  1601.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1602.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1603.         final double dblZSpread)
  1604.         throws java.lang.Exception;

  1605.     /**
  1606.      * Calculate ASW from Z Spread to Optimal Exercise
  1607.      *
  1608.      * @param valParams Valuation Parameters
  1609.      * @param csqs Market Parameters
  1610.      * @param vcp Valuation Customization Parameters
  1611.      * @param dblZSpread Z Spread to Optimal Exercise
  1612.      *
  1613.      * @return ASW from Z Spread to Optimal Exercise
  1614.      *
  1615.      * @throws java.lang.Exception Thrown if ASW cannot be calculated
  1616.      */

  1617.     public abstract double aswFromZSpreadToOptimalExercise (
  1618.         final org.drip.param.valuation.ValuationParams valParams,
  1619.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1620.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1621.         final double dblZSpread)
  1622.         throws java.lang.Exception;

  1623.     /**
  1624.      * Calculate Bond Basis from ASW to Work-out
  1625.      *
  1626.      * @param valParams Valuation Parameters
  1627.      * @param csqs Market Parameters
  1628.      * @param vcp Valuation Customization Parameters
  1629.      * @param iWorkoutDate Work-out Date
  1630.      * @param dblWorkoutFactor Work-out Factor
  1631.      * @param dblASW ASW to Work-out
  1632.      *
  1633.      * @return Bond Basis from ASW to Work-out
  1634.      *
  1635.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  1636.      */

  1637.     public abstract double bondBasisFromASW (
  1638.         final org.drip.param.valuation.ValuationParams valParams,
  1639.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1640.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1641.         final int iWorkoutDate,
  1642.         final double dblWorkoutFactor,
  1643.         final double dblASW)
  1644.         throws java.lang.Exception;

  1645.     /**
  1646.      * Calculate Bond Basis from ASW to Maturity
  1647.      *
  1648.      * @param valParams Valuation Parameters
  1649.      * @param csqs Market Parameters
  1650.      * @param vcp Valuation Customization Parameters
  1651.      * @param dblASW ASW to Maturity
  1652.      *
  1653.      * @return Bond Basis from ASW to Maturity
  1654.      *
  1655.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1656.      */

  1657.     public abstract double bondBasisFromASW (
  1658.         final org.drip.param.valuation.ValuationParams valParams,
  1659.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1660.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1661.         final double dblASW)
  1662.         throws java.lang.Exception;

  1663.     /**
  1664.      * Calculate Bond Basis from ASW to Optimal Exercise
  1665.      *
  1666.      * @param valParams Valuation Parameters
  1667.      * @param csqs Market Parameters
  1668.      * @param vcp Valuation Customization Parameters
  1669.      * @param dblASW ASW to Optimal Exercise
  1670.      *
  1671.      * @return Bond Basis from ASW to Optimal Exercise
  1672.      *
  1673.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1674.      */

  1675.     public abstract double bondBasisFromASWToOptimalExercise (
  1676.         final org.drip.param.valuation.ValuationParams valParams,
  1677.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1678.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1679.         final double dblASW)
  1680.         throws java.lang.Exception;

  1681.     /**
  1682.      * Calculate Bond Basis from Credit Basis to Work-out
  1683.      *
  1684.      * @param valParams Valuation Parameters
  1685.      * @param csqs Market Parameters
  1686.      * @param vcp Valuation Customization Parameters
  1687.      * @param iWorkoutDate Work-out Date
  1688.      * @param dblWorkoutFactor Work-out Factor
  1689.      * @param dblCreditBasis Credit Basis to Work-out
  1690.      *
  1691.      * @return Bond Basis from Credit Basis to Work-out
  1692.      *
  1693.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  1694.      */

  1695.     public abstract double bondBasisFromCreditBasis (
  1696.         final org.drip.param.valuation.ValuationParams valParams,
  1697.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1698.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1699.         final int iWorkoutDate,
  1700.         final double dblWorkoutFactor,
  1701.         final double dblCreditBasis)
  1702.         throws java.lang.Exception;

  1703.     /**
  1704.      * Calculate Bond Basis from Credit Basis to Maturity
  1705.      *
  1706.      * @param valParams Valuation Parameters
  1707.      * @param csqs Market Parameters
  1708.      * @param vcp Valuation Customization Parameters
  1709.      * @param dblCreditBasis Credit Basis to Maturity
  1710.      *
  1711.      * @return Bond Basis from Credit Basis to Maturity
  1712.      *
  1713.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1714.      */

  1715.     public abstract double bondBasisFromCreditBasis (
  1716.         final org.drip.param.valuation.ValuationParams valParams,
  1717.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1718.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1719.         final double dblCreditBasis)
  1720.         throws java.lang.Exception;

  1721.     /**
  1722.      * Calculate Bond Basis from Credit Basis to Optimal Exercise
  1723.      *
  1724.      * @param valParams Valuation Parameters
  1725.      * @param csqs Market Parameters
  1726.      * @param vcp Valuation Customization Parameters
  1727.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  1728.      *
  1729.      * @return Bond Basis from Credit Basis to Optimal Exercise
  1730.      *
  1731.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1732.      */

  1733.     public abstract double bondBasisFromCreditBasisToOptimalExercise (
  1734.         final org.drip.param.valuation.ValuationParams valParams,
  1735.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1736.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1737.         final double dblCreditBasis)
  1738.         throws java.lang.Exception;

  1739.     /**
  1740.      * Calculate Bond Basis from Discount Margin to Work-out
  1741.      *
  1742.      * @param valParams Valuation Parameters
  1743.      * @param csqs Market Parameters
  1744.      * @param vcp Valuation Customization Parameters
  1745.      * @param iWorkoutDate Work-out Date
  1746.      * @param dblWorkoutFactor Work-out Factor
  1747.      * @param dblDiscountMargin Discount Margin to Work-out
  1748.      *
  1749.      * @return Bond Basis from Discount Margin to Work-out
  1750.      *
  1751.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  1752.      */

  1753.     public abstract double bondBasisFromDiscountMargin (
  1754.         final org.drip.param.valuation.ValuationParams valParams,
  1755.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1756.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1757.         final int iWorkoutDate,
  1758.         final double dblWorkoutFactor,
  1759.         final double dblDiscountMargin)
  1760.         throws java.lang.Exception;

  1761.     /**
  1762.      * Calculate Bond Basis from Discount Margin to Maturity
  1763.      *
  1764.      * @param valParams Valuation Parameters
  1765.      * @param csqs Market Parameters
  1766.      * @param vcp Valuation Customization Parameters
  1767.      * @param dblDiscountMargin Discount Margin to Maturity
  1768.      *
  1769.      * @return Bond Basis from Discount Margin to Maturity
  1770.      *
  1771.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1772.      */

  1773.     public abstract double bondBasisFromDiscountMargin (
  1774.         final org.drip.param.valuation.ValuationParams valParams,
  1775.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1776.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1777.         final double dblDiscountMargin)
  1778.         throws java.lang.Exception;

  1779.     /**
  1780.      * Calculate Bond Basis from Discount Margin to Optimal Exercise
  1781.      *
  1782.      * @param valParams Valuation Parameters
  1783.      * @param csqs Market Parameters
  1784.      * @param vcp Valuation Customization Parameters
  1785.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  1786.      *
  1787.      * @return Bond Basis from Discount Margin to Optimal Exercise
  1788.      *
  1789.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1790.      */

  1791.     public abstract double bondBasisFromDiscountMarginToOptimalExercise (
  1792.         final org.drip.param.valuation.ValuationParams valParams,
  1793.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1794.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1795.         final double dblDiscountMargin)
  1796.         throws java.lang.Exception;

  1797.     /**
  1798.      * Calculate Bond Basis from E Spread to Work-out
  1799.      *
  1800.      * @param valParams Valuation Parameters
  1801.      * @param csqs Market Parameters
  1802.      * @param vcp Valuation Customization Parameters
  1803.      * @param iWorkoutDate Work-out Date
  1804.      * @param dblWorkoutFactor Work-out Factor
  1805.      * @param dblESpread E Spread to Work-out
  1806.      *
  1807.      * @return Bond Basis from E Spread to Work-out
  1808.      *
  1809.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  1810.      */

  1811.     public abstract double bondBasisFromESpread (
  1812.         final org.drip.param.valuation.ValuationParams valParams,
  1813.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1814.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1815.         final int iWorkoutDate,
  1816.         final double dblWorkoutFactor,
  1817.         final double dblESpread)
  1818.         throws java.lang.Exception;

  1819.     /**
  1820.      * Calculate Bond Basis from E Spread to Maturity
  1821.      *
  1822.      * @param valParams Valuation Parameters
  1823.      * @param csqs Market Parameters
  1824.      * @param vcp Valuation Customization Parameters
  1825.      * @param dblESpread E Spread to Maturity
  1826.      *
  1827.      * @return Bond Basis from E Spread to Maturity
  1828.      *
  1829.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1830.      */

  1831.     public abstract double bondBasisFromESpread (
  1832.         final org.drip.param.valuation.ValuationParams valParams,
  1833.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1834.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1835.         final double dblESpread)
  1836.         throws java.lang.Exception;

  1837.     /**
  1838.      * Calculate Bond Basis from E Spread to Optimal Exercise
  1839.      *
  1840.      * @param valParams Valuation Parameters
  1841.      * @param csqs Market Parameters
  1842.      * @param vcp Valuation Customization Parameters
  1843.      * @param dblESpread E Spread to Optimal Exercise
  1844.      *
  1845.      * @return Bond Basis from E Spread to Optimal Exercise
  1846.      *
  1847.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1848.      */

  1849.     public abstract double bondBasisFromESpreadToOptimalExercise (
  1850.         final org.drip.param.valuation.ValuationParams valParams,
  1851.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1852.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1853.         final double dblESpread)
  1854.         throws java.lang.Exception;

  1855.     /**
  1856.      * Calculate Bond Basis from G Spread to Work-out
  1857.      *
  1858.      * @param valParams Valuation Parameters
  1859.      * @param csqs Market Parameters
  1860.      * @param vcp Valuation Customization Parameters
  1861.      * @param iWorkoutDate Work-out Date
  1862.      * @param dblWorkoutFactor Work-out Factor
  1863.      * @param dblGSpread G Spread to Work-out
  1864.      *
  1865.      * @return Bond Basis from G Spread to Work-out
  1866.      *
  1867.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  1868.      */

  1869.     public abstract double bondBasisFromGSpread (
  1870.         final org.drip.param.valuation.ValuationParams valParams,
  1871.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1872.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1873.         final int iWorkoutDate,
  1874.         final double dblWorkoutFactor,
  1875.         final double dblGSpread)
  1876.         throws java.lang.Exception;

  1877.     /**
  1878.      * Calculate Bond Basis from G Spread to Maturity
  1879.      *
  1880.      * @param valParams Valuation Parameters
  1881.      * @param csqs Market Parameters
  1882.      * @param vcp Valuation Customization Parameters
  1883.      * @param dblGSpread G Spread to Maturity
  1884.      *
  1885.      * @return Bond Basis from G Spread to Maturity
  1886.      *
  1887.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1888.      */

  1889.     public abstract double bondBasisFromGSpread (
  1890.         final org.drip.param.valuation.ValuationParams valParams,
  1891.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1892.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1893.         final double dblGSpread)
  1894.         throws java.lang.Exception;

  1895.     /**
  1896.      * Calculate Bond Basis from G Spread to Optimal Exercise
  1897.      *
  1898.      * @param valParams Valuation Parameters
  1899.      * @param csqs Market Parameters
  1900.      * @param vcp Valuation Customization Parameters
  1901.      * @param dblGSpread G Spread to Optimal Exercise
  1902.      *
  1903.      * @return Bond Basis from G Spread to Optimal Exercise
  1904.      *
  1905.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1906.      */

  1907.     public abstract double bondBasisFromGSpreadToOptimalExercise (
  1908.         final org.drip.param.valuation.ValuationParams valParams,
  1909.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1910.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1911.         final double dblGSpread)
  1912.         throws java.lang.Exception;

  1913.     /**
  1914.      * Calculate Bond Basis from I Spread to Work-out
  1915.      *
  1916.      * @param valParams Valuation Parameters
  1917.      * @param csqs Market Parameters
  1918.      * @param vcp Valuation Customization Parameters
  1919.      * @param iWorkoutDate Work-out Date
  1920.      * @param dblWorkoutFactor Work-out Factor
  1921.      * @param dblISpread I Spread to Work-out
  1922.      *
  1923.      * @return Bond Basis from I Spread to Work-out
  1924.      *
  1925.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  1926.      */

  1927.     public abstract double bondBasisFromISpread (
  1928.         final org.drip.param.valuation.ValuationParams valParams,
  1929.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1930.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1931.         final int iWorkoutDate,
  1932.         final double dblWorkoutFactor,
  1933.         final double dblISpread)
  1934.         throws java.lang.Exception;

  1935.     /**
  1936.      * Calculate Bond Basis from I Spread to Maturity
  1937.      *
  1938.      * @param valParams Valuation Parameters
  1939.      * @param csqs Market Parameters
  1940.      * @param vcp Valuation Customization Parameters
  1941.      * @param dblISpread I Spread to Maturity
  1942.      *
  1943.      * @return Bond Basis from I Spread to Maturity
  1944.      *
  1945.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1946.      */

  1947.     public abstract double bondBasisFromISpread (
  1948.         final org.drip.param.valuation.ValuationParams valParams,
  1949.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1950.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1951.         final double dblISpread)
  1952.         throws java.lang.Exception;

  1953.     /**
  1954.      * Calculate Bond Basis from I Spread to Optimal Exercise
  1955.      *
  1956.      * @param valParams Valuation Parameters
  1957.      * @param csqs Market Parameters
  1958.      * @param vcp Valuation Customization Parameters
  1959.      * @param dblISpread I Spread to Optimal Exercise
  1960.      *
  1961.      * @return Bond Basis from I Spread to Optimal Exercise
  1962.      *
  1963.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  1964.      */

  1965.     public abstract double bondBasisFromISpreadToOptimalExercise (
  1966.         final org.drip.param.valuation.ValuationParams valParams,
  1967.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1968.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1969.         final double dblISpread)
  1970.         throws java.lang.Exception;

  1971.     /**
  1972.      * Calculate Bond Basis from J Spread to Work-out
  1973.      *
  1974.      * @param valParams Valuation Parameters
  1975.      * @param csqs Market Parameters
  1976.      * @param vcp Valuation Customization Parameters
  1977.      * @param iWorkoutDate Work-out Date
  1978.      * @param dblWorkoutFactor Work-out Factor
  1979.      * @param dblJSpread J Spread to Work-out
  1980.      *
  1981.      * @return Bond Basis from J Spread to Work-out
  1982.      *
  1983.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  1984.      */

  1985.     public abstract double bondBasisFromJSpread (
  1986.         final org.drip.param.valuation.ValuationParams valParams,
  1987.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  1988.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  1989.         final int iWorkoutDate,
  1990.         final double dblWorkoutFactor,
  1991.         final double dblJSpread)
  1992.         throws java.lang.Exception;

  1993.     /**
  1994.      * Calculate Bond Basis from J Spread to Maturity
  1995.      *
  1996.      * @param valParams Valuation Parameters
  1997.      * @param csqs Market Parameters
  1998.      * @param vcp Valuation Customization Parameters
  1999.      * @param dblJSpread J Spread to Maturity
  2000.      *
  2001.      * @return Bond Basis from J Spread to Maturity
  2002.      *
  2003.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2004.      */

  2005.     public abstract double bondBasisFromJSpread (
  2006.         final org.drip.param.valuation.ValuationParams valParams,
  2007.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2008.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2009.         final double dblJSpread)
  2010.         throws java.lang.Exception;

  2011.     /**
  2012.      * Calculate Bond Basis from J Spread to Optimal Exercise
  2013.      *
  2014.      * @param valParams Valuation Parameters
  2015.      * @param csqs Market Parameters
  2016.      * @param vcp Valuation Customization Parameters
  2017.      * @param dblJSpread J Spread to Optimal Exercise
  2018.      *
  2019.      * @return Bond Basis from J Spread to Optimal Exercise
  2020.      *
  2021.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2022.      */

  2023.     public abstract double bondBasisFromJSpreadToOptimalExercise (
  2024.         final org.drip.param.valuation.ValuationParams valParams,
  2025.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2026.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2027.         final double dblJSpread)
  2028.         throws java.lang.Exception;

  2029.     /**
  2030.      * Calculate Bond Basis from N Spread to Work-out
  2031.      *
  2032.      * @param valParams Valuation Parameters
  2033.      * @param csqs Market Parameters
  2034.      * @param vcp Valuation Customization Parameters
  2035.      * @param iWorkoutDate Work-out Date
  2036.      * @param dblWorkoutFactor Work-out Factor
  2037.      * @param dblNSpread N Spread to Work-out
  2038.      *
  2039.      * @return Bond Basis from N Spread to Work-out
  2040.      *
  2041.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  2042.      */

  2043.     public abstract double bondBasisFromNSpread (
  2044.         final org.drip.param.valuation.ValuationParams valParams,
  2045.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2046.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2047.         final int iWorkoutDate,
  2048.         final double dblWorkoutFactor,
  2049.         final double dblNSpread)
  2050.         throws java.lang.Exception;

  2051.     /**
  2052.      * Calculate Bond Basis from N Spread to Maturity
  2053.      *
  2054.      * @param valParams Valuation Parameters
  2055.      * @param csqs Market Parameters
  2056.      * @param vcp Valuation Customization Parameters
  2057.      * @param dblNSpread N Spread to Maturity
  2058.      *
  2059.      * @return Bond Basis from N Spread to Maturity
  2060.      *
  2061.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2062.      */

  2063.     public abstract double bondBasisFromNSpread (
  2064.         final org.drip.param.valuation.ValuationParams valParams,
  2065.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2066.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2067.         final double dblNSpread)
  2068.         throws java.lang.Exception;

  2069.     /**
  2070.      * Calculate Bond Basis from N Spread to Optimal Exercise
  2071.      *
  2072.      * @param valParams Valuation Parameters
  2073.      * @param csqs Market Parameters
  2074.      * @param vcp Valuation Customization Parameters
  2075.      * @param dblNSpread N Spread to Optimal Exercise
  2076.      *
  2077.      * @return Bond Basis from N Spread to Optimal Exercise
  2078.      *
  2079.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2080.      */

  2081.     public abstract double bondBasisFromNSpreadToOptimalExercise (
  2082.         final org.drip.param.valuation.ValuationParams valParams,
  2083.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2084.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2085.         final double dblNSpread)
  2086.         throws java.lang.Exception;

  2087.     /**
  2088.      * Calculate Bond Basis from OAS to Work-out
  2089.      *
  2090.      * @param valParams Valuation Parameters
  2091.      * @param csqs Market Parameters
  2092.      * @param vcp Valuation Customization Parameters
  2093.      * @param iWorkoutDate Work-out Date
  2094.      * @param dblWorkoutFactor Work-out Factor
  2095.      * @param dblOAS OAS to Work-out
  2096.      *
  2097.      * @return Bond Basis from OAS to Work-out
  2098.      *
  2099.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  2100.      */

  2101.     public abstract double bondBasisFromOAS (
  2102.         final org.drip.param.valuation.ValuationParams valParams,
  2103.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2104.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2105.         final int iWorkoutDate,
  2106.         final double dblWorkoutFactor,
  2107.         final double dblOAS)
  2108.         throws java.lang.Exception;

  2109.     /**
  2110.      * Calculate Bond Basis from OAS to Maturity
  2111.      *
  2112.      * @param valParams Valuation Parameters
  2113.      * @param csqs Market Parameters
  2114.      * @param vcp Valuation Customization Parameters
  2115.      * @param dblOAS OAS to Maturity
  2116.      *
  2117.      * @return Bond Basis from OAS to Maturity
  2118.      *
  2119.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2120.      */

  2121.     public abstract double bondBasisFromOAS (
  2122.         final org.drip.param.valuation.ValuationParams valParams,
  2123.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2124.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2125.         final double dblOAS)
  2126.         throws java.lang.Exception;

  2127.     /**
  2128.      * Calculate Bond Basis from OAS to Optimal Exercise
  2129.      *
  2130.      * @param valParams Valuation Parameters
  2131.      * @param csqs Market Parameters
  2132.      * @param vcp Valuation Customization Parameters
  2133.      * @param dblOAS OAS to Optimal Exercise
  2134.      *
  2135.      * @return Bond Basis from OAS to Optimal Exercise
  2136.      *
  2137.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2138.      */

  2139.     public abstract double bondBasisFromOASToOptimalExercise (
  2140.         final org.drip.param.valuation.ValuationParams valParams,
  2141.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2142.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2143.         final double dblOAS)
  2144.         throws java.lang.Exception;

  2145.     /**
  2146.      * Calculate Bond Basis from PECS to Work-out
  2147.      *
  2148.      * @param valParams Valuation Parameters
  2149.      * @param csqs Market Parameters
  2150.      * @param vcp Valuation Customization Parameters
  2151.      * @param iWorkoutDate Work-out Date
  2152.      * @param dblWorkoutFactor Work-out Factor
  2153.      * @param dblPECS PECS to Work-out
  2154.      *
  2155.      * @return Bond Basis from PECS to Work-out
  2156.      *
  2157.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  2158.      */

  2159.     public abstract double bondBasisFromPECS (
  2160.         final org.drip.param.valuation.ValuationParams valParams,
  2161.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2162.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2163.         final int iWorkoutDate,
  2164.         final double dblWorkoutFactor,
  2165.         final double dblPECS)
  2166.         throws java.lang.Exception;

  2167.     /**
  2168.      * Calculate Bond Basis from PECS to Maturity
  2169.      *
  2170.      * @param valParams Valuation Parameters
  2171.      * @param csqs Market Parameters
  2172.      * @param vcp Valuation Customization Parameters
  2173.      * @param dblPECS PECS to Maturity
  2174.      *
  2175.      * @return Bond Basis from PECS to Maturity
  2176.      *
  2177.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2178.      */

  2179.     public abstract double bondBasisFromPECS (
  2180.         final org.drip.param.valuation.ValuationParams valParams,
  2181.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2182.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2183.         final double dblPECS)
  2184.         throws java.lang.Exception;

  2185.     /**
  2186.      * Calculate Bond Basis from PECS to Optimal Exercise
  2187.      *
  2188.      * @param valParams Valuation Parameters
  2189.      * @param csqs Market Parameters
  2190.      * @param vcp Valuation Customization Parameters
  2191.      * @param dblPECS PECS to Optimal Exercise
  2192.      *
  2193.      * @return Bond Basis from PECS to Optimal Exercise
  2194.      *
  2195.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2196.      */

  2197.     public abstract double bondBasisFromPECSToOptimalExercise (
  2198.         final org.drip.param.valuation.ValuationParams valParams,
  2199.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2200.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2201.         final double dblPECS)
  2202.         throws java.lang.Exception;

  2203.     /**
  2204.      * Calculate Bond Basis from Price to Work-out
  2205.      *
  2206.      * @param valParams Valuation Parameters
  2207.      * @param csqs Market Parameters
  2208.      * @param vcp Valuation Customization Parameters
  2209.      * @param iWorkoutDate Work-out Date
  2210.      * @param dblWorkoutFactor Work-out Factor
  2211.      * @param dblPrice Price to Work-out
  2212.      *
  2213.      * @return Bond Basis from Price to Work-out
  2214.      *
  2215.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  2216.      */

  2217.     public abstract double bondBasisFromPrice (
  2218.         final org.drip.param.valuation.ValuationParams valParams,
  2219.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2220.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2221.         final int iWorkoutDate,
  2222.         final double dblWorkoutFactor,
  2223.         final double dblPrice)
  2224.         throws java.lang.Exception;

  2225.     /**
  2226.      * Calculate Bond Basis from Price to Maturity
  2227.      *
  2228.      * @param valParams Valuation Parameters
  2229.      * @param csqs Market Parameters
  2230.      * @param vcp Valuation Customization Parameters
  2231.      * @param dblPrice Price to Maturity
  2232.      *
  2233.      * @return Bond Basis from Price to Maturity
  2234.      *
  2235.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2236.      */

  2237.     public abstract double bondBasisFromPrice (
  2238.         final org.drip.param.valuation.ValuationParams valParams,
  2239.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2240.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2241.         final double dblPrice)
  2242.         throws java.lang.Exception;

  2243.     /**
  2244.      * Calculate Bond Basis from Price to Optimal Exercise
  2245.      *
  2246.      * @param valParams Valuation Parameters
  2247.      * @param csqs Market Parameters
  2248.      * @param vcp Valuation Customization Parameters
  2249.      * @param dblPrice Price to Optimal Exercise
  2250.      *
  2251.      * @return Bond Basis from Price to Optimal Exercise
  2252.      *
  2253.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2254.      */

  2255.     public abstract double bondBasisFromPriceToOptimalExercise (
  2256.         final org.drip.param.valuation.ValuationParams valParams,
  2257.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2258.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2259.         final double dblPrice)
  2260.         throws java.lang.Exception;

  2261.     /**
  2262.      * Calculate Bond Basis from TSY Spread to Work-out
  2263.      *
  2264.      * @param valParams Valuation Parameters
  2265.      * @param csqs Market Parameters
  2266.      * @param vcp Valuation Customization Parameters
  2267.      * @param iWorkoutDate Work-out Date
  2268.      * @param dblWorkoutFactor Work-out Factor
  2269.      * @param dblTSYSpread TSY Spread to Work-out
  2270.      *
  2271.      * @return Bond Basis from TSY Spread to Work-out
  2272.      *
  2273.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  2274.      */

  2275.     public abstract double bondBasisFromTSYSpread (
  2276.         final org.drip.param.valuation.ValuationParams valParams,
  2277.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2278.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2279.         final int iWorkoutDate,
  2280.         final double dblWorkoutFactor,
  2281.         final double dblTSYSpread)
  2282.         throws java.lang.Exception;

  2283.     /**
  2284.      * Calculate Bond Basis from TSY Spread to Maturity
  2285.      *
  2286.      * @param valParams Valuation Parameters
  2287.      * @param csqs Market Parameters
  2288.      * @param vcp Valuation Customization Parameters
  2289.      * @param dblTSYSpread TSY Spread to Maturity
  2290.      *
  2291.      * @return Bond Basis from TSY Spread to Maturity
  2292.      *
  2293.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2294.      */

  2295.     public abstract double bondBasisFromTSYSpread (
  2296.         final org.drip.param.valuation.ValuationParams valParams,
  2297.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2298.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2299.         final double dblTSYSpread)
  2300.         throws java.lang.Exception;

  2301.     /**
  2302.      * Calculate Bond Basis from TSY Spread to Optimal Exercise
  2303.      *
  2304.      * @param valParams Valuation Parameters
  2305.      * @param csqs Market Parameters
  2306.      * @param vcp Valuation Customization Parameters
  2307.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  2308.      *
  2309.      * @return Bond Basis from TSY Spread to Optimal Exercise
  2310.      *
  2311.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2312.      */

  2313.     public abstract double bondBasisFromTSYSpreadToOptimalExercise (
  2314.         final org.drip.param.valuation.ValuationParams valParams,
  2315.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2316.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2317.         final double dblTSYSpread)
  2318.         throws java.lang.Exception;

  2319.     /**
  2320.      * Calculate Bond Basis from Yield to Work-out
  2321.      *
  2322.      * @param valParams Valuation Parameters
  2323.      * @param csqs Market Parameters
  2324.      * @param vcp Valuation Customization Parameters
  2325.      * @param iWorkoutDate Work-out Date
  2326.      * @param dblWorkoutFactor Work-out Factor
  2327.      * @param dblYield Yield to Work-out
  2328.      *
  2329.      * @return Bond Basis from Yield to Work-out
  2330.      *
  2331.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  2332.      */

  2333.     public abstract double bondBasisFromYield (
  2334.         final org.drip.param.valuation.ValuationParams valParams,
  2335.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2336.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2337.         final int iWorkoutDate,
  2338.         final double dblWorkoutFactor,
  2339.         final double dblYield)
  2340.         throws java.lang.Exception;

  2341.     /**
  2342.      * Calculate Bond Basis from Yield to Maturity
  2343.      *
  2344.      * @param valParams Valuation Parameters
  2345.      * @param csqs Market Parameters
  2346.      * @param vcp Valuation Customization Parameters
  2347.      * @param dblYield Yield to Maturity
  2348.      *
  2349.      * @return Bond Basis from Yield to Maturity
  2350.      *
  2351.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2352.      */

  2353.     public abstract double bondBasisFromYield (
  2354.         final org.drip.param.valuation.ValuationParams valParams,
  2355.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2356.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2357.         final double dblYield)
  2358.         throws java.lang.Exception;

  2359.     /**
  2360.      * Calculate Bond Basis from Yield to Optimal Exercise
  2361.      *
  2362.      * @param valParams Valuation Parameters
  2363.      * @param csqs Market Parameters
  2364.      * @param vcp Valuation Customization Parameters
  2365.      * @param dblYield Yield to Optimal Exercise
  2366.      *
  2367.      * @return Bond Basis from Yield to Optimal Exercise
  2368.      *
  2369.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2370.      */

  2371.     public abstract double bondBasisFromYieldToOptimalExercise (
  2372.         final org.drip.param.valuation.ValuationParams valParams,
  2373.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2374.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2375.         final double dblYield)
  2376.         throws java.lang.Exception;

  2377.     /**
  2378.      * Calculate Bond Basis from Yield Spread to Work-out
  2379.      *
  2380.      * @param valParams Valuation Parameters
  2381.      * @param csqs Market Parameters
  2382.      * @param vcp Valuation Customization Parameters
  2383.      * @param iWorkoutDate Work-out Date
  2384.      * @param dblWorkoutFactor Work-out Factor
  2385.      * @param dblYieldSpread Yield Spread to Work-out
  2386.      *
  2387.      * @return Bond Basis from Yield Spread to Work-out
  2388.      *
  2389.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  2390.      */

  2391.     public abstract double bondBasisFromYieldSpread (
  2392.         final org.drip.param.valuation.ValuationParams valParams,
  2393.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2394.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2395.         final int iWorkoutDate,
  2396.         final double dblWorkoutFactor,
  2397.         final double dblYieldSpread)
  2398.         throws java.lang.Exception;

  2399.     /**
  2400.      * Calculate Bond Basis from Yield Spread to Maturity
  2401.      *
  2402.      * @param valParams Valuation Parameters
  2403.      * @param csqs Market Parameters
  2404.      * @param vcp Valuation Customization Parameters
  2405.      * @param dblYieldSpread Yield Spread to Maturity
  2406.      *
  2407.      * @return Bond Basis from Yield Spread to Maturity
  2408.      *
  2409.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2410.      */

  2411.     public abstract double bondBasisFromYieldSpread (
  2412.         final org.drip.param.valuation.ValuationParams valParams,
  2413.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2414.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2415.         final double dblYieldSpread)
  2416.         throws java.lang.Exception;

  2417.     /**
  2418.      * Calculate Bond Basis from Yield Spread to Optimal Exercise
  2419.      *
  2420.      * @param valParams Valuation Parameters
  2421.      * @param csqs Market Parameters
  2422.      * @param vcp Valuation Customization Parameters
  2423.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  2424.      *
  2425.      * @return Bond Basis from Yield Spread to Optimal Exercise
  2426.      *
  2427.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2428.      */

  2429.     public abstract double bondBasisFromYieldSpreadToOptimalExercise (
  2430.         final org.drip.param.valuation.ValuationParams valParams,
  2431.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2432.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2433.         final double dblYieldSpread)
  2434.         throws java.lang.Exception;

  2435.     /**
  2436.      * Calculate Bond Basis from Z Spread to Work-out
  2437.      *
  2438.      * @param valParams Valuation Parameters
  2439.      * @param csqs Market Parameters
  2440.      * @param vcp Valuation Customization Parameters
  2441.      * @param iWorkoutDate Work-out Date
  2442.      * @param dblWorkoutFactor Work-out Factor
  2443.      * @param dblZSpread Z Spread to Work-out
  2444.      *
  2445.      * @return Bond Basis from Z Spread to Work-out
  2446.      *
  2447.      * @throws java.lang.Exception Thrown if the Bond Basis cannot be calculated
  2448.      */

  2449.     public abstract double bondBasisFromZSpread (
  2450.         final org.drip.param.valuation.ValuationParams valParams,
  2451.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2452.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2453.         final int iWorkoutDate,
  2454.         final double dblWorkoutFactor,
  2455.         final double dblZSpread)
  2456.         throws java.lang.Exception;

  2457.     /**
  2458.      * Calculate Bond Basis from Z Spread to Maturity
  2459.      *
  2460.      * @param valParams Valuation Parameters
  2461.      * @param csqs Market Parameters
  2462.      * @param vcp Valuation Customization Parameters
  2463.      * @param dblZSpread Z Spread to Maturity
  2464.      *
  2465.      * @return Bond Basis from Z Spread to Maturity
  2466.      *
  2467.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2468.      */

  2469.     public abstract double bondBasisFromZSpread (
  2470.         final org.drip.param.valuation.ValuationParams valParams,
  2471.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2472.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2473.         final double dblZSpread)
  2474.         throws java.lang.Exception;

  2475.     /**
  2476.      * Calculate Bond Basis from Z Spread to Optimal Exercise
  2477.      *
  2478.      * @param valParams Valuation Parameters
  2479.      * @param csqs Market Parameters
  2480.      * @param vcp Valuation Customization Parameters
  2481.      * @param dblZSpread Z Spread to Optimal Exercise
  2482.      *
  2483.      * @return Bond Basis from Z Spread to Optimal Exercise
  2484.      *
  2485.      * @throws java.lang.Exception Thrown if Bond Basis cannot be calculated
  2486.      */

  2487.     public abstract double bondBasisFromZSpreadToOptimalExercise (
  2488.         final org.drip.param.valuation.ValuationParams valParams,
  2489.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2490.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2491.         final double dblZSpread)
  2492.         throws java.lang.Exception;

  2493.     /**
  2494.      * Calculate Convexity from ASW to Work-out
  2495.      *
  2496.      * @param valParams Valuation Parameters
  2497.      * @param csqs Market Parameters
  2498.      * @param vcp Valuation Customization Parameters
  2499.      * @param iWorkoutDate Work-out Date
  2500.      * @param dblWorkoutFactor Work-out Factor
  2501.      * @param dblASW ASW to Work-out
  2502.      *
  2503.      * @return Convexity from ASW to Work-out
  2504.      *
  2505.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2506.      */

  2507.     public abstract double convexityFromASW (
  2508.         final org.drip.param.valuation.ValuationParams valParams,
  2509.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2510.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2511.         final int iWorkoutDate,
  2512.         final double dblWorkoutFactor,
  2513.         final double dblASW)
  2514.         throws java.lang.Exception;

  2515.     /**
  2516.      * Calculate Convexity from ASW to Maturity
  2517.      *
  2518.      * @param valParams Valuation Parameters
  2519.      * @param csqs Market Parameters
  2520.      * @param vcp Valuation Customization Parameters
  2521.      * @param dblASW ASW to Maturity
  2522.      *
  2523.      * @return Convexity from ASW to Maturity
  2524.      *
  2525.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2526.      */

  2527.     public abstract double convexityFromASW (
  2528.         final org.drip.param.valuation.ValuationParams valParams,
  2529.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2530.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2531.         final double dblASW)
  2532.         throws java.lang.Exception;

  2533.     /**
  2534.      * Calculate Convexity from ASW to Optimal Exercise
  2535.      *
  2536.      * @param valParams Valuation Parameters
  2537.      * @param csqs Market Parameters
  2538.      * @param vcp Valuation Customization Parameters
  2539.      * @param dblASW ASW to Optimal Exercise
  2540.      *
  2541.      * @return Convexity from ASW to Optimal Exercise
  2542.      *
  2543.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2544.      */

  2545.     public abstract double convexityFromASWToOptimalExercise (
  2546.         final org.drip.param.valuation.ValuationParams valParams,
  2547.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2548.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2549.         final double dblASW)
  2550.         throws java.lang.Exception;

  2551.     /**
  2552.      * Calculate Convexity from Bond Basis to Work-out
  2553.      *
  2554.      * @param valParams Valuation Parameters
  2555.      * @param csqs Market Parameters
  2556.      * @param vcp Valuation Customization Parameters
  2557.      * @param iWorkoutDate Work-out Date
  2558.      * @param dblWorkoutFactor Work-out Factor
  2559.      * @param dblBondBasis Bond Basis to Work-out
  2560.      *
  2561.      * @return Convexity from Bond Basis to Work-out
  2562.      *
  2563.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2564.      */

  2565.     public abstract double convexityFromBondBasis (
  2566.         final org.drip.param.valuation.ValuationParams valParams,
  2567.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2568.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2569.         final int iWorkoutDate,
  2570.         final double dblWorkoutFactor,
  2571.         final double dblBondBasis)
  2572.         throws java.lang.Exception;

  2573.     /**
  2574.      * Calculate Convexity from Bond Basis to Maturity
  2575.      *
  2576.      * @param valParams Valuation Parameters
  2577.      * @param csqs Market Parameters
  2578.      * @param vcp Valuation Customization Parameters
  2579.      * @param dblBondBasis Bond Basis to Maturity
  2580.      *
  2581.      * @return Convexity from Bond Basis to Maturity
  2582.      *
  2583.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2584.      */

  2585.     public abstract double convexityFromBondBasis (
  2586.         final org.drip.param.valuation.ValuationParams valParams,
  2587.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2588.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2589.         final double dblBondBasis)
  2590.         throws java.lang.Exception;

  2591.     /**
  2592.      * Calculate Convexity from Bond Basis to Optimal Exercise
  2593.      *
  2594.      * @param valParams Valuation Parameters
  2595.      * @param csqs Market Parameters
  2596.      * @param vcp Valuation Customization Parameters
  2597.      * @param dblBondBasis Bond Basis to Optimal Exercise
  2598.      *
  2599.      * @return Convexity from Bond Basis to Optimal Exercise
  2600.      *
  2601.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2602.      */

  2603.     public abstract double convexityFromBondBasisToOptimalExercise (
  2604.         final org.drip.param.valuation.ValuationParams valParams,
  2605.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2606.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2607.         final double dblBondBasis)
  2608.         throws java.lang.Exception;

  2609.     /**
  2610.      * Calculate Convexity from Credit Basis to Work-out
  2611.      *
  2612.      * @param valParams Valuation Parameters
  2613.      * @param csqs Market Parameters
  2614.      * @param vcp Valuation Customization Parameters
  2615.      * @param iWorkoutDate Work-out Date
  2616.      * @param dblWorkoutFactor Work-out Factor
  2617.      * @param dblCreditBasis Credit Basis to Work-out
  2618.      *
  2619.      * @return Convexity from Credit Basis to Work-out
  2620.      *
  2621.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2622.      */

  2623.     public abstract double convexityFromCreditBasis (
  2624.         final org.drip.param.valuation.ValuationParams valParams,
  2625.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2626.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2627.         final int iWorkoutDate,
  2628.         final double dblWorkoutFactor,
  2629.         final double dblCreditBasis)
  2630.         throws java.lang.Exception;

  2631.     /**
  2632.      * Calculate Convexity from Credit Basis to Maturity
  2633.      *
  2634.      * @param valParams Valuation Parameters
  2635.      * @param csqs Market Parameters
  2636.      * @param vcp Valuation Customization Parameters
  2637.      * @param dblCreditBasis Credit Basis to Maturity
  2638.      *
  2639.      * @return Convexity from Credit Basis to Maturity
  2640.      *
  2641.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2642.      */

  2643.     public abstract double convexityFromCreditBasis (
  2644.         final org.drip.param.valuation.ValuationParams valParams,
  2645.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2646.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2647.         final double dblCreditBasis)
  2648.         throws java.lang.Exception;

  2649.     /**
  2650.      * Calculate Convexity from Credit Basis to Optimal Exercise
  2651.      *
  2652.      * @param valParams Valuation Parameters
  2653.      * @param csqs Market Parameters
  2654.      * @param vcp Valuation Customization Parameters
  2655.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  2656.      *
  2657.      * @return Convexity from Credit Basis to Optimal Exercise
  2658.      *
  2659.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2660.      */

  2661.     public abstract double convexityFromCreditBasisToOptimalExercise (
  2662.         final org.drip.param.valuation.ValuationParams valParams,
  2663.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2664.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2665.         final double dblCreditBasis)
  2666.         throws java.lang.Exception;

  2667.     /**
  2668.      * Calculate Convexity from Discount Margin to Work-out
  2669.      *
  2670.      * @param valParams Valuation Parameters
  2671.      * @param csqs Market Parameters
  2672.      * @param vcp Valuation Customization Parameters
  2673.      * @param iWorkoutDate Work-out Date
  2674.      * @param dblWorkoutFactor Work-out Factor
  2675.      * @param dblDiscountMargin Discount Margin to Work-out
  2676.      *
  2677.      * @return Convexity from Discount Margin to Work-out
  2678.      *
  2679.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2680.      */

  2681.     public abstract double convexityFromDiscountMargin (
  2682.         final org.drip.param.valuation.ValuationParams valParams,
  2683.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2684.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2685.         final int iWorkoutDate,
  2686.         final double dblWorkoutFactor,
  2687.         final double dblDiscountMargin)
  2688.         throws java.lang.Exception;

  2689.     /**
  2690.      * Calculate Convexity from Discount Margin to Maturity
  2691.      *
  2692.      * @param valParams Valuation Parameters
  2693.      * @param csqs Market Parameters
  2694.      * @param vcp Valuation Customization Parameters
  2695.      * @param dblDiscountMargin Discount Margin to Maturity
  2696.      *
  2697.      * @return Convexity from Discount Margin to Maturity
  2698.      *
  2699.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2700.      */

  2701.     public abstract double convexityFromDiscountMargin (
  2702.         final org.drip.param.valuation.ValuationParams valParams,
  2703.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2704.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2705.         final double dblDiscountMargin)
  2706.         throws java.lang.Exception;

  2707.     /**
  2708.      * Calculate Convexity from Discount Margin to Optimal Exercise
  2709.      *
  2710.      * @param valParams Valuation Parameters
  2711.      * @param csqs Market Parameters
  2712.      * @param vcp Valuation Customization Parameters
  2713.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  2714.      *
  2715.      * @return Convexity from Discount Margin to Optimal Exercise
  2716.      *
  2717.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2718.      */

  2719.     public abstract double convexityFromDiscountMarginToOptimalExercise (
  2720.         final org.drip.param.valuation.ValuationParams valParams,
  2721.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2722.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2723.         final double dblDiscountMargin)
  2724.         throws java.lang.Exception;

  2725.     /**
  2726.      * Calculate Convexity from E Spread to Work-out
  2727.      *
  2728.      * @param valParams Valuation Parameters
  2729.      * @param csqs Market Parameters
  2730.      * @param vcp Valuation Customization Parameters
  2731.      * @param iWorkoutDate Work-out Date
  2732.      * @param dblWorkoutFactor Work-out Factor
  2733.      * @param dblESpread E Spread to Work-out
  2734.      *
  2735.      * @return Convexity from E Spread to Work-out
  2736.      *
  2737.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2738.      */

  2739.     public abstract double convexityFromESpread (
  2740.         final org.drip.param.valuation.ValuationParams valParams,
  2741.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2742.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2743.         final int iWorkoutDate,
  2744.         final double dblWorkoutFactor,
  2745.         final double dblESpread)
  2746.         throws java.lang.Exception;

  2747.     /**
  2748.      * Calculate Convexity from E Spread to Maturity
  2749.      *
  2750.      * @param valParams Valuation Parameters
  2751.      * @param csqs Market Parameters
  2752.      * @param vcp Valuation Customization Parameters
  2753.      * @param dblESpread E Spread to Maturity
  2754.      *
  2755.      * @return Convexity from E Spread to Maturity
  2756.      *
  2757.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2758.      */

  2759.     public abstract double convexityFromESpread (
  2760.         final org.drip.param.valuation.ValuationParams valParams,
  2761.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2762.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2763.         final double dblESpread)
  2764.         throws java.lang.Exception;

  2765.     /**
  2766.      * Calculate Convexity from E Spread to Optimal Exercise
  2767.      *
  2768.      * @param valParams Valuation Parameters
  2769.      * @param csqs Market Parameters
  2770.      * @param vcp Valuation Customization Parameters
  2771.      * @param dblESpread E Spread to Optimal Exercise
  2772.      *
  2773.      * @return Convexity from E Spread to Optimal Exercise
  2774.      *
  2775.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2776.      */

  2777.     public abstract double convexityFromESpreadToOptimalExercise (
  2778.         final org.drip.param.valuation.ValuationParams valParams,
  2779.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2780.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2781.         final double dblESpread)
  2782.         throws java.lang.Exception;

  2783.     /**
  2784.      * Calculate Convexity from G Spread to Work-out
  2785.      *
  2786.      * @param valParams Valuation Parameters
  2787.      * @param csqs Market Parameters
  2788.      * @param vcp Valuation Customization Parameters
  2789.      * @param iWorkoutDate Work-out Date
  2790.      * @param dblWorkoutFactor Work-out Factor
  2791.      * @param dblGSpread G Spread to Work-out
  2792.      *
  2793.      * @return Convexity from G Spread to Work-out
  2794.      *
  2795.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2796.      */

  2797.     public abstract double convexityFromGSpread (
  2798.         final org.drip.param.valuation.ValuationParams valParams,
  2799.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2800.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2801.         final int iWorkoutDate,
  2802.         final double dblWorkoutFactor,
  2803.         final double dblGSpread)
  2804.         throws java.lang.Exception;

  2805.     /**
  2806.      * Calculate Convexity from G Spread to Maturity
  2807.      *
  2808.      * @param valParams Valuation Parameters
  2809.      * @param csqs Market Parameters
  2810.      * @param vcp Valuation Customization Parameters
  2811.      * @param dblGSpread G Spread to Maturity
  2812.      *
  2813.      * @return Convexity from G Spread to Maturity
  2814.      *
  2815.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2816.      */

  2817.     public abstract double convexityFromGSpread (
  2818.         final org.drip.param.valuation.ValuationParams valParams,
  2819.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2820.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2821.         final double dblGSpread)
  2822.         throws java.lang.Exception;

  2823.     /**
  2824.      * Calculate Convexity from G Spread to Optimal Exercise
  2825.      *
  2826.      * @param valParams Valuation Parameters
  2827.      * @param csqs Market Parameters
  2828.      * @param vcp Valuation Customization Parameters
  2829.      * @param dblGSpread G Spread to Optimal Exercise
  2830.      *
  2831.      * @return Convexity from G Spread to Optimal Exercise
  2832.      *
  2833.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2834.      */

  2835.     public abstract double convexityFromGSpreadToOptimalExercise (
  2836.         final org.drip.param.valuation.ValuationParams valParams,
  2837.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2838.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2839.         final double dblGSpread)
  2840.         throws java.lang.Exception;

  2841.     /**
  2842.      * Calculate Convexity from I Spread to Work-out
  2843.      *
  2844.      * @param valParams Valuation Parameters
  2845.      * @param csqs Market Parameters
  2846.      * @param vcp Valuation Customization Parameters
  2847.      * @param iWorkoutDate Work-out Date
  2848.      * @param dblWorkoutFactor Work-out Factor
  2849.      * @param dblISpread I Spread to Work-out
  2850.      *
  2851.      * @return Convexity from I Spread to Work-out
  2852.      *
  2853.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2854.      */

  2855.     public abstract double convexityFromISpread (
  2856.         final org.drip.param.valuation.ValuationParams valParams,
  2857.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2858.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2859.         final int iWorkoutDate,
  2860.         final double dblWorkoutFactor,
  2861.         final double dblISpread)
  2862.         throws java.lang.Exception;

  2863.     /**
  2864.      * Calculate Convexity from I Spread to Maturity
  2865.      *
  2866.      * @param valParams Valuation Parameters
  2867.      * @param csqs Market Parameters
  2868.      * @param vcp Valuation Customization Parameters
  2869.      * @param dblISpread I Spread to Maturity
  2870.      *
  2871.      * @return Convexity from I Spread to Maturity
  2872.      *
  2873.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2874.      */

  2875.     public abstract double convexityFromISpread (
  2876.         final org.drip.param.valuation.ValuationParams valParams,
  2877.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2878.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2879.         final double dblISpread)
  2880.         throws java.lang.Exception;

  2881.     /**
  2882.      * Calculate Convexity from I Spread to Optimal Exercise
  2883.      *
  2884.      * @param valParams Valuation Parameters
  2885.      * @param csqs Market Parameters
  2886.      * @param vcp Valuation Customization Parameters
  2887.      * @param dblISpread I Spread to Optimal Exercise
  2888.      *
  2889.      * @return Convexity from I Spread to Optimal Exercise
  2890.      *
  2891.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2892.      */

  2893.     public abstract double convexityFromISpreadToOptimalExercise (
  2894.         final org.drip.param.valuation.ValuationParams valParams,
  2895.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2896.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2897.         final double dblISpread)
  2898.         throws java.lang.Exception;

  2899.     /**
  2900.      * Calculate Convexity from J Spread to Work-out
  2901.      *
  2902.      * @param valParams Valuation Parameters
  2903.      * @param csqs Market Parameters
  2904.      * @param vcp Valuation Customization Parameters
  2905.      * @param iWorkoutDate Work-out Date
  2906.      * @param dblWorkoutFactor Work-out Factor
  2907.      * @param dblJSpread J Spread to Work-out
  2908.      *
  2909.      * @return Convexity from J Spread to Work-out
  2910.      *
  2911.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2912.      */

  2913.     public abstract double convexityFromJSpread (
  2914.         final org.drip.param.valuation.ValuationParams valParams,
  2915.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2916.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2917.         final int iWorkoutDate,
  2918.         final double dblWorkoutFactor,
  2919.         final double dblJSpread)
  2920.         throws java.lang.Exception;

  2921.     /**
  2922.      * Calculate Convexity from J Spread to Maturity
  2923.      *
  2924.      * @param valParams Valuation Parameters
  2925.      * @param csqs Market Parameters
  2926.      * @param vcp Valuation Customization Parameters
  2927.      * @param dblJSpread J Spread to Maturity
  2928.      *
  2929.      * @return Convexity from J Spread to Maturity
  2930.      *
  2931.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2932.      */

  2933.     public abstract double convexityFromJSpread (
  2934.         final org.drip.param.valuation.ValuationParams valParams,
  2935.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2936.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2937.         final double dblJSpread)
  2938.         throws java.lang.Exception;

  2939.     /**
  2940.      * Calculate Convexity from J Spread to Optimal Exercise
  2941.      *
  2942.      * @param valParams Valuation Parameters
  2943.      * @param csqs Market Parameters
  2944.      * @param vcp Valuation Customization Parameters
  2945.      * @param dblJSpread J Spread to Optimal Exercise
  2946.      *
  2947.      * @return Convexity from J Spread to Optimal Exercise
  2948.      *
  2949.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2950.      */

  2951.     public abstract double convexityFromJSpreadToOptimalExercise (
  2952.         final org.drip.param.valuation.ValuationParams valParams,
  2953.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2954.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2955.         final double dblJSpread)
  2956.         throws java.lang.Exception;

  2957.     /**
  2958.      * Calculate Convexity from N Spread to Work-out
  2959.      *
  2960.      * @param valParams Valuation Parameters
  2961.      * @param csqs Market Parameters
  2962.      * @param vcp Valuation Customization Parameters
  2963.      * @param iWorkoutDate Work-out Date
  2964.      * @param dblWorkoutFactor Work-out Factor
  2965.      * @param dblNSpread N Spread to Work-out
  2966.      *
  2967.      * @return Convexity from N Spread to Work-out
  2968.      *
  2969.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  2970.      */

  2971.     public abstract double convexityFromNSpread (
  2972.         final org.drip.param.valuation.ValuationParams valParams,
  2973.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2974.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2975.         final int iWorkoutDate,
  2976.         final double dblWorkoutFactor,
  2977.         final double dblNSpread)
  2978.         throws java.lang.Exception;

  2979.     /**
  2980.      * Calculate Convexity from N Spread to Maturity
  2981.      *
  2982.      * @param valParams Valuation Parameters
  2983.      * @param csqs Market Parameters
  2984.      * @param vcp Valuation Customization Parameters
  2985.      * @param dblNSpread N Spread to Maturity
  2986.      *
  2987.      * @return Convexity from N Spread to Maturity
  2988.      *
  2989.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  2990.      */

  2991.     public abstract double convexityFromNSpread (
  2992.         final org.drip.param.valuation.ValuationParams valParams,
  2993.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  2994.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  2995.         final double dblNSpread)
  2996.         throws java.lang.Exception;

  2997.     /**
  2998.      * Calculate Convexity from N Spread to Optimal Exercise
  2999.      *
  3000.      * @param valParams Valuation Parameters
  3001.      * @param csqs Market Parameters
  3002.      * @param vcp Valuation Customization Parameters
  3003.      * @param dblNSpread N Spread to Optimal Exercise
  3004.      *
  3005.      * @return Convexity from N Spread to Optimal Exercise
  3006.      *
  3007.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3008.      */

  3009.     public abstract double convexityFromNSpreadToOptimalExercise (
  3010.         final org.drip.param.valuation.ValuationParams valParams,
  3011.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3012.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3013.         final double dblNSpread)
  3014.         throws java.lang.Exception;

  3015.     /**
  3016.      * Calculate Convexity from OAS to Work-out
  3017.      *
  3018.      * @param valParams Valuation Parameters
  3019.      * @param csqs Market Parameters
  3020.      * @param vcp Valuation Customization Parameters
  3021.      * @param iWorkoutDate Work-out Date
  3022.      * @param dblWorkoutFactor Work-out Factor
  3023.      * @param dblOAS OAS to Work-out
  3024.      *
  3025.      * @return Convexity from OAS to Work-out
  3026.      *
  3027.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  3028.      */

  3029.     public abstract double convexityFromOAS (
  3030.         final org.drip.param.valuation.ValuationParams valParams,
  3031.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3032.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3033.         final int iWorkoutDate,
  3034.         final double dblWorkoutFactor,
  3035.         final double dblOAS)
  3036.         throws java.lang.Exception;

  3037.     /**
  3038.      * Calculate Convexity from OAS to Maturity
  3039.      *
  3040.      * @param valParams Valuation Parameters
  3041.      * @param csqs Market Parameters
  3042.      * @param vcp Valuation Customization Parameters
  3043.      * @param dblOAS OAS to Maturity
  3044.      *
  3045.      * @return Convexity from OAS to Maturity
  3046.      *
  3047.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3048.      */

  3049.     public abstract double convexityFromOAS (
  3050.         final org.drip.param.valuation.ValuationParams valParams,
  3051.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3052.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3053.         final double dblOAS)
  3054.         throws java.lang.Exception;

  3055.     /**
  3056.      * Calculate Convexity from OAS to Optimal Exercise
  3057.      *
  3058.      * @param valParams Valuation Parameters
  3059.      * @param csqs Market Parameters
  3060.      * @param vcp Valuation Customization Parameters
  3061.      * @param dblOAS OAS to Optimal Exercise
  3062.      *
  3063.      * @return Convexity from OAS to Optimal Exercise
  3064.      *
  3065.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3066.      */

  3067.     public abstract double convexityFromOASToOptimalExercise (
  3068.         final org.drip.param.valuation.ValuationParams valParams,
  3069.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3070.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3071.         final double dblOAS)
  3072.         throws java.lang.Exception;

  3073.     /**
  3074.      * Calculate Convexity from PECS to Work-out
  3075.      *
  3076.      * @param valParams Valuation Parameters
  3077.      * @param csqs Market Parameters
  3078.      * @param vcp Valuation Customization Parameters
  3079.      * @param iWorkoutDate Work-out Date
  3080.      * @param dblWorkoutFactor Work-out Factor
  3081.      * @param dblPECS PECS to Work-out
  3082.      *
  3083.      * @return Convexity from PECS to Work-out
  3084.      *
  3085.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  3086.      */

  3087.     public abstract double convexityFromPECS (
  3088.         final org.drip.param.valuation.ValuationParams valParams,
  3089.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3090.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3091.         final int iWorkoutDate,
  3092.         final double dblWorkoutFactor,
  3093.         final double dblPECS)
  3094.         throws java.lang.Exception;

  3095.     /**
  3096.      * Calculate Convexity from PECS to Maturity
  3097.      *
  3098.      * @param valParams Valuation Parameters
  3099.      * @param csqs Market Parameters
  3100.      * @param vcp Valuation Customization Parameters
  3101.      * @param dblPECS PECS to Maturity
  3102.      *
  3103.      * @return Convexity from PECS to Maturity
  3104.      *
  3105.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3106.      */

  3107.     public abstract double convexityFromPECS (
  3108.         final org.drip.param.valuation.ValuationParams valParams,
  3109.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3110.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3111.         final double dblPECS)
  3112.         throws java.lang.Exception;

  3113.     /**
  3114.      * Calculate Convexity from PECS to Optimal Exercise
  3115.      *
  3116.      * @param valParams Valuation Parameters
  3117.      * @param csqs Market Parameters
  3118.      * @param vcp Valuation Customization Parameters
  3119.      * @param dblPECS PECS to Optimal Exercise
  3120.      *
  3121.      * @return Convexity from PECS to Optimal Exercise
  3122.      *
  3123.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3124.      */

  3125.     public abstract double convexityFromPECSToOptimalExercise (
  3126.         final org.drip.param.valuation.ValuationParams valParams,
  3127.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3128.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3129.         final double dblPECS)
  3130.         throws java.lang.Exception;

  3131.     /**
  3132.      * Calculate Convexity from Price to Work-out
  3133.      *
  3134.      * @param valParams Valuation Parameters
  3135.      * @param csqs Market Parameters
  3136.      * @param vcp Valuation Customization Parameters
  3137.      * @param iWorkoutDate Work-out Date
  3138.      * @param dblWorkoutFactor Work-out Factor
  3139.      * @param dblPrice Price to Work-out
  3140.      *
  3141.      * @return Convexity from Price to Work-out
  3142.      *
  3143.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  3144.      */

  3145.     public abstract double convexityFromPrice (
  3146.         final org.drip.param.valuation.ValuationParams valParams,
  3147.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3148.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3149.         final int iWorkoutDate,
  3150.         final double dblWorkoutFactor,
  3151.         final double dblPrice)
  3152.         throws java.lang.Exception;

  3153.     /**
  3154.      * Calculate Convexity from Price to Maturity
  3155.      *
  3156.      * @param valParams Valuation Parameters
  3157.      * @param csqs Market Parameters
  3158.      * @param vcp Valuation Customization Parameters
  3159.      * @param dblPrice Price to Maturity
  3160.      *
  3161.      * @return Convexity from Price to Maturity
  3162.      *
  3163.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3164.      */

  3165.     public abstract double convexityFromPrice (
  3166.         final org.drip.param.valuation.ValuationParams valParams,
  3167.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3168.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3169.         final double dblPrice)
  3170.         throws java.lang.Exception;

  3171.     /**
  3172.      * Calculate Convexity from Price to Optimal Exercise
  3173.      *
  3174.      * @param valParams Valuation Parameters
  3175.      * @param csqs Market Parameters
  3176.      * @param vcp Valuation Customization Parameters
  3177.      * @param dblPrice Price to Optimal Exercise
  3178.      *
  3179.      * @return Convexity from Price to Optimal Exercise
  3180.      *
  3181.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3182.      */

  3183.     public abstract double convexityFromPriceToOptimalExercise (
  3184.         final org.drip.param.valuation.ValuationParams valParams,
  3185.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3186.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3187.         final double dblPrice)
  3188.         throws java.lang.Exception;

  3189.     /**
  3190.      * Calculate Convexity from TSY Spread to Work-out
  3191.      *
  3192.      * @param valParams Valuation Parameters
  3193.      * @param csqs Market Parameters
  3194.      * @param vcp Valuation Customization Parameters
  3195.      * @param iWorkoutDate Work-out Date
  3196.      * @param dblWorkoutFactor Work-out Factor
  3197.      * @param dblTSYSpread TSY Spread to Work-out
  3198.      *
  3199.      * @return Convexity from TSY Spread to Work-out
  3200.      *
  3201.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  3202.      */

  3203.     public abstract double convexityFromTSYSpread (
  3204.         final org.drip.param.valuation.ValuationParams valParams,
  3205.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3206.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3207.         final int iWorkoutDate,
  3208.         final double dblWorkoutFactor,
  3209.         final double dblTSYSpread)
  3210.         throws java.lang.Exception;

  3211.     /**
  3212.      * Calculate Convexity from TSY Spread to Maturity
  3213.      *
  3214.      * @param valParams Valuation Parameters
  3215.      * @param csqs Market Parameters
  3216.      * @param vcp Valuation Customization Parameters
  3217.      * @param dblTSYSpread TSY Spread to Maturity
  3218.      *
  3219.      * @return Convexity from TSY Spread to Maturity
  3220.      *
  3221.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3222.      */

  3223.     public abstract double convexityFromTSYSpread (
  3224.         final org.drip.param.valuation.ValuationParams valParams,
  3225.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3226.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3227.         final double dblTSYSpread)
  3228.         throws java.lang.Exception;

  3229.     /**
  3230.      * Calculate Convexity from TSY Spread to Optimal Exercise
  3231.      *
  3232.      * @param valParams Valuation Parameters
  3233.      * @param csqs Market Parameters
  3234.      * @param vcp Valuation Customization Parameters
  3235.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  3236.      *
  3237.      * @return Convexity from TSY Spread to Optimal Exercise
  3238.      *
  3239.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3240.      */

  3241.     public abstract double convexityFromTSYSpreadToOptimalExercise (
  3242.         final org.drip.param.valuation.ValuationParams valParams,
  3243.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3244.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3245.         final double dblTSYSpread)
  3246.         throws java.lang.Exception;

  3247.     /**
  3248.      * Calculate Convexity from Yield to Work-out
  3249.      *
  3250.      * @param valParams Valuation Parameters
  3251.      * @param csqs Market Parameters
  3252.      * @param vcp Valuation Customization Parameters
  3253.      * @param iWorkoutDate Work-out Date
  3254.      * @param dblWorkoutFactor Work-out Factor
  3255.      * @param dblYield Yield to Work-out
  3256.      *
  3257.      * @return Convexity from Yield to Work-out
  3258.      *
  3259.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  3260.      */

  3261.     public abstract double convexityFromYield (
  3262.         final org.drip.param.valuation.ValuationParams valParams,
  3263.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3264.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3265.         final int iWorkoutDate,
  3266.         final double dblWorkoutFactor,
  3267.         final double dblYield)
  3268.         throws java.lang.Exception;

  3269.     /**
  3270.      * Calculate Convexity from Yield to Maturity
  3271.      *
  3272.      * @param valParams Valuation Parameters
  3273.      * @param csqs Market Parameters
  3274.      * @param vcp Valuation Customization Parameters
  3275.      * @param dblYield Yield to Maturity
  3276.      *
  3277.      * @return Convexity from Yield to Maturity
  3278.      *
  3279.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3280.      */

  3281.     public abstract double convexityFromYield (
  3282.         final org.drip.param.valuation.ValuationParams valParams,
  3283.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3284.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3285.         final double dblYield)
  3286.         throws java.lang.Exception;

  3287.     /**
  3288.      * Calculate Convexity from Yield to Optimal Exercise
  3289.      *
  3290.      * @param valParams Valuation Parameters
  3291.      * @param csqs Market Parameters
  3292.      * @param vcp Valuation Customization Parameters
  3293.      * @param dblYield Yield to Optimal Exercise
  3294.      *
  3295.      * @return Convexity from Yield to Optimal Exercise
  3296.      *
  3297.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3298.      */

  3299.     public abstract double convexityFromYieldToOptimalExercise (
  3300.         final org.drip.param.valuation.ValuationParams valParams,
  3301.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3302.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3303.         final double dblYield)
  3304.         throws java.lang.Exception;

  3305.     /**
  3306.      * Calculate Convexity from Yield Spread to Work-out
  3307.      *
  3308.      * @param valParams Valuation Parameters
  3309.      * @param csqs Market Parameters
  3310.      * @param vcp Valuation Customization Parameters
  3311.      * @param iWorkoutDate Work-out Date
  3312.      * @param dblWorkoutFactor Work-out Factor
  3313.      * @param dblYieldSpread Yield Spread to Work-out
  3314.      *
  3315.      * @return Convexity from Yield Spread to Work-out
  3316.      *
  3317.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  3318.      */

  3319.     public abstract double convexityFromYieldSpread (
  3320.         final org.drip.param.valuation.ValuationParams valParams,
  3321.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3322.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3323.         final int iWorkoutDate,
  3324.         final double dblWorkoutFactor,
  3325.         final double dblYieldSpread)
  3326.         throws java.lang.Exception;

  3327.     /**
  3328.      * Calculate Convexity from Yield Spread to Maturity
  3329.      *
  3330.      * @param valParams Valuation Parameters
  3331.      * @param csqs Market Parameters
  3332.      * @param vcp Valuation Customization Parameters
  3333.      * @param dblYieldSpread Yield Spread to Maturity
  3334.      *
  3335.      * @return Convexity from Yield Spread to Maturity
  3336.      *
  3337.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3338.      */

  3339.     public abstract double convexityFromYieldSpread (
  3340.         final org.drip.param.valuation.ValuationParams valParams,
  3341.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3342.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3343.         final double dblYieldSpread)
  3344.         throws java.lang.Exception;

  3345.     /**
  3346.      * Calculate Convexity from Yield Spread to Optimal Exercise
  3347.      *
  3348.      * @param valParams Valuation Parameters
  3349.      * @param csqs Market Parameters
  3350.      * @param vcp Valuation Customization Parameters
  3351.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  3352.      *
  3353.      * @return Convexity from Yield Spread to Optimal Exercise
  3354.      *
  3355.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3356.      */

  3357.     public abstract double convexityFromYieldSpreadToOptimalExercise (
  3358.         final org.drip.param.valuation.ValuationParams valParams,
  3359.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3360.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3361.         final double dblYieldSpread)
  3362.         throws java.lang.Exception;

  3363.     /**
  3364.      * Calculate Convexity from Z Spread to Work-out
  3365.      *
  3366.      * @param valParams Valuation Parameters
  3367.      * @param csqs Market Parameters
  3368.      * @param vcp Valuation Customization Parameters
  3369.      * @param iWorkoutDate Work-out Date
  3370.      * @param dblWorkoutFactor Work-out Factor
  3371.      * @param dblZSpread Z Spread to Work-out
  3372.      *
  3373.      * @return Convexity from Z Spread to Work-out
  3374.      *
  3375.      * @throws java.lang.Exception Thrown if the Convexity cannot be calculated
  3376.      */

  3377.     public abstract double convexityFromZSpread (
  3378.         final org.drip.param.valuation.ValuationParams valParams,
  3379.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3380.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3381.         final int iWorkoutDate,
  3382.         final double dblWorkoutFactor,
  3383.         final double dblZSpread)
  3384.         throws java.lang.Exception;

  3385.     /**
  3386.      * Calculate Convexity from Z Spread to Maturity
  3387.      *
  3388.      * @param valParams Valuation Parameters
  3389.      * @param csqs Market Parameters
  3390.      * @param vcp Valuation Customization Parameters
  3391.      * @param dblZSpread Z Spread to Maturity
  3392.      *
  3393.      * @return Convexity from Z Spread to Maturity
  3394.      *
  3395.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3396.      */

  3397.     public abstract double convexityFromZSpread (
  3398.         final org.drip.param.valuation.ValuationParams valParams,
  3399.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3400.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3401.         final double dblZSpread)
  3402.         throws java.lang.Exception;

  3403.     /**
  3404.      * Calculate Convexity from Z Spread to Optimal Exercise
  3405.      *
  3406.      * @param valParams Valuation Parameters
  3407.      * @param csqs Market Parameters
  3408.      * @param vcp Valuation Customization Parameters
  3409.      * @param dblZSpread Z Spread to Optimal Exercise
  3410.      *
  3411.      * @return Convexity from Z to Optimal Exercise
  3412.      *
  3413.      * @throws java.lang.Exception Thrown if Convexity cannot be calculated
  3414.      */

  3415.     public abstract double convexityFromZSpreadToOptimalExercise (
  3416.         final org.drip.param.valuation.ValuationParams valParams,
  3417.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3418.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3419.         final double dblZSpread)
  3420.         throws java.lang.Exception;

  3421.     /**
  3422.      * Calculate Credit Basis from ASW to Work-out
  3423.      *
  3424.      * @param valParams Valuation Parameters
  3425.      * @param csqs Market Parameters
  3426.      * @param vcp Valuation Customization Parameters
  3427.      * @param iWorkoutDate Work-out Date
  3428.      * @param dblWorkoutFactor Work-out Factor
  3429.      * @param dblASW ASW to Work-out
  3430.      *
  3431.      * @return Credit Basis from ASW to Work-out
  3432.      *
  3433.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3434.      */

  3435.     public abstract double creditBasisFromASW (
  3436.         final org.drip.param.valuation.ValuationParams valParams,
  3437.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3438.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3439.         final int iWorkoutDate,
  3440.         final double dblWorkoutFactor,
  3441.         final double dblASW)
  3442.         throws java.lang.Exception;

  3443.     /**
  3444.      * Calculate Credit Basis from ASW to Maturity
  3445.      *
  3446.      * @param valParams Valuation Parameters
  3447.      * @param csqs Market Parameters
  3448.      * @param vcp Valuation Customization Parameters
  3449.      * @param dblASW ASW to Maturity
  3450.      *
  3451.      * @return Credit Basis from ASW to Maturity
  3452.      *
  3453.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3454.      */

  3455.     public abstract double creditBasisFromASW (
  3456.         final org.drip.param.valuation.ValuationParams valParams,
  3457.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3458.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3459.         final double dblASW)
  3460.         throws java.lang.Exception;

  3461.     /**
  3462.      * Calculate Credit Basis from ASW to Optimal Exercise
  3463.      *
  3464.      * @param valParams Valuation Parameters
  3465.      * @param csqs Market Parameters
  3466.      * @param vcp Valuation Customization Parameters
  3467.      * @param dblASW ASW to Optimal Exercise
  3468.      *
  3469.      * @return Credit Basis from ASW to Optimal Exercise
  3470.      *
  3471.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3472.      */

  3473.     public abstract double creditBasisFromASWToOptimalExercise (
  3474.         final org.drip.param.valuation.ValuationParams valParams,
  3475.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3476.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3477.         final double dblASW)
  3478.         throws java.lang.Exception;

  3479.     /**
  3480.      * Calculate Credit Basis from Bond Basis to Work-out
  3481.      *
  3482.      * @param valParams Valuation Parameters
  3483.      * @param csqs Market Parameters
  3484.      * @param vcp Valuation Customization Parameters
  3485.      * @param iWorkoutDate Work-out Date
  3486.      * @param dblWorkoutFactor Work-out Factor
  3487.      * @param dblBondBasis Bond Basis to Work-out
  3488.      *
  3489.      * @return Credit Basis from Bond Basis to Work-out
  3490.      *
  3491.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3492.      */

  3493.     public abstract double creditBasisFromBondBasis (
  3494.         final org.drip.param.valuation.ValuationParams valParams,
  3495.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3496.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3497.         final int iWorkoutDate,
  3498.         final double dblWorkoutFactor,
  3499.         final double dblBondBasis)
  3500.         throws java.lang.Exception;

  3501.     /**
  3502.      * Calculate Credit Basis from Bond Basis to Maturity
  3503.      *
  3504.      * @param valParams Valuation Parameters
  3505.      * @param csqs Market Parameters
  3506.      * @param vcp Valuation Customization Parameters
  3507.      * @param dblBondBasis Bond Basis to Maturity
  3508.      *
  3509.      * @return Credit Basis from Bond Basis to Maturity
  3510.      *
  3511.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3512.      */

  3513.     public abstract double creditBasisFromBondBasis (
  3514.         final org.drip.param.valuation.ValuationParams valParams,
  3515.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3516.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3517.         final double dblBondBasis)
  3518.         throws java.lang.Exception;

  3519.     /**
  3520.      * Calculate Credit Basis from Bond Basis to Optimal Exercise
  3521.      *
  3522.      * @param valParams Valuation Parameters
  3523.      * @param csqs Market Parameters
  3524.      * @param vcp Valuation Customization Parameters
  3525.      * @param dblBondBasis Bond Basis to Optimal Exercise
  3526.      *
  3527.      * @return Credit Basis from Bond Basis to Optimal Exercise
  3528.      *
  3529.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3530.      */

  3531.     public abstract double creditBasisFromBondBasisToOptimalExercise (
  3532.         final org.drip.param.valuation.ValuationParams valParams,
  3533.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3534.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3535.         final double dblBondBasis)
  3536.         throws java.lang.Exception;

  3537.     /**
  3538.      * Calculate Credit Basis from Discount Margin to Work-out
  3539.      *
  3540.      * @param valParams Valuation Parameters
  3541.      * @param csqs Market Parameters
  3542.      * @param vcp Valuation Customization Parameters
  3543.      * @param iWorkoutDate Work-out Date
  3544.      * @param dblWorkoutFactor Work-out Factor
  3545.      * @param dblDiscountMargin Discount Margin to Work-out
  3546.      *
  3547.      * @return Credit Basis from Discount Margin to Work-out
  3548.      *
  3549.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3550.      */

  3551.     public abstract double creditBasisFromDiscountMargin (
  3552.         final org.drip.param.valuation.ValuationParams valParams,
  3553.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3554.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3555.         final int iWorkoutDate,
  3556.         final double dblWorkoutFactor,
  3557.         final double dblDiscountMargin)
  3558.         throws java.lang.Exception;

  3559.     /**
  3560.      * Calculate Credit Basis from Discount Margin to Maturity
  3561.      *
  3562.      * @param valParams Valuation Parameters
  3563.      * @param csqs Market Parameters
  3564.      * @param vcp Valuation Customization Parameters
  3565.      * @param dblDiscountMargin Discount Margin to Maturity
  3566.      *
  3567.      * @return Credit Basis from Discount Margin to Maturity
  3568.      *
  3569.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3570.      */

  3571.     public abstract double creditBasisFromDiscountMargin (
  3572.         final org.drip.param.valuation.ValuationParams valParams,
  3573.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3574.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3575.         final double dblDiscountMargin)
  3576.         throws java.lang.Exception;

  3577.     /**
  3578.      * Calculate Credit Basis from Discount Margin to Optimal Exercise
  3579.      *
  3580.      * @param valParams Valuation Parameters
  3581.      * @param csqs Market Parameters
  3582.      * @param vcp Valuation Customization Parameters
  3583.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  3584.      *
  3585.      * @return Credit Basis from Discount Margin to Optimal Exercise
  3586.      *
  3587.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  3588.      */

  3589.     public abstract double creditBasisFromDiscountMarginToOptimalExercise (
  3590.         final org.drip.param.valuation.ValuationParams valParams,
  3591.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3592.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3593.         final double dblDiscountMargin)
  3594.         throws java.lang.Exception;

  3595.     /**
  3596.      * Calculate Credit Basis from E Spread to Work-out
  3597.      *
  3598.      * @param valParams Valuation Parameters
  3599.      * @param csqs Market Parameters
  3600.      * @param vcp Valuation Customization Parameters
  3601.      * @param iWorkoutDate Work-out Date
  3602.      * @param dblWorkoutFactor Work-out Factor
  3603.      * @param dblESpread E Spread to Work-out
  3604.      *
  3605.      * @return Credit Basis from E Spread to Work-out
  3606.      *
  3607.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3608.      */

  3609.     public abstract double creditBasisFromESpread (
  3610.         final org.drip.param.valuation.ValuationParams valParams,
  3611.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3612.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3613.         final int iWorkoutDate,
  3614.         final double dblWorkoutFactor,
  3615.         final double dblESpread)
  3616.         throws java.lang.Exception;

  3617.     /**
  3618.      * Calculate Credit Basis from E Spread to Maturity
  3619.      *
  3620.      * @param valParams Valuation Parameters
  3621.      * @param csqs Market Parameters
  3622.      * @param vcp Valuation Customization Parameters
  3623.      * @param dblESpread E Spread to Maturity
  3624.      *
  3625.      * @return Credit Basis from E Spread to Maturity
  3626.      *
  3627.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3628.      */

  3629.     public abstract double creditBasisFromESpread (
  3630.         final org.drip.param.valuation.ValuationParams valParams,
  3631.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3632.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3633.         final double dblESpread)
  3634.         throws java.lang.Exception;

  3635.     /**
  3636.      * Calculate Credit Basis from E Spread to Optimal Exercise
  3637.      *
  3638.      * @param valParams Valuation Parameters
  3639.      * @param csqs Market Parameters
  3640.      * @param vcp Valuation Customization Parameters
  3641.      * @param dblESpread E Spread to Optimal Exercise
  3642.      *
  3643.      * @return Credit Basis from E Spread to Optimal Exercise
  3644.      *
  3645.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3646.      */

  3647.     public abstract double creditBasisFromESpreadToOptimalExercise (
  3648.         final org.drip.param.valuation.ValuationParams valParams,
  3649.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3650.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3651.         final double dblESpread)
  3652.         throws java.lang.Exception;

  3653.     /**
  3654.      * Calculate Credit Basis from G Spread to Work-out
  3655.      *
  3656.      * @param valParams Valuation Parameters
  3657.      * @param csqs Market Parameters
  3658.      * @param vcp Valuation Customization Parameters
  3659.      * @param iWorkoutDate Work-out Date
  3660.      * @param dblWorkoutFactor Work-out Factor
  3661.      * @param dblGSpread G Spread to Work-out
  3662.      *
  3663.      * @return Credit Basis from G Spread to Work-out
  3664.      *
  3665.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3666.      */

  3667.     public abstract double creditBasisFromGSpread (
  3668.         final org.drip.param.valuation.ValuationParams valParams,
  3669.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3670.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3671.         final int iWorkoutDate,
  3672.         final double dblWorkoutFactor,
  3673.         final double dblGSpread)
  3674.         throws java.lang.Exception;

  3675.     /**
  3676.      * Calculate Credit Basis from G Spread to Maturity
  3677.      *
  3678.      * @param valParams Valuation Parameters
  3679.      * @param csqs Market Parameters
  3680.      * @param vcp Valuation Customization Parameters
  3681.      * @param dblGSpread G Spread to Maturity
  3682.      *
  3683.      * @return Credit Basis from G Spread to Maturity
  3684.      *
  3685.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3686.      */

  3687.     public abstract double creditBasisFromGSpread (
  3688.         final org.drip.param.valuation.ValuationParams valParams,
  3689.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3690.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3691.         final double dblGSpread)
  3692.         throws java.lang.Exception;

  3693.     /**
  3694.      * Calculate Credit Basis from G Spread to Optimal Exercise
  3695.      *
  3696.      * @param valParams Valuation Parameters
  3697.      * @param csqs Market Parameters
  3698.      * @param vcp Valuation Customization Parameters
  3699.      * @param dblGSpread G Spread to Optimal Exercise
  3700.      *
  3701.      * @return Credit Basis from G Spread to Optimal Exercise
  3702.      *
  3703.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3704.      */

  3705.     public abstract double creditBasisFromGSpreadToOptimalExercise (
  3706.         final org.drip.param.valuation.ValuationParams valParams,
  3707.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3708.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3709.         final double dblGSpread)
  3710.         throws java.lang.Exception;

  3711.     /**
  3712.      * Calculate Credit Basis from I Spread to Work-out
  3713.      *
  3714.      * @param valParams Valuation Parameters
  3715.      * @param csqs Market Parameters
  3716.      * @param vcp Valuation Customization Parameters
  3717.      * @param iWorkoutDate Work-out Date
  3718.      * @param dblWorkoutFactor Work-out Factor
  3719.      * @param dblISpread I Spread to Work-out
  3720.      *
  3721.      * @return Credit Basis from I Spread to Work-out
  3722.      *
  3723.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3724.      */

  3725.     public abstract double creditBasisFromISpread (
  3726.         final org.drip.param.valuation.ValuationParams valParams,
  3727.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3728.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3729.         final int iWorkoutDate,
  3730.         final double dblWorkoutFactor,
  3731.         final double dblISpread)
  3732.         throws java.lang.Exception;

  3733.     /**
  3734.      * Calculate Credit Basis from I Spread to Maturity
  3735.      *
  3736.      * @param valParams Valuation Parameters
  3737.      * @param csqs Market Parameters
  3738.      * @param vcp Valuation Customization Parameters
  3739.      * @param dblISpread I Spread to Maturity
  3740.      *
  3741.      * @return Credit Basis from I Spread to Maturity
  3742.      *
  3743.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3744.      */

  3745.     public abstract double creditBasisFromISpread (
  3746.         final org.drip.param.valuation.ValuationParams valParams,
  3747.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3748.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3749.         final double dblISpread)
  3750.         throws java.lang.Exception;

  3751.     /**
  3752.      * Calculate Credit Basis from I Spread to Optimal Exercise
  3753.      *
  3754.      * @param valParams Valuation Parameters
  3755.      * @param csqs Market Parameters
  3756.      * @param vcp Valuation Customization Parameters
  3757.      * @param dblISpread I Spread to Optimal Exercise
  3758.      *
  3759.      * @return Credit Basis from I Spread to Optimal Exercise
  3760.      *
  3761.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3762.      */

  3763.     public abstract double creditBasisFromISpreadToOptimalExercise (
  3764.         final org.drip.param.valuation.ValuationParams valParams,
  3765.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3766.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3767.         final double dblISpread)
  3768.         throws java.lang.Exception;

  3769.     /**
  3770.      * Calculate Credit Basis from J Spread to Work-out
  3771.      *
  3772.      * @param valParams Valuation Parameters
  3773.      * @param csqs Market Parameters
  3774.      * @param vcp Valuation Customization Parameters
  3775.      * @param iWorkoutDate Work-out Date
  3776.      * @param dblWorkoutFactor Work-out Factor
  3777.      * @param dblJSpread J Spread to Work-out
  3778.      *
  3779.      * @return Credit Basis from J Spread to Work-out
  3780.      *
  3781.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3782.      */

  3783.     public abstract double creditBasisFromJSpread (
  3784.         final org.drip.param.valuation.ValuationParams valParams,
  3785.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3786.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3787.         final int iWorkoutDate,
  3788.         final double dblWorkoutFactor,
  3789.         final double dblJSpread)
  3790.         throws java.lang.Exception;

  3791.     /**
  3792.      * Calculate Credit Basis from J Spread to Maturity
  3793.      *
  3794.      * @param valParams Valuation Parameters
  3795.      * @param csqs Market Parameters
  3796.      * @param vcp Valuation Customization Parameters
  3797.      * @param dblJSpread J Spread to Maturity
  3798.      *
  3799.      * @return Credit Basis from J Spread to Maturity
  3800.      *
  3801.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3802.      */

  3803.     public abstract double creditBasisFromJSpread (
  3804.         final org.drip.param.valuation.ValuationParams valParams,
  3805.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3806.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3807.         final double dblJSpread)
  3808.         throws java.lang.Exception;

  3809.     /**
  3810.      * Calculate Credit Basis from J Spread to Optimal Exercise
  3811.      *
  3812.      * @param valParams Valuation Parameters
  3813.      * @param csqs Market Parameters
  3814.      * @param vcp Valuation Customization Parameters
  3815.      * @param dblJSpread J Spread to Optimal Exercise
  3816.      *
  3817.      * @return Credit Basis from J Spread to Optimal Exercise
  3818.      *
  3819.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3820.      */

  3821.     public abstract double creditBasisFromJSpreadToOptimalExercise (
  3822.         final org.drip.param.valuation.ValuationParams valParams,
  3823.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3824.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3825.         final double dblJSpread)
  3826.         throws java.lang.Exception;

  3827.     /**
  3828.      * Calculate Credit Basis from N Spread to Work-out
  3829.      *
  3830.      * @param valParams Valuation Parameters
  3831.      * @param csqs Market Parameters
  3832.      * @param vcp Valuation Customization Parameters
  3833.      * @param iWorkoutDate Work-out Date
  3834.      * @param dblWorkoutFactor Work-out Factor
  3835.      * @param dblNSpread N Spread to Work-out
  3836.      *
  3837.      * @return Credit Basis from N Spread to Work-out
  3838.      *
  3839.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3840.      */

  3841.     public abstract double creditBasisFromNSpread (
  3842.         final org.drip.param.valuation.ValuationParams valParams,
  3843.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3844.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3845.         final int iWorkoutDate,
  3846.         final double dblWorkoutFactor,
  3847.         final double dblNSpread)
  3848.         throws java.lang.Exception;

  3849.     /**
  3850.      * Calculate Credit Basis from N Spread to Maturity
  3851.      *
  3852.      * @param valParams Valuation Parameters
  3853.      * @param csqs Market Parameters
  3854.      * @param vcp Valuation Customization Parameters
  3855.      * @param dblNSpread N Spread to Maturity
  3856.      *
  3857.      * @return Credit Basis from N Spread to Maturity
  3858.      *
  3859.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3860.      */

  3861.     public abstract double creditBasisFromNSpread (
  3862.         final org.drip.param.valuation.ValuationParams valParams,
  3863.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3864.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3865.         final double dblNSpread)
  3866.         throws java.lang.Exception;

  3867.     /**
  3868.      * Calculate Credit Basis from N Spread to Optimal Exercise
  3869.      *
  3870.      * @param valParams Valuation Parameters
  3871.      * @param csqs Market Parameters
  3872.      * @param vcp Valuation Customization Parameters
  3873.      * @param dblNSpread N Spread to Optimal Exercise
  3874.      *
  3875.      * @return Credit Basis from N Spread to Optimal Exercise
  3876.      *
  3877.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3878.      */

  3879.     public abstract double creditBasisFromNSpreadToOptimalExercise (
  3880.         final org.drip.param.valuation.ValuationParams valParams,
  3881.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3882.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3883.         final double dblNSpread)
  3884.         throws java.lang.Exception;

  3885.     /**
  3886.      * Calculate Credit Basis from OAS to Work-out
  3887.      *
  3888.      * @param valParams Valuation Parameters
  3889.      * @param csqs Market Parameters
  3890.      * @param vcp Valuation Customization Parameters
  3891.      * @param iWorkoutDate Work-out Date
  3892.      * @param dblWorkoutFactor Work-out Factor
  3893.      * @param dblOAS OAS to Work-out
  3894.      *
  3895.      * @return Credit Basis from OAS to Work-out
  3896.      *
  3897.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3898.      */

  3899.     public abstract double creditBasisFromOAS (
  3900.         final org.drip.param.valuation.ValuationParams valParams,
  3901.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3902.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3903.         final int iWorkoutDate,
  3904.         final double dblWorkoutFactor,
  3905.         final double dblOAS)
  3906.         throws java.lang.Exception;

  3907.     /**
  3908.      * Calculate Credit Basis from OAS to Maturity
  3909.      *
  3910.      * @param valParams Valuation Parameters
  3911.      * @param csqs Market Parameters
  3912.      * @param vcp Valuation Customization Parameters
  3913.      * @param dblOAS OAS to Maturity
  3914.      *
  3915.      * @return Credit Basis from OAS to Maturity
  3916.      *
  3917.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3918.      */

  3919.     public abstract double creditBasisFromOAS (
  3920.         final org.drip.param.valuation.ValuationParams valParams,
  3921.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3922.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3923.         final double dblOAS)
  3924.         throws java.lang.Exception;

  3925.     /**
  3926.      * Calculate Credit Basis from OAS to Optimal Exercise
  3927.      *
  3928.      * @param valParams Valuation Parameters
  3929.      * @param csqs Market Parameters
  3930.      * @param vcp Valuation Customization Parameters
  3931.      * @param dblOAS OAS to Optimal Exercise
  3932.      *
  3933.      * @return Credit Basis from OAS to Optimal Exercise
  3934.      *
  3935.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3936.      */

  3937.     public abstract double creditBasisFromOASToOptimalExercise (
  3938.         final org.drip.param.valuation.ValuationParams valParams,
  3939.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3940.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3941.         final double dblOAS)
  3942.         throws java.lang.Exception;

  3943.     /**
  3944.      * Calculate Credit Basis from PECS to Work-out
  3945.      *
  3946.      * @param valParams Valuation Parameters
  3947.      * @param csqs Market Parameters
  3948.      * @param vcp Valuation Customization Parameters
  3949.      * @param iWorkoutDate Work-out Date
  3950.      * @param dblWorkoutFactor Work-out Factor
  3951.      * @param dblPECS PECS to Work-out
  3952.      *
  3953.      * @return Credit Basis from PECS to Work-out
  3954.      *
  3955.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  3956.      */

  3957.     public abstract double creditBasisFromPECS (
  3958.         final org.drip.param.valuation.ValuationParams valParams,
  3959.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3960.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3961.         final int iWorkoutDate,
  3962.         final double dblWorkoutFactor,
  3963.         final double dblPECS)
  3964.         throws java.lang.Exception;

  3965.     /**
  3966.      * Calculate Credit Basis from PECS to Maturity
  3967.      *
  3968.      * @param valParams Valuation Parameters
  3969.      * @param csqs Market Parameters
  3970.      * @param vcp Valuation Customization Parameters
  3971.      * @param dblPECS PECS to Maturity
  3972.      *
  3973.      * @return Credit Basis from PECS to Maturity
  3974.      *
  3975.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3976.      */

  3977.     public abstract double creditBasisFromPECS (
  3978.         final org.drip.param.valuation.ValuationParams valParams,
  3979.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3980.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3981.         final double dblPECS)
  3982.         throws java.lang.Exception;

  3983.     /**
  3984.      * Calculate Credit Basis from PECS to Optimal Exercise
  3985.      *
  3986.      * @param valParams Valuation Parameters
  3987.      * @param csqs Market Parameters
  3988.      * @param vcp Valuation Customization Parameters
  3989.      * @param dblPECS PECS to Optimal Exercise
  3990.      *
  3991.      * @return Credit Basis from PECS to Optimal Exercise
  3992.      *
  3993.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  3994.      */

  3995.     public abstract double creditBasisFromPECSToOptimalExercise (
  3996.         final org.drip.param.valuation.ValuationParams valParams,
  3997.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  3998.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  3999.         final double dblPECS)
  4000.         throws java.lang.Exception;

  4001.     /**
  4002.      * Calculate Credit Basis from Price to Work-out
  4003.      *
  4004.      * @param valParams Valuation Parameters
  4005.      * @param csqs Market Parameters
  4006.      * @param vcp Valuation Customization Parameters
  4007.      * @param iWorkoutDate Work-out Date
  4008.      * @param dblWorkoutFactor Work-out Factor
  4009.      * @param dblPrice Price to Work-out
  4010.      *
  4011.      * @return Credit Basis from Price to Work-out
  4012.      *
  4013.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  4014.      */

  4015.     public abstract double creditBasisFromPrice (
  4016.         final org.drip.param.valuation.ValuationParams valParams,
  4017.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4018.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4019.         final int iWorkoutDate,
  4020.         final double dblWorkoutFactor,
  4021.         final double dblPrice)
  4022.         throws java.lang.Exception;

  4023.     /**
  4024.      * Calculate Credit Basis from Price to Maturity
  4025.      *
  4026.      * @param valParams Valuation Parameters
  4027.      * @param csqs Market Parameters
  4028.      * @param vcp Valuation Customization Parameters
  4029.      * @param dblPrice Price to Maturity
  4030.      *
  4031.      * @return Credit Basis from Price to Maturity
  4032.      *
  4033.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4034.      */

  4035.     public abstract double creditBasisFromPrice (
  4036.         final org.drip.param.valuation.ValuationParams valParams,
  4037.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4038.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4039.         final double dblPrice)
  4040.         throws java.lang.Exception;

  4041.     /**
  4042.      * Calculate Credit Basis from Price to Optimal Exercise
  4043.      *
  4044.      * @param valParams Valuation Parameters
  4045.      * @param csqs Market Parameters
  4046.      * @param vcp Valuation Customization Parameters
  4047.      * @param dblPrice Price to Optimal Exercise
  4048.      *
  4049.      * @return Credit Basis from Price to Optimal Exercise
  4050.      *
  4051.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4052.      */

  4053.     public abstract double creditBasisFromPriceToOptimalExercise (
  4054.         final org.drip.param.valuation.ValuationParams valParams,
  4055.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4056.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4057.         final double dblPrice)
  4058.         throws java.lang.Exception;

  4059.     /**
  4060.      * Calculate Credit Basis from TSY Spread to Work-out
  4061.      *
  4062.      * @param valParams Valuation Parameters
  4063.      * @param csqs Market Parameters
  4064.      * @param vcp Valuation Customization Parameters
  4065.      * @param iWorkoutDate Work-out Date
  4066.      * @param dblWorkoutFactor Work-out Factor
  4067.      * @param dblTSYSpread TSY Spread to Work-out
  4068.      *
  4069.      * @return Credit Basis from TSY Spread to Work-out
  4070.      *
  4071.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  4072.      */

  4073.     public abstract double creditBasisFromTSYSpread (
  4074.         final org.drip.param.valuation.ValuationParams valParams,
  4075.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4076.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4077.         final int iWorkoutDate,
  4078.         final double dblWorkoutFactor,
  4079.         final double dblTSYSpread)
  4080.         throws java.lang.Exception;

  4081.     /**
  4082.      * Calculate Credit Basis from TSY Spread to Maturity
  4083.      *
  4084.      * @param valParams Valuation Parameters
  4085.      * @param csqs Market Parameters
  4086.      * @param vcp Valuation Customization Parameters
  4087.      * @param dblTSYSpread TSY Spread to Maturity
  4088.      *
  4089.      * @return Credit Basis from TSY Spread to Maturity
  4090.      *
  4091.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4092.      */

  4093.     public abstract double creditBasisFromTSYSpread (
  4094.         final org.drip.param.valuation.ValuationParams valParams,
  4095.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4096.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4097.         final double dblTSYSpread)
  4098.         throws java.lang.Exception;

  4099.     /**
  4100.      * Calculate Credit Basis from TSY Spread to Optimal Exercise
  4101.      *
  4102.      * @param valParams Valuation Parameters
  4103.      * @param csqs Market Parameters
  4104.      * @param vcp Valuation Customization Parameters
  4105.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  4106.      *
  4107.      * @return Credit Basis from TSY Spread to Optimal Exercise
  4108.      *
  4109.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4110.      */

  4111.     public abstract double creditBasisFromTSYSpreadToOptimalExercise (
  4112.         final org.drip.param.valuation.ValuationParams valParams,
  4113.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4114.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4115.         final double dblTSYSpread)
  4116.         throws java.lang.Exception;

  4117.     /**
  4118.      * Calculate Credit Basis from Yield to Work-out
  4119.      *
  4120.      * @param valParams Valuation Parameters
  4121.      * @param csqs Market Parameters
  4122.      * @param vcp Valuation Customization Parameters
  4123.      * @param iWorkoutDate Work-out Date
  4124.      * @param dblWorkoutFactor Work-out Factor
  4125.      * @param dblYield Yield to Work-out
  4126.      *
  4127.      * @return Credit Basis from Yield to Work-out
  4128.      *
  4129.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  4130.      */

  4131.     public abstract double creditBasisFromYield (
  4132.         final org.drip.param.valuation.ValuationParams valParams,
  4133.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4134.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4135.         final int iWorkoutDate,
  4136.         final double dblWorkoutFactor,
  4137.         final double dblYield)
  4138.         throws java.lang.Exception;

  4139.     /**
  4140.      * Calculate Credit Basis from Yield to Maturity
  4141.      *
  4142.      * @param valParams Valuation Parameters
  4143.      * @param csqs Market Parameters
  4144.      * @param vcp Valuation Customization Parameters
  4145.      * @param dblYield Yield to Maturity
  4146.      *
  4147.      * @return Credit Basis from Yield to Maturity
  4148.      *
  4149.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4150.      */

  4151.     public abstract double creditBasisFromYield (
  4152.         final org.drip.param.valuation.ValuationParams valParams,
  4153.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4154.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4155.         final double dblYield)
  4156.         throws java.lang.Exception;

  4157.     /**
  4158.      * Calculate Credit Basis from Yield to Optimal Exercise
  4159.      *
  4160.      * @param valParams Valuation Parameters
  4161.      * @param csqs Market Parameters
  4162.      * @param vcp Valuation Customization Parameters
  4163.      * @param dblYield Yield to Optimal Exercise
  4164.      *
  4165.      * @return Credit Basis from Yield to Optimal Exercise
  4166.      *
  4167.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4168.      */

  4169.     public abstract double creditBasisFromYieldToOptimalExercise (
  4170.         final org.drip.param.valuation.ValuationParams valParams,
  4171.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4172.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4173.         final double dblYield)
  4174.         throws java.lang.Exception;

  4175.     /**
  4176.      * Calculate Credit Basis from Yield Spread to Work-out
  4177.      *
  4178.      * @param valParams Valuation Parameters
  4179.      * @param csqs Market Parameters
  4180.      * @param vcp Valuation Customization Parameters
  4181.      * @param iWorkoutDate Work-out Date
  4182.      * @param dblWorkoutFactor Work-out Factor
  4183.      * @param dblYieldSpread Yield Spread to Work-out
  4184.      *
  4185.      * @return Credit Basis from Yield Spread to Work-out
  4186.      *
  4187.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  4188.      */

  4189.     public abstract double creditBasisFromYieldSpread (
  4190.         final org.drip.param.valuation.ValuationParams valParams,
  4191.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4192.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4193.         final int iWorkoutDate,
  4194.         final double dblWorkoutFactor,
  4195.         final double dblYieldSpread)
  4196.         throws java.lang.Exception;

  4197.     /**
  4198.      * Calculate Credit Basis from Yield Spread to Maturity
  4199.      *
  4200.      * @param valParams Valuation Parameters
  4201.      * @param csqs Market Parameters
  4202.      * @param vcp Valuation Customization Parameters
  4203.      * @param dblYieldSpread Yield Spread to Maturity
  4204.      *
  4205.      * @return Credit Basis from Yield Spread to Maturity
  4206.      *
  4207.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4208.      */

  4209.     public abstract double creditBasisFromYieldSpread (
  4210.         final org.drip.param.valuation.ValuationParams valParams,
  4211.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4212.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4213.         final double dblYieldSpread)
  4214.         throws java.lang.Exception;

  4215.     /**
  4216.      * Calculate Credit Basis from Yield Spread to Optimal Exercise
  4217.      *
  4218.      * @param valParams Valuation Parameters
  4219.      * @param csqs Market Parameters
  4220.      * @param vcp Valuation Customization Parameters
  4221.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  4222.      *
  4223.      * @return Credit Basis from Yield Spread to Optimal Exercise
  4224.      *
  4225.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4226.      */

  4227.     public abstract double creditBasisFromYieldSpreadToOptimalExercise (
  4228.         final org.drip.param.valuation.ValuationParams valParams,
  4229.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4230.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4231.         final double dblYieldSpread)
  4232.         throws java.lang.Exception;

  4233.     /**
  4234.      * Calculate Credit Basis from Z Spread to Work-out
  4235.      *
  4236.      * @param valParams Valuation Parameters
  4237.      * @param csqs Market Parameters
  4238.      * @param vcp Valuation Customization Parameters
  4239.      * @param iWorkoutDate Work-out Date
  4240.      * @param dblWorkoutFactor Work-out Factor
  4241.      * @param dblZSpread Z Spread to Work-out
  4242.      *
  4243.      * @return Credit Basis from Z Spread to Work-out
  4244.      *
  4245.      * @throws java.lang.Exception Thrown if the Credit Basis cannot be calculated
  4246.      */

  4247.     public abstract double creditBasisFromZSpread (
  4248.         final org.drip.param.valuation.ValuationParams valParams,
  4249.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4250.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4251.         final int iWorkoutDate,
  4252.         final double dblWorkoutFactor,
  4253.         final double dblZSpread)
  4254.         throws java.lang.Exception;

  4255.     /**
  4256.      * Calculate Credit Basis from Z Spread to Maturity
  4257.      *
  4258.      * @param valParams Valuation Parameters
  4259.      * @param csqs Market Parameters
  4260.      * @param vcp Valuation Customization Parameters
  4261.      * @param dblZSpread Z Spread to Maturity
  4262.      *
  4263.      * @return Credit Basis from Z Spread to Maturity
  4264.      *
  4265.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4266.      */

  4267.     public abstract double creditBasisFromZSpread (
  4268.         final org.drip.param.valuation.ValuationParams valParams,
  4269.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4270.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4271.         final double dblZSpread)
  4272.         throws java.lang.Exception;

  4273.     /**
  4274.      * Calculate Credit Basis from Z Spread to Optimal Exercise
  4275.      *
  4276.      * @param valParams Valuation Parameters
  4277.      * @param csqs Market Parameters
  4278.      * @param vcp Valuation Customization Parameters
  4279.      * @param dblZSpread Z Spread to Optimal Exercise
  4280.      *
  4281.      * @return Credit Basis from Z Spread to Optimal Exercise
  4282.      *
  4283.      * @throws java.lang.Exception Thrown if Credit Basis cannot be calculated
  4284.      */

  4285.     public abstract double creditBasisFromZSpreadToOptimalExercise (
  4286.         final org.drip.param.valuation.ValuationParams valParams,
  4287.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4288.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4289.         final double dblZSpread)
  4290.         throws java.lang.Exception;

  4291.     /**
  4292.      * Calculate Discount Margin from ASW to Work-out
  4293.      *
  4294.      * @param valParams Valuation Parameters
  4295.      * @param csqs Market Parameters
  4296.      * @param vcp Valuation Customization Parameters
  4297.      * @param iWorkoutDate Work-out Date
  4298.      * @param dblWorkoutFactor Work-out Factor
  4299.      * @param dblASW ASW to Work-out
  4300.      *
  4301.      * @return Discount Margin from ASW to Work-out
  4302.      *
  4303.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4304.      */

  4305.     public abstract double discountMarginFromASW (
  4306.         final org.drip.param.valuation.ValuationParams valParams,
  4307.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4308.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4309.         final int iWorkoutDate,
  4310.         final double dblWorkoutFactor,
  4311.         final double dblASW)
  4312.         throws java.lang.Exception;

  4313.     /**
  4314.      * Calculate Discount Margin from ASW to Maturity
  4315.      *
  4316.      * @param valParams Valuation Parameters
  4317.      * @param csqs Market Parameters
  4318.      * @param vcp Valuation Customization Parameters
  4319.      * @param dblASW ASW to Maturity
  4320.      *
  4321.      * @return Discount Margin from ASW to Maturity
  4322.      *
  4323.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4324.      */

  4325.     public abstract double discountMarginFromASW (
  4326.         final org.drip.param.valuation.ValuationParams valParams,
  4327.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4328.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4329.         final double dblASW)
  4330.         throws java.lang.Exception;

  4331.     /**
  4332.      * Calculate Discount Margin from ASW to Optimal Exercise
  4333.      *
  4334.      * @param valParams Valuation Parameters
  4335.      * @param csqs Market Parameters
  4336.      * @param vcp Valuation Customization Parameters
  4337.      * @param dblASW ASW to Optimal Exercise
  4338.      *
  4339.      * @return Discount Margin from ASW to Optimal Exercise
  4340.      *
  4341.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4342.      */

  4343.     public abstract double discountMarginFromASWToOptimalExercise (
  4344.         final org.drip.param.valuation.ValuationParams valParams,
  4345.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4346.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4347.         final double dblASW)
  4348.         throws java.lang.Exception;

  4349.     /**
  4350.      * Calculate Discount Margin from Bond Basis to Work-out
  4351.      *
  4352.      * @param valParams Valuation Parameters
  4353.      * @param csqs Market Parameters
  4354.      * @param vcp Valuation Customization Parameters
  4355.      * @param iWorkoutDate Work-out Date
  4356.      * @param dblWorkoutFactor Work-out Factor
  4357.      * @param dblBondBasis Bond Basis to Work-out
  4358.      *
  4359.      * @return Discount Margin from Bond Basis to Work-out
  4360.      *
  4361.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4362.      */

  4363.     public abstract double discountMarginFromBondBasis (
  4364.         final org.drip.param.valuation.ValuationParams valParams,
  4365.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4366.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4367.         final int iWorkoutDate,
  4368.         final double dblWorkoutFactor,
  4369.         final double dblBondBasis)
  4370.         throws java.lang.Exception;

  4371.     /**
  4372.      * Calculate Discount Margin from Bond Basis to Maturity
  4373.      *
  4374.      * @param valParams Valuation Parameters
  4375.      * @param csqs Market Parameters
  4376.      * @param vcp Valuation Customization Parameters
  4377.      * @param dblBondBasis Bond Basis to Maturity
  4378.      *
  4379.      * @return Discount Margin from Bond Basis to Maturity
  4380.      *
  4381.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4382.      */

  4383.     public abstract double discountMarginFromBondBasis (
  4384.         final org.drip.param.valuation.ValuationParams valParams,
  4385.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4386.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4387.         final double dblBondBasis)
  4388.         throws java.lang.Exception;

  4389.     /**
  4390.      * Calculate Discount Margin from Bond Basis to Optimal Exercise
  4391.      *
  4392.      * @param valParams Valuation Parameters
  4393.      * @param csqs Market Parameters
  4394.      * @param vcp Valuation Customization Parameters
  4395.      * @param dblBondBasis Bond Basis to Optimal Exercise
  4396.      *
  4397.      * @return Discount Margin from Bond Basis to Optimal Exercise
  4398.      *
  4399.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4400.      */

  4401.     public abstract double discountMarginFromBondBasisToOptimalExercise (
  4402.         final org.drip.param.valuation.ValuationParams valParams,
  4403.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4404.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4405.         final double dblBondBasis)
  4406.         throws java.lang.Exception;

  4407.     /**
  4408.      * Calculate Discount Margin from Credit Basis to Work-out
  4409.      *
  4410.      * @param valParams Valuation Parameters
  4411.      * @param csqs Market Parameters
  4412.      * @param vcp Valuation Customization Parameters
  4413.      * @param iWorkoutDate Work-out Date
  4414.      * @param dblWorkoutFactor Work-out Factor
  4415.      * @param dblCreditBasis Credit Basis to Work-out
  4416.      *
  4417.      * @return Discount Margin from Credit Basis to Work-out
  4418.      *
  4419.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4420.      */

  4421.     public abstract double discountMarginFromCreditBasis (
  4422.         final org.drip.param.valuation.ValuationParams valParams,
  4423.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4424.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4425.         final int iWorkoutDate,
  4426.         final double dblWorkoutFactor,
  4427.         final double dblCreditBasis)
  4428.         throws java.lang.Exception;

  4429.     /**
  4430.      * Calculate Discount Margin from Credit Basis to Maturity
  4431.      *
  4432.      * @param valParams Valuation Parameters
  4433.      * @param csqs Market Parameters
  4434.      * @param vcp Valuation Customization Parameters
  4435.      * @param dblCreditBasis Credit Basis to Maturity
  4436.      *
  4437.      * @return Discount Margin from Credit Basis to Maturity
  4438.      *
  4439.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4440.      */

  4441.     public abstract double discountMarginFromCreditBasis (
  4442.         final org.drip.param.valuation.ValuationParams valParams,
  4443.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4444.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4445.         final double dblCreditBasis)
  4446.         throws java.lang.Exception;

  4447.     /**
  4448.      * Calculate Discount Margin from Credit Basis to Optimal Exercise
  4449.      *
  4450.      * @param valParams Valuation Parameters
  4451.      * @param csqs Market Parameters
  4452.      * @param vcp Valuation Customization Parameters
  4453.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  4454.      *
  4455.      * @return Discount Margin from Credit Basis to Optimal Exercise
  4456.      *
  4457.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4458.      */

  4459.     public abstract double discountMarginFromCreditBasisToOptimalExercise (
  4460.         final org.drip.param.valuation.ValuationParams valParams,
  4461.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4462.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4463.         final double dblCreditBasis)
  4464.         throws java.lang.Exception;

  4465.     /**
  4466.      * Calculate Discount Margin from E Spread to Work-out
  4467.      *
  4468.      * @param valParams Valuation Parameters
  4469.      * @param csqs Market Parameters
  4470.      * @param vcp Valuation Customization Parameters
  4471.      * @param iWorkoutDate Work-out Date
  4472.      * @param dblWorkoutFactor Work-out Factor
  4473.      * @param dblESpread E Spread to Work-out
  4474.      *
  4475.      * @return Discount Margin from E Spread to Work-out
  4476.      *
  4477.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4478.      */

  4479.     public abstract double discountMarginFromESpread (
  4480.         final org.drip.param.valuation.ValuationParams valParams,
  4481.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4482.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4483.         final int iWorkoutDate,
  4484.         final double dblWorkoutFactor,
  4485.         final double dblESpread)
  4486.         throws java.lang.Exception;

  4487.     /**
  4488.      * Calculate Discount Margin from E Spread to Maturity
  4489.      *
  4490.      * @param valParams Valuation Parameters
  4491.      * @param csqs Market Parameters
  4492.      * @param vcp Valuation Customization Parameters
  4493.      * @param dblESpread E Spread to Maturity
  4494.      *
  4495.      * @return Discount Margin from E Spread to Maturity
  4496.      *
  4497.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4498.      */

  4499.     public abstract double discountMarginFromESpread (
  4500.         final org.drip.param.valuation.ValuationParams valParams,
  4501.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4502.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4503.         final double dblESpread)
  4504.         throws java.lang.Exception;

  4505.     /**
  4506.      * Calculate Discount Margin from E Spread to Optimal Exercise
  4507.      *
  4508.      * @param valParams Valuation Parameters
  4509.      * @param csqs Market Parameters
  4510.      * @param vcp Valuation Customization Parameters
  4511.      * @param dblESpread E Spread to Optimal Exercise
  4512.      *
  4513.      * @return Discount Margin from E Spread to Optimal Exercise
  4514.      *
  4515.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4516.      */

  4517.     public abstract double discountMarginFromESpreadToOptimalExercise (
  4518.         final org.drip.param.valuation.ValuationParams valParams,
  4519.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4520.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4521.         final double dblESpread)
  4522.         throws java.lang.Exception;

  4523.     /**
  4524.      * Calculate Discount Margin from G Spread to Work-out
  4525.      *
  4526.      * @param valParams Valuation Parameters
  4527.      * @param csqs Market Parameters
  4528.      * @param vcp Valuation Customization Parameters
  4529.      * @param iWorkoutDate Work-out Date
  4530.      * @param dblWorkoutFactor Work-out Factor
  4531.      * @param dblGSpread G Spread to Work-out
  4532.      *
  4533.      * @return Discount Margin from G Spread to Work-out
  4534.      *
  4535.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4536.      */

  4537.     public abstract double discountMarginFromGSpread (
  4538.         final org.drip.param.valuation.ValuationParams valParams,
  4539.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4540.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4541.         final int iWorkoutDate,
  4542.         final double dblWorkoutFactor,
  4543.         final double dblGSpread)
  4544.         throws java.lang.Exception;

  4545.     /**
  4546.      * Calculate Discount Margin from G Spread to Maturity
  4547.      *
  4548.      * @param valParams Valuation Parameters
  4549.      * @param csqs Market Parameters
  4550.      * @param vcp Valuation Customization Parameters
  4551.      * @param dblGSpread G Spread to Maturity
  4552.      *
  4553.      * @return Discount Margin from G Spread to Maturity
  4554.      *
  4555.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4556.      */

  4557.     public abstract double discountMarginFromGSpread (
  4558.         final org.drip.param.valuation.ValuationParams valParams,
  4559.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4560.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4561.         final double dblGSpread)
  4562.         throws java.lang.Exception;

  4563.     /**
  4564.      * Calculate Discount Margin from G Spread to Optimal Exercise
  4565.      *
  4566.      * @param valParams Valuation Parameters
  4567.      * @param csqs Market Parameters
  4568.      * @param vcp Valuation Customization Parameters
  4569.      * @param dblGSpread G Spread to Optimal Exercise
  4570.      *
  4571.      * @return Discount Margin from G Spread to Optimal Exercise
  4572.      *
  4573.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4574.      */

  4575.     public abstract double discountMarginFromGSpreadToOptimalExercise (
  4576.         final org.drip.param.valuation.ValuationParams valParams,
  4577.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4578.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4579.         final double dblGSpread)
  4580.         throws java.lang.Exception;

  4581.     /**
  4582.      * Calculate Discount Margin from I Spread to Work-out
  4583.      *
  4584.      * @param valParams Valuation Parameters
  4585.      * @param csqs Market Parameters
  4586.      * @param vcp Valuation Customization Parameters
  4587.      * @param iWorkoutDate Work-out Date
  4588.      * @param dblWorkoutFactor Work-out Factor
  4589.      * @param dblISpread I Spread to Work-out
  4590.      *
  4591.      * @return Discount Margin from I Spread to Work-out
  4592.      *
  4593.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4594.      */

  4595.     public abstract double discountMarginFromISpread (
  4596.         final org.drip.param.valuation.ValuationParams valParams,
  4597.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4598.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4599.         final int iWorkoutDate,
  4600.         final double dblWorkoutFactor,
  4601.         final double dblISpread)
  4602.         throws java.lang.Exception;

  4603.     /**
  4604.      * Calculate Discount Margin from I Spread to Maturity
  4605.      *
  4606.      * @param valParams Valuation Parameters
  4607.      * @param csqs Market Parameters
  4608.      * @param vcp Valuation Customization Parameters
  4609.      * @param dblISpread I Spread to Maturity
  4610.      *
  4611.      * @return Discount Margin from I Spread to Maturity
  4612.      *
  4613.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4614.      */

  4615.     public abstract double discountMarginFromISpread (
  4616.         final org.drip.param.valuation.ValuationParams valParams,
  4617.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4618.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4619.         final double dblISpread)
  4620.         throws java.lang.Exception;

  4621.     /**
  4622.      * Calculate Discount Margin from I Spread to Optimal Exercise
  4623.      *
  4624.      * @param valParams Valuation Parameters
  4625.      * @param csqs Market Parameters
  4626.      * @param vcp Valuation Customization Parameters
  4627.      * @param dblISpread I Spread to Optimal Exercise
  4628.      *
  4629.      * @return Discount Margin from I Spread to Optimal Exercise
  4630.      *
  4631.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4632.      */

  4633.     public abstract double discountMarginFromISpreadToOptimalExercise (
  4634.         final org.drip.param.valuation.ValuationParams valParams,
  4635.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4636.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4637.         final double dblISpread)
  4638.         throws java.lang.Exception;

  4639.     /**
  4640.      * Calculate Discount Margin from J Spread to Work-out
  4641.      *
  4642.      * @param valParams Valuation Parameters
  4643.      * @param csqs Market Parameters
  4644.      * @param vcp Valuation Customization Parameters
  4645.      * @param iWorkoutDate Work-out Date
  4646.      * @param dblWorkoutFactor Work-out Factor
  4647.      * @param dblJSpread J Spread to Work-out
  4648.      *
  4649.      * @return Discount Margin from J Spread to Work-out
  4650.      *
  4651.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4652.      */

  4653.     public abstract double discountMarginFromJSpread (
  4654.         final org.drip.param.valuation.ValuationParams valParams,
  4655.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4656.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4657.         final int iWorkoutDate,
  4658.         final double dblWorkoutFactor,
  4659.         final double dblJSpread)
  4660.         throws java.lang.Exception;

  4661.     /**
  4662.      * Calculate Discount Margin from J Spread to Maturity
  4663.      *
  4664.      * @param valParams Valuation Parameters
  4665.      * @param csqs Market Parameters
  4666.      * @param vcp Valuation Customization Parameters
  4667.      * @param dblJSpread J Spread to Maturity
  4668.      *
  4669.      * @return Discount Margin from J Spread to Maturity
  4670.      *
  4671.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4672.      */

  4673.     public abstract double discountMarginFromJSpread (
  4674.         final org.drip.param.valuation.ValuationParams valParams,
  4675.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4676.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4677.         final double dblJSpread)
  4678.         throws java.lang.Exception;

  4679.     /**
  4680.      * Calculate Discount Margin from J Spread to Optimal Exercise
  4681.      *
  4682.      * @param valParams Valuation Parameters
  4683.      * @param csqs Market Parameters
  4684.      * @param vcp Valuation Customization Parameters
  4685.      * @param dblJSpread J Spread to Optimal Exercise
  4686.      *
  4687.      * @return Discount Margin from J Spread to Optimal Exercise
  4688.      *
  4689.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4690.      */

  4691.     public abstract double discountMarginFromJSpreadToOptimalExercise (
  4692.         final org.drip.param.valuation.ValuationParams valParams,
  4693.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4694.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4695.         final double dblJSpread)
  4696.         throws java.lang.Exception;

  4697.     /**
  4698.      * Calculate Discount Margin from N Spread to Work-out
  4699.      *
  4700.      * @param valParams Valuation Parameters
  4701.      * @param csqs Market Parameters
  4702.      * @param vcp Valuation Customization Parameters
  4703.      * @param iWorkoutDate Work-out Date
  4704.      * @param dblWorkoutFactor Work-out Factor
  4705.      * @param dblNSpread N Spread to Work-out
  4706.      *
  4707.      * @return Discount Margin from N Spread to Work-out
  4708.      *
  4709.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4710.      */

  4711.     public abstract double discountMarginFromNSpread (
  4712.         final org.drip.param.valuation.ValuationParams valParams,
  4713.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4714.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4715.         final int iWorkoutDate,
  4716.         final double dblWorkoutFactor,
  4717.         final double dblNSpread)
  4718.         throws java.lang.Exception;

  4719.     /**
  4720.      * Calculate Discount Margin from N Spread to Maturity
  4721.      *
  4722.      * @param valParams Valuation Parameters
  4723.      * @param csqs Market Parameters
  4724.      * @param vcp Valuation Customization Parameters
  4725.      * @param dblNSpread N Spread to Maturity
  4726.      *
  4727.      * @return Discount Margin from N Spread to Maturity
  4728.      *
  4729.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4730.      */

  4731.     public abstract double discountMarginFromNSpread (
  4732.         final org.drip.param.valuation.ValuationParams valParams,
  4733.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4734.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4735.         final double dblNSpread)
  4736.         throws java.lang.Exception;

  4737.     /**
  4738.      * Calculate Discount Margin from N Spread to Optimal Exercise
  4739.      *
  4740.      * @param valParams Valuation Parameters
  4741.      * @param csqs Market Parameters
  4742.      * @param vcp Valuation Customization Parameters
  4743.      * @param dblNSpread N Spread to Optimal Exercise
  4744.      *
  4745.      * @return Discount Margin from N Spread to Optimal Exercise
  4746.      *
  4747.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4748.      */

  4749.     public abstract double discountMarginFromNSpreadToOptimalExercise (
  4750.         final org.drip.param.valuation.ValuationParams valParams,
  4751.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4752.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4753.         final double dblNSpread)
  4754.         throws java.lang.Exception;

  4755.     /**
  4756.      * Calculate Discount Margin from OAS to Work-out
  4757.      *
  4758.      * @param valParams Valuation Parameters
  4759.      * @param csqs Market Parameters
  4760.      * @param vcp Valuation Customization Parameters
  4761.      * @param iWorkoutDate Work-out Date
  4762.      * @param dblWorkoutFactor Work-out Factor
  4763.      * @param dblOAS OAS to Work-out
  4764.      *
  4765.      * @return Discount Margin from OAS to Work-out
  4766.      *
  4767.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4768.      */

  4769.     public abstract double discountMarginFromOAS (
  4770.         final org.drip.param.valuation.ValuationParams valParams,
  4771.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4772.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4773.         final int iWorkoutDate,
  4774.         final double dblWorkoutFactor,
  4775.         final double dblOAS)
  4776.         throws java.lang.Exception;

  4777.     /**
  4778.      * Calculate Discount Margin from OAS to Maturity
  4779.      *
  4780.      * @param valParams Valuation Parameters
  4781.      * @param csqs Market Parameters
  4782.      * @param vcp Valuation Customization Parameters
  4783.      * @param dblOAS OAS to Maturity
  4784.      *
  4785.      * @return Discount Margin from OAS to Maturity
  4786.      *
  4787.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4788.      */

  4789.     public abstract double discountMarginFromOAS (
  4790.         final org.drip.param.valuation.ValuationParams valParams,
  4791.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4792.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4793.         final double dblOAS)
  4794.         throws java.lang.Exception;

  4795.     /**
  4796.      * Calculate Discount Margin from OAS to Optimal Exercise
  4797.      *
  4798.      * @param valParams Valuation Parameters
  4799.      * @param csqs Market Parameters
  4800.      * @param vcp Valuation Customization Parameters
  4801.      * @param dblOAS OAS to Optimal Exercise
  4802.      *
  4803.      * @return Discount Margin from OAS to Optimal Exercise
  4804.      *
  4805.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4806.      */

  4807.     public abstract double discountMarginFromOASToOptimalExercise (
  4808.         final org.drip.param.valuation.ValuationParams valParams,
  4809.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4810.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4811.         final double dblOAS)
  4812.         throws java.lang.Exception;

  4813.     /**
  4814.      * Calculate Discount Margin from PECS to Work-out
  4815.      *
  4816.      * @param valParams Valuation Parameters
  4817.      * @param csqs Market Parameters
  4818.      * @param vcp Valuation Customization Parameters
  4819.      * @param iWorkoutDate Work-out Date
  4820.      * @param dblWorkoutFactor Work-out Factor
  4821.      * @param dblPECS PECS to Work-out
  4822.      *
  4823.      * @return Discount Margin from PECS to Work-out
  4824.      *
  4825.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4826.      */

  4827.     public abstract double discountMarginFromPECS (
  4828.         final org.drip.param.valuation.ValuationParams valParams,
  4829.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4830.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4831.         final int iWorkoutDate,
  4832.         final double dblWorkoutFactor,
  4833.         final double dblPECS)
  4834.         throws java.lang.Exception;

  4835.     /**
  4836.      * Calculate Discount Margin from PECS to Maturity
  4837.      *
  4838.      * @param valParams Valuation Parameters
  4839.      * @param csqs Market Parameters
  4840.      * @param vcp Valuation Customization Parameters
  4841.      * @param dblPECS PECS to Maturity
  4842.      *
  4843.      * @return Discount Margin from PECS to Maturity
  4844.      *
  4845.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4846.      */

  4847.     public abstract double discountMarginFromPECS (
  4848.         final org.drip.param.valuation.ValuationParams valParams,
  4849.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4850.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4851.         final double dblPECS)
  4852.         throws java.lang.Exception;

  4853.     /**
  4854.      * Calculate Discount Margin from PECS to Optimal Exercise
  4855.      *
  4856.      * @param valParams Valuation Parameters
  4857.      * @param csqs Market Parameters
  4858.      * @param vcp Valuation Customization Parameters
  4859.      * @param dblPECS PECS to Optimal Exercise
  4860.      *
  4861.      * @return Discount Margin from PECS to Optimal Exercise
  4862.      *
  4863.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4864.      */

  4865.     public abstract double discountMarginFromPECSToOptimalExercise (
  4866.         final org.drip.param.valuation.ValuationParams valParams,
  4867.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4868.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4869.         final double dblPECS)
  4870.         throws java.lang.Exception;

  4871.     /**
  4872.      * Calculate Discount Margin from Price to Work-out
  4873.      *
  4874.      * @param valParams Valuation Parameters
  4875.      * @param csqs Market Parameters
  4876.      * @param vcp Valuation Customization Parameters
  4877.      * @param iWorkoutDate Work-out Date
  4878.      * @param dblWorkoutFactor Work-out Factor
  4879.      * @param dblPrice Price to Work-out
  4880.      *
  4881.      * @return Discount Margin from Price to Work-out
  4882.      *
  4883.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4884.      */

  4885.     public abstract double discountMarginFromPrice (
  4886.         final org.drip.param.valuation.ValuationParams valParams,
  4887.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4888.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4889.         final int iWorkoutDate,
  4890.         final double dblWorkoutFactor,
  4891.         final double dblPrice)
  4892.         throws java.lang.Exception;

  4893.     /**
  4894.      * Calculate Discount Margin from Price to Maturity
  4895.      *
  4896.      * @param valParams Valuation Parameters
  4897.      * @param csqs Market Parameters
  4898.      * @param vcp Valuation Customization Parameters
  4899.      * @param dblPrice Price to Maturity
  4900.      *
  4901.      * @return Discount Margin from Price to Maturity
  4902.      *
  4903.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4904.      */

  4905.     public abstract double discountMarginFromPrice (
  4906.         final org.drip.param.valuation.ValuationParams valParams,
  4907.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4908.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4909.         final double dblPrice)
  4910.         throws java.lang.Exception;

  4911.     /**
  4912.      * Calculate Discount Margin from Price to Optimal Exercise
  4913.      *
  4914.      * @param valParams Valuation Parameters
  4915.      * @param csqs Market Parameters
  4916.      * @param vcp Valuation Customization Parameters
  4917.      * @param dblPrice Price to Optimal Exercise
  4918.      *
  4919.      * @return Discount Margin from Price to Optimal Exercise
  4920.      *
  4921.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4922.      */

  4923.     public abstract double discountMarginFromPriceToOptimalExercise (
  4924.         final org.drip.param.valuation.ValuationParams valParams,
  4925.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4926.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4927.         final double dblPrice)
  4928.         throws java.lang.Exception;

  4929.     /**
  4930.      * Calculate Discount Margin from TSY Spread to Work-out
  4931.      *
  4932.      * @param valParams Valuation Parameters
  4933.      * @param csqs Market Parameters
  4934.      * @param vcp Valuation Customization Parameters
  4935.      * @param iWorkoutDate Work-out Date
  4936.      * @param dblWorkoutFactor Work-out Factor
  4937.      * @param dblTSYSpread TSY Spread to Work-out
  4938.      *
  4939.      * @return Discount Margin from TSY Spread to Work-out
  4940.      *
  4941.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  4942.      */

  4943.     public abstract double discountMarginFromTSYSpread (
  4944.         final org.drip.param.valuation.ValuationParams valParams,
  4945.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4946.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4947.         final int iWorkoutDate,
  4948.         final double dblWorkoutFactor,
  4949.         final double dblTSYSpread)
  4950.         throws java.lang.Exception;

  4951.     /**
  4952.      * Calculate Discount Margin from TSY Spread to Maturity
  4953.      *
  4954.      * @param valParams Valuation Parameters
  4955.      * @param csqs Market Parameters
  4956.      * @param vcp Valuation Customization Parameters
  4957.      * @param dblTSYSpread TSY Spread to Maturity
  4958.      *
  4959.      * @return Discount Margin from TSY Spread to Maturity
  4960.      *
  4961.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4962.      */

  4963.     public abstract double discountMarginFromTSYSpread (
  4964.         final org.drip.param.valuation.ValuationParams valParams,
  4965.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4966.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4967.         final double dblTSYSpread)
  4968.         throws java.lang.Exception;

  4969.     /**
  4970.      * Calculate Discount Margin from TSY Spread to Optimal Exercise
  4971.      *
  4972.      * @param valParams Valuation Parameters
  4973.      * @param csqs Market Parameters
  4974.      * @param vcp Valuation Customization Parameters
  4975.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  4976.      *
  4977.      * @return Discount Margin from TSY Spread to Optimal Exercise
  4978.      *
  4979.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  4980.      */

  4981.     public abstract double discountMarginFromTSYSpreadToOptimalExercise (
  4982.         final org.drip.param.valuation.ValuationParams valParams,
  4983.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  4984.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  4985.         final double dblTSYSpread)
  4986.         throws java.lang.Exception;

  4987.     /**
  4988.      * Calculate Discount Margin from Yield to Work-out
  4989.      *
  4990.      * @param valParams Valuation Parameters
  4991.      * @param csqs Market Parameters
  4992.      * @param vcp Valuation Customization Parameters
  4993.      * @param iWorkoutDate Work-out Date
  4994.      * @param dblWorkoutFactor Work-out Factor
  4995.      * @param dblYield Yield to Work-out
  4996.      *
  4997.      * @return Discount Margin from Yield to Work-out
  4998.      *
  4999.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  5000.      */

  5001.     public abstract double discountMarginFromYield (
  5002.         final org.drip.param.valuation.ValuationParams valParams,
  5003.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5004.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5005.         final int iWorkoutDate,
  5006.         final double dblWorkoutFactor,
  5007.         final double dblYield)
  5008.         throws java.lang.Exception;

  5009.     /**
  5010.      * Calculate Discount Margin from Yield to Maturity
  5011.      *
  5012.      * @param valParams Valuation Parameters
  5013.      * @param csqs Market Parameters
  5014.      * @param vcp Valuation Customization Parameters
  5015.      * @param dblYield Yield to Maturity
  5016.      *
  5017.      * @return Discount Margin from Yield to Maturity
  5018.      *
  5019.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  5020.      */

  5021.     public abstract double discountMarginFromYield (
  5022.         final org.drip.param.valuation.ValuationParams valParams,
  5023.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5024.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5025.         final double dblYield)
  5026.         throws java.lang.Exception;

  5027.     /**
  5028.      * Calculate Discount Margin from Yield to Optimal Exercise
  5029.      *
  5030.      * @param valParams Valuation Parameters
  5031.      * @param csqs Market Parameters
  5032.      * @param vcp Valuation Customization Parameters
  5033.      * @param dblYield Yield to Optimal Exercise
  5034.      *
  5035.      * @return Discount Margin from Yield to Optimal Exercise
  5036.      *
  5037.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  5038.      */

  5039.     public abstract double discountMarginFromYieldToOptimalExercise (
  5040.         final org.drip.param.valuation.ValuationParams valParams,
  5041.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5042.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5043.         final double dblYield)
  5044.         throws java.lang.Exception;

  5045.     /**
  5046.      * Calculate Discount Margin from Yield Spread to Work-out
  5047.      *
  5048.      * @param valParams Valuation Parameters
  5049.      * @param csqs Market Parameters
  5050.      * @param vcp Valuation Customization Parameters
  5051.      * @param iWorkoutDate Work-out Date
  5052.      * @param dblWorkoutFactor Work-out Factor
  5053.      * @param dblYieldSpread Yield Spread to Work-out
  5054.      *
  5055.      * @return Discount Margin from Yield Spread to Work-out
  5056.      *
  5057.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  5058.      */

  5059.     public abstract double discountMarginFromYieldSpread (
  5060.         final org.drip.param.valuation.ValuationParams valParams,
  5061.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5062.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5063.         final int iWorkoutDate,
  5064.         final double dblWorkoutFactor,
  5065.         final double dblYieldSpread)
  5066.         throws java.lang.Exception;

  5067.     /**
  5068.      * Calculate Discount Margin from Yield Spread to Maturity
  5069.      *
  5070.      * @param valParams Valuation Parameters
  5071.      * @param csqs Market Parameters
  5072.      * @param vcp Valuation Customization Parameters
  5073.      * @param dblYieldSpread Yield Spread to Maturity
  5074.      *
  5075.      * @return Discount Margin from Yield Spread to Maturity
  5076.      *
  5077.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  5078.      */

  5079.     public abstract double discountMarginFromYieldSpread (
  5080.         final org.drip.param.valuation.ValuationParams valParams,
  5081.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5082.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5083.         final double dblYieldSpread)
  5084.         throws java.lang.Exception;

  5085.     /**
  5086.      * Calculate Discount Margin from Yield Spread to Optimal Exercise
  5087.      *
  5088.      * @param valParams Valuation Parameters
  5089.      * @param csqs Market Parameters
  5090.      * @param vcp Valuation Customization Parameters
  5091.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  5092.      *
  5093.      * @return Discount Margin from Yield Spread to Optimal Exercise
  5094.      *
  5095.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  5096.      */

  5097.     public abstract double discountMarginFromYieldSpreadToOptimalExercise (
  5098.         final org.drip.param.valuation.ValuationParams valParams,
  5099.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5100.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5101.         final double dblYieldSpread)
  5102.         throws java.lang.Exception;

  5103.     /**
  5104.      * Calculate Discount Margin from Z Spread to Work-out
  5105.      *
  5106.      * @param valParams Valuation Parameters
  5107.      * @param csqs Market Parameters
  5108.      * @param vcp Valuation Customization Parameters
  5109.      * @param iWorkoutDate Work-out Date
  5110.      * @param dblWorkoutFactor Work-out Factor
  5111.      * @param dblZSpread Z Spread to Work-out
  5112.      *
  5113.      * @return Discount Margin from Z Spread to Work-out
  5114.      *
  5115.      * @throws java.lang.Exception Thrown if the Discount Margin cannot be calculated
  5116.      */

  5117.     public abstract double discountMarginFromZSpread (
  5118.         final org.drip.param.valuation.ValuationParams valParams,
  5119.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5120.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5121.         final int iWorkoutDate,
  5122.         final double dblWorkoutFactor,
  5123.         final double dblZSpread)
  5124.         throws java.lang.Exception;

  5125.     /**
  5126.      * Calculate Discount Margin from Z Spread to Maturity
  5127.      *
  5128.      * @param valParams Valuation Parameters
  5129.      * @param csqs Market Parameters
  5130.      * @param vcp Valuation Customization Parameters
  5131.      * @param dblZSpread Z Spread to Maturity
  5132.      *
  5133.      * @return Discount Margin from Z Spread to Maturity
  5134.      *
  5135.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  5136.      */

  5137.     public abstract double discountMarginFromZSpread (
  5138.         final org.drip.param.valuation.ValuationParams valParams,
  5139.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5140.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5141.         final double dblZSpread)
  5142.         throws java.lang.Exception;

  5143.     /**
  5144.      * Calculate Discount Margin from Z Spread to Optimal Exercise
  5145.      *
  5146.      * @param valParams Valuation Parameters
  5147.      * @param csqs Market Parameters
  5148.      * @param vcp Valuation Customization Parameters
  5149.      * @param dblZSpread Z Spread to Optimal Exercise
  5150.      *
  5151.      * @return Discount Margin from Z Spread to Optimal Exercise
  5152.      *
  5153.      * @throws java.lang.Exception Thrown if Discount Margin cannot be calculated
  5154.      */

  5155.     public abstract double discountMarginFromZSpreadToOptimalExercise (
  5156.         final org.drip.param.valuation.ValuationParams valParams,
  5157.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5158.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5159.         final double dblZSpread)
  5160.         throws java.lang.Exception;

  5161.     /**
  5162.      * Calculate Duration from ASW to Work-out
  5163.      *
  5164.      * @param valParams Valuation Parameters
  5165.      * @param csqs Market Parameters
  5166.      * @param vcp Valuation Customization Parameters
  5167.      * @param iWorkoutDate Work-out Date
  5168.      * @param dblWorkoutFactor Work-out Factor
  5169.      * @param dblASW ASW to Work-out
  5170.      *
  5171.      * @return Duration from ASW to Work-out
  5172.      *
  5173.      * @throws java.lang.Exception Thrown if the Duration cannot be calculated
  5174.      */

  5175.     public abstract double durationFromASW (
  5176.         final org.drip.param.valuation.ValuationParams valParams,
  5177.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5178.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5179.         final int iWorkoutDate,
  5180.         final double dblWorkoutFactor,
  5181.         final double dblASW)
  5182.         throws java.lang.Exception;

  5183.     /**
  5184.      * Calculate Duration from ASW to Maturity
  5185.      *
  5186.      * @param valParams Valuation Parameters
  5187.      * @param csqs Market Parameters
  5188.      * @param vcp Valuation Customization Parameters
  5189.      * @param dblASW ASW to Maturity
  5190.      *
  5191.      * @return Duration from ASW to Maturity
  5192.      *
  5193.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5194.      */

  5195.     public abstract double durationFromASW (
  5196.         final org.drip.param.valuation.ValuationParams valParams,
  5197.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5198.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5199.         final double dblASW)
  5200.         throws java.lang.Exception;

  5201.     /**
  5202.      * Calculate Duration from ASW to Optimal Exercise
  5203.      *
  5204.      * @param valParams Valuation Parameters
  5205.      * @param csqs Market Parameters
  5206.      * @param vcp Valuation Customization Parameters
  5207.      * @param dblASW ASW to Optimal Exercise
  5208.      *
  5209.      * @return Duration from ASW to Optimal Exercise
  5210.      *
  5211.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5212.      */

  5213.     public abstract double durationFromASWToOptimalExercise (
  5214.         final org.drip.param.valuation.ValuationParams valParams,
  5215.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5216.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5217.         final double dblASW)
  5218.         throws java.lang.Exception;

  5219.     /**
  5220.      * Calculate Duration from Bond Basis to Work-out
  5221.      *
  5222.      * @param valParams Valuation Parameters
  5223.      * @param csqs Market Parameters
  5224.      * @param vcp Valuation Customization Parameters
  5225.      * @param iWorkoutDate Work-out Date
  5226.      * @param dblWorkoutFactor Work-out Factor
  5227.      * @param dblBondBasis Bond Basis to Work-out
  5228.      *
  5229.      * @return Duration from Bond Basis to Work-out
  5230.      *
  5231.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5232.      */

  5233.     public abstract double durationFromBondBasis (
  5234.         final org.drip.param.valuation.ValuationParams valParams,
  5235.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5236.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5237.         final int iWorkoutDate,
  5238.         final double dblWorkoutFactor,
  5239.         final double dblBondBasis)
  5240.         throws java.lang.Exception;

  5241.     /**
  5242.      * Calculate Duration from Bond Basis to Maturity
  5243.      *
  5244.      * @param valParams Valuation Parameters
  5245.      * @param csqs Market Parameters
  5246.      * @param vcp Valuation Customization Parameters
  5247.      * @param dblBondBasis Bond Basis to Maturity
  5248.      *
  5249.      * @return Duration from Bond Basis to Maturity
  5250.      *
  5251.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5252.      */

  5253.     public abstract double durationFromBondBasis (
  5254.         final org.drip.param.valuation.ValuationParams valParams,
  5255.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5256.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5257.         final double dblBondBasis)
  5258.         throws java.lang.Exception;

  5259.     /**
  5260.      * Calculate Duration from Bond Basis to Optimal Exercise
  5261.      *
  5262.      * @param valParams Valuation Parameters
  5263.      * @param csqs Market Parameters
  5264.      * @param vcp Valuation Customization Parameters
  5265.      * @param dblBondBasis Bond Basis to Optimal Exercise
  5266.      *
  5267.      * @return Duration from Bond Basis to Optimal Exercise
  5268.      *
  5269.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5270.      */

  5271.     public abstract double durationFromBondBasisToOptimalExercise (
  5272.         final org.drip.param.valuation.ValuationParams valParams,
  5273.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5274.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5275.         final double dblBondBasis)
  5276.         throws java.lang.Exception;

  5277.     /**
  5278.      * Calculate Duration from Credit Basis to Work-out
  5279.      *
  5280.      * @param valParams Valuation Parameters
  5281.      * @param csqs Market Parameters
  5282.      * @param vcp Valuation Customization Parameters
  5283.      * @param iWorkoutDate Work-out Date
  5284.      * @param dblWorkoutFactor Work-out Factor
  5285.      * @param dblCreditBasis Credit Basis to Work-out
  5286.      *
  5287.      * @return Duration from Credit Basis to Work-out
  5288.      *
  5289.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5290.      */

  5291.     public abstract double durationFromCreditBasis (
  5292.         final org.drip.param.valuation.ValuationParams valParams,
  5293.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5294.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5295.         final int iWorkoutDate,
  5296.         final double dblWorkoutFactor,
  5297.         final double dblCreditBasis)
  5298.         throws java.lang.Exception;

  5299.     /**
  5300.      * Calculate Duration from Credit Basis to Maturity
  5301.      *
  5302.      * @param valParams Valuation Parameters
  5303.      * @param csqs Market Parameters
  5304.      * @param vcp Valuation Customization Parameters
  5305.      * @param dblCreditBasis Credit Basis to Maturity
  5306.      *
  5307.      * @return Duration from Credit Basis to Maturity
  5308.      *
  5309.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5310.      */

  5311.     public abstract double durationFromCreditBasis (
  5312.         final org.drip.param.valuation.ValuationParams valParams,
  5313.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5314.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5315.         final double dblCreditBasis)
  5316.         throws java.lang.Exception;

  5317.     /**
  5318.      * Calculate Duration from Credit Basis to Optimal Exercise
  5319.      *
  5320.      * @param valParams Valuation Parameters
  5321.      * @param csqs Market Parameters
  5322.      * @param vcp Valuation Customization Parameters
  5323.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  5324.      *
  5325.      * @return Duration from Credit Basis to Optimal Exercise
  5326.      *
  5327.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5328.      */

  5329.     public abstract double durationFromCreditBasisToOptimalExercise (
  5330.         final org.drip.param.valuation.ValuationParams valParams,
  5331.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5332.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5333.         final double dblCreditBasis)
  5334.         throws java.lang.Exception;

  5335.     /**
  5336.      * Calculate Duration from Discount Margin to Work-out
  5337.      *
  5338.      * @param valParams Valuation Parameters
  5339.      * @param csqs Market Parameters
  5340.      * @param vcp Valuation Customization Parameters
  5341.      * @param iWorkoutDate Work-out Date
  5342.      * @param dblWorkoutFactor Work-out Factor
  5343.      * @param dblDiscountMargin Discount Margin to Work-out
  5344.      *
  5345.      * @return Duration from Discount Margin to Work-out
  5346.      *
  5347.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5348.      */

  5349.     public abstract double durationFromDiscountMargin (
  5350.         final org.drip.param.valuation.ValuationParams valParams,
  5351.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5352.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5353.         final int iWorkoutDate,
  5354.         final double dblWorkoutFactor,
  5355.         final double dblDiscountMargin)
  5356.         throws java.lang.Exception;

  5357.     /**
  5358.      * Calculate Duration from Discount Margin to Maturity
  5359.      *
  5360.      * @param valParams Valuation Parameters
  5361.      * @param csqs Market Parameters
  5362.      * @param vcp Valuation Customization Parameters
  5363.      * @param dblDiscountMargin Discount Margin to Maturity
  5364.      *
  5365.      * @return Duration from Discount Margin to Maturity
  5366.      *
  5367.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5368.      */

  5369.     public abstract double durationFromDiscountMargin (
  5370.         final org.drip.param.valuation.ValuationParams valParams,
  5371.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5372.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5373.         final double dblDiscountMargin)
  5374.         throws java.lang.Exception;

  5375.     /**
  5376.      * Calculate Duration from Discount Margin to Optimal Exercise
  5377.      *
  5378.      * @param valParams Valuation Parameters
  5379.      * @param csqs Market Parameters
  5380.      * @param vcp Valuation Customization Parameters
  5381.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  5382.      *
  5383.      * @return Duration from Discount Margin to Optimal Exercise
  5384.      *
  5385.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5386.      */

  5387.     public abstract double durationFromDiscountMarginToOptimalExercise (
  5388.         final org.drip.param.valuation.ValuationParams valParams,
  5389.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5390.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5391.         final double dblDiscountMargin)
  5392.         throws java.lang.Exception;

  5393.     /**
  5394.      * Calculate Duration from E Spread to Work-out
  5395.      *
  5396.      * @param valParams Valuation Parameters
  5397.      * @param csqs Market Parameters
  5398.      * @param vcp Valuation Customization Parameters
  5399.      * @param iWorkoutDate Work-out Date
  5400.      * @param dblWorkoutFactor Work-out Factor
  5401.      * @param dblESpread E Spread to Work-out
  5402.      *
  5403.      * @return Duration from E Spread to Work-out
  5404.      *
  5405.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5406.      */

  5407.     public abstract double durationFromESpread (
  5408.         final org.drip.param.valuation.ValuationParams valParams,
  5409.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5410.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5411.         final int iWorkoutDate,
  5412.         final double dblWorkoutFactor,
  5413.         final double dblESpread)
  5414.         throws java.lang.Exception;

  5415.     /**
  5416.      * Calculate Duration from E Spread to Maturity
  5417.      *
  5418.      * @param valParams Valuation Parameters
  5419.      * @param csqs Market Parameters
  5420.      * @param vcp Valuation Customization Parameters
  5421.      * @param dblESpread E Spread to Maturity
  5422.      *
  5423.      * @return Duration from E Spread to Maturity
  5424.      *
  5425.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5426.      */

  5427.     public abstract double durationFromESpread (
  5428.         final org.drip.param.valuation.ValuationParams valParams,
  5429.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5430.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5431.         final double dblESpread)
  5432.         throws java.lang.Exception;

  5433.     /**
  5434.      * Calculate Duration from E Spread to Optimal Exercise
  5435.      *
  5436.      * @param valParams Valuation Parameters
  5437.      * @param csqs Market Parameters
  5438.      * @param vcp Valuation Customization Parameters
  5439.      * @param dblESpread E Spread to Optimal Exercise
  5440.      *
  5441.      * @return Duration from E Spread to Optimal Exercise
  5442.      *
  5443.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5444.      */

  5445.     public abstract double durationFromESpreadToOptimalExercise (
  5446.         final org.drip.param.valuation.ValuationParams valParams,
  5447.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5448.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5449.         final double dblESpread)
  5450.         throws java.lang.Exception;

  5451.     /**
  5452.      * Calculate Duration from G Spread to Work-out
  5453.      *
  5454.      * @param valParams Valuation Parameters
  5455.      * @param csqs Market Parameters
  5456.      * @param vcp Valuation Customization Parameters
  5457.      * @param iWorkoutDate Work-out Date
  5458.      * @param dblWorkoutFactor Work-out Factor
  5459.      * @param dblGSpread G Spread to Work-out
  5460.      *
  5461.      * @return Duration from G Spread to Work-out
  5462.      *
  5463.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5464.      */

  5465.     public abstract double durationFromGSpread (
  5466.         final org.drip.param.valuation.ValuationParams valParams,
  5467.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5468.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5469.         final int iWorkoutDate,
  5470.         final double dblWorkoutFactor,
  5471.         final double dblGSpread)
  5472.         throws java.lang.Exception;

  5473.     /**
  5474.      * Calculate Duration from G Spread to Maturity
  5475.      *
  5476.      * @param valParams Valuation Parameters
  5477.      * @param csqs Market Parameters
  5478.      * @param vcp Valuation Customization Parameters
  5479.      * @param dblGSpread G Spread to Maturity
  5480.      *
  5481.      * @return Duration from G Spread to Maturity
  5482.      *
  5483.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5484.      */

  5485.     public abstract double durationFromGSpread (
  5486.         final org.drip.param.valuation.ValuationParams valParams,
  5487.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5488.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5489.         final double dblGSpread)
  5490.         throws java.lang.Exception;

  5491.     /**
  5492.      * Calculate Duration from G Spread to Optimal Exercise
  5493.      *
  5494.      * @param valParams Valuation Parameters
  5495.      * @param csqs Market Parameters
  5496.      * @param vcp Valuation Customization Parameters
  5497.      * @param dblGSpread G Spread to Optimal Exercise
  5498.      *
  5499.      * @return Duration from G Spread to Optimal Exercise
  5500.      *
  5501.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5502.      */

  5503.     public abstract double durationFromGSpreadToOptimalExercise (
  5504.         final org.drip.param.valuation.ValuationParams valParams,
  5505.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5506.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5507.         final double dblGSpread)
  5508.         throws java.lang.Exception;

  5509.     /**
  5510.      * Calculate Duration from I Spread to Work-out
  5511.      *
  5512.      * @param valParams Valuation Parameters
  5513.      * @param csqs Market Parameters
  5514.      * @param vcp Valuation Customization Parameters
  5515.      * @param iWorkoutDate Work-out Date
  5516.      * @param dblWorkoutFactor Work-out Factor
  5517.      * @param dblISpread I Spread to Work-out
  5518.      *
  5519.      * @return Duration from I Spread to Work-out
  5520.      *
  5521.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5522.      */

  5523.     public abstract double durationFromISpread (
  5524.         final org.drip.param.valuation.ValuationParams valParams,
  5525.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5526.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5527.         final int iWorkoutDate,
  5528.         final double dblWorkoutFactor,
  5529.         final double dblISpread)
  5530.         throws java.lang.Exception;

  5531.     /**
  5532.      * Calculate Duration from I Spread to Maturity
  5533.      *
  5534.      * @param valParams Valuation Parameters
  5535.      * @param csqs Market Parameters
  5536.      * @param vcp Valuation Customization Parameters
  5537.      * @param dblISpread I Spread to Maturity
  5538.      *
  5539.      * @return Duration from I Spread to Maturity
  5540.      *
  5541.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5542.      */

  5543.     public abstract double durationFromISpread (
  5544.         final org.drip.param.valuation.ValuationParams valParams,
  5545.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5546.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5547.         final double dblISpread)
  5548.         throws java.lang.Exception;

  5549.     /**
  5550.      * Calculate Duration from I Spread to Optimal Exercise
  5551.      *
  5552.      * @param valParams Valuation Parameters
  5553.      * @param csqs Market Parameters
  5554.      * @param vcp Valuation Customization Parameters
  5555.      * @param dblISpread I Spread to Optimal Exercise
  5556.      *
  5557.      * @return Duration from I Spread to Optimal Exercise
  5558.      *
  5559.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5560.      */

  5561.     public abstract double durationFromISpreadToOptimalExercise (
  5562.         final org.drip.param.valuation.ValuationParams valParams,
  5563.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5564.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5565.         final double dblISpread)
  5566.         throws java.lang.Exception;

  5567.     /**
  5568.      * Calculate Duration from J Spread to Work-out
  5569.      *
  5570.      * @param valParams Valuation Parameters
  5571.      * @param csqs Market Parameters
  5572.      * @param vcp Valuation Customization Parameters
  5573.      * @param iWorkoutDate Work-out Date
  5574.      * @param dblWorkoutFactor Work-out Factor
  5575.      * @param dblJSpread J Spread to Work-out
  5576.      *
  5577.      * @return Duration from J Spread to Work-out
  5578.      *
  5579.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5580.      */

  5581.     public abstract double durationFromJSpread (
  5582.         final org.drip.param.valuation.ValuationParams valParams,
  5583.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5584.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5585.         final int iWorkoutDate,
  5586.         final double dblWorkoutFactor,
  5587.         final double dblJSpread)
  5588.         throws java.lang.Exception;

  5589.     /**
  5590.      * Calculate Duration from J Spread to Maturity
  5591.      *
  5592.      * @param valParams Valuation Parameters
  5593.      * @param csqs Market Parameters
  5594.      * @param vcp Valuation Customization Parameters
  5595.      * @param dblJSpread J Spread to Maturity
  5596.      *
  5597.      * @return Duration from J Spread to Maturity
  5598.      *
  5599.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5600.      */

  5601.     public abstract double durationFromJSpread (
  5602.         final org.drip.param.valuation.ValuationParams valParams,
  5603.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5604.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5605.         final double dblJSpread)
  5606.         throws java.lang.Exception;

  5607.     /**
  5608.      * Calculate Duration from J Spread to Optimal Exercise
  5609.      *
  5610.      * @param valParams Valuation Parameters
  5611.      * @param csqs Market Parameters
  5612.      * @param vcp Valuation Customization Parameters
  5613.      * @param dblJSpread J Spread to Optimal Exercise
  5614.      *
  5615.      * @return Duration from J Spread to Optimal Exercise
  5616.      *
  5617.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5618.      */

  5619.     public abstract double durationFromJSpreadToOptimalExercise (
  5620.         final org.drip.param.valuation.ValuationParams valParams,
  5621.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5622.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5623.         final double dblJSpread)
  5624.         throws java.lang.Exception;

  5625.     /**
  5626.      * Calculate Duration from N Spread to Work-out
  5627.      *
  5628.      * @param valParams Valuation Parameters
  5629.      * @param csqs Market Parameters
  5630.      * @param vcp Valuation Customization Parameters
  5631.      * @param iWorkoutDate Work-out Date
  5632.      * @param dblWorkoutFactor Work-out Factor
  5633.      * @param dblNSpread N Spread to Work-out
  5634.      *
  5635.      * @return Duration from N Spread to Work-out
  5636.      *
  5637.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5638.      */

  5639.     public abstract double durationFromNSpread (
  5640.         final org.drip.param.valuation.ValuationParams valParams,
  5641.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5642.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5643.         final int iWorkoutDate,
  5644.         final double dblWorkoutFactor,
  5645.         final double dblNSpread)
  5646.         throws java.lang.Exception;

  5647.     /**
  5648.      * Calculate Duration from N Spread to Maturity
  5649.      *
  5650.      * @param valParams Valuation Parameters
  5651.      * @param csqs Market Parameters
  5652.      * @param vcp Valuation Customization Parameters
  5653.      * @param dblNSpread N Spread to Maturity
  5654.      *
  5655.      * @return Duration from N Spread to Maturity
  5656.      *
  5657.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5658.      */

  5659.     public abstract double durationFromNSpread (
  5660.         final org.drip.param.valuation.ValuationParams valParams,
  5661.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5662.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5663.         final double dblNSpread)
  5664.         throws java.lang.Exception;

  5665.     /**
  5666.      * Calculate Duration from N Spread to Optimal Exercise
  5667.      *
  5668.      * @param valParams Valuation Parameters
  5669.      * @param csqs Market Parameters
  5670.      * @param vcp Valuation Customization Parameters
  5671.      * @param dblNSpread N Spread to Optimal Exercise
  5672.      *
  5673.      * @return Duration from N Spread to Optimal Exercise
  5674.      *
  5675.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5676.      */

  5677.     public abstract double durationFromNSpreadToOptimalExercise (
  5678.         final org.drip.param.valuation.ValuationParams valParams,
  5679.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5680.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5681.         final double dblNSpread)
  5682.         throws java.lang.Exception;

  5683.     /**
  5684.      * Calculate Duration from OAS to Work-out
  5685.      *
  5686.      * @param valParams Valuation Parameters
  5687.      * @param csqs Market Parameters
  5688.      * @param vcp Valuation Customization Parameters
  5689.      * @param iWorkoutDate Work-out Date
  5690.      * @param dblWorkoutFactor Work-out Factor
  5691.      * @param dblOAS OAS to Work-out
  5692.      *
  5693.      * @return Duration from OAS to Work-out
  5694.      *
  5695.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5696.      */

  5697.     public abstract double durationFromOAS (
  5698.         final org.drip.param.valuation.ValuationParams valParams,
  5699.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5700.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5701.         final int iWorkoutDate,
  5702.         final double dblWorkoutFactor,
  5703.         final double dblOAS)
  5704.         throws java.lang.Exception;

  5705.     /**
  5706.      * Calculate Duration from OAS to Maturity
  5707.      *
  5708.      * @param valParams Valuation Parameters
  5709.      * @param csqs Market Parameters
  5710.      * @param vcp Valuation Customization Parameters
  5711.      * @param dblOAS OAS to Maturity
  5712.      *
  5713.      * @return Duration from OAS to Maturity
  5714.      *
  5715.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5716.      */

  5717.     public abstract double durationFromOAS (
  5718.         final org.drip.param.valuation.ValuationParams valParams,
  5719.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5720.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5721.         final double dblOAS)
  5722.         throws java.lang.Exception;

  5723.     /**
  5724.      * Calculate Duration from OAS to Optimal Exercise
  5725.      *
  5726.      * @param valParams Valuation Parameters
  5727.      * @param csqs Market Parameters
  5728.      * @param vcp Valuation Customization Parameters
  5729.      * @param dblOAS OAS to Optimal Exercise
  5730.      *
  5731.      * @return Duration from OAS to Optimal Exercise
  5732.      *
  5733.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5734.      */

  5735.     public abstract double durationFromOASToOptimalExercise (
  5736.         final org.drip.param.valuation.ValuationParams valParams,
  5737.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5738.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5739.         final double dblOAS)
  5740.         throws java.lang.Exception;

  5741.     /**
  5742.      * Calculate Duration from PECS to Work-out
  5743.      *
  5744.      * @param valParams Valuation Parameters
  5745.      * @param csqs Market Parameters
  5746.      * @param vcp Valuation Customization Parameters
  5747.      * @param iWorkoutDate Work-out Date
  5748.      * @param dblWorkoutFactor Work-out Factor
  5749.      * @param dblPECS PECS to Work-out
  5750.      *
  5751.      * @return Duration from PECS to Work-out
  5752.      *
  5753.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5754.      */

  5755.     public abstract double durationFromPECS (
  5756.         final org.drip.param.valuation.ValuationParams valParams,
  5757.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5758.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5759.         final int iWorkoutDate,
  5760.         final double dblWorkoutFactor,
  5761.         final double dblPECS)
  5762.         throws java.lang.Exception;

  5763.     /**
  5764.      * Calculate Duration from PECS to Maturity
  5765.      *
  5766.      * @param valParams Valuation Parameters
  5767.      * @param csqs Market Parameters
  5768.      * @param vcp Valuation Customization Parameters
  5769.      * @param dblPECS PECS to Maturity
  5770.      *
  5771.      * @return Duration from PECS to Maturity
  5772.      *
  5773.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5774.      */

  5775.     public abstract double durationFromPECS (
  5776.         final org.drip.param.valuation.ValuationParams valParams,
  5777.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5778.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5779.         final double dblPECS)
  5780.         throws java.lang.Exception;

  5781.     /**
  5782.      * Calculate Duration from PECS to Optimal Exercise
  5783.      *
  5784.      * @param valParams Valuation Parameters
  5785.      * @param csqs Market Parameters
  5786.      * @param vcp Valuation Customization Parameters
  5787.      * @param dblPECS PECS to Optimal Exercise
  5788.      *
  5789.      * @return Duration from PECS to Optimal Exercise
  5790.      *
  5791.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5792.      */

  5793.     public abstract double durationFromPECSToOptimalExercise (
  5794.         final org.drip.param.valuation.ValuationParams valParams,
  5795.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5796.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5797.         final double dblPECS)
  5798.         throws java.lang.Exception;

  5799.     /**
  5800.      * Calculate Duration from Price to Work-out
  5801.      *
  5802.      * @param valParams Valuation Parameters
  5803.      * @param csqs Market Parameters
  5804.      * @param vcp Valuation Customization Parameters
  5805.      * @param iWorkoutDate Work-out Date
  5806.      * @param dblWorkoutFactor Work-out Factor
  5807.      * @param dblPrice Price to Work-out
  5808.      *
  5809.      * @return Duration from Price to Work-out
  5810.      *
  5811.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5812.      */

  5813.     public abstract double durationFromPrice (
  5814.         final org.drip.param.valuation.ValuationParams valParams,
  5815.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5816.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5817.         final int iWorkoutDate,
  5818.         final double dblWorkoutFactor,
  5819.         final double dblPrice)
  5820.         throws java.lang.Exception;

  5821.     /**
  5822.      * Calculate Duration from Price to Maturity
  5823.      *
  5824.      * @param valParams Valuation Parameters
  5825.      * @param csqs Market Parameters
  5826.      * @param vcp Valuation Customization Parameters
  5827.      * @param dblPrice Price to Maturity
  5828.      *
  5829.      * @return Duration from Price to Maturity
  5830.      *
  5831.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5832.      */

  5833.     public abstract double durationFromPrice (
  5834.         final org.drip.param.valuation.ValuationParams valParams,
  5835.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5836.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5837.         final double dblPrice)
  5838.         throws java.lang.Exception;

  5839.     /**
  5840.      * Calculate Duration from Price to Optimal Exercise
  5841.      *
  5842.      * @param valParams Valuation Parameters
  5843.      * @param csqs Market Parameters
  5844.      * @param vcp Valuation Customization Parameters
  5845.      * @param dblPrice Price to Optimal Exercise
  5846.      *
  5847.      * @return Duration from Price to Optimal Exercise
  5848.      *
  5849.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5850.      */

  5851.     public abstract double durationFromPriceToOptimalExercise (
  5852.         final org.drip.param.valuation.ValuationParams valParams,
  5853.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5854.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5855.         final double dblPrice)
  5856.         throws java.lang.Exception;

  5857.     /**
  5858.      * Calculate Duration from TSY Spread to Work-out
  5859.      *
  5860.      * @param valParams Valuation Parameters
  5861.      * @param csqs Market Parameters
  5862.      * @param vcp Valuation Customization Parameters
  5863.      * @param iWorkoutDate Work-out Date
  5864.      * @param dblWorkoutFactor Work-out Factor
  5865.      * @param dblTSYSpread TSY Spread to Work-out
  5866.      *
  5867.      * @return Duration from TSY Spread to Work-out
  5868.      *
  5869.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5870.      */

  5871.     public abstract double durationFromTSYSpread (
  5872.         final org.drip.param.valuation.ValuationParams valParams,
  5873.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5874.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5875.         final int iWorkoutDate,
  5876.         final double dblWorkoutFactor,
  5877.         final double dblTSYSpread)
  5878.         throws java.lang.Exception;

  5879.     /**
  5880.      * Calculate Duration from TSY Spread to Maturity
  5881.      *
  5882.      * @param valParams Valuation Parameters
  5883.      * @param csqs Market Parameters
  5884.      * @param vcp Valuation Customization Parameters
  5885.      * @param dblTSYSpread TSY Spread to Maturity
  5886.      *
  5887.      * @return Duration from TSY Spread to Maturity
  5888.      *
  5889.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5890.      */

  5891.     public abstract double durationFromTSYSpread (
  5892.         final org.drip.param.valuation.ValuationParams valParams,
  5893.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5894.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5895.         final double dblTSYSpread)
  5896.         throws java.lang.Exception;

  5897.     /**
  5898.      * Calculate Duration from TSY Spread to Optimal Exercise
  5899.      *
  5900.      * @param valParams Valuation Parameters
  5901.      * @param csqs Market Parameters
  5902.      * @param vcp Valuation Customization Parameters
  5903.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  5904.      *
  5905.      * @return Duration from TSY Spread to Optimal Exercise
  5906.      *
  5907.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5908.      */

  5909.     public abstract double durationFromTSYSpreadToOptimalExercise (
  5910.         final org.drip.param.valuation.ValuationParams valParams,
  5911.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5912.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5913.         final double dblTSYSpread)
  5914.         throws java.lang.Exception;

  5915.     /**
  5916.      * Calculate Duration from Yield to Work-out
  5917.      *
  5918.      * @param valParams Valuation Parameters
  5919.      * @param csqs Market Parameters
  5920.      * @param vcp Valuation Customization Parameters
  5921.      * @param iWorkoutDate Work-out Date
  5922.      * @param dblWorkoutFactor Work-out Factor
  5923.      * @param dblYield Yield to Work-out
  5924.      *
  5925.      * @return Duration from Yield to Work-out
  5926.      *
  5927.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5928.      */

  5929.     public abstract double durationFromYield (
  5930.         final org.drip.param.valuation.ValuationParams valParams,
  5931.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5932.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5933.         final int iWorkoutDate,
  5934.         final double dblWorkoutFactor,
  5935.         final double dblYield)
  5936.         throws java.lang.Exception;

  5937.     /**
  5938.      * Calculate Duration from Yield to Maturity
  5939.      *
  5940.      * @param valParams Valuation Parameters
  5941.      * @param csqs Market Parameters
  5942.      * @param vcp Valuation Customization Parameters
  5943.      * @param dblYield Yield to Maturity
  5944.      *
  5945.      * @return Duration from Yield to Maturity
  5946.      *
  5947.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5948.      */

  5949.     public abstract double durationFromYield (
  5950.         final org.drip.param.valuation.ValuationParams valParams,
  5951.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5952.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5953.         final double dblYield)
  5954.         throws java.lang.Exception;

  5955.     /**
  5956.      * Calculate Duration from Yield to Optimal Exercise
  5957.      *
  5958.      * @param valParams Valuation Parameters
  5959.      * @param csqs Market Parameters
  5960.      * @param vcp Valuation Customization Parameters
  5961.      * @param dblYield Yield to Optimal Exercise
  5962.      *
  5963.      * @return Duration from Yield to Optimal Exercise
  5964.      *
  5965.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5966.      */

  5967.     public abstract double durationFromYieldToOptimalExercise (
  5968.         final org.drip.param.valuation.ValuationParams valParams,
  5969.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5970.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5971.         final double dblYield)
  5972.         throws java.lang.Exception;

  5973.     /**
  5974.      * Calculate Duration from Yield Spread to Work-out
  5975.      *
  5976.      * @param valParams Valuation Parameters
  5977.      * @param csqs Market Parameters
  5978.      * @param vcp Valuation Customization Parameters
  5979.      * @param iWorkoutDate Work-out Date
  5980.      * @param dblWorkoutFactor Work-out Factor
  5981.      * @param dblYieldSpread Yield Spread to Work-out
  5982.      *
  5983.      * @return Duration from Yield Spread to Work-out
  5984.      *
  5985.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  5986.      */

  5987.     public abstract double durationFromYieldSpread (
  5988.         final org.drip.param.valuation.ValuationParams valParams,
  5989.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  5990.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  5991.         final int iWorkoutDate,
  5992.         final double dblWorkoutFactor,
  5993.         final double dblYieldSpread)
  5994.         throws java.lang.Exception;

  5995.     /**
  5996.      * Calculate Duration from Yield Spread to Maturity
  5997.      *
  5998.      * @param valParams Valuation Parameters
  5999.      * @param csqs Market Parameters
  6000.      * @param vcp Valuation Customization Parameters
  6001.      * @param dblYieldSpread Yield Spread to Maturity
  6002.      *
  6003.      * @return Duration from Yield Spread to Maturity
  6004.      *
  6005.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  6006.      */

  6007.     public abstract double durationFromYieldSpread (
  6008.         final org.drip.param.valuation.ValuationParams valParams,
  6009.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6010.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6011.         final double dblYieldSpread)
  6012.         throws java.lang.Exception;

  6013.     /**
  6014.      * Calculate Duration from Yield Spread to Optimal Exercise
  6015.      *
  6016.      * @param valParams Valuation Parameters
  6017.      * @param csqs Market Parameters
  6018.      * @param vcp Valuation Customization Parameters
  6019.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  6020.      *
  6021.      * @return Duration from Yield Spread to Optimal Exercise
  6022.      *
  6023.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  6024.      */

  6025.     public abstract double durationFromYieldSpreadToOptimalExercise (
  6026.         final org.drip.param.valuation.ValuationParams valParams,
  6027.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6028.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6029.         final double dblYieldSpread)
  6030.         throws java.lang.Exception;

  6031.     /**
  6032.      * Calculate Duration from Z Spread to Work-out
  6033.      *
  6034.      * @param valParams Valuation Parameters
  6035.      * @param csqs Market Parameters
  6036.      * @param vcp Valuation Customization Parameters
  6037.      * @param iWorkoutDate Work-out Date
  6038.      * @param dblWorkoutFactor Work-out Factor
  6039.      * @param dblZSpread Z Spread to Work-out
  6040.      *
  6041.      * @return Duration from Z Spread to Work-out
  6042.      *
  6043.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  6044.      */

  6045.     public abstract double durationFromZSpread (
  6046.         final org.drip.param.valuation.ValuationParams valParams,
  6047.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6048.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6049.         final int iWorkoutDate,
  6050.         final double dblWorkoutFactor,
  6051.         final double dblZSpread)
  6052.         throws java.lang.Exception;

  6053.     /**
  6054.      * Calculate Duration from Z Spread to Maturity
  6055.      *
  6056.      * @param valParams Valuation Parameters
  6057.      * @param csqs Market Parameters
  6058.      * @param vcp Valuation Customization Parameters
  6059.      * @param dblZSpread Z Spread to Maturity
  6060.      *
  6061.      * @return Duration from Z Spread to Maturity
  6062.      *
  6063.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  6064.      */

  6065.     public abstract double durationFromZSpread (
  6066.         final org.drip.param.valuation.ValuationParams valParams,
  6067.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6068.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6069.         final double dblZSpread)
  6070.         throws java.lang.Exception;

  6071.     /**
  6072.      * Calculate Duration from Z Spread to Optimal Exercise
  6073.      *
  6074.      * @param valParams Valuation Parameters
  6075.      * @param csqs Market Parameters
  6076.      * @param vcp Valuation Customization Parameters
  6077.      * @param dblZSpread Z Spread to Optimal Exercise
  6078.      *
  6079.      * @return Duration from Z Spread to Optimal Exercise
  6080.      *
  6081.      * @throws java.lang.Exception Thrown if Duration cannot be calculated
  6082.      */

  6083.     public abstract double durationFromZSpreadToOptimalExercise (
  6084.         final org.drip.param.valuation.ValuationParams valParams,
  6085.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6086.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6087.         final double dblZSpread)
  6088.         throws java.lang.Exception;

  6089.     /**
  6090.      * Calculate E Spread from ASW to Work-out
  6091.      *
  6092.      * @param valParams Valuation Parameters
  6093.      * @param csqs Market Parameters
  6094.      * @param vcp Valuation Customization Parameters
  6095.      * @param iWorkoutDate Work-out Date
  6096.      * @param dblWorkoutFactor Work-out Factor
  6097.      * @param dblASW ASW to Work-out
  6098.      *
  6099.      * @return E Spread from ASW to Work-out
  6100.      *
  6101.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6102.      */

  6103.     public abstract double eSpreadFromASW (
  6104.         final org.drip.param.valuation.ValuationParams valParams,
  6105.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6106.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6107.         final int iWorkoutDate,
  6108.         final double dblWorkoutFactor,
  6109.         final double dblASW)
  6110.         throws java.lang.Exception;

  6111.     /**
  6112.      * Calculate E Spread from ASW to Maturity
  6113.      *
  6114.      * @param valParams Valuation Parameters
  6115.      * @param csqs Market Parameters
  6116.      * @param vcp Valuation Customization Parameters
  6117.      * @param dblASW ASW to Maturity
  6118.      *
  6119.      * @return E Spread from ASW to Maturity
  6120.      *
  6121.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  6122.      */

  6123.     public abstract double eSpreadFromASW (
  6124.         final org.drip.param.valuation.ValuationParams valParams,
  6125.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6126.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6127.         final double dblASW)
  6128.         throws java.lang.Exception;

  6129.     /**
  6130.      * Calculate E Spread from ASW to Optimal Exercise
  6131.      *
  6132.      * @param valParams Valuation Parameters
  6133.      * @param csqs Market Parameters
  6134.      * @param vcp Valuation Customization Parameters
  6135.      * @param dblASW ASW to Optimal Exercise
  6136.      *
  6137.      * @return E Spread from ASW to Optimal Exercise
  6138.      *
  6139.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6140.      */

  6141.     public abstract double eSpreadFromASWToOptimalExercise (
  6142.         final org.drip.param.valuation.ValuationParams valParams,
  6143.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6144.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6145.         final double dblASW)
  6146.         throws java.lang.Exception;

  6147.     /**
  6148.      * Calculate E Spread from Bond Basis to Work-out
  6149.      *
  6150.      * @param valParams Valuation Parameters
  6151.      * @param csqs Market Parameters
  6152.      * @param vcp Valuation Customization Parameters
  6153.      * @param iWorkoutDate Work-out Date
  6154.      * @param dblWorkoutFactor Work-out Factor
  6155.      * @param dblBondBasis Bond Basis to Work-out
  6156.      *
  6157.      * @return E Spread from Bond Basis to Work-out
  6158.      *
  6159.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  6160.      */

  6161.     public abstract double eSpreadFromBondBasis (
  6162.         final org.drip.param.valuation.ValuationParams valParams,
  6163.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6164.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6165.         final int iWorkoutDate,
  6166.         final double dblWorkoutFactor,
  6167.         final double dblBondBasis)
  6168.         throws java.lang.Exception;

  6169.     /**
  6170.      * Calculate E Spread from Bond Basis to Maturity
  6171.      *
  6172.      * @param valParams Valuation Parameters
  6173.      * @param csqs Market Parameters
  6174.      * @param vcp Valuation Customization Parameters
  6175.      * @param dblBondBasis Bond Basis to Maturity
  6176.      *
  6177.      * @return E Spread from Bond Basis to Maturity
  6178.      *
  6179.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6180.      */

  6181.     public abstract double eSpreadFromBondBasis (
  6182.         final org.drip.param.valuation.ValuationParams valParams,
  6183.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6184.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6185.         final double dblBondBasis)
  6186.         throws java.lang.Exception;

  6187.     /**
  6188.      * Calculate E Spread from Bond Basis to Optimal Exercise
  6189.      *
  6190.      * @param valParams Valuation Parameters
  6191.      * @param csqs Market Parameters
  6192.      * @param vcp Valuation Customization Parameters
  6193.      * @param dblBondBasis Bond Basis to Optimal Exercise
  6194.      *
  6195.      * @return E Spread from Bond Basis to Optimal Exercise
  6196.      *
  6197.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6198.      */

  6199.     public abstract double eSpreadFromBondBasisToOptimalExercise (
  6200.         final org.drip.param.valuation.ValuationParams valParams,
  6201.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6202.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6203.         final double dblBondBasis)
  6204.         throws java.lang.Exception;

  6205.     /**
  6206.      * Calculate E Spread from Credit Basis to Work-out
  6207.      *
  6208.      * @param valParams Valuation Parameters
  6209.      * @param csqs Market Parameters
  6210.      * @param vcp Valuation Customization Parameters
  6211.      * @param iWorkoutDate Work-out Date
  6212.      * @param dblWorkoutFactor Work-out Factor
  6213.      * @param dblCreditBasis Credit Basis to Work-out
  6214.      *
  6215.      * @return E Spread from Credit Basis to Work-out
  6216.      *
  6217.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6218.      */

  6219.     public abstract double eSpreadFromCreditBasis (
  6220.         final org.drip.param.valuation.ValuationParams valParams,
  6221.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6222.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6223.         final int iWorkoutDate,
  6224.         final double dblWorkoutFactor,
  6225.         final double dblCreditBasis)
  6226.         throws java.lang.Exception;

  6227.     /**
  6228.      * Calculate E Spread from Credit Basis to Maturity
  6229.      *
  6230.      * @param valParams Valuation Parameters
  6231.      * @param csqs Market Parameters
  6232.      * @param vcp Valuation Customization Parameters
  6233.      * @param dblCreditBasis Credit Basis to Maturity
  6234.      *
  6235.      * @return E Spread from Credit Basis to Maturity
  6236.      *
  6237.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6238.      */

  6239.     public abstract double eSpreadFromCreditBasis (
  6240.         final org.drip.param.valuation.ValuationParams valParams,
  6241.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6242.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6243.         final double dblCreditBasis)
  6244.         throws java.lang.Exception;

  6245.     /**
  6246.      * Calculate E Spread from Credit Basis to Optimal Exercise
  6247.      *
  6248.      * @param valParams Valuation Parameters
  6249.      * @param csqs Market Parameters
  6250.      * @param vcp Valuation Customization Parameters
  6251.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  6252.      *
  6253.      * @return E Spread from Credit Basis to Optimal Exercise
  6254.      *
  6255.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6256.      */

  6257.     public abstract double eSpreadFromCreditBasisToOptimalExercise (
  6258.         final org.drip.param.valuation.ValuationParams valParams,
  6259.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6260.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6261.         final double dblCreditBasis)
  6262.         throws java.lang.Exception;

  6263.     /**
  6264.      * Calculate E Spread from Discount Margin to Work-out
  6265.      *
  6266.      * @param valParams Valuation Parameters
  6267.      * @param csqs Market Parameters
  6268.      * @param vcp Valuation Customization Parameters
  6269.      * @param iWorkoutDate Work-out Date
  6270.      * @param dblWorkoutFactor Work-out Factor
  6271.      * @param dblDiscountMargin Discount Margin to Work-out
  6272.      *
  6273.      * @return E Spread from Discount Margin to Work-out
  6274.      *
  6275.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6276.      */

  6277.     public abstract double eSpreadFromDiscountMargin (
  6278.         final org.drip.param.valuation.ValuationParams valParams,
  6279.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6280.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6281.         final int iWorkoutDate,
  6282.         final double dblWorkoutFactor,
  6283.         final double dblDiscountMargin)
  6284.         throws java.lang.Exception;

  6285.     /**
  6286.      * Calculate E Spread from Discount Margin to Maturity
  6287.      *
  6288.      * @param valParams Valuation Parameters
  6289.      * @param csqs Market Parameters
  6290.      * @param vcp Valuation Customization Parameters
  6291.      * @param dblDiscountMargin Discount Margin to Maturity
  6292.      *
  6293.      * @return E Spread from Discount Margin to Maturity
  6294.      *
  6295.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6296.      */

  6297.     public abstract double eSpreadFromDiscountMargin (
  6298.         final org.drip.param.valuation.ValuationParams valParams,
  6299.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6300.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6301.         final double dblDiscountMargin)
  6302.         throws java.lang.Exception;

  6303.     /**
  6304.      * Calculate E Spread from Discount Margin to Optimal Exercise
  6305.      *
  6306.      * @param valParams Valuation Parameters
  6307.      * @param csqs Market Parameters
  6308.      * @param vcp Valuation Customization Parameters
  6309.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  6310.      *
  6311.      * @return E Spread from Discount Margin to Optimal Exercise
  6312.      *
  6313.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6314.      */

  6315.     public abstract double eSpreadFromDiscountMarginToOptimalExercise (
  6316.         final org.drip.param.valuation.ValuationParams valParams,
  6317.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6318.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6319.         final double dblDiscountMargin)
  6320.         throws java.lang.Exception;

  6321.     /**
  6322.      * Calculate E Spread from G Spread to Work-out
  6323.      *
  6324.      * @param valParams Valuation Parameters
  6325.      * @param csqs Market Parameters
  6326.      * @param vcp Valuation Customization Parameters
  6327.      * @param iWorkoutDate Work-out Date
  6328.      * @param dblWorkoutFactor Work-out Factor
  6329.      * @param dblGSpread G Spread to Work-out
  6330.      *
  6331.      * @return E Spread from G Spread to Work-out
  6332.      *
  6333.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6334.      */

  6335.     public abstract double eSpreadFromGSpread (
  6336.         final org.drip.param.valuation.ValuationParams valParams,
  6337.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6338.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6339.         final int iWorkoutDate,
  6340.         final double dblWorkoutFactor,
  6341.         final double dblGSpread)
  6342.         throws java.lang.Exception;

  6343.     /**
  6344.      * Calculate E Spread from G Spread to Maturity
  6345.      *
  6346.      * @param valParams Valuation Parameters
  6347.      * @param csqs Market Parameters
  6348.      * @param vcp Valuation Customization Parameters
  6349.      * @param dblGSpread G Spread to Maturity
  6350.      *
  6351.      * @return E Spread from G Spread to Maturity
  6352.      *
  6353.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6354.      */

  6355.     public abstract double eSpreadFromGSpread (
  6356.         final org.drip.param.valuation.ValuationParams valParams,
  6357.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6358.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6359.         final double dblGSpread)
  6360.         throws java.lang.Exception;

  6361.     /**
  6362.      * Calculate E Spread from G Spread to Optimal Exercise
  6363.      *
  6364.      * @param valParams Valuation Parameters
  6365.      * @param csqs Market Parameters
  6366.      * @param vcp Valuation Customization Parameters
  6367.      * @param dblGSpread G Spread to Optimal Exercise
  6368.      *
  6369.      * @return E Spread from G Spread to Optimal Exercise
  6370.      *
  6371.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6372.      */

  6373.     public abstract double eSpreadFromGSpreadToOptimalExercise (
  6374.         final org.drip.param.valuation.ValuationParams valParams,
  6375.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6376.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6377.         final double dblGSpread)
  6378.         throws java.lang.Exception;

  6379.     /**
  6380.      * Calculate E Spread from I Spread to Work-out
  6381.      *
  6382.      * @param valParams Valuation Parameters
  6383.      * @param csqs Market Parameters
  6384.      * @param vcp Valuation Customization Parameters
  6385.      * @param iWorkoutDate Work-out Date
  6386.      * @param dblWorkoutFactor Work-out Factor
  6387.      * @param dblISpread I Spread to Work-out
  6388.      *
  6389.      * @return E Spread from E Spread to Work-out
  6390.      *
  6391.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6392.      */

  6393.     public abstract double eSpreadFromISpread (
  6394.         final org.drip.param.valuation.ValuationParams valParams,
  6395.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6396.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6397.         final int iWorkoutDate,
  6398.         final double dblWorkoutFactor,
  6399.         final double dblISpread)
  6400.         throws java.lang.Exception;

  6401.     /**
  6402.      * Calculate E Spread from I Spread to Maturity
  6403.      *
  6404.      * @param valParams Valuation Parameters
  6405.      * @param csqs Market Parameters
  6406.      * @param vcp Valuation Customization Parameters
  6407.      * @param dblISpread I Spread to Maturity
  6408.      *
  6409.      * @return E Spread from I Spread to Maturity
  6410.      *
  6411.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6412.      */

  6413.     public abstract double eSpreadFromISpread (
  6414.         final org.drip.param.valuation.ValuationParams valParams,
  6415.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6416.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6417.         final double dblISpread)
  6418.         throws java.lang.Exception;

  6419.     /**
  6420.      * Calculate E Spread from I Spread to Optimal Exercise
  6421.      *
  6422.      * @param valParams Valuation Parameters
  6423.      * @param csqs Market Parameters
  6424.      * @param vcp Valuation Customization Parameters
  6425.      * @param dblISpread ISpread to Optimal Exercise
  6426.      *
  6427.      * @return E Spread from I Spread to Optimal Exercise
  6428.      *
  6429.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6430.      */

  6431.     public abstract double eSpreadFromISpreadToOptimalExercise (
  6432.         final org.drip.param.valuation.ValuationParams valParams,
  6433.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6434.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6435.         final double dblISpread)
  6436.         throws java.lang.Exception;

  6437.     /**
  6438.      * Calculate E Spread from J Spread to Work-out
  6439.      *
  6440.      * @param valParams Valuation Parameters
  6441.      * @param csqs Market Parameters
  6442.      * @param vcp Valuation Customization Parameters
  6443.      * @param iWorkoutDate Work-out Date
  6444.      * @param dblWorkoutFactor Work-out Factor
  6445.      * @param dblJSpread J Spread to Work-out
  6446.      *
  6447.      * @return E Spread from J Spread to Work-out
  6448.      *
  6449.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6450.      */

  6451.     public abstract double eSpreadFromJSpread (
  6452.         final org.drip.param.valuation.ValuationParams valParams,
  6453.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6454.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6455.         final int iWorkoutDate,
  6456.         final double dblWorkoutFactor,
  6457.         final double dblJSpread)
  6458.         throws java.lang.Exception;

  6459.     /**
  6460.      * Calculate E Spread from J Spread to Maturity
  6461.      *
  6462.      * @param valParams Valuation Parameters
  6463.      * @param csqs Market Parameters
  6464.      * @param vcp Valuation Customization Parameters
  6465.      * @param dblJSpread J Spread to Maturity
  6466.      *
  6467.      * @return E Spread from J Spread to Maturity
  6468.      *
  6469.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6470.      */

  6471.     public abstract double eSpreadFromJSpread (
  6472.         final org.drip.param.valuation.ValuationParams valParams,
  6473.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6474.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6475.         final double dblJSpread)
  6476.         throws java.lang.Exception;

  6477.     /**
  6478.      * Calculate E Spread from J Spread to Optimal Exercise
  6479.      *
  6480.      * @param valParams Valuation Parameters
  6481.      * @param csqs Market Parameters
  6482.      * @param vcp Valuation Customization Parameters
  6483.      * @param dblJSpread JSpread to Optimal Exercise
  6484.      *
  6485.      * @return E Spread from J Spread to Optimal Exercise
  6486.      *
  6487.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6488.      */

  6489.     public abstract double eSpreadFromJSpreadToOptimalExercise (
  6490.         final org.drip.param.valuation.ValuationParams valParams,
  6491.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6492.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6493.         final double dblJSpread)
  6494.         throws java.lang.Exception;

  6495.     /**
  6496.      * Calculate E Spread from N Spread to Work-out
  6497.      *
  6498.      * @param valParams Valuation Parameters
  6499.      * @param csqs Market Parameters
  6500.      * @param vcp Valuation Customization Parameters
  6501.      * @param iWorkoutDate Work-out Date
  6502.      * @param dblWorkoutFactor Work-out Factor
  6503.      * @param dblNSpread N Spread to Work-out
  6504.      *
  6505.      * @return E Spread from N Spread to Work-out
  6506.      *
  6507.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6508.      */

  6509.     public abstract double eSpreadFromNSpread (
  6510.         final org.drip.param.valuation.ValuationParams valParams,
  6511.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6512.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6513.         final int iWorkoutDate,
  6514.         final double dblWorkoutFactor,
  6515.         final double dblNSpread)
  6516.         throws java.lang.Exception;

  6517.     /**
  6518.      * Calculate E Spread from N Spread to Maturity
  6519.      *
  6520.      * @param valParams Valuation Parameters
  6521.      * @param csqs Market Parameters
  6522.      * @param vcp Valuation Customization Parameters
  6523.      * @param dblNSpread N Spread to Maturity
  6524.      *
  6525.      * @return E Spread from N Spread to Maturity
  6526.      *
  6527.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6528.      */

  6529.     public abstract double eSpreadFromNSpread (
  6530.         final org.drip.param.valuation.ValuationParams valParams,
  6531.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6532.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6533.         final double dblNSpread)
  6534.         throws java.lang.Exception;

  6535.     /**
  6536.      * Calculate E Spread from N Spread to Optimal Exercise
  6537.      *
  6538.      * @param valParams Valuation Parameters
  6539.      * @param csqs Market Parameters
  6540.      * @param vcp Valuation Customization Parameters
  6541.      * @param dblNSpread N Spread to Optimal Exercise
  6542.      *
  6543.      * @return E Spread from N Spread to Optimal Exercise
  6544.      *
  6545.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6546.      */

  6547.     public abstract double eSpreadFromNSpreadToOptimalExercise (
  6548.         final org.drip.param.valuation.ValuationParams valParams,
  6549.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6550.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6551.         final double dblNSpread)
  6552.         throws java.lang.Exception;

  6553.     /**
  6554.      * Calculate E Spread from OAS to Work-out
  6555.      *
  6556.      * @param valParams Valuation Parameters
  6557.      * @param csqs Market Parameters
  6558.      * @param vcp Valuation Customization Parameters
  6559.      * @param iWorkoutDate Work-out Date
  6560.      * @param dblWorkoutFactor Work-out Factor
  6561.      * @param dblOAS OAS to Work-out
  6562.      *
  6563.      * @return E Spread from OAS to Work-out
  6564.      *
  6565.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6566.      */

  6567.     public abstract double eSpreadFromOAS (
  6568.         final org.drip.param.valuation.ValuationParams valParams,
  6569.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6570.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6571.         final int iWorkoutDate,
  6572.         final double dblWorkoutFactor,
  6573.         final double dblOAS)
  6574.         throws java.lang.Exception;

  6575.     /**
  6576.      * Calculate E Spread from OAS to Maturity
  6577.      *
  6578.      * @param valParams Valuation Parameters
  6579.      * @param csqs Market Parameters
  6580.      * @param vcp Valuation Customization Parameters
  6581.      * @param dblOAS OAS to Maturity
  6582.      *
  6583.      * @return E Spread from OAS to Maturity
  6584.      *
  6585.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6586.      */

  6587.     public abstract double eSpreadFromOAS (
  6588.         final org.drip.param.valuation.ValuationParams valParams,
  6589.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6590.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6591.         final double dblOAS)
  6592.         throws java.lang.Exception;

  6593.     /**
  6594.      * Calculate E Spread from OAS to Optimal Exercise
  6595.      *
  6596.      * @param valParams Valuation Parameters
  6597.      * @param csqs Market Parameters
  6598.      * @param vcp Valuation Customization Parameters
  6599.      * @param dblOAS OAS to Optimal Exercise
  6600.      *
  6601.      * @return E Spread from OAS to Optimal Exercise
  6602.      *
  6603.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6604.      */

  6605.     public abstract double eSpreadFromOASToOptimalExercise (
  6606.         final org.drip.param.valuation.ValuationParams valParams,
  6607.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6608.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6609.         final double dblOAS)
  6610.         throws java.lang.Exception;

  6611.     /**
  6612.      * Calculate E Spread from Price to Work-out
  6613.      *
  6614.      * @param valParams Valuation Parameters
  6615.      * @param csqs Market Parameters
  6616.      * @param vcp Valuation Customization Parameters
  6617.      * @param iWorkoutDate Work-out Date
  6618.      * @param dblWorkoutFactor Work-out Factor
  6619.      * @param dblPrice Price to Work-out
  6620.      *
  6621.      * @return E Spread from Price to Work-out
  6622.      *
  6623.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6624.      */

  6625.     public abstract double eSpreadFromPrice (
  6626.         final org.drip.param.valuation.ValuationParams valParams,
  6627.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6628.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6629.         final int iWorkoutDate,
  6630.         final double dblWorkoutFactor,
  6631.         final double dblPrice)
  6632.         throws java.lang.Exception;

  6633.     /**
  6634.      * Calculate E Spread from Price to Maturity
  6635.      *
  6636.      * @param valParams Valuation Parameters
  6637.      * @param csqs Market Parameters
  6638.      * @param vcp Valuation Customization Parameters
  6639.      * @param dblPrice Price to Maturity
  6640.      *
  6641.      * @return E Spread from Price to Maturity
  6642.      *
  6643.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6644.      */

  6645.     public abstract double eSpreadFromPrice (
  6646.         final org.drip.param.valuation.ValuationParams valParams,
  6647.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6648.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6649.         final double dblPrice)
  6650.         throws java.lang.Exception;

  6651.     /**
  6652.      * Calculate E Spread from Price to Optimal Exercise
  6653.      *
  6654.      * @param valParams Valuation Parameters
  6655.      * @param csqs Market Parameters
  6656.      * @param vcp Valuation Customization Parameters
  6657.      * @param dblPrice Price to Optimal Exercise
  6658.      *
  6659.      * @return E Spread from Price to Optimal Exercise
  6660.      *
  6661.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6662.      */

  6663.     public abstract double eSpreadFromPriceToOptimalExercise (
  6664.         final org.drip.param.valuation.ValuationParams valParams,
  6665.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6666.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6667.         final double dblPrice)
  6668.         throws java.lang.Exception;

  6669.     /**
  6670.      * Calculate E Spread from PECS to Work-out
  6671.      *
  6672.      * @param valParams Valuation Parameters
  6673.      * @param csqs Market Parameters
  6674.      * @param vcp Valuation Customization Parameters
  6675.      * @param iWorkoutDate Work-out Date
  6676.      * @param dblWorkoutFactor Work-out Factor
  6677.      * @param dblPECS PECS to Work-out
  6678.      *
  6679.      * @return E Spread from PECS to Work-out
  6680.      *
  6681.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6682.      */

  6683.     public abstract double eSpreadFromPECS (
  6684.         final org.drip.param.valuation.ValuationParams valParams,
  6685.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6686.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6687.         final int iWorkoutDate,
  6688.         final double dblWorkoutFactor,
  6689.         final double dblPECS)
  6690.         throws java.lang.Exception;

  6691.     /**
  6692.      * Calculate E Spread from PECS to Maturity
  6693.      *
  6694.      * @param valParams Valuation Parameters
  6695.      * @param csqs Market Parameters
  6696.      * @param vcp Valuation Customization Parameters
  6697.      * @param dblPECS PECS to Maturity
  6698.      *
  6699.      * @return E Spread from PECS to Maturity
  6700.      *
  6701.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6702.      */

  6703.     public abstract double eSpreadFromPECS (
  6704.         final org.drip.param.valuation.ValuationParams valParams,
  6705.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6706.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6707.         final double dblPECS)
  6708.         throws java.lang.Exception;

  6709.     /**
  6710.      * Calculate E Spread from PECS to Optimal Exercise
  6711.      *
  6712.      * @param valParams Valuation Parameters
  6713.      * @param csqs Market Parameters
  6714.      * @param vcp Valuation Customization Parameters
  6715.      * @param dblPECS PECS to Optimal Exercise
  6716.      *
  6717.      * @return E Spread from PECS to Optimal Exercise
  6718.      *
  6719.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6720.      */

  6721.     public abstract double eSpreadFromPECSToOptimalExercise (
  6722.         final org.drip.param.valuation.ValuationParams valParams,
  6723.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6724.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6725.         final double dblPECS)
  6726.         throws java.lang.Exception;

  6727.     /**
  6728.      * Calculate E Spread from TSY Spread to Work-out
  6729.      *
  6730.      * @param valParams Valuation Parameters
  6731.      * @param csqs Market Parameters
  6732.      * @param vcp Valuation Customization Parameters
  6733.      * @param iWorkoutDate Work-out Date
  6734.      * @param dblWorkoutFactor Work-out Factor
  6735.      * @param dblTSYSpread TSY Spread to Work-out
  6736.      *
  6737.      * @return E Spread from TSY Spread to Work-out
  6738.      *
  6739.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6740.      */

  6741.     public abstract double eSpreadFromTSYSpread (
  6742.         final org.drip.param.valuation.ValuationParams valParams,
  6743.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6744.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6745.         final int iWorkoutDate,
  6746.         final double dblWorkoutFactor,
  6747.         final double dblTSYSpread)
  6748.         throws java.lang.Exception;

  6749.     /**
  6750.      * Calculate E Spread from TSY Spread to Maturity
  6751.      *
  6752.      * @param valParams Valuation Parameters
  6753.      * @param csqs Market Parameters
  6754.      * @param vcp Valuation Customization Parameters
  6755.      * @param dblTSYSpread TSY Spread to Maturity
  6756.      *
  6757.      * @return E Spread from TSY Spread to Maturity
  6758.      *
  6759.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6760.      */

  6761.     public abstract double eSpreadFromTSYSpread (
  6762.         final org.drip.param.valuation.ValuationParams valParams,
  6763.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6764.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6765.         final double dblTSYSpread)
  6766.         throws java.lang.Exception;

  6767.     /**
  6768.      * Calculate E Spread from TSY Spread to Optimal Exercise
  6769.      *
  6770.      * @param valParams Valuation Parameters
  6771.      * @param csqs Market Parameters
  6772.      * @param vcp Valuation Customization Parameters
  6773.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  6774.      *
  6775.      * @return E Spread from TSY Spread to Optimal Exercise
  6776.      *
  6777.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6778.      */

  6779.     public abstract double eSpreadFromTSYSpreadToOptimalExercise (
  6780.         final org.drip.param.valuation.ValuationParams valParams,
  6781.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6782.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6783.         final double dblTSYSpread)
  6784.         throws java.lang.Exception;

  6785.     /**
  6786.      * Calculate E Spread from Yield to Work-out
  6787.      *
  6788.      * @param valParams Valuation Parameters
  6789.      * @param csqs Market Parameters
  6790.      * @param vcp Valuation Customization Parameters
  6791.      * @param iWorkoutDate Work-out Date
  6792.      * @param dblWorkoutFactor Work-out Factor
  6793.      * @param dblYield Yield to Work-out
  6794.      *
  6795.      * @return E Spread from Yield to Work-out
  6796.      *
  6797.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6798.      */

  6799.     public abstract double eSpreadFromYield (
  6800.         final org.drip.param.valuation.ValuationParams valParams,
  6801.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6802.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6803.         final int iWorkoutDate,
  6804.         final double dblWorkoutFactor,
  6805.         final double dblYield)
  6806.         throws java.lang.Exception;

  6807.     /**
  6808.      * Calculate E Spread from Yield to Maturity
  6809.      *
  6810.      * @param valParams Valuation Parameters
  6811.      * @param csqs Market Parameters
  6812.      * @param vcp Valuation Customization Parameters
  6813.      * @param dblYield Yield to Maturity
  6814.      *
  6815.      * @return E Spread from Yield to Maturity
  6816.      *
  6817.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6818.      */

  6819.     public abstract double eSpreadFromYield (
  6820.         final org.drip.param.valuation.ValuationParams valParams,
  6821.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6822.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6823.         final double dblYield)
  6824.         throws java.lang.Exception;

  6825.     /**
  6826.      * Calculate E Spread from Yield to Optimal Exercise
  6827.      *
  6828.      * @param valParams Valuation Parameters
  6829.      * @param csqs Market Parameters
  6830.      * @param vcp Valuation Customization Parameters
  6831.      * @param dblYield Yield to Optimal Exercise
  6832.      *
  6833.      * @return E Spread from Yield to Optimal Exercise
  6834.      *
  6835.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6836.      */

  6837.     public abstract double eSpreadFromYieldToOptimalExercise (
  6838.         final org.drip.param.valuation.ValuationParams valParams,
  6839.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6840.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6841.         final double dblYield)
  6842.         throws java.lang.Exception;

  6843.     /**
  6844.      * Calculate E Spread from Yield Spread to Work-out
  6845.      *
  6846.      * @param valParams Valuation Parameters
  6847.      * @param csqs Market Parameters
  6848.      * @param vcp Valuation Customization Parameters
  6849.      * @param iWorkoutDate Work-out Date
  6850.      * @param dblWorkoutFactor Work-out Factor
  6851.      * @param dblYieldSpread Yield Spread to Work-out
  6852.      *
  6853.      * @return E Spread from Yield Spread to Work-out
  6854.      *
  6855.      * @throws java.lang.Exception Thrown if the E Spread cannot be calculated
  6856.      */

  6857.     public abstract double eSpreadFromYieldSpread (
  6858.         final org.drip.param.valuation.ValuationParams valParams,
  6859.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6860.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6861.         final int iWorkoutDate,
  6862.         final double dblWorkoutFactor,
  6863.         final double dblYieldSpread)
  6864.         throws java.lang.Exception;

  6865.     /**
  6866.      * Calculate E Spread from Yield Spread to Maturity
  6867.      *
  6868.      * @param valParams Valuation Parameters
  6869.      * @param csqs Market Parameters
  6870.      * @param vcp Valuation Customization Parameters
  6871.      * @param dblYieldSpread Yield Spread to Maturity
  6872.      *
  6873.      * @return E Spread from Yield Spread to Maturity
  6874.      *
  6875.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6876.      */

  6877.     public abstract double eSpreadFromYieldSpread (
  6878.         final org.drip.param.valuation.ValuationParams valParams,
  6879.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6880.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6881.         final double dblYieldSpread)
  6882.         throws java.lang.Exception;

  6883.     /**
  6884.      * Calculate E Spread from Yield Spread to Optimal Exercise
  6885.      *
  6886.      * @param valParams Valuation Parameters
  6887.      * @param csqs Market Parameters
  6888.      * @param vcp Valuation Customization Parameters
  6889.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  6890.      *
  6891.      * @return E Spread from Yield Spread to Optimal Exercise
  6892.      *
  6893.      * @throws java.lang.Exception Thrown if E Spread cannot be calculated
  6894.      */

  6895.     public abstract double eSpreadFromYieldSpreadToOptimalExercise (
  6896.         final org.drip.param.valuation.ValuationParams valParams,
  6897.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6898.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6899.         final double dblYieldSpread)
  6900.         throws java.lang.Exception;

  6901.     /**
  6902.      * Calculate G Spread from ASW to Work-out
  6903.      *
  6904.      * @param valParams Valuation Parameters
  6905.      * @param csqs Market Parameters
  6906.      * @param vcp Valuation Customization Parameters
  6907.      * @param iWorkoutDate Work-out Date
  6908.      * @param dblWorkoutFactor Work-out Factor
  6909.      * @param dblASW ASW to Work-out
  6910.      *
  6911.      * @return G Spread from ASW to Work-out
  6912.      *
  6913.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  6914.      */

  6915.     public abstract double gSpreadFromASW (
  6916.         final org.drip.param.valuation.ValuationParams valParams,
  6917.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6918.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6919.         final int iWorkoutDate,
  6920.         final double dblWorkoutFactor,
  6921.         final double dblASW)
  6922.         throws java.lang.Exception;

  6923.     /**
  6924.      * Calculate G Spread from ASW to Maturity
  6925.      *
  6926.      * @param valParams Valuation Parameters
  6927.      * @param csqs Market Parameters
  6928.      * @param vcp Valuation Customization Parameters
  6929.      * @param dblASW ASW to Maturity
  6930.      *
  6931.      * @return G Spread from ASW to Maturity
  6932.      *
  6933.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  6934.      */

  6935.     public abstract double gSpreadFromASW (
  6936.         final org.drip.param.valuation.ValuationParams valParams,
  6937.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6938.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6939.         final double dblASW)
  6940.         throws java.lang.Exception;

  6941.     /**
  6942.      * Calculate G Spread from ASW to Optimal Exercise
  6943.      *
  6944.      * @param valParams Valuation Parameters
  6945.      * @param csqs Market Parameters
  6946.      * @param vcp Valuation Customization Parameters
  6947.      * @param dblASW ASW to Optimal Exercise
  6948.      *
  6949.      * @return G Spread from ASW to Optimal Exercise
  6950.      *
  6951.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  6952.      */

  6953.     public abstract double gSpreadFromASWToOptimalExercise (
  6954.         final org.drip.param.valuation.ValuationParams valParams,
  6955.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6956.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6957.         final double dblASW)
  6958.         throws java.lang.Exception;

  6959.     /**
  6960.      * Calculate G Spread from Bond Basis to Work-out
  6961.      *
  6962.      * @param valParams Valuation Parameters
  6963.      * @param csqs Market Parameters
  6964.      * @param vcp Valuation Customization Parameters
  6965.      * @param iWorkoutDate Work-out Date
  6966.      * @param dblWorkoutFactor Work-out Factor
  6967.      * @param dblBondBasis Bond Basis to Work-out
  6968.      *
  6969.      * @return G Spread from Bond Basis to Work-out
  6970.      *
  6971.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  6972.      */

  6973.     public abstract double gSpreadFromBondBasis (
  6974.         final org.drip.param.valuation.ValuationParams valParams,
  6975.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6976.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6977.         final int iWorkoutDate,
  6978.         final double dblWorkoutFactor,
  6979.         final double dblBondBasis)
  6980.         throws java.lang.Exception;

  6981.     /**
  6982.      * Calculate G Spread from Bond Basis to Maturity
  6983.      *
  6984.      * @param valParams Valuation Parameters
  6985.      * @param csqs Market Parameters
  6986.      * @param vcp Valuation Customization Parameters
  6987.      * @param dblBondBasis Bond Basis to Maturity
  6988.      *
  6989.      * @return G Spread from Bond Basis to Maturity
  6990.      *
  6991.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  6992.      */

  6993.     public abstract double gSpreadFromBondBasis (
  6994.         final org.drip.param.valuation.ValuationParams valParams,
  6995.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  6996.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  6997.         final double dblBondBasis)
  6998.         throws java.lang.Exception;

  6999.     /**
  7000.      * Calculate G Spread from Bond Basis to Optimal Exercise
  7001.      *
  7002.      * @param valParams Valuation Parameters
  7003.      * @param csqs Market Parameters
  7004.      * @param vcp Valuation Customization Parameters
  7005.      * @param dblBondBasis Bond Basis to Optimal Exercise
  7006.      *
  7007.      * @return G Spread from Bond Basis to Optimal Exercise
  7008.      *
  7009.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7010.      */

  7011.     public abstract double gSpreadFromBondBasisToOptimalExercise (
  7012.         final org.drip.param.valuation.ValuationParams valParams,
  7013.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7014.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7015.         final double dblBondBasis)
  7016.         throws java.lang.Exception;

  7017.     /**
  7018.      * Calculate G Spread from Credit Basis to Work-out
  7019.      *
  7020.      * @param valParams Valuation Parameters
  7021.      * @param csqs Market Parameters
  7022.      * @param vcp Valuation Customization Parameters
  7023.      * @param iWorkoutDate Work-out Date
  7024.      * @param dblWorkoutFactor Work-out Factor
  7025.      * @param dblCreditBasis Credit Basis to Work-out
  7026.      *
  7027.      * @return G Spread from Credit Basis to Work-out
  7028.      *
  7029.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7030.      */

  7031.     public abstract double gSpreadFromCreditBasis (
  7032.         final org.drip.param.valuation.ValuationParams valParams,
  7033.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7034.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7035.         final int iWorkoutDate,
  7036.         final double dblWorkoutFactor,
  7037.         final double dblCreditBasis)
  7038.         throws java.lang.Exception;

  7039.     /**
  7040.      * Calculate G Spread from Credit Basis to Maturity
  7041.      *
  7042.      * @param valParams Valuation Parameters
  7043.      * @param csqs Market Parameters
  7044.      * @param vcp Valuation Customization Parameters
  7045.      * @param dblCreditBasis Credit Basis to Maturity
  7046.      *
  7047.      * @return G Spread from Credit Basis to Maturity
  7048.      *
  7049.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7050.      */

  7051.     public abstract double gSpreadFromCreditBasis (
  7052.         final org.drip.param.valuation.ValuationParams valParams,
  7053.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7054.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7055.         final double dblCreditBasis)
  7056.         throws java.lang.Exception;

  7057.     /**
  7058.      * Calculate G Spread from Credit Basis to Optimal Exercise
  7059.      *
  7060.      * @param valParams Valuation Parameters
  7061.      * @param csqs Market Parameters
  7062.      * @param vcp Valuation Customization Parameters
  7063.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  7064.      *
  7065.      * @return G Spread from Credit Basis to Optimal Exercise
  7066.      *
  7067.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7068.      */

  7069.     public abstract double gSpreadFromCreditBasisToOptimalExercise (
  7070.         final org.drip.param.valuation.ValuationParams valParams,
  7071.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7072.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7073.         final double dblCreditBasis)
  7074.         throws java.lang.Exception;

  7075.     /**
  7076.      * Calculate G Spread from Discount Margin to Work-out
  7077.      *
  7078.      * @param valParams Valuation Parameters
  7079.      * @param csqs Market Parameters
  7080.      * @param vcp Valuation Customization Parameters
  7081.      * @param iWorkoutDate Work-out Date
  7082.      * @param dblWorkoutFactor Work-out Factor
  7083.      * @param dblDiscountMargin Discount Margin to Work-out
  7084.      *
  7085.      * @return G Spread from Discount Margin to Work-out
  7086.      *
  7087.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7088.      */

  7089.     public abstract double gSpreadFromDiscountMargin (
  7090.         final org.drip.param.valuation.ValuationParams valParams,
  7091.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7092.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7093.         final int iWorkoutDate,
  7094.         final double dblWorkoutFactor,
  7095.         final double dblDiscountMargin)
  7096.         throws java.lang.Exception;

  7097.     /**
  7098.      * Calculate G Spread from Discount Margin to Maturity
  7099.      *
  7100.      * @param valParams Valuation Parameters
  7101.      * @param csqs Market Parameters
  7102.      * @param vcp Valuation Customization Parameters
  7103.      * @param dblDiscountMargin Discount Margin to Maturity
  7104.      *
  7105.      * @return G Spread from Discount Margin to Maturity
  7106.      *
  7107.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7108.      */

  7109.     public abstract double gSpreadFromDiscountMargin (
  7110.         final org.drip.param.valuation.ValuationParams valParams,
  7111.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7112.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7113.         final double dblDiscountMargin)
  7114.         throws java.lang.Exception;

  7115.     /**
  7116.      * Calculate G Spread from Discount Margin to Optimal Exercise
  7117.      *
  7118.      * @param valParams Valuation Parameters
  7119.      * @param csqs Market Parameters
  7120.      * @param vcp Valuation Customization Parameters
  7121.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  7122.      *
  7123.      * @return G Spread from Discount Margin to Optimal Exercise
  7124.      *
  7125.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7126.      */

  7127.     public abstract double gSpreadFromDiscountMarginToOptimalExercise (
  7128.         final org.drip.param.valuation.ValuationParams valParams,
  7129.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7130.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7131.         final double dblDiscountMargin)
  7132.         throws java.lang.Exception;

  7133.     /**
  7134.      * Calculate G Spread from E Spread to Work-out
  7135.      *
  7136.      * @param valParams Valuation Parameters
  7137.      * @param csqs Market Parameters
  7138.      * @param vcp Valuation Customization Parameters
  7139.      * @param iWorkoutDate Work-out Date
  7140.      * @param dblWorkoutFactor Work-out Factor
  7141.      * @param dblESpread E Spread to Work-out
  7142.      *
  7143.      * @return G Spread from E Spread to Work-out
  7144.      *
  7145.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7146.      */

  7147.     public abstract double gSpreadFromESpread (
  7148.         final org.drip.param.valuation.ValuationParams valParams,
  7149.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7150.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7151.         final int iWorkoutDate,
  7152.         final double dblWorkoutFactor,
  7153.         final double dblESpread)
  7154.         throws java.lang.Exception;

  7155.     /**
  7156.      * Calculate G Spread from E Spread to Maturity
  7157.      *
  7158.      * @param valParams Valuation Parameters
  7159.      * @param csqs Market Parameters
  7160.      * @param vcp Valuation Customization Parameters
  7161.      * @param dblESpread E Spread to Maturity
  7162.      *
  7163.      * @return G Spread from E Spread to Maturity
  7164.      *
  7165.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7166.      */

  7167.     public abstract double gSpreadFromESpread (
  7168.         final org.drip.param.valuation.ValuationParams valParams,
  7169.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7170.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7171.         final double dblESpread)
  7172.         throws java.lang.Exception;

  7173.     /**
  7174.      * Calculate G Spread from E Spread to Optimal Exercise
  7175.      *
  7176.      * @param valParams Valuation Parameters
  7177.      * @param csqs Market Parameters
  7178.      * @param vcp Valuation Customization Parameters
  7179.      * @param dblESpread E Spread to Optimal Exercise
  7180.      *
  7181.      * @return G Spread from E Spread to Optimal Exercise
  7182.      *
  7183.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7184.      */

  7185.     public abstract double gSpreadFromESpreadToOptimalExercise (
  7186.         final org.drip.param.valuation.ValuationParams valParams,
  7187.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7188.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7189.         final double dblESpread)
  7190.         throws java.lang.Exception;

  7191.     /**
  7192.      * Calculate G Spread from I Spread to Work-out
  7193.      *
  7194.      * @param valParams Valuation Parameters
  7195.      * @param csqs Market Parameters
  7196.      * @param vcp Valuation Customization Parameters
  7197.      * @param iWorkoutDate Work-out Date
  7198.      * @param dblWorkoutFactor Work-out Factor
  7199.      * @param dblISpread I Spread to Work-out
  7200.      *
  7201.      * @return G Spread from I Spread to Work-out
  7202.      *
  7203.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7204.      */

  7205.     public abstract double gSpreadFromISpread (
  7206.         final org.drip.param.valuation.ValuationParams valParams,
  7207.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7208.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7209.         final int iWorkoutDate,
  7210.         final double dblWorkoutFactor,
  7211.         final double dblISpread)
  7212.         throws java.lang.Exception;

  7213.     /**
  7214.      * Calculate G Spread from I Spread to Maturity
  7215.      *
  7216.      * @param valParams Valuation Parameters
  7217.      * @param csqs Market Parameters
  7218.      * @param vcp Valuation Customization Parameters
  7219.      * @param dblISpread I Spread to Maturity
  7220.      *
  7221.      * @return G Spread from I Spread to Maturity
  7222.      *
  7223.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7224.      */

  7225.     public abstract double gSpreadFromISpread (
  7226.         final org.drip.param.valuation.ValuationParams valParams,
  7227.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7228.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7229.         final double dblISpread)
  7230.         throws java.lang.Exception;

  7231.     /**
  7232.      * Calculate G Spread from I Spread to Optimal Exercise
  7233.      *
  7234.      * @param valParams Valuation Parameters
  7235.      * @param csqs Market Parameters
  7236.      * @param vcp Valuation Customization Parameters
  7237.      * @param dblISpread I Spread to Optimal Exercise
  7238.      *
  7239.      * @return G Spread from I Spread to Optimal Exercise
  7240.      *
  7241.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7242.      */

  7243.     public abstract double gSpreadFromISpreadToOptimalExercise (
  7244.         final org.drip.param.valuation.ValuationParams valParams,
  7245.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7246.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7247.         final double dblISpread)
  7248.         throws java.lang.Exception;

  7249.     /**
  7250.      * Calculate G Spread from J Spread to Work-out
  7251.      *
  7252.      * @param valParams Valuation Parameters
  7253.      * @param csqs Market Parameters
  7254.      * @param vcp Valuation Customization Parameters
  7255.      * @param iWorkoutDate Work-out Date
  7256.      * @param dblWorkoutFactor Work-out Factor
  7257.      * @param dblJSpread J Spread to Work-out
  7258.      *
  7259.      * @return G Spread from J Spread to Work-out
  7260.      *
  7261.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7262.      */

  7263.     public abstract double gSpreadFromJSpread (
  7264.         final org.drip.param.valuation.ValuationParams valParams,
  7265.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7266.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7267.         final int iWorkoutDate,
  7268.         final double dblWorkoutFactor,
  7269.         final double dblJSpread)
  7270.         throws java.lang.Exception;

  7271.     /**
  7272.      * Calculate G Spread from J Spread to Maturity
  7273.      *
  7274.      * @param valParams Valuation Parameters
  7275.      * @param csqs Market Parameters
  7276.      * @param vcp Valuation Customization Parameters
  7277.      * @param dblJSpread J Spread to Maturity
  7278.      *
  7279.      * @return G Spread from J Spread to Maturity
  7280.      *
  7281.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7282.      */

  7283.     public abstract double gSpreadFromJSpread (
  7284.         final org.drip.param.valuation.ValuationParams valParams,
  7285.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7286.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7287.         final double dblJSpread)
  7288.         throws java.lang.Exception;

  7289.     /**
  7290.      * Calculate G Spread from J Spread to Optimal Exercise
  7291.      *
  7292.      * @param valParams Valuation Parameters
  7293.      * @param csqs Market Parameters
  7294.      * @param vcp Valuation Customization Parameters
  7295.      * @param dblJSpread J Spread to Optimal Exercise
  7296.      *
  7297.      * @return G Spread from J Spread to Optimal Exercise
  7298.      *
  7299.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7300.      */

  7301.     public abstract double gSpreadFromJSpreadToOptimalExercise (
  7302.         final org.drip.param.valuation.ValuationParams valParams,
  7303.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7304.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7305.         final double dblJSpread)
  7306.         throws java.lang.Exception;

  7307.     /**
  7308.      * Calculate G Spread from N Spread to Work-out
  7309.      *
  7310.      * @param valParams Valuation Parameters
  7311.      * @param csqs Market Parameters
  7312.      * @param vcp Valuation Customization Parameters
  7313.      * @param iWorkoutDate Work-out Date
  7314.      * @param dblWorkoutFactor Work-out Factor
  7315.      * @param dblNSpread N Spread to Work-out
  7316.      *
  7317.      * @return G Spread from N Spread to Work-out
  7318.      *
  7319.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7320.      */

  7321.     public abstract double gSpreadFromNSpread (
  7322.         final org.drip.param.valuation.ValuationParams valParams,
  7323.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7324.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7325.         final int iWorkoutDate,
  7326.         final double dblWorkoutFactor,
  7327.         final double dblNSpread)
  7328.         throws java.lang.Exception;

  7329.     /**
  7330.      * Calculate G Spread from N Spread to Maturity
  7331.      *
  7332.      * @param valParams Valuation Parameters
  7333.      * @param csqs Market Parameters
  7334.      * @param vcp Valuation Customization Parameters
  7335.      * @param dblNSpread N Spread to Maturity
  7336.      *
  7337.      * @return G Spread from N Spread to Maturity
  7338.      *
  7339.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7340.      */

  7341.     public abstract double gSpreadFromNSpread (
  7342.         final org.drip.param.valuation.ValuationParams valParams,
  7343.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7344.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7345.         final double dblNSpread)
  7346.         throws java.lang.Exception;

  7347.     /**
  7348.      * Calculate G Spread from N Spread to Optimal Exercise
  7349.      *
  7350.      * @param valParams Valuation Parameters
  7351.      * @param csqs Market Parameters
  7352.      * @param vcp Valuation Customization Parameters
  7353.      * @param dblNSpread N Spread to Optimal Exercise
  7354.      *
  7355.      * @return G Spread from N Spread to Optimal Exercise
  7356.      *
  7357.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7358.      */

  7359.     public abstract double gSpreadFromNSpreadToOptimalExercise (
  7360.         final org.drip.param.valuation.ValuationParams valParams,
  7361.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7362.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7363.         final double dblNSpread)
  7364.         throws java.lang.Exception;

  7365.     /**
  7366.      * Calculate G Spread from OAS to Work-out
  7367.      *
  7368.      * @param valParams Valuation Parameters
  7369.      * @param csqs Market Parameters
  7370.      * @param vcp Valuation Customization Parameters
  7371.      * @param iWorkoutDate Work-out Date
  7372.      * @param dblWorkoutFactor Work-out Factor
  7373.      * @param dblOAS OAS to Work-out
  7374.      *
  7375.      * @return G Spread from OAS to Work-out
  7376.      *
  7377.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7378.      */

  7379.     public abstract double gSpreadFromOAS (
  7380.         final org.drip.param.valuation.ValuationParams valParams,
  7381.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7382.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7383.         final int iWorkoutDate,
  7384.         final double dblWorkoutFactor,
  7385.         final double dblOAS)
  7386.         throws java.lang.Exception;

  7387.     /**
  7388.      * Calculate G Spread from OAS to Maturity
  7389.      *
  7390.      * @param valParams Valuation Parameters
  7391.      * @param csqs Market Parameters
  7392.      * @param vcp Valuation Customization Parameters
  7393.      * @param dblOAS OAS to Maturity
  7394.      *
  7395.      * @return G Spread from OAS to Maturity
  7396.      *
  7397.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7398.      */

  7399.     public abstract double gSpreadFromOAS (
  7400.         final org.drip.param.valuation.ValuationParams valParams,
  7401.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7402.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7403.         final double dblOAS)
  7404.         throws java.lang.Exception;

  7405.     /**
  7406.      * Calculate G Spread from OAS to Optimal Exercise
  7407.      *
  7408.      * @param valParams Valuation Parameters
  7409.      * @param csqs Market Parameters
  7410.      * @param vcp Valuation Customization Parameters
  7411.      * @param dblOAS OAS to Optimal Exercise
  7412.      *
  7413.      * @return G Spread from OAS to Optimal Exercise
  7414.      *
  7415.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7416.      */

  7417.     public abstract double gSpreadFromOASToOptimalExercise (
  7418.         final org.drip.param.valuation.ValuationParams valParams,
  7419.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7420.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7421.         final double dblOAS)
  7422.         throws java.lang.Exception;

  7423.     /**
  7424.      * Calculate G Spread from PECS to Work-out
  7425.      *
  7426.      * @param valParams Valuation Parameters
  7427.      * @param csqs Market Parameters
  7428.      * @param vcp Valuation Customization Parameters
  7429.      * @param iWorkoutDate Work-out Date
  7430.      * @param dblWorkoutFactor Work-out Factor
  7431.      * @param dblPECS PECS to Work-out
  7432.      *
  7433.      * @return G Spread from PECS to Work-out
  7434.      *
  7435.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7436.      */

  7437.     public abstract double gSpreadFromPECS (
  7438.         final org.drip.param.valuation.ValuationParams valParams,
  7439.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7440.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7441.         final int iWorkoutDate,
  7442.         final double dblWorkoutFactor,
  7443.         final double dblPECS)
  7444.         throws java.lang.Exception;

  7445.     /**
  7446.      * Calculate G Spread from PECS to Maturity
  7447.      *
  7448.      * @param valParams Valuation Parameters
  7449.      * @param csqs Market Parameters
  7450.      * @param vcp Valuation Customization Parameters
  7451.      * @param dblPECS PECS to Maturity
  7452.      *
  7453.      * @return G Spread from PECS to Maturity
  7454.      *
  7455.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7456.      */

  7457.     public abstract double gSpreadFromPECS (
  7458.         final org.drip.param.valuation.ValuationParams valParams,
  7459.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7460.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7461.         final double dblPECS)
  7462.         throws java.lang.Exception;

  7463.     /**
  7464.      * Calculate G Spread from PECS to Optimal Exercise
  7465.      *
  7466.      * @param valParams Valuation Parameters
  7467.      * @param csqs Market Parameters
  7468.      * @param vcp Valuation Customization Parameters
  7469.      * @param dblPECS PECS to Optimal Exercise
  7470.      *
  7471.      * @return G Spread from PECS to Optimal Exercise
  7472.      *
  7473.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7474.      */

  7475.     public abstract double gSpreadFromPECSToOptimalExercise (
  7476.         final org.drip.param.valuation.ValuationParams valParams,
  7477.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7478.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7479.         final double dblPECS)
  7480.         throws java.lang.Exception;

  7481.     /**
  7482.      * Calculate G Spread from Price to Work-out
  7483.      *
  7484.      * @param valParams Valuation Parameters
  7485.      * @param csqs Market Parameters
  7486.      * @param vcp Valuation Customization Parameters
  7487.      * @param iWorkoutDate Work-out Date
  7488.      * @param dblWorkoutFactor Work-out Factor
  7489.      * @param dblPrice Price to Work-out
  7490.      *
  7491.      * @return G Spread from Price to Work-out
  7492.      *
  7493.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7494.      */

  7495.     public abstract double gSpreadFromPrice (
  7496.         final org.drip.param.valuation.ValuationParams valParams,
  7497.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7498.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7499.         final int iWorkoutDate,
  7500.         final double dblWorkoutFactor,
  7501.         final double dblPrice)
  7502.         throws java.lang.Exception;

  7503.     /**
  7504.      * Calculate G Spread from Price to Maturity
  7505.      *
  7506.      * @param valParams Valuation Parameters
  7507.      * @param csqs Market Parameters
  7508.      * @param vcp Valuation Customization Parameters
  7509.      * @param dblPrice Price to Maturity
  7510.      *
  7511.      * @return G Spread from Price to Maturity
  7512.      *
  7513.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7514.      */

  7515.     public abstract double gSpreadFromPrice (
  7516.         final org.drip.param.valuation.ValuationParams valParams,
  7517.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7518.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7519.         final double dblPrice)
  7520.         throws java.lang.Exception;

  7521.     /**
  7522.      * Calculate G Spread from Price to Optimal Exercise
  7523.      *
  7524.      * @param valParams Valuation Parameters
  7525.      * @param csqs Market Parameters
  7526.      * @param vcp Valuation Customization Parameters
  7527.      * @param dblPrice Price to Optimal Exercise
  7528.      *
  7529.      * @return G Spread from Price to Optimal Exercise
  7530.      *
  7531.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7532.      */

  7533.     public abstract double gSpreadFromPriceToOptimalExercise (
  7534.         final org.drip.param.valuation.ValuationParams valParams,
  7535.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7536.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7537.         final double dblPrice)
  7538.         throws java.lang.Exception;

  7539.     /**
  7540.      * Calculate G Spread from TSY Spread to Work-out
  7541.      *
  7542.      * @param valParams Valuation Parameters
  7543.      * @param csqs Market Parameters
  7544.      * @param vcp Valuation Customization Parameters
  7545.      * @param iWorkoutDate Work-out Date
  7546.      * @param dblWorkoutFactor Work-out Factor
  7547.      * @param dblTSYSpread TSY Spread to Work-out
  7548.      *
  7549.      * @return G Spread from TSY Spread to Work-out
  7550.      *
  7551.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7552.      */

  7553.     public abstract double gSpreadFromTSYSpread (
  7554.         final org.drip.param.valuation.ValuationParams valParams,
  7555.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7556.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7557.         final int iWorkoutDate,
  7558.         final double dblWorkoutFactor,
  7559.         final double dblTSYSpread)
  7560.         throws java.lang.Exception;

  7561.     /**
  7562.      * Calculate G Spread from TSY Spread to Maturity
  7563.      *
  7564.      * @param valParams Valuation Parameters
  7565.      * @param csqs Market Parameters
  7566.      * @param vcp Valuation Customization Parameters
  7567.      * @param dblTSYSpread TSY Spread to Maturity
  7568.      *
  7569.      * @return G Spread from TSY Spread to Maturity
  7570.      *
  7571.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7572.      */

  7573.     public abstract double gSpreadFromTSYSpread (
  7574.         final org.drip.param.valuation.ValuationParams valParams,
  7575.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7576.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7577.         final double dblTSYSpread)
  7578.         throws java.lang.Exception;

  7579.     /**
  7580.      * Calculate G Spread from TSY Spread to Optimal Exercise
  7581.      *
  7582.      * @param valParams Valuation Parameters
  7583.      * @param csqs Market Parameters
  7584.      * @param vcp Valuation Customization Parameters
  7585.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  7586.      *
  7587.      * @return G Spread from TSY Spread to Optimal Exercise
  7588.      *
  7589.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7590.      */

  7591.     public abstract double gSpreadFromTSYSpreadToOptimalExercise (
  7592.         final org.drip.param.valuation.ValuationParams valParams,
  7593.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7594.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7595.         final double dblTSYSpread)
  7596.         throws java.lang.Exception;

  7597.     /**
  7598.      * Calculate G Spread from Yield to Work-out
  7599.      *
  7600.      * @param valParams Valuation Parameters
  7601.      * @param csqs Market Parameters
  7602.      * @param vcp Valuation Customization Parameters
  7603.      * @param iWorkoutDate Work-out Date
  7604.      * @param dblWorkoutFactor Work-out Factor
  7605.      * @param dblYield Yield to Work-out
  7606.      *
  7607.      * @return G Spread from Yield to Work-out
  7608.      *
  7609.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7610.      */

  7611.     public abstract double gSpreadFromYield (
  7612.         final org.drip.param.valuation.ValuationParams valParams,
  7613.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7614.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7615.         final int iWorkoutDate,
  7616.         final double dblWorkoutFactor,
  7617.         final double dblYield)
  7618.         throws java.lang.Exception;

  7619.     /**
  7620.      * Calculate G Spread from Yield to Maturity
  7621.      *
  7622.      * @param valParams Valuation Parameters
  7623.      * @param csqs Market Parameters
  7624.      * @param vcp Valuation Customization Parameters
  7625.      * @param dblYield Yield to Maturity
  7626.      *
  7627.      * @return G Spread from Yield to Maturity
  7628.      *
  7629.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7630.      */

  7631.     public abstract double gSpreadFromYield (
  7632.         final org.drip.param.valuation.ValuationParams valParams,
  7633.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7634.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7635.         final double dblYield)
  7636.         throws java.lang.Exception;

  7637.     /**
  7638.      * Calculate G Spread from Yield to Optimal Exercise
  7639.      *
  7640.      * @param valParams Valuation Parameters
  7641.      * @param csqs Market Parameters
  7642.      * @param vcp Valuation Customization Parameters
  7643.      * @param dblYield Yield to Optimal Exercise
  7644.      *
  7645.      * @return G Spread from Yield to Optimal Exercise
  7646.      *
  7647.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7648.      */

  7649.     public abstract double gSpreadFromYieldToOptimalExercise (
  7650.         final org.drip.param.valuation.ValuationParams valParams,
  7651.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7652.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7653.         final double dblYield)
  7654.         throws java.lang.Exception;

  7655.     /**
  7656.      * Calculate G Spread from Yield Spread to Work-out
  7657.      *
  7658.      * @param valParams Valuation Parameters
  7659.      * @param csqs Market Parameters
  7660.      * @param vcp Valuation Customization Parameters
  7661.      * @param iWorkoutDate Work-out Date
  7662.      * @param dblWorkoutFactor Work-out Factor
  7663.      * @param dblYieldSpread Yield Spread to Work-out
  7664.      *
  7665.      * @return G Spread from Yield Spread to Work-out
  7666.      *
  7667.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7668.      */

  7669.     public abstract double gSpreadFromYieldSpread (
  7670.         final org.drip.param.valuation.ValuationParams valParams,
  7671.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7672.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7673.         final int iWorkoutDate,
  7674.         final double dblWorkoutFactor,
  7675.         final double dblYieldSpread)
  7676.         throws java.lang.Exception;

  7677.     /**
  7678.      * Calculate G Spread from Yield Spread to Maturity
  7679.      *
  7680.      * @param valParams Valuation Parameters
  7681.      * @param csqs Market Parameters
  7682.      * @param vcp Valuation Customization Parameters
  7683.      * @param dblYieldSpread Yield Spread to Maturity
  7684.      *
  7685.      * @return G Spread from Yield Spread to Maturity
  7686.      *
  7687.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7688.      */

  7689.     public abstract double gSpreadFromYieldSpread (
  7690.         final org.drip.param.valuation.ValuationParams valParams,
  7691.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7692.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7693.         final double dblYieldSpread)
  7694.         throws java.lang.Exception;

  7695.     /**
  7696.      * Calculate G Spread from Yield Spread to Optimal Exercise
  7697.      *
  7698.      * @param valParams Valuation Parameters
  7699.      * @param csqs Market Parameters
  7700.      * @param vcp Valuation Customization Parameters
  7701.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  7702.      *
  7703.      * @return G Spread from Yield Spread to Optimal Exercise
  7704.      *
  7705.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7706.      */

  7707.     public abstract double gSpreadFromYieldSpreadToOptimalExercise (
  7708.         final org.drip.param.valuation.ValuationParams valParams,
  7709.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7710.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7711.         final double dblYieldSpread)
  7712.         throws java.lang.Exception;

  7713.     /**
  7714.      * Calculate G Spread from Z Spread to Work-out
  7715.      *
  7716.      * @param valParams Valuation Parameters
  7717.      * @param csqs Market Parameters
  7718.      * @param vcp Valuation Customization Parameters
  7719.      * @param iWorkoutDate Work-out Date
  7720.      * @param dblWorkoutFactor Work-out Factor
  7721.      * @param dblZSpread Z Spread to Work-out
  7722.      *
  7723.      * @return G Spread from Z Spread to Work-out
  7724.      *
  7725.      * @throws java.lang.Exception Thrown if the G Spread cannot be calculated
  7726.      */

  7727.     public abstract double gSpreadFromZSpread (
  7728.         final org.drip.param.valuation.ValuationParams valParams,
  7729.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7730.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7731.         final int iWorkoutDate,
  7732.         final double dblWorkoutFactor,
  7733.         final double dblZSpread)
  7734.         throws java.lang.Exception;

  7735.     /**
  7736.      * Calculate G Spread from Z Spread to Maturity
  7737.      *
  7738.      * @param valParams Valuation Parameters
  7739.      * @param csqs Market Parameters
  7740.      * @param vcp Valuation Customization Parameters
  7741.      * @param dblZSpread Z Spread to Maturity
  7742.      *
  7743.      * @return G Spread from Z Spread to Maturity
  7744.      *
  7745.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7746.      */

  7747.     public abstract double gSpreadFromZSpread (
  7748.         final org.drip.param.valuation.ValuationParams valParams,
  7749.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7750.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7751.         final double dblZSpread)
  7752.         throws java.lang.Exception;

  7753.     /**
  7754.      * Calculate G Spread from Z Spread to Optimal Exercise
  7755.      *
  7756.      * @param valParams Valuation Parameters
  7757.      * @param csqs Market Parameters
  7758.      * @param vcp Valuation Customization Parameters
  7759.      * @param dblZSpread Z Spread to Optimal Exercise
  7760.      *
  7761.      * @return G Spread from Z Spread to Optimal Exercise
  7762.      *
  7763.      * @throws java.lang.Exception Thrown if G Spread cannot be calculated
  7764.      */

  7765.     public abstract double gSpreadFromZSpreadToOptimalExercise (
  7766.         final org.drip.param.valuation.ValuationParams valParams,
  7767.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7768.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7769.         final double dblZSpread)
  7770.         throws java.lang.Exception;

  7771.     /**
  7772.      * Calculate I Spread from ASW to Work-out
  7773.      *
  7774.      * @param valParams Valuation Parameters
  7775.      * @param csqs Market Parameters
  7776.      * @param vcp Valuation Customization Parameters
  7777.      * @param iWorkoutDate Work-out Date
  7778.      * @param dblWorkoutFactor Work-out Factor
  7779.      * @param dblASW ASW to Work-out
  7780.      *
  7781.      * @return I Spread from ASW to Work-out
  7782.      *
  7783.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  7784.      */

  7785.     public abstract double iSpreadFromASW (
  7786.         final org.drip.param.valuation.ValuationParams valParams,
  7787.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7788.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7789.         final int iWorkoutDate,
  7790.         final double dblWorkoutFactor,
  7791.         final double dblASW)
  7792.         throws java.lang.Exception;

  7793.     /**
  7794.      * Calculate I Spread from ASW to Maturity
  7795.      *
  7796.      * @param valParams Valuation Parameters
  7797.      * @param csqs Market Parameters
  7798.      * @param vcp Valuation Customization Parameters
  7799.      * @param dblASW ASW to Maturity
  7800.      *
  7801.      * @return I Spread from ASW to Maturity
  7802.      *
  7803.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  7804.      */

  7805.     public abstract double iSpreadFromASW (
  7806.         final org.drip.param.valuation.ValuationParams valParams,
  7807.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7808.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7809.         final double dblASW)
  7810.         throws java.lang.Exception;

  7811.     /**
  7812.      * Calculate I Spread from ASW to Optimal Exercise
  7813.      *
  7814.      * @param valParams Valuation Parameters
  7815.      * @param csqs Market Parameters
  7816.      * @param vcp Valuation Customization Parameters
  7817.      * @param dblASW ASW to Optimal Exercise
  7818.      *
  7819.      * @return I Spread from ASW to Optimal Exercise
  7820.      *
  7821.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  7822.      */

  7823.     public abstract double iSpreadFromASWToOptimalExercise (
  7824.         final org.drip.param.valuation.ValuationParams valParams,
  7825.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7826.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7827.         final double dblASW)
  7828.         throws java.lang.Exception;

  7829.     /**
  7830.      * Calculate I Spread from Bond Basis to Work-out
  7831.      *
  7832.      * @param valParams Valuation Parameters
  7833.      * @param csqs Market Parameters
  7834.      * @param vcp Valuation Customization Parameters
  7835.      * @param iWorkoutDate Work-out Date
  7836.      * @param dblWorkoutFactor Work-out Factor
  7837.      * @param dblBondBasis Bond Basis to Work-out
  7838.      *
  7839.      * @return I Spread from Bond Basis to Work-out
  7840.      *
  7841.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  7842.      */

  7843.     public abstract double iSpreadFromBondBasis (
  7844.         final org.drip.param.valuation.ValuationParams valParams,
  7845.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7846.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7847.         final int iWorkoutDate,
  7848.         final double dblWorkoutFactor,
  7849.         final double dblBondBasis)
  7850.         throws java.lang.Exception;

  7851.     /**
  7852.      * Calculate I Spread from Bond Basis to Maturity
  7853.      *
  7854.      * @param valParams Valuation Parameters
  7855.      * @param csqs Market Parameters
  7856.      * @param vcp Valuation Customization Parameters
  7857.      * @param dblBondBasis Bond Basis to Maturity
  7858.      *
  7859.      * @return I Spread from Bond Basis to Maturity
  7860.      *
  7861.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  7862.      */

  7863.     public abstract double iSpreadFromBondBasis (
  7864.         final org.drip.param.valuation.ValuationParams valParams,
  7865.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7866.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7867.         final double dblBondBasis)
  7868.         throws java.lang.Exception;

  7869.     /**
  7870.      * Calculate I Spread from Bond Basis to Optimal Exercise
  7871.      *
  7872.      * @param valParams Valuation Parameters
  7873.      * @param csqs Market Parameters
  7874.      * @param vcp Valuation Customization Parameters
  7875.      * @param dblBondBasis Bond Basis to Optimal Exercise
  7876.      *
  7877.      * @return I Spread from Bond Basis to Optimal Exercise
  7878.      *
  7879.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  7880.      */

  7881.     public abstract double iSpreadFromBondBasisToOptimalExercise (
  7882.         final org.drip.param.valuation.ValuationParams valParams,
  7883.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7884.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7885.         final double dblBondBasis)
  7886.         throws java.lang.Exception;

  7887.     /**
  7888.      * Calculate I Spread from Credit Basis to Work-out
  7889.      *
  7890.      * @param valParams Valuation Parameters
  7891.      * @param csqs Market Parameters
  7892.      * @param vcp Valuation Customization Parameters
  7893.      * @param iWorkoutDate Work-out Date
  7894.      * @param dblWorkoutFactor Work-out Factor
  7895.      * @param dblCreditBasis Credit Basis to Work-out
  7896.      *
  7897.      * @return I Spread from Credit Basis to Work-out
  7898.      *
  7899.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  7900.      */

  7901.     public abstract double iSpreadFromCreditBasis (
  7902.         final org.drip.param.valuation.ValuationParams valParams,
  7903.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7904.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7905.         final int iWorkoutDate,
  7906.         final double dblWorkoutFactor,
  7907.         final double dblCreditBasis)
  7908.         throws java.lang.Exception;

  7909.     /**
  7910.      * Calculate I Spread from Credit Basis to Maturity
  7911.      *
  7912.      * @param valParams Valuation Parameters
  7913.      * @param csqs Market Parameters
  7914.      * @param vcp Valuation Customization Parameters
  7915.      * @param dblCreditBasis Credit Basis to Maturity
  7916.      *
  7917.      * @return I Spread from Credit Basis to Maturity
  7918.      *
  7919.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  7920.      */

  7921.     public abstract double iSpreadFromCreditBasis (
  7922.         final org.drip.param.valuation.ValuationParams valParams,
  7923.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7924.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7925.         final double dblCreditBasis)
  7926.         throws java.lang.Exception;

  7927.     /**
  7928.      * Calculate I Spread from Credit Basis to Optimal Exercise
  7929.      *
  7930.      * @param valParams Valuation Parameters
  7931.      * @param csqs Market Parameters
  7932.      * @param vcp Valuation Customization Parameters
  7933.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  7934.      *
  7935.      * @return I Spread from Credit Basis to Optimal Exercise
  7936.      *
  7937.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  7938.      */

  7939.     public abstract double iSpreadFromCreditBasisToOptimalExercise (
  7940.         final org.drip.param.valuation.ValuationParams valParams,
  7941.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7942.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7943.         final double dblCreditBasis)
  7944.         throws java.lang.Exception;

  7945.     /**
  7946.      * Calculate I Spread from Discount Margin to Work-out
  7947.      *
  7948.      * @param valParams Valuation Parameters
  7949.      * @param csqs Market Parameters
  7950.      * @param vcp Valuation Customization Parameters
  7951.      * @param iWorkoutDate Work-out Date
  7952.      * @param dblWorkoutFactor Work-out Factor
  7953.      * @param dblDiscountMargin Discount Margin to Work-out
  7954.      *
  7955.      * @return I Spread from Discount Margin to Work-out
  7956.      *
  7957.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  7958.      */

  7959.     public abstract double iSpreadFromDiscountMargin (
  7960.         final org.drip.param.valuation.ValuationParams valParams,
  7961.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7962.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7963.         final int iWorkoutDate,
  7964.         final double dblWorkoutFactor,
  7965.         final double dblDiscountMargin)
  7966.         throws java.lang.Exception;

  7967.     /**
  7968.      * Calculate I Spread from Discount Margin to Maturity
  7969.      *
  7970.      * @param valParams Valuation Parameters
  7971.      * @param csqs Market Parameters
  7972.      * @param vcp Valuation Customization Parameters
  7973.      * @param dblDiscountMargin Discount Margin to Maturity
  7974.      *
  7975.      * @return I Spread from Discount Margin to Maturity
  7976.      *
  7977.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  7978.      */

  7979.     public abstract double iSpreadFromDiscountMargin (
  7980.         final org.drip.param.valuation.ValuationParams valParams,
  7981.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  7982.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  7983.         final double dblDiscountMargin)
  7984.         throws java.lang.Exception;

  7985.     /**
  7986.      * Calculate I Spread from Discount Margin to Optimal Exercise
  7987.      *
  7988.      * @param valParams Valuation Parameters
  7989.      * @param csqs Market Parameters
  7990.      * @param vcp Valuation Customization Parameters
  7991.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  7992.      *
  7993.      * @return I Spread from Discount Margin to Optimal Exercise
  7994.      *
  7995.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  7996.      */

  7997.     public abstract double iSpreadFromDiscountMarginToOptimalExercise (
  7998.         final org.drip.param.valuation.ValuationParams valParams,
  7999.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8000.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8001.         final double dblDiscountMargin)
  8002.         throws java.lang.Exception;

  8003.     /**
  8004.      * Calculate I Spread from E Spread to Work-out
  8005.      *
  8006.      * @param valParams Valuation Parameters
  8007.      * @param csqs Market Parameters
  8008.      * @param vcp Valuation Customization Parameters
  8009.      * @param iWorkoutDate Work-out Date
  8010.      * @param dblWorkoutFactor Work-out Factor
  8011.      * @param dblESpread E Spread to Work-out
  8012.      *
  8013.      * @return I Spread from E Spread to Work-out
  8014.      *
  8015.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8016.      */

  8017.     public abstract double iSpreadFromESpread (
  8018.         final org.drip.param.valuation.ValuationParams valParams,
  8019.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8020.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8021.         final int iWorkoutDate,
  8022.         final double dblWorkoutFactor,
  8023.         final double dblESpread)
  8024.         throws java.lang.Exception;

  8025.     /**
  8026.      * Calculate I Spread from E Spread to Maturity
  8027.      *
  8028.      * @param valParams Valuation Parameters
  8029.      * @param csqs Market Parameters
  8030.      * @param vcp Valuation Customization Parameters
  8031.      * @param dblESpread E Spread to Maturity
  8032.      *
  8033.      * @return I Spread from E Spread to Maturity
  8034.      *
  8035.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8036.      */

  8037.     public abstract double iSpreadFromESpread (
  8038.         final org.drip.param.valuation.ValuationParams valParams,
  8039.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8040.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8041.         final double dblESpread)
  8042.         throws java.lang.Exception;

  8043.     /**
  8044.      * Calculate I Spread from E Spread to Optimal Exercise
  8045.      *
  8046.      * @param valParams Valuation Parameters
  8047.      * @param csqs Market Parameters
  8048.      * @param vcp Valuation Customization Parameters
  8049.      * @param dblESpread E Spread to Optimal Exercise
  8050.      *
  8051.      * @return I Spread from E Spread to Optimal Exercise
  8052.      *
  8053.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8054.      */

  8055.     public abstract double iSpreadFromESpreadToOptimalExercise (
  8056.         final org.drip.param.valuation.ValuationParams valParams,
  8057.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8058.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8059.         final double dblESpread)
  8060.         throws java.lang.Exception;

  8061.     /**
  8062.      * Calculate I Spread from G Spread to Work-out
  8063.      *
  8064.      * @param valParams Valuation Parameters
  8065.      * @param csqs Market Parameters
  8066.      * @param vcp Valuation Customization Parameters
  8067.      * @param iWorkoutDate Work-out Date
  8068.      * @param dblWorkoutFactor Work-out Factor
  8069.      * @param dblGSpread G Spread to Work-out
  8070.      *
  8071.      * @return I Spread from G Spread to Work-out
  8072.      *
  8073.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8074.      */

  8075.     public abstract double iSpreadFromGSpread (
  8076.         final org.drip.param.valuation.ValuationParams valParams,
  8077.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8078.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8079.         final int iWorkoutDate,
  8080.         final double dblWorkoutFactor,
  8081.         final double dblGSpread)
  8082.         throws java.lang.Exception;

  8083.     /**
  8084.      * Calculate I Spread from G Spread to Maturity
  8085.      *
  8086.      * @param valParams Valuation Parameters
  8087.      * @param csqs Market Parameters
  8088.      * @param vcp Valuation Customization Parameters
  8089.      * @param dblGSpread G Spread to Maturity
  8090.      *
  8091.      * @return I Spread from G Spread to Maturity
  8092.      *
  8093.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8094.      */

  8095.     public abstract double iSpreadFromGSpread (
  8096.         final org.drip.param.valuation.ValuationParams valParams,
  8097.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8098.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8099.         final double dblGSpread)
  8100.         throws java.lang.Exception;

  8101.     /**
  8102.      * Calculate I Spread from G Spread to Optimal Exercise
  8103.      *
  8104.      * @param valParams Valuation Parameters
  8105.      * @param csqs Market Parameters
  8106.      * @param vcp Valuation Customization Parameters
  8107.      * @param dblGSpread G Spread to Optimal Exercise
  8108.      *
  8109.      * @return I Spread from G Spread to Optimal Exercise
  8110.      *
  8111.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8112.      */

  8113.     public abstract double iSpreadFromGSpreadToOptimalExercise (
  8114.         final org.drip.param.valuation.ValuationParams valParams,
  8115.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8116.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8117.         final double dblGSpread)
  8118.         throws java.lang.Exception;

  8119.     /**
  8120.      * Calculate I Spread from J Spread to Work-out
  8121.      *
  8122.      * @param valParams Valuation Parameters
  8123.      * @param csqs Market Parameters
  8124.      * @param vcp Valuation Customization Parameters
  8125.      * @param iWorkoutDate Work-out Date
  8126.      * @param dblWorkoutFactor Work-out Factor
  8127.      * @param dblJSpread J Spread to Work-out
  8128.      *
  8129.      * @return I Spread from J Spread to Work-out
  8130.      *
  8131.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8132.      */

  8133.     public abstract double iSpreadFromJSpread (
  8134.         final org.drip.param.valuation.ValuationParams valParams,
  8135.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8136.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8137.         final int iWorkoutDate,
  8138.         final double dblWorkoutFactor,
  8139.         final double dblJSpread)
  8140.         throws java.lang.Exception;

  8141.     /**
  8142.      * Calculate I Spread from J Spread to Maturity
  8143.      *
  8144.      * @param valParams Valuation Parameters
  8145.      * @param csqs Market Parameters
  8146.      * @param vcp Valuation Customization Parameters
  8147.      * @param dblJSpread J Spread to Maturity
  8148.      *
  8149.      * @return I Spread from J Spread to Maturity
  8150.      *
  8151.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8152.      */

  8153.     public abstract double iSpreadFromJSpread (
  8154.         final org.drip.param.valuation.ValuationParams valParams,
  8155.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8156.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8157.         final double dblJSpread)
  8158.         throws java.lang.Exception;

  8159.     /**
  8160.      * Calculate I Spread from J Spread to Optimal Exercise
  8161.      *
  8162.      * @param valParams Valuation Parameters
  8163.      * @param csqs Market Parameters
  8164.      * @param vcp Valuation Customization Parameters
  8165.      * @param dblJSpread J Spread to Optimal Exercise
  8166.      *
  8167.      * @return I Spread from J Spread to Optimal Exercise
  8168.      *
  8169.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8170.      */

  8171.     public abstract double iSpreadFromJSpreadToOptimalExercise (
  8172.         final org.drip.param.valuation.ValuationParams valParams,
  8173.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8174.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8175.         final double dblJSpread)
  8176.         throws java.lang.Exception;

  8177.     /**
  8178.      * Calculate I Spread from N Spread to Work-out
  8179.      *
  8180.      * @param valParams Valuation Parameters
  8181.      * @param csqs Market Parameters
  8182.      * @param vcp Valuation Customization Parameters
  8183.      * @param iWorkoutDate Work-out Date
  8184.      * @param dblWorkoutFactor Work-out Factor
  8185.      * @param dblNSpread N Spread to Work-out
  8186.      *
  8187.      * @return I Spread from N Spread to Work-out
  8188.      *
  8189.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8190.      */

  8191.     public abstract double iSpreadFromNSpread (
  8192.         final org.drip.param.valuation.ValuationParams valParams,
  8193.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8194.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8195.         final int iWorkoutDate,
  8196.         final double dblWorkoutFactor,
  8197.         final double dblNSpread)
  8198.         throws java.lang.Exception;

  8199.     /**
  8200.      * Calculate I Spread from N Spread to Maturity
  8201.      *
  8202.      * @param valParams Valuation Parameters
  8203.      * @param csqs Market Parameters
  8204.      * @param vcp Valuation Customization Parameters
  8205.      * @param dblNSpread N Spread to Maturity
  8206.      *
  8207.      * @return I Spread from N Spread to Maturity
  8208.      *
  8209.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8210.      */

  8211.     public abstract double iSpreadFromNSpread (
  8212.         final org.drip.param.valuation.ValuationParams valParams,
  8213.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8214.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8215.         final double dblNSpread)
  8216.         throws java.lang.Exception;

  8217.     /**
  8218.      * Calculate I Spread from N Spread to Optimal Exercise
  8219.      *
  8220.      * @param valParams Valuation Parameters
  8221.      * @param csqs Market Parameters
  8222.      * @param vcp Valuation Customization Parameters
  8223.      * @param dblNSpread N Spread to Optimal Exercise
  8224.      *
  8225.      * @return I Spread from N Spread to Optimal Exercise
  8226.      *
  8227.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8228.      */

  8229.     public abstract double iSpreadFromNSpreadToOptimalExercise (
  8230.         final org.drip.param.valuation.ValuationParams valParams,
  8231.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8232.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8233.         final double dblNSpread)
  8234.         throws java.lang.Exception;

  8235.     /**
  8236.      * Calculate I Spread from OAS to Work-out
  8237.      *
  8238.      * @param valParams Valuation Parameters
  8239.      * @param csqs Market Parameters
  8240.      * @param vcp Valuation Customization Parameters
  8241.      * @param iWorkoutDate Work-out Date
  8242.      * @param dblWorkoutFactor Work-out Factor
  8243.      * @param dblOAS OAS to Work-out
  8244.      *
  8245.      * @return I Spread from OAS to Work-out
  8246.      *
  8247.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8248.      */

  8249.     public abstract double iSpreadFromOAS (
  8250.         final org.drip.param.valuation.ValuationParams valParams,
  8251.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8252.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8253.         final int iWorkoutDate,
  8254.         final double dblWorkoutFactor,
  8255.         final double dblOAS)
  8256.         throws java.lang.Exception;

  8257.     /**
  8258.      * Calculate I Spread from OAS to Maturity
  8259.      *
  8260.      * @param valParams Valuation Parameters
  8261.      * @param csqs Market Parameters
  8262.      * @param vcp Valuation Customization Parameters
  8263.      * @param dblOAS OAS to Maturity
  8264.      *
  8265.      * @return I Spread from OAS to Maturity
  8266.      *
  8267.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8268.      */

  8269.     public abstract double iSpreadFromOAS (
  8270.         final org.drip.param.valuation.ValuationParams valParams,
  8271.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8272.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8273.         final double dblOAS)
  8274.         throws java.lang.Exception;

  8275.     /**
  8276.      * Calculate I Spread from OAS to Optimal Exercise
  8277.      *
  8278.      * @param valParams Valuation Parameters
  8279.      * @param csqs Market Parameters
  8280.      * @param vcp Valuation Customization Parameters
  8281.      * @param dblOAS OAS to Optimal Exercise
  8282.      *
  8283.      * @return I Spread from OAS to Optimal Exercise
  8284.      *
  8285.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8286.      */

  8287.     public abstract double iSpreadFromOASToOptimalExercise (
  8288.         final org.drip.param.valuation.ValuationParams valParams,
  8289.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8290.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8291.         final double dblOAS)
  8292.         throws java.lang.Exception;

  8293.     /**
  8294.      * Calculate I Spread from PECS to Work-out
  8295.      *
  8296.      * @param valParams Valuation Parameters
  8297.      * @param csqs Market Parameters
  8298.      * @param vcp Valuation Customization Parameters
  8299.      * @param iWorkoutDate Work-out Date
  8300.      * @param dblWorkoutFactor Work-out Factor
  8301.      * @param dblPECS PECS to Work-out
  8302.      *
  8303.      * @return I Spread from PECS to Work-out
  8304.      *
  8305.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8306.      */

  8307.     public abstract double iSpreadFromPECS (
  8308.         final org.drip.param.valuation.ValuationParams valParams,
  8309.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8310.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8311.         final int iWorkoutDate,
  8312.         final double dblWorkoutFactor,
  8313.         final double dblPECS)
  8314.         throws java.lang.Exception;

  8315.     /**
  8316.      * Calculate I Spread from PECS to Maturity
  8317.      *
  8318.      * @param valParams Valuation Parameters
  8319.      * @param csqs Market Parameters
  8320.      * @param vcp Valuation Customization Parameters
  8321.      * @param dblPECS PECS to Maturity
  8322.      *
  8323.      * @return I Spread from PECS to Maturity
  8324.      *
  8325.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8326.      */

  8327.     public abstract double iSpreadFromPECS (
  8328.         final org.drip.param.valuation.ValuationParams valParams,
  8329.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8330.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8331.         final double dblPECS)
  8332.         throws java.lang.Exception;

  8333.     /**
  8334.      * Calculate I Spread from PECS to Optimal Exercise
  8335.      *
  8336.      * @param valParams Valuation Parameters
  8337.      * @param csqs Market Parameters
  8338.      * @param vcp Valuation Customization Parameters
  8339.      * @param dblPECS PECS to Optimal Exercise
  8340.      *
  8341.      * @return I Spread from PECS to Optimal Exercise
  8342.      *
  8343.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8344.      */

  8345.     public abstract double iSpreadFromPECSToOptimalExercise (
  8346.         final org.drip.param.valuation.ValuationParams valParams,
  8347.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8348.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8349.         final double dblPECS)
  8350.         throws java.lang.Exception;

  8351.     /**
  8352.      * Calculate I Spread from Price to Work-out
  8353.      *
  8354.      * @param valParams Valuation Parameters
  8355.      * @param csqs Market Parameters
  8356.      * @param vcp Valuation Customization Parameters
  8357.      * @param iWorkoutDate Work-out Date
  8358.      * @param dblWorkoutFactor Work-out Factor
  8359.      * @param dblPrice Price to Work-out
  8360.      *
  8361.      * @return I Spread from Price to Work-out
  8362.      *
  8363.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8364.      */

  8365.     public abstract double iSpreadFromPrice (
  8366.         final org.drip.param.valuation.ValuationParams valParams,
  8367.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8368.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8369.         final int iWorkoutDate,
  8370.         final double dblWorkoutFactor,
  8371.         final double dblPrice)
  8372.         throws java.lang.Exception;

  8373.     /**
  8374.      * Calculate I Spread from Price to Maturity
  8375.      *
  8376.      * @param valParams Valuation Parameters
  8377.      * @param csqs Market Parameters
  8378.      * @param vcp Valuation Customization Parameters
  8379.      * @param dblPrice Price to Maturity
  8380.      *
  8381.      * @return I Spread from Price to Maturity
  8382.      *
  8383.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8384.      */

  8385.     public abstract double iSpreadFromPrice (
  8386.         final org.drip.param.valuation.ValuationParams valParams,
  8387.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8388.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8389.         final double dblPrice)
  8390.         throws java.lang.Exception;

  8391.     /**
  8392.      * Calculate I Spread from Price to Optimal Exercise
  8393.      *
  8394.      * @param valParams Valuation Parameters
  8395.      * @param csqs Market Parameters
  8396.      * @param vcp Valuation Customization Parameters
  8397.      * @param dblPrice Price to Optimal Exercise
  8398.      *
  8399.      * @return I Spread from Price to Optimal Exercise
  8400.      *
  8401.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8402.      */

  8403.     public abstract double iSpreadFromPriceToOptimalExercise (
  8404.         final org.drip.param.valuation.ValuationParams valParams,
  8405.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8406.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8407.         final double dblPrice)
  8408.         throws java.lang.Exception;

  8409.     /**
  8410.      * Calculate I Spread from TSY Spread to Work-out
  8411.      *
  8412.      * @param valParams Valuation Parameters
  8413.      * @param csqs Market Parameters
  8414.      * @param vcp Valuation Customization Parameters
  8415.      * @param iWorkoutDate Work-out Date
  8416.      * @param dblWorkoutFactor Work-out Factor
  8417.      * @param dblTSYSpread TSY Spread to Work-out
  8418.      *
  8419.      * @return I Spread from TSY Spread to Work-out
  8420.      *
  8421.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8422.      */

  8423.     public abstract double iSpreadFromTSYSpread (
  8424.         final org.drip.param.valuation.ValuationParams valParams,
  8425.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8426.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8427.         final int iWorkoutDate,
  8428.         final double dblWorkoutFactor,
  8429.         final double dblTSYSpread)
  8430.         throws java.lang.Exception;

  8431.     /**
  8432.      * Calculate I Spread from TSY Spread to Maturity
  8433.      *
  8434.      * @param valParams Valuation Parameters
  8435.      * @param csqs Market Parameters
  8436.      * @param vcp Valuation Customization Parameters
  8437.      * @param dblTSYSpread TSY Spread to Maturity
  8438.      *
  8439.      * @return I Spread from TSY Spread to Maturity
  8440.      *
  8441.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8442.      */

  8443.     public abstract double iSpreadFromTSYSpread (
  8444.         final org.drip.param.valuation.ValuationParams valParams,
  8445.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8446.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8447.         final double dblTSYSpread)
  8448.         throws java.lang.Exception;

  8449.     /**
  8450.      * Calculate I Spread from TSY Spread to Optimal Exercise
  8451.      *
  8452.      * @param valParams Valuation Parameters
  8453.      * @param csqs Market Parameters
  8454.      * @param vcp Valuation Customization Parameters
  8455.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  8456.      *
  8457.      * @return I Spread from TSY Spread to Optimal Exercise
  8458.      *
  8459.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8460.      */

  8461.     public abstract double iSpreadFromTSYSpreadToOptimalExercise (
  8462.         final org.drip.param.valuation.ValuationParams valParams,
  8463.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8464.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8465.         final double dblTSYSpread)
  8466.         throws java.lang.Exception;

  8467.     /**
  8468.      * Calculate I Spread from Yield to Work-out
  8469.      *
  8470.      * @param valParams Valuation Parameters
  8471.      * @param csqs Market Parameters
  8472.      * @param vcp Valuation Customization Parameters
  8473.      * @param iWorkoutDate Work-out Date
  8474.      * @param dblWorkoutFactor Work-out Factor
  8475.      * @param dblYield Yield to Work-out
  8476.      *
  8477.      * @return I Spread from Yield to Work-out
  8478.      *
  8479.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8480.      */

  8481.     public abstract double iSpreadFromYield (
  8482.         final org.drip.param.valuation.ValuationParams valParams,
  8483.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8484.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8485.         final int iWorkoutDate,
  8486.         final double dblWorkoutFactor,
  8487.         final double dblYield)
  8488.         throws java.lang.Exception;

  8489.     /**
  8490.      * Calculate I Spread from Yield to Maturity
  8491.      *
  8492.      * @param valParams Valuation Parameters
  8493.      * @param csqs Market Parameters
  8494.      * @param vcp Valuation Customization Parameters
  8495.      * @param dblYield Yield to Maturity
  8496.      *
  8497.      * @return I Spread from Yield to Maturity
  8498.      *
  8499.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8500.      */

  8501.     public abstract double iSpreadFromYield (
  8502.         final org.drip.param.valuation.ValuationParams valParams,
  8503.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8504.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8505.         final double dblYield)
  8506.         throws java.lang.Exception;

  8507.     /**
  8508.      * Calculate I Spread from Yield to Optimal Exercise
  8509.      *
  8510.      * @param valParams Valuation Parameters
  8511.      * @param csqs Market Parameters
  8512.      * @param vcp Valuation Customization Parameters
  8513.      * @param dblYield Yield to Optimal Exercise
  8514.      *
  8515.      * @return I Spread from Yield to Optimal Exercise
  8516.      *
  8517.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8518.      */

  8519.     public abstract double iSpreadFromYieldToOptimalExercise (
  8520.         final org.drip.param.valuation.ValuationParams valParams,
  8521.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8522.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8523.         final double dblYield)
  8524.         throws java.lang.Exception;

  8525.     /**
  8526.      * Calculate I Spread from Yield Spread to Work-out
  8527.      *
  8528.      * @param valParams Valuation Parameters
  8529.      * @param csqs Market Parameters
  8530.      * @param vcp Valuation Customization Parameters
  8531.      * @param iWorkoutDate Work-out Date
  8532.      * @param dblWorkoutFactor Work-out Factor
  8533.      * @param dblYieldSpread Yield Spread to Work-out
  8534.      *
  8535.      * @return I Spread from Yield Spread to Work-out
  8536.      *
  8537.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8538.      */

  8539.     public abstract double iSpreadFromYieldSpread (
  8540.         final org.drip.param.valuation.ValuationParams valParams,
  8541.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8542.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8543.         final int iWorkoutDate,
  8544.         final double dblWorkoutFactor,
  8545.         final double dblYieldSpread)
  8546.         throws java.lang.Exception;

  8547.     /**
  8548.      * Calculate I Spread from Yield Spread to Maturity
  8549.      *
  8550.      * @param valParams Valuation Parameters
  8551.      * @param csqs Market Parameters
  8552.      * @param vcp Valuation Customization Parameters
  8553.      * @param dblYieldSpread Yield Spread to Maturity
  8554.      *
  8555.      * @return I Spread from Yield Spread to Maturity
  8556.      *
  8557.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8558.      */

  8559.     public abstract double iSpreadFromYieldSpread (
  8560.         final org.drip.param.valuation.ValuationParams valParams,
  8561.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8562.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8563.         final double dblYieldSpread)
  8564.         throws java.lang.Exception;

  8565.     /**
  8566.      * Calculate I Spread from Yield Spread to Optimal Exercise
  8567.      *
  8568.      * @param valParams Valuation Parameters
  8569.      * @param csqs Market Parameters
  8570.      * @param vcp Valuation Customization Parameters
  8571.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  8572.      *
  8573.      * @return I Spread from Yield Spread to Optimal Exercise
  8574.      *
  8575.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8576.      */

  8577.     public abstract double iSpreadFromYieldSpreadToOptimalExercise (
  8578.         final org.drip.param.valuation.ValuationParams valParams,
  8579.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8580.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8581.         final double dblYieldSpread)
  8582.         throws java.lang.Exception;

  8583.     /**
  8584.      * Calculate I Spread from Z Spread to Work-out
  8585.      *
  8586.      * @param valParams Valuation Parameters
  8587.      * @param csqs Market Parameters
  8588.      * @param vcp Valuation Customization Parameters
  8589.      * @param iWorkoutDate Work-out Date
  8590.      * @param dblWorkoutFactor Work-out Factor
  8591.      * @param dblZSpread Z Spread to Work-out
  8592.      *
  8593.      * @return I Spread from Z Spread to Work-out
  8594.      *
  8595.      * @throws java.lang.Exception Thrown if the I Spread cannot be calculated
  8596.      */

  8597.     public abstract double iSpreadFromZSpread (
  8598.         final org.drip.param.valuation.ValuationParams valParams,
  8599.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8600.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8601.         final int iWorkoutDate,
  8602.         final double dblWorkoutFactor,
  8603.         final double dblZSpread)
  8604.         throws java.lang.Exception;

  8605.     /**
  8606.      * Calculate I Spread from Z Spread to Maturity
  8607.      *
  8608.      * @param valParams Valuation Parameters
  8609.      * @param csqs Market Parameters
  8610.      * @param vcp Valuation Customization Parameters
  8611.      * @param dblZSpread Z Spread to Maturity
  8612.      *
  8613.      * @return I Spread from Z Spread to Maturity
  8614.      *
  8615.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8616.      */

  8617.     public abstract double iSpreadFromZSpread (
  8618.         final org.drip.param.valuation.ValuationParams valParams,
  8619.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8620.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8621.         final double dblZSpread)
  8622.         throws java.lang.Exception;

  8623.     /**
  8624.      * Calculate I Spread from Z Spread to Optimal Exercise
  8625.      *
  8626.      * @param valParams Valuation Parameters
  8627.      * @param csqs Market Parameters
  8628.      * @param vcp Valuation Customization Parameters
  8629.      * @param dblZSpread Z Spread to Optimal Exercise
  8630.      *
  8631.      * @return I Spread from Z Spread to Optimal Exercise
  8632.      *
  8633.      * @throws java.lang.Exception Thrown if I Spread cannot be calculated
  8634.      */

  8635.     public abstract double iSpreadFromZSpreadToOptimalExercise (
  8636.         final org.drip.param.valuation.ValuationParams valParams,
  8637.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8638.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8639.         final double dblZSpread)
  8640.         throws java.lang.Exception;

  8641.     /**
  8642.      * Calculate J Spread from ASW to Work-out
  8643.      *
  8644.      * @param valParams Valuation Parameters
  8645.      * @param csqs Market Parameters
  8646.      * @param vcp Valuation Customization Parameters
  8647.      * @param iWorkoutDate Work-out Date
  8648.      * @param dblWorkoutFactor Work-out Factor
  8649.      * @param dblASW ASW to Work-out
  8650.      *
  8651.      * @return J Spread from ASW to Work-out
  8652.      *
  8653.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  8654.      */

  8655.     public abstract double jSpreadFromASW (
  8656.         final org.drip.param.valuation.ValuationParams valParams,
  8657.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8658.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8659.         final int iWorkoutDate,
  8660.         final double dblWorkoutFactor,
  8661.         final double dblASW)
  8662.         throws java.lang.Exception;

  8663.     /**
  8664.      * Calculate J Spread from ASW to Maturity
  8665.      *
  8666.      * @param valParams Valuation Parameters
  8667.      * @param csqs Market Parameters
  8668.      * @param vcp Valuation Customization Parameters
  8669.      * @param dblASW ASW to Maturity
  8670.      *
  8671.      * @return J Spread from ASW to Maturity
  8672.      *
  8673.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8674.      */

  8675.     public abstract double jSpreadFromASW (
  8676.         final org.drip.param.valuation.ValuationParams valParams,
  8677.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8678.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8679.         final double dblASW)
  8680.         throws java.lang.Exception;

  8681.     /**
  8682.      * Calculate J Spread from ASW to Optimal Exercise
  8683.      *
  8684.      * @param valParams Valuation Parameters
  8685.      * @param csqs Market Parameters
  8686.      * @param vcp Valuation Customization Parameters
  8687.      * @param dblASW ASW to Optimal Exercise
  8688.      *
  8689.      * @return J Spread from ASW to Optimal Exercise
  8690.      *
  8691.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8692.      */

  8693.     public abstract double jSpreadFromASWToOptimalExercise (
  8694.         final org.drip.param.valuation.ValuationParams valParams,
  8695.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8696.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8697.         final double dblASW)
  8698.         throws java.lang.Exception;

  8699.     /**
  8700.      * Calculate J Spread from Bond Basis to Work-out
  8701.      *
  8702.      * @param valParams Valuation Parameters
  8703.      * @param csqs Market Parameters
  8704.      * @param vcp Valuation Customization Parameters
  8705.      * @param iWorkoutDate Work-out Date
  8706.      * @param dblWorkoutFactor Work-out Factor
  8707.      * @param dblBondBasis Bond Basis to Work-out
  8708.      *
  8709.      * @return J Spread from Bond Basis to Work-out
  8710.      *
  8711.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  8712.      */

  8713.     public abstract double jSpreadFromBondBasis (
  8714.         final org.drip.param.valuation.ValuationParams valParams,
  8715.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8716.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8717.         final int iWorkoutDate,
  8718.         final double dblWorkoutFactor,
  8719.         final double dblBondBasis)
  8720.         throws java.lang.Exception;

  8721.     /**
  8722.      * Calculate J Spread from Bond Basis to Maturity
  8723.      *
  8724.      * @param valParams Valuation Parameters
  8725.      * @param csqs Market Parameters
  8726.      * @param vcp Valuation Customization Parameters
  8727.      * @param dblBondBasis Bond Basis to Maturity
  8728.      *
  8729.      * @return J Spread from Bond Basis to Maturity
  8730.      *
  8731.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8732.      */

  8733.     public abstract double jSpreadFromBondBasis (
  8734.         final org.drip.param.valuation.ValuationParams valParams,
  8735.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8736.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8737.         final double dblBondBasis)
  8738.         throws java.lang.Exception;

  8739.     /**
  8740.      * Calculate J Spread from Bond Basis to Optimal Exercise
  8741.      *
  8742.      * @param valParams Valuation Parameters
  8743.      * @param csqs Market Parameters
  8744.      * @param vcp Valuation Customization Parameters
  8745.      * @param dblBondBasis Bond Basis to Optimal Exercise
  8746.      *
  8747.      * @return J Spread from Bond Basis to Optimal Exercise
  8748.      *
  8749.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8750.      */

  8751.     public abstract double jSpreadFromBondBasisToOptimalExercise (
  8752.         final org.drip.param.valuation.ValuationParams valParams,
  8753.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8754.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8755.         final double dblBondBasis)
  8756.         throws java.lang.Exception;

  8757.     /**
  8758.      * Calculate J Spread from Credit Basis to Work-out
  8759.      *
  8760.      * @param valParams Valuation Parameters
  8761.      * @param csqs Market Parameters
  8762.      * @param vcp Valuation Customization Parameters
  8763.      * @param iWorkoutDate Work-out Date
  8764.      * @param dblWorkoutFactor Work-out Factor
  8765.      * @param dblCreditBasis Credit Basis to Work-out
  8766.      *
  8767.      * @return J Spread from Credit Basis to Work-out
  8768.      *
  8769.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  8770.      */

  8771.     public abstract double jSpreadFromCreditBasis (
  8772.         final org.drip.param.valuation.ValuationParams valParams,
  8773.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8774.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8775.         final int iWorkoutDate,
  8776.         final double dblWorkoutFactor,
  8777.         final double dblCreditBasis)
  8778.         throws java.lang.Exception;

  8779.     /**
  8780.      * Calculate J Spread from Credit Basis to Maturity
  8781.      *
  8782.      * @param valParams Valuation Parameters
  8783.      * @param csqs Market Parameters
  8784.      * @param vcp Valuation Customization Parameters
  8785.      * @param dblCreditBasis Credit Basis to Maturity
  8786.      *
  8787.      * @return J Spread from Credit Basis to Maturity
  8788.      *
  8789.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8790.      */

  8791.     public abstract double jSpreadFromCreditBasis (
  8792.         final org.drip.param.valuation.ValuationParams valParams,
  8793.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8794.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8795.         final double dblCreditBasis)
  8796.         throws java.lang.Exception;

  8797.     /**
  8798.      * Calculate J Spread from Credit Basis to Optimal Exercise
  8799.      *
  8800.      * @param valParams Valuation Parameters
  8801.      * @param csqs Market Parameters
  8802.      * @param vcp Valuation Customization Parameters
  8803.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  8804.      *
  8805.      * @return J Spread from Credit Basis to Optimal Exercise
  8806.      *
  8807.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8808.      */

  8809.     public abstract double jSpreadFromCreditBasisToOptimalExercise (
  8810.         final org.drip.param.valuation.ValuationParams valParams,
  8811.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8812.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8813.         final double dblCreditBasis)
  8814.         throws java.lang.Exception;

  8815.     /**
  8816.      * Calculate J Spread from Discount Margin to Work-out
  8817.      *
  8818.      * @param valParams Valuation Parameters
  8819.      * @param csqs Market Parameters
  8820.      * @param vcp Valuation Customization Parameters
  8821.      * @param iWorkoutDate Work-out Date
  8822.      * @param dblWorkoutFactor Work-out Factor
  8823.      * @param dblDiscountMargin Discount Margin to Work-out
  8824.      *
  8825.      * @return J Spread from Discount Margin to Work-out
  8826.      *
  8827.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  8828.      */

  8829.     public abstract double jSpreadFromDiscountMargin (
  8830.         final org.drip.param.valuation.ValuationParams valParams,
  8831.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8832.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8833.         final int iWorkoutDate,
  8834.         final double dblWorkoutFactor,
  8835.         final double dblDiscountMargin)
  8836.         throws java.lang.Exception;

  8837.     /**
  8838.      * Calculate J Spread from Discount Margin to Maturity
  8839.      *
  8840.      * @param valParams Valuation Parameters
  8841.      * @param csqs Market Parameters
  8842.      * @param vcp Valuation Customization Parameters
  8843.      * @param dblDiscountMargin Discount Margin to Maturity
  8844.      *
  8845.      * @return J Spread from Discount Margin to Maturity
  8846.      *
  8847.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8848.      */

  8849.     public abstract double jSpreadFromDiscountMargin (
  8850.         final org.drip.param.valuation.ValuationParams valParams,
  8851.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8852.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8853.         final double dblDiscountMargin)
  8854.         throws java.lang.Exception;

  8855.     /**
  8856.      * Calculate J Spread from Discount Margin to Optimal Exercise
  8857.      *
  8858.      * @param valParams Valuation Parameters
  8859.      * @param csqs Market Parameters
  8860.      * @param vcp Valuation Customization Parameters
  8861.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  8862.      *
  8863.      * @return J Spread from Discount Margin to Optimal Exercise
  8864.      *
  8865.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8866.      */

  8867.     public abstract double jSpreadFromDiscountMarginToOptimalExercise (
  8868.         final org.drip.param.valuation.ValuationParams valParams,
  8869.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8870.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8871.         final double dblDiscountMargin)
  8872.         throws java.lang.Exception;

  8873.     /**
  8874.      * Calculate J Spread from E Spread to Work-out
  8875.      *
  8876.      * @param valParams Valuation Parameters
  8877.      * @param csqs Market Parameters
  8878.      * @param vcp Valuation Customization Parameters
  8879.      * @param iWorkoutDate Work-out Date
  8880.      * @param dblWorkoutFactor Work-out Factor
  8881.      * @param dblESpread E Spread to Work-out
  8882.      *
  8883.      * @return J Spread from E Spread to Work-out
  8884.      *
  8885.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  8886.      */

  8887.     public abstract double jSpreadFromESpread (
  8888.         final org.drip.param.valuation.ValuationParams valParams,
  8889.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8890.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8891.         final int iWorkoutDate,
  8892.         final double dblWorkoutFactor,
  8893.         final double dblESpread)
  8894.         throws java.lang.Exception;

  8895.     /**
  8896.      * Calculate J Spread from E Spread to Maturity
  8897.      *
  8898.      * @param valParams Valuation Parameters
  8899.      * @param csqs Market Parameters
  8900.      * @param vcp Valuation Customization Parameters
  8901.      * @param dblESpread E Spread to Maturity
  8902.      *
  8903.      * @return J Spread from E Spread to Maturity
  8904.      *
  8905.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8906.      */

  8907.     public abstract double jSpreadFromESpread (
  8908.         final org.drip.param.valuation.ValuationParams valParams,
  8909.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8910.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8911.         final double dblESpread)
  8912.         throws java.lang.Exception;

  8913.     /**
  8914.      * Calculate J Spread from E Spread to Optimal Exercise
  8915.      *
  8916.      * @param valParams Valuation Parameters
  8917.      * @param csqs Market Parameters
  8918.      * @param vcp Valuation Customization Parameters
  8919.      * @param dblESpread E Spread to Optimal Exercise
  8920.      *
  8921.      * @return J Spread from E Spread to Optimal Exercise
  8922.      *
  8923.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8924.      */

  8925.     public abstract double jSpreadFromESpreadToOptimalExercise (
  8926.         final org.drip.param.valuation.ValuationParams valParams,
  8927.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8928.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8929.         final double dblESpread)
  8930.         throws java.lang.Exception;

  8931.     /**
  8932.      * Calculate J Spread from G Spread to Work-out
  8933.      *
  8934.      * @param valParams Valuation Parameters
  8935.      * @param csqs Market Parameters
  8936.      * @param vcp Valuation Customization Parameters
  8937.      * @param iWorkoutDate Work-out Date
  8938.      * @param dblWorkoutFactor Work-out Factor
  8939.      * @param dblGSpread G Spread to Work-out
  8940.      *
  8941.      * @return J Spread from G Spread to Work-out
  8942.      *
  8943.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  8944.      */

  8945.     public abstract double jSpreadFromGSpread (
  8946.         final org.drip.param.valuation.ValuationParams valParams,
  8947.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8948.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8949.         final int iWorkoutDate,
  8950.         final double dblWorkoutFactor,
  8951.         final double dblGSpread)
  8952.         throws java.lang.Exception;

  8953.     /**
  8954.      * Calculate J Spread from G Spread to Maturity
  8955.      *
  8956.      * @param valParams Valuation Parameters
  8957.      * @param csqs Market Parameters
  8958.      * @param vcp Valuation Customization Parameters
  8959.      * @param dblGSpread G Spread to Maturity
  8960.      *
  8961.      * @return J Spread from G Spread to Maturity
  8962.      *
  8963.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8964.      */

  8965.     public abstract double jSpreadFromGSpread (
  8966.         final org.drip.param.valuation.ValuationParams valParams,
  8967.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8968.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8969.         final double dblGSpread)
  8970.         throws java.lang.Exception;

  8971.     /**
  8972.      * Calculate J Spread from G Spread to Optimal Exercise
  8973.      *
  8974.      * @param valParams Valuation Parameters
  8975.      * @param csqs Market Parameters
  8976.      * @param vcp Valuation Customization Parameters
  8977.      * @param dblGSpread G Spread to Optimal Exercise
  8978.      *
  8979.      * @return J Spread from G Spread to Optimal Exercise
  8980.      *
  8981.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  8982.      */

  8983.     public abstract double jSpreadFromGSpreadToOptimalExercise (
  8984.         final org.drip.param.valuation.ValuationParams valParams,
  8985.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  8986.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  8987.         final double dblGSpread)
  8988.         throws java.lang.Exception;

  8989.     /**
  8990.      * Calculate J Spread from I Spread to Work-out
  8991.      *
  8992.      * @param valParams Valuation Parameters
  8993.      * @param csqs Market Parameters
  8994.      * @param vcp Valuation Customization Parameters
  8995.      * @param iWorkoutDate Work-out Date
  8996.      * @param dblWorkoutFactor Work-out Factor
  8997.      * @param dblISpread I Spread to Work-out
  8998.      *
  8999.      * @return J Spread from I Spread to Work-out
  9000.      *
  9001.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9002.      */

  9003.     public abstract double jSpreadFromISpread (
  9004.         final org.drip.param.valuation.ValuationParams valParams,
  9005.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9006.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9007.         final int iWorkoutDate,
  9008.         final double dblWorkoutFactor,
  9009.         final double dblISpread)
  9010.         throws java.lang.Exception;

  9011.     /**
  9012.      * Calculate J Spread from I Spread to Maturity
  9013.      *
  9014.      * @param valParams Valuation Parameters
  9015.      * @param csqs Market Parameters
  9016.      * @param vcp Valuation Customization Parameters
  9017.      * @param dblISpread I Spread to Maturity
  9018.      *
  9019.      * @return J Spread from I Spread to Maturity
  9020.      *
  9021.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9022.      */

  9023.     public abstract double jSpreadFromISpread (
  9024.         final org.drip.param.valuation.ValuationParams valParams,
  9025.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9026.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9027.         final double dblISpread)
  9028.         throws java.lang.Exception;

  9029.     /**
  9030.      * Calculate J Spread from I Spread to Optimal Exercise
  9031.      *
  9032.      * @param valParams Valuation Parameters
  9033.      * @param csqs Market Parameters
  9034.      * @param vcp Valuation Customization Parameters
  9035.      * @param dblISpread I Spread to Optimal Exercise
  9036.      *
  9037.      * @return J Spread from I Spread to Optimal Exercise
  9038.      *
  9039.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9040.      */

  9041.     public abstract double jSpreadFromISpreadToOptimalExercise (
  9042.         final org.drip.param.valuation.ValuationParams valParams,
  9043.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9044.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9045.         final double dblISpread)
  9046.         throws java.lang.Exception;

  9047.     /**
  9048.      * Calculate J Spread from N Spread to Work-out
  9049.      *
  9050.      * @param valParams Valuation Parameters
  9051.      * @param csqs Market Parameters
  9052.      * @param vcp Valuation Customization Parameters
  9053.      * @param iWorkoutDate Work-out Date
  9054.      * @param dblWorkoutFactor Work-out Factor
  9055.      * @param dblNSpread N Spread to Work-out
  9056.      *
  9057.      * @return J Spread from N Spread to Work-out
  9058.      *
  9059.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9060.      */

  9061.     public abstract double jSpreadFromNSpread (
  9062.         final org.drip.param.valuation.ValuationParams valParams,
  9063.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9064.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9065.         final int iWorkoutDate,
  9066.         final double dblWorkoutFactor,
  9067.         final double dblNSpread)
  9068.         throws java.lang.Exception;

  9069.     /**
  9070.      * Calculate J Spread from N Spread to Maturity
  9071.      *
  9072.      * @param valParams Valuation Parameters
  9073.      * @param csqs Market Parameters
  9074.      * @param vcp Valuation Customization Parameters
  9075.      * @param dblNSpread N Spread to Maturity
  9076.      *
  9077.      * @return J Spread from N Spread to Maturity
  9078.      *
  9079.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9080.      */

  9081.     public abstract double jSpreadFromNSpread (
  9082.         final org.drip.param.valuation.ValuationParams valParams,
  9083.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9084.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9085.         final double dblNSpread)
  9086.         throws java.lang.Exception;

  9087.     /**
  9088.      * Calculate J Spread from N Spread to Optimal Exercise
  9089.      *
  9090.      * @param valParams Valuation Parameters
  9091.      * @param csqs Market Parameters
  9092.      * @param vcp Valuation Customization Parameters
  9093.      * @param dblNSpread N Spread to Optimal Exercise
  9094.      *
  9095.      * @return J Spread from N Spread to Optimal Exercise
  9096.      *
  9097.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  9098.      */

  9099.     public abstract double jSpreadFromNSpreadToOptimalExercise (
  9100.         final org.drip.param.valuation.ValuationParams valParams,
  9101.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9102.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9103.         final double dblNSpread)
  9104.         throws java.lang.Exception;

  9105.     /**
  9106.      * Calculate J Spread from OAS to Work-out
  9107.      *
  9108.      * @param valParams Valuation Parameters
  9109.      * @param csqs Market Parameters
  9110.      * @param vcp Valuation Customization Parameters
  9111.      * @param iWorkoutDate Work-out Date
  9112.      * @param dblWorkoutFactor Work-out Factor
  9113.      * @param dblOAS OAS to Work-out
  9114.      *
  9115.      * @return J Spread from OAS to Work-out
  9116.      *
  9117.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9118.      */

  9119.     public abstract double jSpreadFromOAS (
  9120.         final org.drip.param.valuation.ValuationParams valParams,
  9121.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9122.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9123.         final int iWorkoutDate,
  9124.         final double dblWorkoutFactor,
  9125.         final double dblOAS)
  9126.         throws java.lang.Exception;

  9127.     /**
  9128.      * Calculate J Spread from OAS to Maturity
  9129.      *
  9130.      * @param valParams Valuation Parameters
  9131.      * @param csqs Market Parameters
  9132.      * @param vcp Valuation Customization Parameters
  9133.      * @param dblOAS OAS to Maturity
  9134.      *
  9135.      * @return J Spread from OAS to Maturity
  9136.      *
  9137.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9138.      */

  9139.     public abstract double jSpreadFromOAS (
  9140.         final org.drip.param.valuation.ValuationParams valParams,
  9141.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9142.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9143.         final double dblOAS)
  9144.         throws java.lang.Exception;

  9145.     /**
  9146.      * Calculate J Spread from OAS to Optimal Exercise
  9147.      *
  9148.      * @param valParams Valuation Parameters
  9149.      * @param csqs Market Parameters
  9150.      * @param vcp Valuation Customization Parameters
  9151.      * @param dblOAS OAS to Optimal Exercise
  9152.      *
  9153.      * @return J Spread from OAS to Optimal Exercise
  9154.      *
  9155.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9156.      */

  9157.     public abstract double jSpreadFromOASToOptimalExercise (
  9158.         final org.drip.param.valuation.ValuationParams valParams,
  9159.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9160.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9161.         final double dblOAS)
  9162.         throws java.lang.Exception;

  9163.     /**
  9164.      * Calculate J Spread from PECS to Work-out
  9165.      *
  9166.      * @param valParams Valuation Parameters
  9167.      * @param csqs Market Parameters
  9168.      * @param vcp Valuation Customization Parameters
  9169.      * @param iWorkoutDate Work-out Date
  9170.      * @param dblWorkoutFactor Work-out Factor
  9171.      * @param dblPECS PECS to Work-out
  9172.      *
  9173.      * @return J Spread from PECS to Work-out
  9174.      *
  9175.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9176.      */

  9177.     public abstract double jSpreadFromPECS (
  9178.         final org.drip.param.valuation.ValuationParams valParams,
  9179.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9180.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9181.         final int iWorkoutDate,
  9182.         final double dblWorkoutFactor,
  9183.         final double dblPECS)
  9184.         throws java.lang.Exception;

  9185.     /**
  9186.      * Calculate J Spread from PECS to Maturity
  9187.      *
  9188.      * @param valParams Valuation Parameters
  9189.      * @param csqs Market Parameters
  9190.      * @param vcp Valuation Customization Parameters
  9191.      * @param dblPECS PECS to Maturity
  9192.      *
  9193.      * @return J Spread from PECS to Maturity
  9194.      *
  9195.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9196.      */

  9197.     public abstract double jSpreadFromPECS (
  9198.         final org.drip.param.valuation.ValuationParams valParams,
  9199.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9200.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9201.         final double dblPECS)
  9202.         throws java.lang.Exception;

  9203.     /**
  9204.      * Calculate J Spread from PECS to Optimal Exercise
  9205.      *
  9206.      * @param valParams Valuation Parameters
  9207.      * @param csqs Market Parameters
  9208.      * @param vcp Valuation Customization Parameters
  9209.      * @param dblPECS PECS to Optimal Exercise
  9210.      *
  9211.      * @return J Spread from PECS to Optimal Exercise
  9212.      *
  9213.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9214.      */

  9215.     public abstract double jSpreadFromPECSToOptimalExercise (
  9216.         final org.drip.param.valuation.ValuationParams valParams,
  9217.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9218.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9219.         final double dblPECS)
  9220.         throws java.lang.Exception;

  9221.     /**
  9222.      * Calculate J Spread from Price to Work-out
  9223.      *
  9224.      * @param valParams Valuation Parameters
  9225.      * @param csqs Market Parameters
  9226.      * @param vcp Valuation Customization Parameters
  9227.      * @param iWorkoutDate Work-out Date
  9228.      * @param dblWorkoutFactor Work-out Factor
  9229.      * @param dblPrice Price to Work-out
  9230.      *
  9231.      * @return J Spread from Price to Work-out
  9232.      *
  9233.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9234.      */

  9235.     public abstract double jSpreadFromPrice (
  9236.         final org.drip.param.valuation.ValuationParams valParams,
  9237.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9238.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9239.         final int iWorkoutDate,
  9240.         final double dblWorkoutFactor,
  9241.         final double dblPrice)
  9242.         throws java.lang.Exception;

  9243.     /**
  9244.      * Calculate J Spread from Price to Maturity
  9245.      *
  9246.      * @param valParams Valuation Parameters
  9247.      * @param csqs Market Parameters
  9248.      * @param vcp Valuation Customization Parameters
  9249.      * @param dblPrice Price to Maturity
  9250.      *
  9251.      * @return J Spread from Price to Maturity
  9252.      *
  9253.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9254.      */

  9255.     public abstract double jSpreadFromPrice (
  9256.         final org.drip.param.valuation.ValuationParams valParams,
  9257.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9258.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9259.         final double dblPrice)
  9260.         throws java.lang.Exception;

  9261.     /**
  9262.      * Calculate J Spread from Price to Optimal Exercise
  9263.      *
  9264.      * @param valParams Valuation Parameters
  9265.      * @param csqs Market Parameters
  9266.      * @param vcp Valuation Customization Parameters
  9267.      * @param dblPrice Price to Optimal Exercise
  9268.      *
  9269.      * @return J Spread from Price to Optimal Exercise
  9270.      *
  9271.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9272.      */

  9273.     public abstract double jSpreadFromPriceToOptimalExercise (
  9274.         final org.drip.param.valuation.ValuationParams valParams,
  9275.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9276.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9277.         final double dblPrice)
  9278.         throws java.lang.Exception;

  9279.     /**
  9280.      * Calculate J Spread from TSY Spread to Work-out
  9281.      *
  9282.      * @param valParams Valuation Parameters
  9283.      * @param csqs Market Parameters
  9284.      * @param vcp Valuation Customization Parameters
  9285.      * @param iWorkoutDate Work-out Date
  9286.      * @param dblWorkoutFactor Work-out Factor
  9287.      * @param dblTSYSpread TSY Spread to Work-out
  9288.      *
  9289.      * @return J Spread from TSY Spread to Work-out
  9290.      *
  9291.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9292.      */

  9293.     public abstract double jSpreadFromTSYSpread (
  9294.         final org.drip.param.valuation.ValuationParams valParams,
  9295.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9296.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9297.         final int iWorkoutDate,
  9298.         final double dblWorkoutFactor,
  9299.         final double dblTSYSpread)
  9300.         throws java.lang.Exception;

  9301.     /**
  9302.      * Calculate J Spread from TSY Spread to Maturity
  9303.      *
  9304.      * @param valParams Valuation Parameters
  9305.      * @param csqs Market Parameters
  9306.      * @param vcp Valuation Customization Parameters
  9307.      * @param dblTSYSpread TSY Spread to Maturity
  9308.      *
  9309.      * @return J Spread from TSY Spread to Maturity
  9310.      *
  9311.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9312.      */

  9313.     public abstract double jSpreadFromTSYSpread (
  9314.         final org.drip.param.valuation.ValuationParams valParams,
  9315.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9316.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9317.         final double dblTSYSpread)
  9318.         throws java.lang.Exception;

  9319.     /**
  9320.      * Calculate J Spread from TSY Spread to Optimal Exercise
  9321.      *
  9322.      * @param valParams Valuation Parameters
  9323.      * @param csqs Market Parameters
  9324.      * @param vcp Valuation Customization Parameters
  9325.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  9326.      *
  9327.      * @return J Spread from TSY Spread to Optimal Exercise
  9328.      *
  9329.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9330.      */

  9331.     public abstract double jSpreadFromTSYSpreadToOptimalExercise (
  9332.         final org.drip.param.valuation.ValuationParams valParams,
  9333.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9334.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9335.         final double dblTSYSpread)
  9336.         throws java.lang.Exception;

  9337.     /**
  9338.      * Calculate J Spread from Yield to Work-out
  9339.      *
  9340.      * @param valParams Valuation Parameters
  9341.      * @param csqs Market Parameters
  9342.      * @param vcp Valuation Customization Parameters
  9343.      * @param iWorkoutDate Work-out Date
  9344.      * @param dblWorkoutFactor Work-out Factor
  9345.      * @param dblYield Yield to Work-out
  9346.      *
  9347.      * @return J Spread from Yield to Work-out
  9348.      *
  9349.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9350.      */

  9351.     public abstract double jSpreadFromYield (
  9352.         final org.drip.param.valuation.ValuationParams valParams,
  9353.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9354.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9355.         final int iWorkoutDate,
  9356.         final double dblWorkoutFactor,
  9357.         final double dblYield)
  9358.         throws java.lang.Exception;

  9359.     /**
  9360.      * Calculate J Spread from Yield to Maturity
  9361.      *
  9362.      * @param valParams Valuation Parameters
  9363.      * @param csqs Market Parameters
  9364.      * @param vcp Valuation Customization Parameters
  9365.      * @param dblYield Yield to Maturity
  9366.      *
  9367.      * @return J Spread from Yield to Maturity
  9368.      *
  9369.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9370.      */

  9371.     public abstract double jSpreadFromYield (
  9372.         final org.drip.param.valuation.ValuationParams valParams,
  9373.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9374.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9375.         final double dblYield)
  9376.         throws java.lang.Exception;

  9377.     /**
  9378.      * Calculate J Spread from Yield to Optimal Exercise
  9379.      *
  9380.      * @param valParams Valuation Parameters
  9381.      * @param csqs Market Parameters
  9382.      * @param vcp Valuation Customization Parameters
  9383.      * @param dblYield Yield to Optimal Exercise
  9384.      *
  9385.      * @return J Spread from Yield to Optimal Exercise
  9386.      *
  9387.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9388.      */

  9389.     public abstract double jSpreadFromYieldToOptimalExercise (
  9390.         final org.drip.param.valuation.ValuationParams valParams,
  9391.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9392.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9393.         final double dblYield)
  9394.         throws java.lang.Exception;

  9395.     /**
  9396.      * Calculate J Spread from Yield Spread to Work-out
  9397.      *
  9398.      * @param valParams Valuation Parameters
  9399.      * @param csqs Market Parameters
  9400.      * @param vcp Valuation Customization Parameters
  9401.      * @param iWorkoutDate Work-out Date
  9402.      * @param dblWorkoutFactor Work-out Factor
  9403.      * @param dblYieldSpread Yield Spread to Work-out
  9404.      *
  9405.      * @return J Spread from Yield Spread to Work-out
  9406.      *
  9407.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9408.      */

  9409.     public abstract double jSpreadFromYieldSpread (
  9410.         final org.drip.param.valuation.ValuationParams valParams,
  9411.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9412.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9413.         final int iWorkoutDate,
  9414.         final double dblWorkoutFactor,
  9415.         final double dblYieldSpread)
  9416.         throws java.lang.Exception;

  9417.     /**
  9418.      * Calculate J Spread from Yield Spread to Maturity
  9419.      *
  9420.      * @param valParams Valuation Parameters
  9421.      * @param csqs Market Parameters
  9422.      * @param vcp Valuation Customization Parameters
  9423.      * @param dblYieldSpread Yield Spread to Maturity
  9424.      *
  9425.      * @return J Spread from Yield Spread to Maturity
  9426.      *
  9427.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9428.      */

  9429.     public abstract double jSpreadFromYieldSpread (
  9430.         final org.drip.param.valuation.ValuationParams valParams,
  9431.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9432.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9433.         final double dblYieldSpread)
  9434.         throws java.lang.Exception;

  9435.     /**
  9436.      * Calculate J Spread from Yield Spread to Optimal Exercise
  9437.      *
  9438.      * @param valParams Valuation Parameters
  9439.      * @param csqs Market Parameters
  9440.      * @param vcp Valuation Customization Parameters
  9441.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  9442.      *
  9443.      * @return J Spread from Yield Spread to Optimal Exercise
  9444.      *
  9445.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9446.      */

  9447.     public abstract double jSpreadFromYieldSpreadToOptimalExercise (
  9448.         final org.drip.param.valuation.ValuationParams valParams,
  9449.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9450.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9451.         final double dblYieldSpread)
  9452.         throws java.lang.Exception;

  9453.     /**
  9454.      * Calculate J Spread from Z Spread to Work-out
  9455.      *
  9456.      * @param valParams Valuation Parameters
  9457.      * @param csqs Market Parameters
  9458.      * @param vcp Valuation Customization Parameters
  9459.      * @param iWorkoutDate Work-out Date
  9460.      * @param dblWorkoutFactor Work-out Factor
  9461.      * @param dblZSpread Z Spread to Work-out
  9462.      *
  9463.      * @return J Spread from Z Spread to Work-out
  9464.      *
  9465.      * @throws java.lang.Exception Thrown if the J Spread cannot be calculated
  9466.      */

  9467.     public abstract double jSpreadFromZSpread (
  9468.         final org.drip.param.valuation.ValuationParams valParams,
  9469.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9470.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9471.         final int iWorkoutDate,
  9472.         final double dblWorkoutFactor,
  9473.         final double dblZSpread)
  9474.         throws java.lang.Exception;

  9475.     /**
  9476.      * Calculate J Spread from Z Spread to Maturity
  9477.      *
  9478.      * @param valParams Valuation Parameters
  9479.      * @param csqs Market Parameters
  9480.      * @param vcp Valuation Customization Parameters
  9481.      * @param dblZSpread Z Spread to Maturity
  9482.      *
  9483.      * @return J Spread from Z Spread to Maturity
  9484.      *
  9485.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9486.      */

  9487.     public abstract double jSpreadFromZSpread (
  9488.         final org.drip.param.valuation.ValuationParams valParams,
  9489.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9490.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9491.         final double dblZSpread)
  9492.         throws java.lang.Exception;

  9493.     /**
  9494.      * Calculate J Spread from Z Spread to Optimal Exercise
  9495.      *
  9496.      * @param valParams Valuation Parameters
  9497.      * @param csqs Market Parameters
  9498.      * @param vcp Valuation Customization Parameters
  9499.      * @param dblZSpread Z Spread to Optimal Exercise
  9500.      *
  9501.      * @return J Spread from Z Spread to Optimal Exercise
  9502.      *
  9503.      * @throws java.lang.Exception Thrown if J Spread cannot be calculated
  9504.      */

  9505.     public abstract double jSpreadFromZSpreadToOptimalExercise (
  9506.         final org.drip.param.valuation.ValuationParams valParams,
  9507.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9508.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9509.         final double dblZSpread)
  9510.         throws java.lang.Exception;

  9511.     /**
  9512.      * Calculate Macaulay Duration from ASW to Work-out
  9513.      *
  9514.      * @param valParams Valuation Parameters
  9515.      * @param csqs Market Parameters
  9516.      * @param vcp Valuation Customization Parameters
  9517.      * @param iWorkoutDate Work-out Date
  9518.      * @param dblWorkoutFactor Work-out Factor
  9519.      * @param dblASW ASW to Work-out
  9520.      *
  9521.      * @return Macaulay Duration from ASW to Work-out
  9522.      *
  9523.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9524.      */

  9525.     public abstract double macaulayDurationFromASW (
  9526.         final org.drip.param.valuation.ValuationParams valParams,
  9527.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9528.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9529.         final int iWorkoutDate,
  9530.         final double dblWorkoutFactor,
  9531.         final double dblASW)
  9532.         throws java.lang.Exception;

  9533.     /**
  9534.      * Calculate Macaulay Duration from ASW to Maturity
  9535.      *
  9536.      * @param valParams Valuation Parameters
  9537.      * @param csqs Market Parameters
  9538.      * @param vcp Valuation Customization Parameters
  9539.      * @param dblASW ASW to Maturity
  9540.      *
  9541.      * @return Macaulay Duration from ASW to Maturity
  9542.      *
  9543.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9544.      */

  9545.     public abstract double macaulayDurationFromASW (
  9546.         final org.drip.param.valuation.ValuationParams valParams,
  9547.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9548.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9549.         final double dblASW)
  9550.         throws java.lang.Exception;

  9551.     /**
  9552.      * Calculate Macaulay Duration from ASW to Optimal Exercise
  9553.      *
  9554.      * @param valParams Valuation Parameters
  9555.      * @param csqs Market Parameters
  9556.      * @param vcp Valuation Customization Parameters
  9557.      * @param dblASW ASW to Optimal Exercise
  9558.      *
  9559.      * @return Macaulay Duration from ASW to Optimal Exercise
  9560.      *
  9561.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9562.      */

  9563.     public abstract double macaulayDurationFromASWToOptimalExercise (
  9564.         final org.drip.param.valuation.ValuationParams valParams,
  9565.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9566.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9567.         final double dblASW)
  9568.         throws java.lang.Exception;

  9569.     /**
  9570.      * Calculate Macaulay Duration from Bond Basis to Work-out
  9571.      *
  9572.      * @param valParams Valuation Parameters
  9573.      * @param csqs Market Parameters
  9574.      * @param vcp Valuation Customization Parameters
  9575.      * @param iWorkoutDate Work-out Date
  9576.      * @param dblWorkoutFactor Work-out Factor
  9577.      * @param dblBondBasis Bond Basis to Work-out
  9578.      *
  9579.      * @return Macaulay Duration from Bond Basis to Work-out
  9580.      *
  9581.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9582.      */

  9583.     public abstract double macaulayDurationFromBondBasis (
  9584.         final org.drip.param.valuation.ValuationParams valParams,
  9585.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9586.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9587.         final int iWorkoutDate,
  9588.         final double dblWorkoutFactor,
  9589.         final double dblBondBasis)
  9590.         throws java.lang.Exception;

  9591.     /**
  9592.      * Calculate Macaulay Duration from Bond Basis to Maturity
  9593.      *
  9594.      * @param valParams Valuation Parameters
  9595.      * @param csqs Market Parameters
  9596.      * @param vcp Valuation Customization Parameters
  9597.      * @param dblBondBasis Bond Basis to Maturity
  9598.      *
  9599.      * @return Macaulay Duration from Bond Basis to Maturity
  9600.      *
  9601.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9602.      */

  9603.     public abstract double macaulayDurationFromBondBasis (
  9604.         final org.drip.param.valuation.ValuationParams valParams,
  9605.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9606.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9607.         final double dblBondBasis)
  9608.         throws java.lang.Exception;

  9609.     /**
  9610.      * Calculate Macaulay Duration from Bond Basis to Optimal Exercise
  9611.      *
  9612.      * @param valParams Valuation Parameters
  9613.      * @param csqs Market Parameters
  9614.      * @param vcp Valuation Customization Parameters
  9615.      * @param dblBondBasis Bond Basis to Optimal Exercise
  9616.      *
  9617.      * @return Macaulay Duration from Bond Basis to Optimal Exercise
  9618.      *
  9619.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9620.      */

  9621.     public abstract double macaulayDurationFromBondBasisToOptimalExercise (
  9622.         final org.drip.param.valuation.ValuationParams valParams,
  9623.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9624.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9625.         final double dblBondBasis)
  9626.         throws java.lang.Exception;

  9627.     /**
  9628.      * Calculate Macaulay Duration from Credit Basis to Work-out
  9629.      *
  9630.      * @param valParams Valuation Parameters
  9631.      * @param csqs Market Parameters
  9632.      * @param vcp Valuation Customization Parameters
  9633.      * @param iWorkoutDate Work-out Date
  9634.      * @param dblWorkoutFactor Work-out Factor
  9635.      * @param dblCreditBasis Credit Basis to Work-out
  9636.      *
  9637.      * @return Macaulay Duration from Credit Basis to Work-out
  9638.      *
  9639.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9640.      */

  9641.     public abstract double macaulayDurationFromCreditBasis (
  9642.         final org.drip.param.valuation.ValuationParams valParams,
  9643.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9644.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9645.         final int iWorkoutDate,
  9646.         final double dblWorkoutFactor,
  9647.         final double dblCreditBasis)
  9648.         throws java.lang.Exception;

  9649.     /**
  9650.      * Calculate Macaulay Duration from Credit Basis to Maturity
  9651.      *
  9652.      * @param valParams Valuation Parameters
  9653.      * @param csqs Market Parameters
  9654.      * @param vcp Valuation Customization Parameters
  9655.      * @param dblCreditBasis Credit Basis to Maturity
  9656.      *
  9657.      * @return Macaulay Duration from Credit Basis to Maturity
  9658.      *
  9659.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9660.      */

  9661.     public abstract double macaulayDurationFromCreditBasis (
  9662.         final org.drip.param.valuation.ValuationParams valParams,
  9663.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9664.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9665.         final double dblCreditBasis)
  9666.         throws java.lang.Exception;

  9667.     /**
  9668.      * Calculate Macaulay Duration from Credit Basis to Optimal Exercise
  9669.      *
  9670.      * @param valParams Valuation Parameters
  9671.      * @param csqs Market Parameters
  9672.      * @param vcp Valuation Customization Parameters
  9673.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  9674.      *
  9675.      * @return Macaulay Duration from Credit Basis to Optimal Exercise
  9676.      *
  9677.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9678.      */

  9679.     public abstract double macaulayDurationFromCreditBasisToOptimalExercise (
  9680.         final org.drip.param.valuation.ValuationParams valParams,
  9681.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9682.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9683.         final double dblCreditBasis)
  9684.         throws java.lang.Exception;

  9685.     /**
  9686.      * Calculate Macaulay Duration from Discount Margin to Work-out
  9687.      *
  9688.      * @param valParams Valuation Parameters
  9689.      * @param csqs Market Parameters
  9690.      * @param vcp Valuation Customization Parameters
  9691.      * @param iWorkoutDate Work-out Date
  9692.      * @param dblWorkoutFactor Work-out Factor
  9693.      * @param dblDiscountMargin Discount Margin to Work-out
  9694.      *
  9695.      * @return Macaulay Duration from Discount Margin to Work-out
  9696.      *
  9697.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9698.      */

  9699.     public abstract double macaulayDurationFromDiscountMargin (
  9700.         final org.drip.param.valuation.ValuationParams valParams,
  9701.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9702.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9703.         final int iWorkoutDate,
  9704.         final double dblWorkoutFactor,
  9705.         final double dblDiscountMargin)
  9706.         throws java.lang.Exception;

  9707.     /**
  9708.      * Calculate Macaulay Duration from Discount Margin to Maturity
  9709.      *
  9710.      * @param valParams Valuation Parameters
  9711.      * @param csqs Market Parameters
  9712.      * @param vcp Valuation Customization Parameters
  9713.      * @param dblDiscountMargin Discount Margin to Maturity
  9714.      *
  9715.      * @return Macaulay Duration from Discount Margin to Maturity
  9716.      *
  9717.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9718.      */

  9719.     public abstract double macaulayDurationFromDiscountMargin (
  9720.         final org.drip.param.valuation.ValuationParams valParams,
  9721.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9722.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9723.         final double dblDiscountMargin)
  9724.         throws java.lang.Exception;

  9725.     /**
  9726.      * Calculate Macaulay Duration from Discount Margin to Optimal Exercise
  9727.      *
  9728.      * @param valParams Valuation Parameters
  9729.      * @param csqs Market Parameters
  9730.      * @param vcp Valuation Customization Parameters
  9731.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  9732.      *
  9733.      * @return Macaulay Duration from Discount Margin to Optimal Exercise
  9734.      *
  9735.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9736.      */

  9737.     public abstract double macaulayDurationFromDiscountMarginToOptimalExercise (
  9738.         final org.drip.param.valuation.ValuationParams valParams,
  9739.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9740.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9741.         final double dblDiscountMargin)
  9742.         throws java.lang.Exception;

  9743.     /**
  9744.      * Calculate Macaulay Duration from E Spread to Work-out
  9745.      *
  9746.      * @param valParams Valuation Parameters
  9747.      * @param csqs Market Parameters
  9748.      * @param vcp Valuation Customization Parameters
  9749.      * @param iWorkoutDate Work-out Date
  9750.      * @param dblWorkoutFactor Work-out Factor
  9751.      * @param dblESpread E Spread to Work-out
  9752.      *
  9753.      * @return Macaulay Duration from E Spread to Work-out
  9754.      *
  9755.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9756.      */

  9757.     public abstract double macaulayDurationFromESpread (
  9758.         final org.drip.param.valuation.ValuationParams valParams,
  9759.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9760.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9761.         final int iWorkoutDate,
  9762.         final double dblWorkoutFactor,
  9763.         final double dblESpread)
  9764.         throws java.lang.Exception;

  9765.     /**
  9766.      * Calculate Macaulay Duration from E Spread to Maturity
  9767.      *
  9768.      * @param valParams Valuation Parameters
  9769.      * @param csqs Market Parameters
  9770.      * @param vcp Valuation Customization Parameters
  9771.      * @param dblESpread E Spread to Maturity
  9772.      *
  9773.      * @return Macaulay Duration from E Spread to Maturity
  9774.      *
  9775.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9776.      */

  9777.     public abstract double macaulayDurationFromESpread (
  9778.         final org.drip.param.valuation.ValuationParams valParams,
  9779.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9780.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9781.         final double dblESpread)
  9782.         throws java.lang.Exception;

  9783.     /**
  9784.      * Calculate Macaulay Duration from E Spread to Optimal Exercise
  9785.      *
  9786.      * @param valParams Valuation Parameters
  9787.      * @param csqs Market Parameters
  9788.      * @param vcp Valuation Customization Parameters
  9789.      * @param dblESpread E Spread to Optimal Exercise
  9790.      *
  9791.      * @return Macaulay Duration from E Spread to Optimal Exercise
  9792.      *
  9793.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9794.      */

  9795.     public abstract double macaulayDurationFromESpreadToOptimalExercise (
  9796.         final org.drip.param.valuation.ValuationParams valParams,
  9797.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9798.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9799.         final double dblESpread)
  9800.         throws java.lang.Exception;

  9801.     /**
  9802.      * Calculate Macaulay Duration from G Spread to Work-out
  9803.      *
  9804.      * @param valParams Valuation Parameters
  9805.      * @param csqs Market Parameters
  9806.      * @param vcp Valuation Customization Parameters
  9807.      * @param iWorkoutDate Work-out Date
  9808.      * @param dblWorkoutFactor Work-out Factor
  9809.      * @param dblGSpread G Spread to Work-out
  9810.      *
  9811.      * @return Macaulay Duration from G Spread to Work-out
  9812.      *
  9813.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9814.      */

  9815.     public abstract double macaulayDurationFromGSpread (
  9816.         final org.drip.param.valuation.ValuationParams valParams,
  9817.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9818.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9819.         final int iWorkoutDate,
  9820.         final double dblWorkoutFactor,
  9821.         final double dblGSpread)
  9822.         throws java.lang.Exception;

  9823.     /**
  9824.      * Calculate Macaulay Duration from G Spread to Maturity
  9825.      *
  9826.      * @param valParams Valuation Parameters
  9827.      * @param csqs Market Parameters
  9828.      * @param vcp Valuation Customization Parameters
  9829.      * @param dblGSpread G Spread to Maturity
  9830.      *
  9831.      * @return Macaulay Duration from G Spread to Maturity
  9832.      *
  9833.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9834.      */

  9835.     public abstract double macaulayDurationFromGSpread (
  9836.         final org.drip.param.valuation.ValuationParams valParams,
  9837.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9838.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9839.         final double dblGSpread)
  9840.         throws java.lang.Exception;

  9841.     /**
  9842.      * Calculate Macaulay Duration from G Spread to Optimal Exercise
  9843.      *
  9844.      * @param valParams Valuation Parameters
  9845.      * @param csqs Market Parameters
  9846.      * @param vcp Valuation Customization Parameters
  9847.      * @param dblGSpread G Spread to Optimal Exercise
  9848.      *
  9849.      * @return Macaulay Duration from G Spread to Optimal Exercise
  9850.      *
  9851.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9852.      */

  9853.     public abstract double macaulayDurationFromGSpreadToOptimalExercise (
  9854.         final org.drip.param.valuation.ValuationParams valParams,
  9855.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9856.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9857.         final double dblGSpread)
  9858.         throws java.lang.Exception;

  9859.     /**
  9860.      * Calculate Macaulay Duration from I Spread to Work-out
  9861.      *
  9862.      * @param valParams Valuation Parameters
  9863.      * @param csqs Market Parameters
  9864.      * @param vcp Valuation Customization Parameters
  9865.      * @param iWorkoutDate Work-out Date
  9866.      * @param dblWorkoutFactor Work-out Factor
  9867.      * @param dblISpread I Spread to Work-out
  9868.      *
  9869.      * @return Macaulay Duration from I Spread to Work-out
  9870.      *
  9871.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9872.      */

  9873.     public abstract double macaulayDurationFromISpread (
  9874.         final org.drip.param.valuation.ValuationParams valParams,
  9875.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9876.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9877.         final int iWorkoutDate,
  9878.         final double dblWorkoutFactor,
  9879.         final double dblISpread)
  9880.         throws java.lang.Exception;

  9881.     /**
  9882.      * Calculate Macaulay Duration from I Spread to Maturity
  9883.      *
  9884.      * @param valParams Valuation Parameters
  9885.      * @param csqs Market Parameters
  9886.      * @param vcp Valuation Customization Parameters
  9887.      * @param dblISpread I Spread to Maturity
  9888.      *
  9889.      * @return Macaulay Duration from I Spread to Maturity
  9890.      *
  9891.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9892.      */

  9893.     public abstract double macaulayDurationFromISpread (
  9894.         final org.drip.param.valuation.ValuationParams valParams,
  9895.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9896.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9897.         final double dblISpread)
  9898.         throws java.lang.Exception;

  9899.     /**
  9900.      * Calculate Macaulay Duration from I Spread to Optimal Exercise
  9901.      *
  9902.      * @param valParams Valuation Parameters
  9903.      * @param csqs Market Parameters
  9904.      * @param vcp Valuation Customization Parameters
  9905.      * @param dblISpread I Spread to Optimal Exercise
  9906.      *
  9907.      * @return Macaulay Duration from I Spread to Optimal Exercise
  9908.      *
  9909.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9910.      */

  9911.     public abstract double macaulayDurationFromISpreadToOptimalExercise (
  9912.         final org.drip.param.valuation.ValuationParams valParams,
  9913.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9914.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9915.         final double dblISpread)
  9916.         throws java.lang.Exception;

  9917.     /**
  9918.      * Calculate Macaulay Duration from J Spread to Work-out
  9919.      *
  9920.      * @param valParams Valuation Parameters
  9921.      * @param csqs Market Parameters
  9922.      * @param vcp Valuation Customization Parameters
  9923.      * @param iWorkoutDate Work-out Date
  9924.      * @param dblWorkoutFactor Work-out Factor
  9925.      * @param dblJSpread J Spread to Work-out
  9926.      *
  9927.      * @return Macaulay Duration from J Spread to Work-out
  9928.      *
  9929.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9930.      */

  9931.     public abstract double macaulayDurationFromJSpread (
  9932.         final org.drip.param.valuation.ValuationParams valParams,
  9933.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9934.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9935.         final int iWorkoutDate,
  9936.         final double dblWorkoutFactor,
  9937.         final double dblJSpread)
  9938.         throws java.lang.Exception;

  9939.     /**
  9940.      * Calculate Macaulay Duration from J Spread to Maturity
  9941.      *
  9942.      * @param valParams Valuation Parameters
  9943.      * @param csqs Market Parameters
  9944.      * @param vcp Valuation Customization Parameters
  9945.      * @param dblJSpread J Spread to Maturity
  9946.      *
  9947.      * @return Macaulay Duration from J Spread to Maturity
  9948.      *
  9949.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9950.      */

  9951.     public abstract double macaulayDurationFromJSpread (
  9952.         final org.drip.param.valuation.ValuationParams valParams,
  9953.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9954.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9955.         final double dblJSpread)
  9956.         throws java.lang.Exception;

  9957.     /**
  9958.      * Calculate Macaulay Duration from J Spread to Optimal Exercise
  9959.      *
  9960.      * @param valParams Valuation Parameters
  9961.      * @param csqs Market Parameters
  9962.      * @param vcp Valuation Customization Parameters
  9963.      * @param dblJSpread J Spread to Optimal Exercise
  9964.      *
  9965.      * @return Macaulay Duration from J Spread to Optimal Exercise
  9966.      *
  9967.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9968.      */

  9969.     public abstract double macaulayDurationFromJSpreadToOptimalExercise (
  9970.         final org.drip.param.valuation.ValuationParams valParams,
  9971.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9972.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9973.         final double dblJSpread)
  9974.         throws java.lang.Exception;

  9975.     /**
  9976.      * Calculate Macaulay Duration from N Spread to Work-out
  9977.      *
  9978.      * @param valParams Valuation Parameters
  9979.      * @param csqs Market Parameters
  9980.      * @param vcp Valuation Customization Parameters
  9981.      * @param iWorkoutDate Work-out Date
  9982.      * @param dblWorkoutFactor Work-out Factor
  9983.      * @param dblNSpread N Spread to Work-out
  9984.      *
  9985.      * @return Macaulay Duration from N Spread to Work-out
  9986.      *
  9987.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  9988.      */

  9989.     public abstract double macaulayDurationFromNSpread (
  9990.         final org.drip.param.valuation.ValuationParams valParams,
  9991.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  9992.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  9993.         final int iWorkoutDate,
  9994.         final double dblWorkoutFactor,
  9995.         final double dblNSpread)
  9996.         throws java.lang.Exception;

  9997.     /**
  9998.      * Calculate Macaulay Duration from N Spread to Maturity
  9999.      *
  10000.      * @param valParams Valuation Parameters
  10001.      * @param csqs Market Parameters
  10002.      * @param vcp Valuation Customization Parameters
  10003.      * @param dblNSpread N Spread to Maturity
  10004.      *
  10005.      * @return Macaulay Duration from N Spread to Maturity
  10006.      *
  10007.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10008.      */

  10009.     public abstract double macaulayDurationFromNSpread (
  10010.         final org.drip.param.valuation.ValuationParams valParams,
  10011.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10012.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10013.         final double dblNSpread)
  10014.         throws java.lang.Exception;

  10015.     /**
  10016.      * Calculate Macaulay Duration from N Spread to Optimal Exercise
  10017.      *
  10018.      * @param valParams Valuation Parameters
  10019.      * @param csqs Market Parameters
  10020.      * @param vcp Valuation Customization Parameters
  10021.      * @param dblNSpread N Spread to Optimal Exercise
  10022.      *
  10023.      * @return Macaulay Duration from N Spread to Optimal Exercise
  10024.      *
  10025.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10026.      */

  10027.     public abstract double macaulayDurationFromNSpreadToOptimalExercise (
  10028.         final org.drip.param.valuation.ValuationParams valParams,
  10029.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10030.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10031.         final double dblNSpread)
  10032.         throws java.lang.Exception;

  10033.     /**
  10034.      * Calculate Macaulay Duration from OAS to Work-out
  10035.      *
  10036.      * @param valParams Valuation Parameters
  10037.      * @param csqs Market Parameters
  10038.      * @param vcp Valuation Customization Parameters
  10039.      * @param iWorkoutDate Work-out Date
  10040.      * @param dblWorkoutFactor Work-out Factor
  10041.      * @param dblOAS OAS to Work-out
  10042.      *
  10043.      * @return Macaulay Duration from OAS to Work-out
  10044.      *
  10045.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10046.      */

  10047.     public abstract double macaulayDurationFromOAS (
  10048.         final org.drip.param.valuation.ValuationParams valParams,
  10049.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10050.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10051.         final int iWorkoutDate,
  10052.         final double dblWorkoutFactor,
  10053.         final double dblOAS)
  10054.         throws java.lang.Exception;

  10055.     /**
  10056.      * Calculate Macaulay Duration from OAS to Maturity
  10057.      *
  10058.      * @param valParams Valuation Parameters
  10059.      * @param csqs Market Parameters
  10060.      * @param vcp Valuation Customization Parameters
  10061.      * @param dblOAS OAS to Maturity
  10062.      *
  10063.      * @return Macaulay Duration from OAS to Maturity
  10064.      *
  10065.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10066.      */

  10067.     public abstract double macaulayDurationFromOAS (
  10068.         final org.drip.param.valuation.ValuationParams valParams,
  10069.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10070.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10071.         final double dblOAS)
  10072.         throws java.lang.Exception;

  10073.     /**
  10074.      * Calculate Macaulay Duration from OAS to Optimal Exercise
  10075.      *
  10076.      * @param valParams Valuation Parameters
  10077.      * @param csqs Market Parameters
  10078.      * @param vcp Valuation Customization Parameters
  10079.      * @param dblOAS OAS to Optimal Exercise
  10080.      *
  10081.      * @return Macaulay Duration from OAS to Optimal Exercise
  10082.      *
  10083.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10084.      */

  10085.     public abstract double mnacaulayDurationFromOASToOptimalExercise (
  10086.         final org.drip.param.valuation.ValuationParams valParams,
  10087.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10088.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10089.         final double dblOAS)
  10090.         throws java.lang.Exception;

  10091.     /**
  10092.      * Calculate Macaulay Duration from PECS to Work-out
  10093.      *
  10094.      * @param valParams Valuation Parameters
  10095.      * @param csqs Market Parameters
  10096.      * @param vcp Valuation Customization Parameters
  10097.      * @param iWorkoutDate Work-out Date
  10098.      * @param dblWorkoutFactor Work-out Factor
  10099.      * @param dblPECS PECS to Work-out
  10100.      *
  10101.      * @return Macaulay Duration from PECS to Work-out
  10102.      *
  10103.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10104.      */

  10105.     public abstract double macaulayDurationFromPECS (
  10106.         final org.drip.param.valuation.ValuationParams valParams,
  10107.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10108.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10109.         final int iWorkoutDate,
  10110.         final double dblWorkoutFactor,
  10111.         final double dblPECS)
  10112.         throws java.lang.Exception;

  10113.     /**
  10114.      * Calculate Macaulay Duration from PECS to Maturity
  10115.      *
  10116.      * @param valParams Valuation Parameters
  10117.      * @param csqs Market Parameters
  10118.      * @param vcp Valuation Customization Parameters
  10119.      * @param dblPECS PECS to Maturity
  10120.      *
  10121.      * @return Macaulay Duration from PECS to Maturity
  10122.      *
  10123.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10124.      */

  10125.     public abstract double macaulayDurationFromPECS (
  10126.         final org.drip.param.valuation.ValuationParams valParams,
  10127.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10128.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10129.         final double dblPECS)
  10130.         throws java.lang.Exception;

  10131.     /**
  10132.      * Calculate Macaulay Duration from PECS to Optimal Exercise
  10133.      *
  10134.      * @param valParams Valuation Parameters
  10135.      * @param csqs Market Parameters
  10136.      * @param vcp Valuation Customization Parameters
  10137.      * @param dblPECS PECS to Optimal Exercise
  10138.      *
  10139.      * @return Macaulay Duration from PECS to Optimal Exercise
  10140.      *
  10141.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10142.      */

  10143.     public abstract double macaulayDurationFromPECSToOptimalExercise (
  10144.         final org.drip.param.valuation.ValuationParams valParams,
  10145.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10146.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10147.         final double dblPECS)
  10148.         throws java.lang.Exception;

  10149.     /**
  10150.      * Calculate Macaulay Duration from Price to Work-out
  10151.      *
  10152.      * @param valParams Valuation Parameters
  10153.      * @param csqs Market Parameters
  10154.      * @param vcp Valuation Customization Parameters
  10155.      * @param iWorkoutDate Work-out Date
  10156.      * @param dblWorkoutFactor Work-out Factor
  10157.      * @param dblPrice Price to Work-out
  10158.      *
  10159.      * @return Macaulay Duration from Price to Work-out
  10160.      *
  10161.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10162.      */

  10163.     public abstract double macaulayDurationFromPrice (
  10164.         final org.drip.param.valuation.ValuationParams valParams,
  10165.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10166.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10167.         final int iWorkoutDate,
  10168.         final double dblWorkoutFactor,
  10169.         final double dblPrice)
  10170.         throws java.lang.Exception;

  10171.     /**
  10172.      * Calculate Macaulay Duration from Price to Maturity
  10173.      *
  10174.      * @param valParams Valuation Parameters
  10175.      * @param csqs Market Parameters
  10176.      * @param vcp Valuation Customization Parameters
  10177.      * @param dblPrice Price to Maturity
  10178.      *
  10179.      * @return Macaulay Duration from Price to Maturity
  10180.      *
  10181.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10182.      */

  10183.     public abstract double macaulayDurationFromPrice (
  10184.         final org.drip.param.valuation.ValuationParams valParams,
  10185.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10186.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10187.         final double dblPrice)
  10188.         throws java.lang.Exception;

  10189.     /**
  10190.      * Calculate Macaulay Duration from Price to Optimal Exercise
  10191.      *
  10192.      * @param valParams Valuation Parameters
  10193.      * @param csqs Market Parameters
  10194.      * @param vcp Valuation Customization Parameters
  10195.      * @param dblPrice Price to Optimal Exercise
  10196.      *
  10197.      * @return Macaulay Duration from Price to Optimal Exercise
  10198.      *
  10199.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10200.      */

  10201.     public abstract double macaulayDurationFromPriceToOptimalExercise (
  10202.         final org.drip.param.valuation.ValuationParams valParams,
  10203.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10204.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10205.         final double dblPrice)
  10206.         throws java.lang.Exception;

  10207.     /**
  10208.      * Calculate Macaulay Duration from TSY Spread to Work-out
  10209.      *
  10210.      * @param valParams Valuation Parameters
  10211.      * @param csqs Market Parameters
  10212.      * @param vcp Valuation Customization Parameters
  10213.      * @param iWorkoutDate Work-out Date
  10214.      * @param dblWorkoutFactor Work-out Factor
  10215.      * @param dblTSYSpread TSY Spread to Work-out
  10216.      *
  10217.      * @return Macaulay Duration from TSY Spread to Work-out
  10218.      *
  10219.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10220.      */

  10221.     public abstract double macaulayDurationFromTSYSpread (
  10222.         final org.drip.param.valuation.ValuationParams valParams,
  10223.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10224.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10225.         final int iWorkoutDate,
  10226.         final double dblWorkoutFactor,
  10227.         final double dblTSYSpread)
  10228.         throws java.lang.Exception;

  10229.     /**
  10230.      * Calculate Macaulay Duration from TSY Spread to Maturity
  10231.      *
  10232.      * @param valParams Valuation Parameters
  10233.      * @param csqs Market Parameters
  10234.      * @param vcp Valuation Customization Parameters
  10235.      * @param dblTSYSpread TSY Spread to Maturity
  10236.      *
  10237.      * @return Macaulay Duration from TSY Spread to Maturity
  10238.      *
  10239.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10240.      */

  10241.     public abstract double macaulayDurationFromTSYSpread (
  10242.         final org.drip.param.valuation.ValuationParams valParams,
  10243.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10244.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10245.         final double dblTSYSpread)
  10246.         throws java.lang.Exception;

  10247.     /**
  10248.      * Calculate Macaulay Duration from TSY Spread to Optimal Exercise
  10249.      *
  10250.      * @param valParams Valuation Parameters
  10251.      * @param csqs Market Parameters
  10252.      * @param vcp Valuation Customization Parameters
  10253.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  10254.      *
  10255.      * @return Macaulay Duration from TSY Spread to Optimal Exercise
  10256.      *
  10257.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10258.      */

  10259.     public abstract double macaulayDurationFromTSYSpreadToOptimalExercise (
  10260.         final org.drip.param.valuation.ValuationParams valParams,
  10261.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10262.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10263.         final double dblTSYSpread)
  10264.         throws java.lang.Exception;

  10265.     /**
  10266.      * Calculate Macaulay Duration from Yield to Work-out
  10267.      *
  10268.      * @param valParams Valuation Parameters
  10269.      * @param csqs Market Parameters
  10270.      * @param vcp Valuation Customization Parameters
  10271.      * @param iWorkoutDate Work-out Date
  10272.      * @param dblWorkoutFactor Work-out Factor
  10273.      * @param dblYield Yield to Work-out
  10274.      *
  10275.      * @return Macaulay Duration from Yield to Work-out
  10276.      *
  10277.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10278.      */

  10279.     public abstract double macaulayDurationFromYield (
  10280.         final org.drip.param.valuation.ValuationParams valParams,
  10281.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10282.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10283.         final int iWorkoutDate,
  10284.         final double dblWorkoutFactor,
  10285.         final double dblYield)
  10286.         throws java.lang.Exception;

  10287.     /**
  10288.      * Calculate Macaulay Duration from Yield to Maturity
  10289.      *
  10290.      * @param valParams Valuation Parameters
  10291.      * @param csqs Market Parameters
  10292.      * @param vcp Valuation Customization Parameters
  10293.      * @param dblYield Yield to Maturity
  10294.      *
  10295.      * @return Macaulay Duration from Yield to Maturity
  10296.      *
  10297.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10298.      */

  10299.     public abstract double macaulayDurationFromYield (
  10300.         final org.drip.param.valuation.ValuationParams valParams,
  10301.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10302.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10303.         final double dblYield)
  10304.         throws java.lang.Exception;

  10305.     /**
  10306.      * Calculate Macaulay Duration from Yield to Optimal Exercise
  10307.      *
  10308.      * @param valParams Valuation Parameters
  10309.      * @param csqs Market Parameters
  10310.      * @param vcp Valuation Customization Parameters
  10311.      * @param dblYield Yield to Optimal Exercise
  10312.      *
  10313.      * @return Macaulay Duration from Yield to Optimal Exercise
  10314.      *
  10315.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10316.      */

  10317.     public abstract double macaulayDurationFromYieldToOptimalExercise (
  10318.         final org.drip.param.valuation.ValuationParams valParams,
  10319.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10320.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10321.         final double dblYield)
  10322.         throws java.lang.Exception;

  10323.     /**
  10324.      * Calculate Macaulay Duration from Yield Spread to Work-out
  10325.      *
  10326.      * @param valParams Valuation Parameters
  10327.      * @param csqs Market Parameters
  10328.      * @param vcp Valuation Customization Parameters
  10329.      * @param iWorkoutDate Work-out Date
  10330.      * @param dblWorkoutFactor Work-out Factor
  10331.      * @param dblYieldSpread Yield Spread to Work-out
  10332.      *
  10333.      * @return Macaulay Duration from Yield Spread to Work-out
  10334.      *
  10335.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10336.      */

  10337.     public abstract double macaulayDurationFromYieldSpread (
  10338.         final org.drip.param.valuation.ValuationParams valParams,
  10339.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10340.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10341.         final int iWorkoutDate,
  10342.         final double dblWorkoutFactor,
  10343.         final double dblYieldSpread)
  10344.         throws java.lang.Exception;

  10345.     /**
  10346.      * Calculate Macaulay Duration from Yield Spread to Maturity
  10347.      *
  10348.      * @param valParams Valuation Parameters
  10349.      * @param csqs Market Parameters
  10350.      * @param vcp Valuation Customization Parameters
  10351.      * @param dblYieldSpread Yield Spread to Maturity
  10352.      *
  10353.      * @return Macaulay Duration from Yield Spread to Maturity
  10354.      *
  10355.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10356.      */

  10357.     public abstract double macaulayDurationFromYieldSpread (
  10358.         final org.drip.param.valuation.ValuationParams valParams,
  10359.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10360.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10361.         final double dblYieldSpread)
  10362.         throws java.lang.Exception;

  10363.     /**
  10364.      * Calculate Macaulay Duration from Yield Spread to Optimal Exercise
  10365.      *
  10366.      * @param valParams Valuation Parameters
  10367.      * @param csqs Market Parameters
  10368.      * @param vcp Valuation Customization Parameters
  10369.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  10370.      *
  10371.      * @return Macaulay Duration from Yield Spread to Optimal Exercise
  10372.      *
  10373.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10374.      */

  10375.     public abstract double macaulayDurationFromYieldSpreadToOptimalExercise (
  10376.         final org.drip.param.valuation.ValuationParams valParams,
  10377.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10378.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10379.         final double dblYieldSpread)
  10380.         throws java.lang.Exception;

  10381.     /**
  10382.      * Calculate Macaulay Duration from Z Spread to Work-out
  10383.      *
  10384.      * @param valParams Valuation Parameters
  10385.      * @param csqs Market Parameters
  10386.      * @param vcp Valuation Customization Parameters
  10387.      * @param iWorkoutDate Work-out Date
  10388.      * @param dblWorkoutFactor Work-out Factor
  10389.      * @param dblZSpread Z Spread to Work-out
  10390.      *
  10391.      * @return Macaulay Duration from Z Spread to Work-out
  10392.      *
  10393.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10394.      */

  10395.     public abstract double macaulayDurationFromZSpread (
  10396.         final org.drip.param.valuation.ValuationParams valParams,
  10397.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10398.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10399.         final int iWorkoutDate,
  10400.         final double dblWorkoutFactor,
  10401.         final double dblZSpread)
  10402.         throws java.lang.Exception;

  10403.     /**
  10404.      * Calculate Macaulay Duration from Z Spread to Maturity
  10405.      *
  10406.      * @param valParams Valuation Parameters
  10407.      * @param csqs Market Parameters
  10408.      * @param vcp Valuation Customization Parameters
  10409.      * @param dblZSpread Z Spread to Maturity
  10410.      *
  10411.      * @return Macaulay Duration from Z Spread to Maturity
  10412.      *
  10413.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10414.      */

  10415.     public abstract double macaulayDurationFromZSpread (
  10416.         final org.drip.param.valuation.ValuationParams valParams,
  10417.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10418.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10419.         final double dblZSpread)
  10420.         throws java.lang.Exception;

  10421.     /**
  10422.      * Calculate Macaulay Duration from Z Spread to Optimal Exercise
  10423.      *
  10424.      * @param valParams Valuation Parameters
  10425.      * @param csqs Market Parameters
  10426.      * @param vcp Valuation Customization Parameters
  10427.      * @param dblZSpread Z Spread to Optimal Exercise
  10428.      *
  10429.      * @return Macaulay Duration from Z Spread to Optimal Exercise
  10430.      *
  10431.      * @throws java.lang.Exception Thrown if Macaulay Duration cannot be calculated
  10432.      */

  10433.     public abstract double macaulayDurationFromZSpreadToOptimalExercise (
  10434.         final org.drip.param.valuation.ValuationParams valParams,
  10435.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10436.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10437.         final double dblZSpread)
  10438.         throws java.lang.Exception;

  10439.     /**
  10440.      * Calculate Modified Duration from ASW to Work-out
  10441.      *
  10442.      * @param valParams Valuation Parameters
  10443.      * @param csqs Market Parameters
  10444.      * @param vcp Valuation Customization Parameters
  10445.      * @param iWorkoutDate Work-out Date
  10446.      * @param dblWorkoutFactor Work-out Factor
  10447.      * @param dblASW ASW to Work-out
  10448.      *
  10449.      * @return Modified Duration from ASW to Work-out
  10450.      *
  10451.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10452.      */

  10453.     public abstract double modifiedDurationFromASW (
  10454.         final org.drip.param.valuation.ValuationParams valParams,
  10455.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10456.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10457.         final int iWorkoutDate,
  10458.         final double dblWorkoutFactor,
  10459.         final double dblASW)
  10460.         throws java.lang.Exception;

  10461.     /**
  10462.      * Calculate Modified Duration from ASW to Maturity
  10463.      *
  10464.      * @param valParams Valuation Parameters
  10465.      * @param csqs Market Parameters
  10466.      * @param vcp Valuation Customization Parameters
  10467.      * @param dblASW ASW to Maturity
  10468.      *
  10469.      * @return Modified Duration from ASW to Maturity
  10470.      *
  10471.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10472.      */

  10473.     public abstract double modifiedDurationFromASW (
  10474.         final org.drip.param.valuation.ValuationParams valParams,
  10475.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10476.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10477.         final double dblASW)
  10478.         throws java.lang.Exception;

  10479.     /**
  10480.      * Calculate Modified Duration from ASW to Optimal Exercise
  10481.      *
  10482.      * @param valParams Valuation Parameters
  10483.      * @param csqs Market Parameters
  10484.      * @param vcp Valuation Customization Parameters
  10485.      * @param dblASW ASW to Optimal Exercise
  10486.      *
  10487.      * @return Modified Duration from ASW to Optimal Exercise
  10488.      *
  10489.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10490.      */

  10491.     public abstract double modifiedDurationFromASWToOptimalExercise (
  10492.         final org.drip.param.valuation.ValuationParams valParams,
  10493.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10494.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10495.         final double dblASW)
  10496.         throws java.lang.Exception;

  10497.     /**
  10498.      * Calculate Modified Duration from Bond Basis to Work-out
  10499.      *
  10500.      * @param valParams Valuation Parameters
  10501.      * @param csqs Market Parameters
  10502.      * @param vcp Valuation Customization Parameters
  10503.      * @param iWorkoutDate Work-out Date
  10504.      * @param dblWorkoutFactor Work-out Factor
  10505.      * @param dblBondBasis Bond Basis to Work-out
  10506.      *
  10507.      * @return Modified Duration from Bond Basis to Work-out
  10508.      *
  10509.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10510.      */

  10511.     public abstract double modifiedDurationFromBondBasis (
  10512.         final org.drip.param.valuation.ValuationParams valParams,
  10513.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10514.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10515.         final int iWorkoutDate,
  10516.         final double dblWorkoutFactor,
  10517.         final double dblBondBasis)
  10518.         throws java.lang.Exception;

  10519.     /**
  10520.      * Calculate Modified Duration from Bond Basis to Maturity
  10521.      *
  10522.      * @param valParams Valuation Parameters
  10523.      * @param csqs Market Parameters
  10524.      * @param vcp Valuation Customization Parameters
  10525.      * @param dblBondBasis Bond Basis to Maturity
  10526.      *
  10527.      * @return Modified Duration from Bond Basis to Maturity
  10528.      *
  10529.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10530.      */

  10531.     public abstract double modifiedDurationFromBondBasis (
  10532.         final org.drip.param.valuation.ValuationParams valParams,
  10533.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10534.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10535.         final double dblBondBasis)
  10536.         throws java.lang.Exception;

  10537.     /**
  10538.      * Calculate Modified Duration from Bond Basis to Optimal Exercise
  10539.      *
  10540.      * @param valParams Valuation Parameters
  10541.      * @param csqs Market Parameters
  10542.      * @param vcp Valuation Customization Parameters
  10543.      * @param dblBondBasis Bond Basis to Optimal Exercise
  10544.      *
  10545.      * @return Modified Duration from Bond Basis to Optimal Exercise
  10546.      *
  10547.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10548.      */

  10549.     public abstract double modifiedDurationFromBondBasisToOptimalExercise (
  10550.         final org.drip.param.valuation.ValuationParams valParams,
  10551.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10552.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10553.         final double dblBondBasis)
  10554.         throws java.lang.Exception;

  10555.     /**
  10556.      * Calculate Modified Duration from Credit Basis to Work-out
  10557.      *
  10558.      * @param valParams Valuation Parameters
  10559.      * @param csqs Market Parameters
  10560.      * @param vcp Valuation Customization Parameters
  10561.      * @param iWorkoutDate Work-out Date
  10562.      * @param dblWorkoutFactor Work-out Factor
  10563.      * @param dblCreditBasis Credit Basis to Work-out
  10564.      *
  10565.      * @return Modified Duration from Credit Basis to Work-out
  10566.      *
  10567.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10568.      */

  10569.     public abstract double modifiedDurationFromCreditBasis (
  10570.         final org.drip.param.valuation.ValuationParams valParams,
  10571.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10572.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10573.         final int iWorkoutDate,
  10574.         final double dblWorkoutFactor,
  10575.         final double dblCreditBasis)
  10576.         throws java.lang.Exception;

  10577.     /**
  10578.      * Calculate Modified Duration from Credit Basis to Maturity
  10579.      *
  10580.      * @param valParams Valuation Parameters
  10581.      * @param csqs Market Parameters
  10582.      * @param vcp Valuation Customization Parameters
  10583.      * @param dblCreditBasis Credit Basis to Maturity
  10584.      *
  10585.      * @return Modified Duration from Credit Basis to Maturity
  10586.      *
  10587.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10588.      */

  10589.     public abstract double modifiedDurationFromCreditBasis (
  10590.         final org.drip.param.valuation.ValuationParams valParams,
  10591.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10592.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10593.         final double dblCreditBasis)
  10594.         throws java.lang.Exception;

  10595.     /**
  10596.      * Calculate Modified Duration from Credit Basis to Optimal Exercise
  10597.      *
  10598.      * @param valParams Valuation Parameters
  10599.      * @param csqs Market Parameters
  10600.      * @param vcp Valuation Customization Parameters
  10601.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  10602.      *
  10603.      * @return Modified Duration from Credit Basis to Optimal Exercise
  10604.      *
  10605.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10606.      */

  10607.     public abstract double modifiedDurationFromCreditBasisToOptimalExercise (
  10608.         final org.drip.param.valuation.ValuationParams valParams,
  10609.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10610.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10611.         final double dblCreditBasis)
  10612.         throws java.lang.Exception;

  10613.     /**
  10614.      * Calculate Modified Duration from Discount Margin to Work-out
  10615.      *
  10616.      * @param valParams Valuation Parameters
  10617.      * @param csqs Market Parameters
  10618.      * @param vcp Valuation Customization Parameters
  10619.      * @param iWorkoutDate Work-out Date
  10620.      * @param dblWorkoutFactor Work-out Factor
  10621.      * @param dblDiscountMargin Discount Margin to Work-out
  10622.      *
  10623.      * @return Modified Duration from Discount Margin to Work-out
  10624.      *
  10625.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10626.      */

  10627.     public abstract double modifiedDurationFromDiscountMargin (
  10628.         final org.drip.param.valuation.ValuationParams valParams,
  10629.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10630.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10631.         final int iWorkoutDate,
  10632.         final double dblWorkoutFactor,
  10633.         final double dblDiscountMargin)
  10634.         throws java.lang.Exception;

  10635.     /**
  10636.      * Calculate Modified Duration from Discount Margin to Maturity
  10637.      *
  10638.      * @param valParams Valuation Parameters
  10639.      * @param csqs Market Parameters
  10640.      * @param vcp Valuation Customization Parameters
  10641.      * @param dblDiscountMargin Discount Margin to Maturity
  10642.      *
  10643.      * @return Modified Duration from Discount Margin to Maturity
  10644.      *
  10645.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10646.      */

  10647.     public abstract double modifiedDurationFromDiscountMargin (
  10648.         final org.drip.param.valuation.ValuationParams valParams,
  10649.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10650.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10651.         final double dblDiscountMargin)
  10652.         throws java.lang.Exception;

  10653.     /**
  10654.      * Calculate Modified Duration from Discount Margin to Optimal Exercise
  10655.      *
  10656.      * @param valParams Valuation Parameters
  10657.      * @param csqs Market Parameters
  10658.      * @param vcp Valuation Customization Parameters
  10659.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  10660.      *
  10661.      * @return Modified Duration from Discount Margin to Optimal Exercise
  10662.      *
  10663.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10664.      */

  10665.     public abstract double modifiedDurationFromDiscountMarginToOptimalExercise (
  10666.         final org.drip.param.valuation.ValuationParams valParams,
  10667.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10668.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10669.         final double dblDiscountMargin)
  10670.         throws java.lang.Exception;

  10671.     /**
  10672.      * Calculate Modified Duration from E Spread to Work-out
  10673.      *
  10674.      * @param valParams Valuation Parameters
  10675.      * @param csqs Market Parameters
  10676.      * @param vcp Valuation Customization Parameters
  10677.      * @param iWorkoutDate Work-out Date
  10678.      * @param dblWorkoutFactor Work-out Factor
  10679.      * @param dblESpread E Spread to Work-out
  10680.      *
  10681.      * @return Modified Duration from E Spread to Work-out
  10682.      *
  10683.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10684.      */

  10685.     public abstract double modifiedDurationFromESpread (
  10686.         final org.drip.param.valuation.ValuationParams valParams,
  10687.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10688.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10689.         final int iWorkoutDate,
  10690.         final double dblWorkoutFactor,
  10691.         final double dblESpread)
  10692.         throws java.lang.Exception;

  10693.     /**
  10694.      * Calculate Modified Duration from E Spread to Maturity
  10695.      *
  10696.      * @param valParams Valuation Parameters
  10697.      * @param csqs Market Parameters
  10698.      * @param vcp Valuation Customization Parameters
  10699.      * @param dblESpread E Spread to Maturity
  10700.      *
  10701.      * @return Modified Duration from E Spread to Maturity
  10702.      *
  10703.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10704.      */

  10705.     public abstract double modifiedDurationFromESpread (
  10706.         final org.drip.param.valuation.ValuationParams valParams,
  10707.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10708.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10709.         final double dblESpread)
  10710.         throws java.lang.Exception;

  10711.     /**
  10712.      * Calculate Modified Duration from E Spread to Optimal Exercise
  10713.      *
  10714.      * @param valParams Valuation Parameters
  10715.      * @param csqs Market Parameters
  10716.      * @param vcp Valuation Customization Parameters
  10717.      * @param dblESpread E Spread to Optimal Exercise
  10718.      *
  10719.      * @return Modified Duration from E Spread to Optimal Exercise
  10720.      *
  10721.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10722.      */

  10723.     public abstract double modifiedDurationFromESpreadToOptimalExercise (
  10724.         final org.drip.param.valuation.ValuationParams valParams,
  10725.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10726.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10727.         final double dblESpread)
  10728.         throws java.lang.Exception;

  10729.     /**
  10730.      * Calculate Modified Duration from G Spread to Work-out
  10731.      *
  10732.      * @param valParams Valuation Parameters
  10733.      * @param csqs Market Parameters
  10734.      * @param vcp Valuation Customization Parameters
  10735.      * @param iWorkoutDate Work-out Date
  10736.      * @param dblWorkoutFactor Work-out Factor
  10737.      * @param dblGSpread G Spread to Work-out
  10738.      *
  10739.      * @return Modified Duration from G Spread to Work-out
  10740.      *
  10741.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10742.      */

  10743.     public abstract double modifiedDurationFromGSpread (
  10744.         final org.drip.param.valuation.ValuationParams valParams,
  10745.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10746.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10747.         final int iWorkoutDate,
  10748.         final double dblWorkoutFactor,
  10749.         final double dblGSpread)
  10750.         throws java.lang.Exception;

  10751.     /**
  10752.      * Calculate Modified Duration from G Spread to Maturity
  10753.      *
  10754.      * @param valParams Valuation Parameters
  10755.      * @param csqs Market Parameters
  10756.      * @param vcp Valuation Customization Parameters
  10757.      * @param dblGSpread G Spread to Maturity
  10758.      *
  10759.      * @return Modified Duration from G Spread to Maturity
  10760.      *
  10761.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10762.      */

  10763.     public abstract double modifiedDurationFromGSpread (
  10764.         final org.drip.param.valuation.ValuationParams valParams,
  10765.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10766.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10767.         final double dblGSpread)
  10768.         throws java.lang.Exception;

  10769.     /**
  10770.      * Calculate Modified Duration from G Spread to Optimal Exercise
  10771.      *
  10772.      * @param valParams Valuation Parameters
  10773.      * @param csqs Market Parameters
  10774.      * @param vcp Valuation Customization Parameters
  10775.      * @param dblGSpread G Spread to Optimal Exercise
  10776.      *
  10777.      * @return Modified Duration from G Spread to Optimal Exercise
  10778.      *
  10779.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10780.      */

  10781.     public abstract double modifiedDurationFromGSpreadToOptimalExercise (
  10782.         final org.drip.param.valuation.ValuationParams valParams,
  10783.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10784.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10785.         final double dblGSpread)
  10786.         throws java.lang.Exception;

  10787.     /**
  10788.      * Calculate Modified Duration from I Spread to Work-out
  10789.      *
  10790.      * @param valParams Valuation Parameters
  10791.      * @param csqs Market Parameters
  10792.      * @param vcp Valuation Customization Parameters
  10793.      * @param iWorkoutDate Work-out Date
  10794.      * @param dblWorkoutFactor Work-out Factor
  10795.      * @param dblISpread I Spread to Work-out
  10796.      *
  10797.      * @return Modified Duration from I Spread to Work-out
  10798.      *
  10799.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10800.      */

  10801.     public abstract double modifiedDurationFromISpread (
  10802.         final org.drip.param.valuation.ValuationParams valParams,
  10803.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10804.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10805.         final int iWorkoutDate,
  10806.         final double dblWorkoutFactor,
  10807.         final double dblISpread)
  10808.         throws java.lang.Exception;

  10809.     /**
  10810.      * Calculate Modified Duration from I Spread to Maturity
  10811.      *
  10812.      * @param valParams Valuation Parameters
  10813.      * @param csqs Market Parameters
  10814.      * @param vcp Valuation Customization Parameters
  10815.      * @param dblISpread I Spread to Maturity
  10816.      *
  10817.      * @return Modified Duration from I Spread to Maturity
  10818.      *
  10819.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10820.      */

  10821.     public abstract double modifiedDurationFromISpread (
  10822.         final org.drip.param.valuation.ValuationParams valParams,
  10823.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10824.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10825.         final double dblISpread)
  10826.         throws java.lang.Exception;

  10827.     /**
  10828.      * Calculate Modified Duration from I Spread to Optimal Exercise
  10829.      *
  10830.      * @param valParams Valuation Parameters
  10831.      * @param csqs Market Parameters
  10832.      * @param vcp Valuation Customization Parameters
  10833.      * @param dblISpread I Spread to Optimal Exercise
  10834.      *
  10835.      * @return Modified Duration from I Spread to Optimal Exercise
  10836.      *
  10837.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10838.      */

  10839.     public abstract double modifiedDurationFromISpreadToOptimalExercise (
  10840.         final org.drip.param.valuation.ValuationParams valParams,
  10841.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10842.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10843.         final double dblISpread)
  10844.         throws java.lang.Exception;

  10845.     /**
  10846.      * Calculate Modified Duration from J Spread to Work-out
  10847.      *
  10848.      * @param valParams Valuation Parameters
  10849.      * @param csqs Market Parameters
  10850.      * @param vcp Valuation Customization Parameters
  10851.      * @param iWorkoutDate Work-out Date
  10852.      * @param dblWorkoutFactor Work-out Factor
  10853.      * @param dblJSpread JSpread to Work-out
  10854.      *
  10855.      * @return Modified Duration from J Spread to Work-out
  10856.      *
  10857.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10858.      */

  10859.     public abstract double modifiedDurationFromJSpread (
  10860.         final org.drip.param.valuation.ValuationParams valParams,
  10861.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10862.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10863.         final int iWorkoutDate,
  10864.         final double dblWorkoutFactor,
  10865.         final double dblJSpread)
  10866.         throws java.lang.Exception;

  10867.     /**
  10868.      * Calculate Modified Duration from J Spread to Maturity
  10869.      *
  10870.      * @param valParams Valuation Parameters
  10871.      * @param csqs Market Parameters
  10872.      * @param vcp Valuation Customization Parameters
  10873.      * @param dblJSpread J Spread to Maturity
  10874.      *
  10875.      * @return Modified Duration from J Spread to Maturity
  10876.      *
  10877.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10878.      */

  10879.     public abstract double modifiedDurationFromJSpread (
  10880.         final org.drip.param.valuation.ValuationParams valParams,
  10881.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10882.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10883.         final double dblJSpread)
  10884.         throws java.lang.Exception;

  10885.     /**
  10886.      * Calculate Modified Duration from J Spread to Optimal Exercise
  10887.      *
  10888.      * @param valParams Valuation Parameters
  10889.      * @param csqs Market Parameters
  10890.      * @param vcp Valuation Customization Parameters
  10891.      * @param dblJSpread J Spread to Optimal Exercise
  10892.      *
  10893.      * @return Modified Duration from J Spread to Optimal Exercise
  10894.      *
  10895.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10896.      */

  10897.     public abstract double modifiedDurationFromJSpreadToOptimalExercise (
  10898.         final org.drip.param.valuation.ValuationParams valParams,
  10899.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10900.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10901.         final double dblJSpread)
  10902.         throws java.lang.Exception;

  10903.     /**
  10904.      * Calculate Modified Duration from N Spread to Work-out
  10905.      *
  10906.      * @param valParams Valuation Parameters
  10907.      * @param csqs Market Parameters
  10908.      * @param vcp Valuation Customization Parameters
  10909.      * @param iWorkoutDate Work-out Date
  10910.      * @param dblWorkoutFactor Work-out Factor
  10911.      * @param dblNSpread N Spread to Work-out
  10912.      *
  10913.      * @return Modified Duration from N Spread to Work-out
  10914.      *
  10915.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10916.      */

  10917.     public abstract double modifiedDurationFromNSpread (
  10918.         final org.drip.param.valuation.ValuationParams valParams,
  10919.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10920.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10921.         final int iWorkoutDate,
  10922.         final double dblWorkoutFactor,
  10923.         final double dblNSpread)
  10924.         throws java.lang.Exception;

  10925.     /**
  10926.      * Calculate Modified Duration from N Spread to Maturity
  10927.      *
  10928.      * @param valParams Valuation Parameters
  10929.      * @param csqs Market Parameters
  10930.      * @param vcp Valuation Customization Parameters
  10931.      * @param dblNSpread N Spread to Maturity
  10932.      *
  10933.      * @return Modified Duration from N Spread to Maturity
  10934.      *
  10935.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10936.      */

  10937.     public abstract double modifiedDurationFromNSpread (
  10938.         final org.drip.param.valuation.ValuationParams valParams,
  10939.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10940.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10941.         final double dblNSpread)
  10942.         throws java.lang.Exception;

  10943.     /**
  10944.      * Calculate Modified Duration from N Spread to Optimal Exercise
  10945.      *
  10946.      * @param valParams Valuation Parameters
  10947.      * @param csqs Market Parameters
  10948.      * @param vcp Valuation Customization Parameters
  10949.      * @param dblNSpread N Spread to Optimal Exercise
  10950.      *
  10951.      * @return Modified Duration from N Spread to Optimal Exercise
  10952.      *
  10953.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10954.      */

  10955.     public abstract double modifiedDurationFromNSpreadToOptimalExercise (
  10956.         final org.drip.param.valuation.ValuationParams valParams,
  10957.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10958.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10959.         final double dblNSpread)
  10960.         throws java.lang.Exception;

  10961.     /**
  10962.      * Calculate Modified Duration from OAS to Work-out
  10963.      *
  10964.      * @param valParams Valuation Parameters
  10965.      * @param csqs Market Parameters
  10966.      * @param vcp Valuation Customization Parameters
  10967.      * @param iWorkoutDate Work-out Date
  10968.      * @param dblWorkoutFactor Work-out Factor
  10969.      * @param dblOAS OAS to Work-out
  10970.      *
  10971.      * @return Modified Duration from OAS to Work-out
  10972.      *
  10973.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10974.      */

  10975.     public abstract double modifiedDurationFromOAS (
  10976.         final org.drip.param.valuation.ValuationParams valParams,
  10977.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10978.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10979.         final int iWorkoutDate,
  10980.         final double dblWorkoutFactor,
  10981.         final double dblOAS)
  10982.         throws java.lang.Exception;

  10983.     /**
  10984.      * Calculate Modified Duration from OAS to Maturity
  10985.      *
  10986.      * @param valParams Valuation Parameters
  10987.      * @param csqs Market Parameters
  10988.      * @param vcp Valuation Customization Parameters
  10989.      * @param dblOAS OAS to Maturity
  10990.      *
  10991.      * @return Modified Duration from OAS to Maturity
  10992.      *
  10993.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  10994.      */

  10995.     public abstract double modifiedDurationFromOAS (
  10996.         final org.drip.param.valuation.ValuationParams valParams,
  10997.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  10998.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  10999.         final double dblOAS)
  11000.         throws java.lang.Exception;

  11001.     /**
  11002.      * Calculate Modified Duration from OAS to Optimal Exercise
  11003.      *
  11004.      * @param valParams Valuation Parameters
  11005.      * @param csqs Market Parameters
  11006.      * @param vcp Valuation Customization Parameters
  11007.      * @param dblOAS OAS to Optimal Exercise
  11008.      *
  11009.      * @return Modified Duration from OAS to Optimal Exercise
  11010.      *
  11011.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11012.      */

  11013.     public abstract double modifiedDurationFromOASToOptimalExercise (
  11014.         final org.drip.param.valuation.ValuationParams valParams,
  11015.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11016.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11017.         final double dblOAS)
  11018.         throws java.lang.Exception;

  11019.     /**
  11020.      * Calculate Modified Duration from PECS to Work-out
  11021.      *
  11022.      * @param valParams Valuation Parameters
  11023.      * @param csqs Market Parameters
  11024.      * @param vcp Valuation Customization Parameters
  11025.      * @param iWorkoutDate Work-out Date
  11026.      * @param dblWorkoutFactor Work-out Factor
  11027.      * @param dblPECS PECS to Work-out
  11028.      *
  11029.      * @return Modified Duration from PECS to Work-out
  11030.      *
  11031.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11032.      */

  11033.     public abstract double modifiedDurationFromPECS (
  11034.         final org.drip.param.valuation.ValuationParams valParams,
  11035.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11036.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11037.         final int iWorkoutDate,
  11038.         final double dblWorkoutFactor,
  11039.         final double dblPECS)
  11040.         throws java.lang.Exception;

  11041.     /**
  11042.      * Calculate Modified Duration from PECS to Maturity
  11043.      *
  11044.      * @param valParams Valuation Parameters
  11045.      * @param csqs Market Parameters
  11046.      * @param vcp Valuation Customization Parameters
  11047.      * @param dblPECS PECS to Maturity
  11048.      *
  11049.      * @return Modified Duration from PECS to Maturity
  11050.      *
  11051.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11052.      */

  11053.     public abstract double modifiedDurationFromPECS (
  11054.         final org.drip.param.valuation.ValuationParams valParams,
  11055.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11056.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11057.         final double dblPECS)
  11058.         throws java.lang.Exception;

  11059.     /**
  11060.      * Calculate Modified Duration from PECS to Optimal Exercise
  11061.      *
  11062.      * @param valParams Valuation Parameters
  11063.      * @param csqs Market Parameters
  11064.      * @param vcp Valuation Customization Parameters
  11065.      * @param dblPECS PECS to Optimal Exercise
  11066.      *
  11067.      * @return Modified Duration from PECS to Optimal Exercise
  11068.      *
  11069.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11070.      */

  11071.     public abstract double modifiedDurationFromPECSToOptimalExercise (
  11072.         final org.drip.param.valuation.ValuationParams valParams,
  11073.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11074.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11075.         final double dblPECS)
  11076.         throws java.lang.Exception;

  11077.     /**
  11078.      * Calculate Modified Duration from Price to Work-out
  11079.      *
  11080.      * @param valParams Valuation Parameters
  11081.      * @param csqs Market Parameters
  11082.      * @param vcp Valuation Customization Parameters
  11083.      * @param iWorkoutDate Work-out Date
  11084.      * @param dblWorkoutFactor Work-out Factor
  11085.      * @param dblPrice Price to Work-out
  11086.      *
  11087.      * @return Modified Duration from Price to Work-out
  11088.      *
  11089.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11090.      */

  11091.     public abstract double modifiedDurationFromPrice (
  11092.         final org.drip.param.valuation.ValuationParams valParams,
  11093.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11094.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11095.         final int iWorkoutDate,
  11096.         final double dblWorkoutFactor,
  11097.         final double dblPrice)
  11098.         throws java.lang.Exception;

  11099.     /**
  11100.      * Calculate Modified Duration from Price to Maturity
  11101.      *
  11102.      * @param valParams Valuation Parameters
  11103.      * @param csqs Market Parameters
  11104.      * @param vcp Valuation Customization Parameters
  11105.      * @param dblPrice Price to Maturity
  11106.      *
  11107.      * @return Modified Duration from Price to Maturity
  11108.      *
  11109.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11110.      */

  11111.     public abstract double modifiedDurationFromPrice (
  11112.         final org.drip.param.valuation.ValuationParams valParams,
  11113.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11114.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11115.         final double dblPrice)
  11116.         throws java.lang.Exception;

  11117.     /**
  11118.      * Calculate Modified Duration from Price to Optimal Exercise
  11119.      *
  11120.      * @param valParams Valuation Parameters
  11121.      * @param csqs Market Parameters
  11122.      * @param vcp Valuation Customization Parameters
  11123.      * @param dblPrice Price to Optimal Exercise
  11124.      *
  11125.      * @return Modified Duration from Price to Optimal Exercise
  11126.      *
  11127.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11128.      */

  11129.     public abstract double modifiedDurationFromPriceToOptimalExercise (
  11130.         final org.drip.param.valuation.ValuationParams valParams,
  11131.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11132.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11133.         final double dblPrice)
  11134.         throws java.lang.Exception;

  11135.     /**
  11136.      * Calculate Modified Duration from TSY Spread to Work-out
  11137.      *
  11138.      * @param valParams Valuation Parameters
  11139.      * @param csqs Market Parameters
  11140.      * @param vcp Valuation Customization Parameters
  11141.      * @param iWorkoutDate Work-out Date
  11142.      * @param dblWorkoutFactor Work-out Factor
  11143.      * @param dblTSYSpread TSY Spread to Work-out
  11144.      *
  11145.      * @return Modified Duration from TSY Spread to Work-out
  11146.      *
  11147.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11148.      */

  11149.     public abstract double modifiedDurationFromTSYSpread (
  11150.         final org.drip.param.valuation.ValuationParams valParams,
  11151.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11152.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11153.         final int iWorkoutDate,
  11154.         final double dblWorkoutFactor,
  11155.         final double dblTSYSpread)
  11156.         throws java.lang.Exception;

  11157.     /**
  11158.      * Calculate Modified Duration from TSY Spread to Maturity
  11159.      *
  11160.      * @param valParams Valuation Parameters
  11161.      * @param csqs Market Parameters
  11162.      * @param vcp Valuation Customization Parameters
  11163.      * @param dblTSYSpread TSY Spread to Maturity
  11164.      *
  11165.      * @return Modified Duration from TSY Spread to Maturity
  11166.      *
  11167.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11168.      */

  11169.     public abstract double modifiedDurationFromTSYSpread (
  11170.         final org.drip.param.valuation.ValuationParams valParams,
  11171.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11172.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11173.         final double dblTSYSpread)
  11174.         throws java.lang.Exception;

  11175.     /**
  11176.      * Calculate Modified Duration from TSY Spread to Optimal Exercise
  11177.      *
  11178.      * @param valParams Valuation Parameters
  11179.      * @param csqs Market Parameters
  11180.      * @param vcp Valuation Customization Parameters
  11181.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  11182.      *
  11183.      * @return Modified Duration from TSY Spread to Optimal Exercise
  11184.      *
  11185.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11186.      */

  11187.     public abstract double modifiedDurationFromTSYSpreadToOptimalExercise (
  11188.         final org.drip.param.valuation.ValuationParams valParams,
  11189.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11190.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11191.         final double dblTSYSpread)
  11192.         throws java.lang.Exception;

  11193.     /**
  11194.      * Calculate Modified Duration from Yield to Work-out
  11195.      *
  11196.      * @param valParams Valuation Parameters
  11197.      * @param csqs Market Parameters
  11198.      * @param vcp Valuation Customization Parameters
  11199.      * @param iWorkoutDate Work-out Date
  11200.      * @param dblWorkoutFactor Work-out Factor
  11201.      * @param dblYield Yield to Work-out
  11202.      *
  11203.      * @return Modified Duration from Yield to Work-out
  11204.      *
  11205.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11206.      */

  11207.     public abstract double modifiedDurationFromYield (
  11208.         final org.drip.param.valuation.ValuationParams valParams,
  11209.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11210.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11211.         final int iWorkoutDate,
  11212.         final double dblWorkoutFactor,
  11213.         final double dblYield)
  11214.         throws java.lang.Exception;

  11215.     /**
  11216.      * Calculate Modified Duration from Yield to Maturity
  11217.      *
  11218.      * @param valParams Valuation Parameters
  11219.      * @param csqs Market Parameters
  11220.      * @param vcp Valuation Customization Parameters
  11221.      * @param dblYield Yield to Maturity
  11222.      *
  11223.      * @return Modified Duration from Yield to Maturity
  11224.      *
  11225.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11226.      */

  11227.     public abstract double modifiedDurationFromYield (
  11228.         final org.drip.param.valuation.ValuationParams valParams,
  11229.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11230.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11231.         final double dblYield)
  11232.         throws java.lang.Exception;

  11233.     /**
  11234.      * Calculate Modified Duration from Yield to Optimal Exercise
  11235.      *
  11236.      * @param valParams Valuation Parameters
  11237.      * @param csqs Market Parameters
  11238.      * @param vcp Valuation Customization Parameters
  11239.      * @param dblYield Yield to Optimal Exercise
  11240.      *
  11241.      * @return Modified Duration from Yield to Optimal Exercise
  11242.      *
  11243.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11244.      */

  11245.     public abstract double modifiedDurationFromYieldToOptimalExercise (
  11246.         final org.drip.param.valuation.ValuationParams valParams,
  11247.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11248.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11249.         final double dblYield)
  11250.         throws java.lang.Exception;

  11251.     /**
  11252.      * Calculate Modified Duration from Yield Spread to Work-out
  11253.      *
  11254.      * @param valParams Valuation Parameters
  11255.      * @param csqs Market Parameters
  11256.      * @param vcp Valuation Customization Parameters
  11257.      * @param iWorkoutDate Work-out Date
  11258.      * @param dblWorkoutFactor Work-out Factor
  11259.      * @param dblYieldSpread Yield Spread to Work-out
  11260.      *
  11261.      * @return Modified Duration from Yield Spread to Work-out
  11262.      *
  11263.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11264.      */

  11265.     public abstract double modifiedDurationFromYieldSpread (
  11266.         final org.drip.param.valuation.ValuationParams valParams,
  11267.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11268.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11269.         final int iWorkoutDate,
  11270.         final double dblWorkoutFactor,
  11271.         final double dblYieldSpread)
  11272.         throws java.lang.Exception;

  11273.     /**
  11274.      * Calculate Modified Duration from Yield Spread to Maturity
  11275.      *
  11276.      * @param valParams Valuation Parameters
  11277.      * @param csqs Market Parameters
  11278.      * @param vcp Valuation Customization Parameters
  11279.      * @param dblYieldSpread Yield Spread to Maturity
  11280.      *
  11281.      * @return Modified Duration from Yield Spread to Maturity
  11282.      *
  11283.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11284.      */

  11285.     public abstract double modifiedDurationFromYieldSpread (
  11286.         final org.drip.param.valuation.ValuationParams valParams,
  11287.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11288.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11289.         final double dblYieldSpread)
  11290.         throws java.lang.Exception;

  11291.     /**
  11292.      * Calculate Modified Duration from Yield Spread to Optimal Exercise
  11293.      *
  11294.      * @param valParams Valuation Parameters
  11295.      * @param csqs Market Parameters
  11296.      * @param vcp Valuation Customization Parameters
  11297.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  11298.      *
  11299.      * @return Modified Duration from Yield Spread to Optimal Exercise
  11300.      *
  11301.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11302.      */

  11303.     public abstract double modifiedDurationFromYieldSpreadToOptimalExercise (
  11304.         final org.drip.param.valuation.ValuationParams valParams,
  11305.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11306.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11307.         final double dblYieldSpread)
  11308.         throws java.lang.Exception;

  11309.     /**
  11310.      * Calculate Modified Duration from Z Spread to Work-out
  11311.      *
  11312.      * @param valParams Valuation Parameters
  11313.      * @param csqs Market Parameters
  11314.      * @param vcp Valuation Customization Parameters
  11315.      * @param iWorkoutDate Work-out Date
  11316.      * @param dblWorkoutFactor Work-out Factor
  11317.      * @param dblZSpread Z Spread to Work-out
  11318.      *
  11319.      * @return Modified Duration from Z Spread to Work-out
  11320.      *
  11321.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11322.      */

  11323.     public abstract double modifiedDurationFromZSpread (
  11324.         final org.drip.param.valuation.ValuationParams valParams,
  11325.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11326.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11327.         final int iWorkoutDate,
  11328.         final double dblWorkoutFactor,
  11329.         final double dblZSpread)
  11330.         throws java.lang.Exception;

  11331.     /**
  11332.      * Calculate Modified Duration from Z Spread to Maturity
  11333.      *
  11334.      * @param valParams Valuation Parameters
  11335.      * @param csqs Market Parameters
  11336.      * @param vcp Valuation Customization Parameters
  11337.      * @param dblZSpread Z Spread to Maturity
  11338.      *
  11339.      * @return Modified Duration from Z Spread to Maturity
  11340.      *
  11341.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11342.      */

  11343.     public abstract double modifiedDurationFromZSpread (
  11344.         final org.drip.param.valuation.ValuationParams valParams,
  11345.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11346.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11347.         final double dblZSpread)
  11348.         throws java.lang.Exception;

  11349.     /**
  11350.      * Calculate Modified Duration from Z Spread to Optimal Exercise
  11351.      *
  11352.      * @param valParams Valuation Parameters
  11353.      * @param csqs Market Parameters
  11354.      * @param vcp Valuation Customization Parameters
  11355.      * @param dblZSpread Z Spread to Optimal Exercise
  11356.      *
  11357.      * @return Modified Duration from Z Spread to Optimal Exercise
  11358.      *
  11359.      * @throws java.lang.Exception Thrown if Modified Duration cannot be calculated
  11360.      */

  11361.     public abstract double modifiedDurationFromZSpreadToOptimalExercise (
  11362.         final org.drip.param.valuation.ValuationParams valParams,
  11363.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11364.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11365.         final double dblZSpread)
  11366.         throws java.lang.Exception;

  11367.     /**
  11368.      * Calculate N Spread from ASW to Work-out
  11369.      *
  11370.      * @param valParams Valuation Parameters
  11371.      * @param csqs Market Parameters
  11372.      * @param vcp Valuation Customization Parameters
  11373.      * @param iWorkoutDate Work-out Date
  11374.      * @param dblWorkoutFactor Work-out Factor
  11375.      * @param dblASW ASW to Work-out
  11376.      *
  11377.      * @return N Spread from ASW to Work-out
  11378.      *
  11379.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11380.      */

  11381.     public abstract double nSpreadFromASW (
  11382.         final org.drip.param.valuation.ValuationParams valParams,
  11383.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11384.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11385.         final int iWorkoutDate,
  11386.         final double dblWorkoutFactor,
  11387.         final double dblASW)
  11388.         throws java.lang.Exception;

  11389.     /**
  11390.      * Calculate N Spread from ASW to Maturity
  11391.      *
  11392.      * @param valParams Valuation Parameters
  11393.      * @param csqs Market Parameters
  11394.      * @param vcp Valuation Customization Parameters
  11395.      * @param dblASW ASW to Maturity
  11396.      *
  11397.      * @return N Spread from ASW to Maturity
  11398.      *
  11399.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11400.      */

  11401.     public abstract double nSpreadFromASW (
  11402.         final org.drip.param.valuation.ValuationParams valParams,
  11403.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11404.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11405.         final double dblASW)
  11406.         throws java.lang.Exception;

  11407.     /**
  11408.      * Calculate N Spread from ASW to Optimal Exercise
  11409.      *
  11410.      * @param valParams Valuation Parameters
  11411.      * @param csqs Market Parameters
  11412.      * @param vcp Valuation Customization Parameters
  11413.      * @param dblASW ASW to Optimal Exercise
  11414.      *
  11415.      * @return N Spread from ASW to Optimal Exercise
  11416.      *
  11417.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11418.      */

  11419.     public abstract double nSpreadFromASWToOptimalExercise (
  11420.         final org.drip.param.valuation.ValuationParams valParams,
  11421.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11422.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11423.         final double dblASW)
  11424.         throws java.lang.Exception;

  11425.     /**
  11426.      * Calculate N Spread from Bond Basis to Work-out
  11427.      *
  11428.      * @param valParams Valuation Parameters
  11429.      * @param csqs Market Parameters
  11430.      * @param vcp Valuation Customization Parameters
  11431.      * @param iWorkoutDate Work-out Date
  11432.      * @param dblWorkoutFactor Work-out Factor
  11433.      * @param dblBondBasis Bond Basis to Work-out
  11434.      *
  11435.      * @return N Spread from Bond Basis to Work-out
  11436.      *
  11437.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11438.      */

  11439.     public abstract double nSpreadFromBondBasis (
  11440.         final org.drip.param.valuation.ValuationParams valParams,
  11441.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11442.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11443.         final int iWorkoutDate,
  11444.         final double dblWorkoutFactor,
  11445.         final double dblBondBasis)
  11446.         throws java.lang.Exception;

  11447.     /**
  11448.      * Calculate N Spread from Bond Basis to Maturity
  11449.      *
  11450.      * @param valParams Valuation Parameters
  11451.      * @param csqs Market Parameters
  11452.      * @param vcp Valuation Customization Parameters
  11453.      * @param dblBondBasis Bond Basis to Maturity
  11454.      *
  11455.      * @return N Spread from Bond Basis to Maturity
  11456.      *
  11457.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11458.      */

  11459.     public abstract double nSpreadFromBondBasis (
  11460.         final org.drip.param.valuation.ValuationParams valParams,
  11461.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11462.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11463.         final double dblBondBasis)
  11464.         throws java.lang.Exception;

  11465.     /**
  11466.      * Calculate N Spread from Bond Basis to Optimal Exercise
  11467.      *
  11468.      * @param valParams Valuation Parameters
  11469.      * @param csqs Market Parameters
  11470.      * @param vcp Valuation Customization Parameters
  11471.      * @param dblBondBasis Bond Basis to Optimal Exercise
  11472.      *
  11473.      * @return N Spread from Bond Basis to Optimal Exercise
  11474.      *
  11475.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11476.      */

  11477.     public abstract double nSpreadFromBondBasisToOptimalExercise (
  11478.         final org.drip.param.valuation.ValuationParams valParams,
  11479.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11480.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11481.         final double dblBondBasis)
  11482.         throws java.lang.Exception;

  11483.     /**
  11484.      * Calculate N Spread from Credit Basis to Work-out
  11485.      *
  11486.      * @param valParams Valuation Parameters
  11487.      * @param csqs Market Parameters
  11488.      * @param vcp Valuation Customization Parameters
  11489.      * @param iWorkoutDate Work-out Date
  11490.      * @param dblWorkoutFactor Work-out Factor
  11491.      * @param dblCreditBasis Credit Basis to Work-out
  11492.      *
  11493.      * @return N Spread from Credit Basis to Work-out
  11494.      *
  11495.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11496.      */

  11497.     public abstract double nSpreadFromCreditBasis (
  11498.         final org.drip.param.valuation.ValuationParams valParams,
  11499.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11500.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11501.         final int iWorkoutDate,
  11502.         final double dblWorkoutFactor,
  11503.         final double dblCreditBasis)
  11504.         throws java.lang.Exception;

  11505.     /**
  11506.      * Calculate N Spread from Credit Basis to Maturity
  11507.      *
  11508.      * @param valParams Valuation Parameters
  11509.      * @param csqs Market Parameters
  11510.      * @param vcp Valuation Customization Parameters
  11511.      * @param dblCreditBasis Credit Basis to Maturity
  11512.      *
  11513.      * @return N Spread from Credit Basis to Maturity
  11514.      *
  11515.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11516.      */

  11517.     public abstract double nSpreadFromCreditBasis (
  11518.         final org.drip.param.valuation.ValuationParams valParams,
  11519.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11520.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11521.         final double dblCreditBasis)
  11522.         throws java.lang.Exception;

  11523.     /**
  11524.      * Calculate N Spread from Credit Basis to Optimal Exercise
  11525.      *
  11526.      * @param valParams Valuation Parameters
  11527.      * @param csqs Market Parameters
  11528.      * @param vcp Valuation Customization Parameters
  11529.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  11530.      *
  11531.      * @return N Spread from Credit Basis to Optimal Exercise
  11532.      *
  11533.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11534.      */

  11535.     public abstract double nSpreadFromCreditBasisToOptimalExercise (
  11536.         final org.drip.param.valuation.ValuationParams valParams,
  11537.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11538.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11539.         final double dblCreditBasis)
  11540.         throws java.lang.Exception;

  11541.     /**
  11542.      * Calculate N Spread from Discount Margin to Work-out
  11543.      *
  11544.      * @param valParams Valuation Parameters
  11545.      * @param csqs Market Parameters
  11546.      * @param vcp Valuation Customization Parameters
  11547.      * @param iWorkoutDate Work-out Date
  11548.      * @param dblWorkoutFactor Work-out Factor
  11549.      * @param dblDiscountMargin Discount Margin to Work-out
  11550.      *
  11551.      * @return N Spread from Discount Margin to Work-out
  11552.      *
  11553.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11554.      */

  11555.     public abstract double nSpreadFromDiscountMargin (
  11556.         final org.drip.param.valuation.ValuationParams valParams,
  11557.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11558.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11559.         final int iWorkoutDate,
  11560.         final double dblWorkoutFactor,
  11561.         final double dblDiscountMargin)
  11562.         throws java.lang.Exception;

  11563.     /**
  11564.      * Calculate N Spread from Discount Margin to Maturity
  11565.      *
  11566.      * @param valParams Valuation Parameters
  11567.      * @param csqs Market Parameters
  11568.      * @param vcp Valuation Customization Parameters
  11569.      * @param dblDiscountMargin Discount Margin to Maturity
  11570.      *
  11571.      * @return N Spread from Discount Margin to Maturity
  11572.      *
  11573.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11574.      */

  11575.     public abstract double nSpreadFromDiscountMargin (
  11576.         final org.drip.param.valuation.ValuationParams valParams,
  11577.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11578.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11579.         final double dblDiscountMargin)
  11580.         throws java.lang.Exception;

  11581.     /**
  11582.      * Calculate N Spread from Discount Margin to Optimal Exercise
  11583.      *
  11584.      * @param valParams Valuation Parameters
  11585.      * @param csqs Market Parameters
  11586.      * @param vcp Valuation Customization Parameters
  11587.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  11588.      *
  11589.      * @return N Spread from Discount Margin to Optimal Exercise
  11590.      *
  11591.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11592.      */

  11593.     public abstract double nSpreadFromDiscountMarginToOptimalExercise (
  11594.         final org.drip.param.valuation.ValuationParams valParams,
  11595.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11596.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11597.         final double dblDiscountMargin)
  11598.         throws java.lang.Exception;

  11599.     /**
  11600.      * Calculate N Spread from E Spread to Work-out
  11601.      *
  11602.      * @param valParams Valuation Parameters
  11603.      * @param csqs Market Parameters
  11604.      * @param vcp Valuation Customization Parameters
  11605.      * @param iWorkoutDate Work-out Date
  11606.      * @param dblWorkoutFactor Work-out Factor
  11607.      * @param dblESpread E Spread to Work-out
  11608.      *
  11609.      * @return N Spread from E Spread to Work-out
  11610.      *
  11611.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11612.      */

  11613.     public abstract double nSpreadFromESpread (
  11614.         final org.drip.param.valuation.ValuationParams valParams,
  11615.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11616.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11617.         final int iWorkoutDate,
  11618.         final double dblWorkoutFactor,
  11619.         final double dblESpread)
  11620.         throws java.lang.Exception;

  11621.     /**
  11622.      * Calculate N Spread from E Spread to Maturity
  11623.      *
  11624.      * @param valParams Valuation Parameters
  11625.      * @param csqs Market Parameters
  11626.      * @param vcp Valuation Customization Parameters
  11627.      * @param dblESpread E Spread to Maturity
  11628.      *
  11629.      * @return N Spread from E Spread to Maturity
  11630.      *
  11631.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11632.      */

  11633.     public abstract double nSpreadFromESpread (
  11634.         final org.drip.param.valuation.ValuationParams valParams,
  11635.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11636.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11637.         final double dblESpread)
  11638.         throws java.lang.Exception;

  11639.     /**
  11640.      * Calculate N Spread from E Spread to Optimal Exercise
  11641.      *
  11642.      * @param valParams Valuation Parameters
  11643.      * @param csqs Market Parameters
  11644.      * @param vcp Valuation Customization Parameters
  11645.      * @param dblESpread E Spread to Optimal Exercise
  11646.      *
  11647.      * @return N Spread from E Spread to Optimal Exercise
  11648.      *
  11649.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11650.      */

  11651.     public abstract double nSpreadFromESpreadToOptimalExercise (
  11652.         final org.drip.param.valuation.ValuationParams valParams,
  11653.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11654.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11655.         final double dblESpread)
  11656.         throws java.lang.Exception;

  11657.     /**
  11658.      * Calculate N Spread from G Spread to Work-out
  11659.      *
  11660.      * @param valParams Valuation Parameters
  11661.      * @param csqs Market Parameters
  11662.      * @param vcp Valuation Customization Parameters
  11663.      * @param iWorkoutDate Work-out Date
  11664.      * @param dblWorkoutFactor Work-out Factor
  11665.      * @param dblGSpread G Spread to Work-out
  11666.      *
  11667.      * @return N Spread from G Spread to Work-out
  11668.      *
  11669.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11670.      */

  11671.     public abstract double nSpreadFromGSpread (
  11672.         final org.drip.param.valuation.ValuationParams valParams,
  11673.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11674.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11675.         final int iWorkoutDate,
  11676.         final double dblWorkoutFactor,
  11677.         final double dblGSpread)
  11678.         throws java.lang.Exception;

  11679.     /**
  11680.      * Calculate N Spread from G Spread to Maturity
  11681.      *
  11682.      * @param valParams Valuation Parameters
  11683.      * @param csqs Market Parameters
  11684.      * @param vcp Valuation Customization Parameters
  11685.      * @param dblGSpread G Spread to Maturity
  11686.      *
  11687.      * @return N Spread from G Spread to Maturity
  11688.      *
  11689.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11690.      */

  11691.     public abstract double nSpreadFromGSpread (
  11692.         final org.drip.param.valuation.ValuationParams valParams,
  11693.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11694.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11695.         final double dblGSpread)
  11696.         throws java.lang.Exception;

  11697.     /**
  11698.      * Calculate N Spread from G Spread to Optimal Exercise
  11699.      *
  11700.      * @param valParams Valuation Parameters
  11701.      * @param csqs Market Parameters
  11702.      * @param vcp Valuation Customization Parameters
  11703.      * @param dblGSpread G Spread to Optimal Exercise
  11704.      *
  11705.      * @return N Spread from G Spread to Optimal Exercise
  11706.      *
  11707.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11708.      */

  11709.     public abstract double nSpreadFromGSpreadToOptimalExercise (
  11710.         final org.drip.param.valuation.ValuationParams valParams,
  11711.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11712.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11713.         final double dblGSpread)
  11714.         throws java.lang.Exception;

  11715.     /**
  11716.      * Calculate N Spread from I Spread to Work-out
  11717.      *
  11718.      * @param valParams Valuation Parameters
  11719.      * @param csqs Market Parameters
  11720.      * @param vcp Valuation Customization Parameters
  11721.      * @param iWorkoutDate Work-out Date
  11722.      * @param dblWorkoutFactor Work-out Factor
  11723.      * @param dblISpread I Spread to Work-out
  11724.      *
  11725.      * @return N Spread from I Spread to Work-out
  11726.      *
  11727.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11728.      */

  11729.     public abstract double nSpreadFromISpread (
  11730.         final org.drip.param.valuation.ValuationParams valParams,
  11731.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11732.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11733.         final int iWorkoutDate,
  11734.         final double dblWorkoutFactor,
  11735.         final double dblISpread)
  11736.         throws java.lang.Exception;

  11737.     /**
  11738.      * Calculate N Spread from I Spread to Maturity
  11739.      *
  11740.      * @param valParams Valuation Parameters
  11741.      * @param csqs Market Parameters
  11742.      * @param vcp Valuation Customization Parameters
  11743.      * @param dblISpread I Spread to Maturity
  11744.      *
  11745.      * @return N Spread from I Spread to Maturity
  11746.      *
  11747.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11748.      */

  11749.     public abstract double nSpreadFromISpread (
  11750.         final org.drip.param.valuation.ValuationParams valParams,
  11751.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11752.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11753.         final double dblISpread)
  11754.         throws java.lang.Exception;

  11755.     /**
  11756.      * Calculate N Spread from I Spread to Optimal Exercise
  11757.      *
  11758.      * @param valParams Valuation Parameters
  11759.      * @param csqs Market Parameters
  11760.      * @param vcp Valuation Customization Parameters
  11761.      * @param dblISpread I Spread to Optimal Exercise
  11762.      *
  11763.      * @return N Spread from I Spread to Optimal Exercise
  11764.      *
  11765.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11766.      */

  11767.     public abstract double nSpreadFromISpreadToOptimalExercise (
  11768.         final org.drip.param.valuation.ValuationParams valParams,
  11769.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11770.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11771.         final double dblISpread)
  11772.         throws java.lang.Exception;

  11773.     /**
  11774.      * Calculate N Spread from J Spread to Work-out
  11775.      *
  11776.      * @param valParams Valuation Parameters
  11777.      * @param csqs Market Parameters
  11778.      * @param vcp Valuation Customization Parameters
  11779.      * @param iWorkoutDate Work-out Date
  11780.      * @param dblWorkoutFactor Work-out Factor
  11781.      * @param dblJSpread J Spread to Work-out
  11782.      *
  11783.      * @return N Spread from J Spread to Work-out
  11784.      *
  11785.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11786.      */

  11787.     public abstract double nSpreadFromJSpread (
  11788.         final org.drip.param.valuation.ValuationParams valParams,
  11789.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11790.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11791.         final int iWorkoutDate,
  11792.         final double dblWorkoutFactor,
  11793.         final double dblJSpread)
  11794.         throws java.lang.Exception;

  11795.     /**
  11796.      * Calculate N Spread from J Spread to Maturity
  11797.      *
  11798.      * @param valParams Valuation Parameters
  11799.      * @param csqs Market Parameters
  11800.      * @param vcp Valuation Customization Parameters
  11801.      * @param dblJSpread J Spread to Maturity
  11802.      *
  11803.      * @return N Spread from J Spread to Maturity
  11804.      *
  11805.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11806.      */

  11807.     public abstract double nSpreadFromJSpread (
  11808.         final org.drip.param.valuation.ValuationParams valParams,
  11809.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11810.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11811.         final double dblJSpread)
  11812.         throws java.lang.Exception;

  11813.     /**
  11814.      * Calculate N Spread from J Spread to Optimal Exercise
  11815.      *
  11816.      * @param valParams Valuation Parameters
  11817.      * @param csqs Market Parameters
  11818.      * @param vcp Valuation Customization Parameters
  11819.      * @param dblJSpread J Spread to Optimal Exercise
  11820.      *
  11821.      * @return N Spread from J Spread to Optimal Exercise
  11822.      *
  11823.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11824.      */

  11825.     public abstract double nSpreadFromJSpreadToOptimalExercise (
  11826.         final org.drip.param.valuation.ValuationParams valParams,
  11827.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11828.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11829.         final double dblJSpread)
  11830.         throws java.lang.Exception;

  11831.     /**
  11832.      * Calculate N Spread from OAS to Work-out
  11833.      *
  11834.      * @param valParams Valuation Parameters
  11835.      * @param csqs Market Parameters
  11836.      * @param vcp Valuation Customization Parameters
  11837.      * @param iWorkoutDate Work-out Date
  11838.      * @param dblWorkoutFactor Work-out Factor
  11839.      * @param dblOAS OAS to Work-out
  11840.      *
  11841.      * @return N Spread from OAS to Work-out
  11842.      *
  11843.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11844.      */

  11845.     public abstract double nSpreadFromOAS (
  11846.         final org.drip.param.valuation.ValuationParams valParams,
  11847.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11848.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11849.         final int iWorkoutDate,
  11850.         final double dblWorkoutFactor,
  11851.         final double dblOAS)
  11852.         throws java.lang.Exception;

  11853.     /**
  11854.      * Calculate N Spread from OAS to Maturity
  11855.      *
  11856.      * @param valParams Valuation Parameters
  11857.      * @param csqs Market Parameters
  11858.      * @param vcp Valuation Customization Parameters
  11859.      * @param dblOAS OAS to Maturity
  11860.      *
  11861.      * @return N Spread from OAS to Maturity
  11862.      *
  11863.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11864.      */

  11865.     public abstract double nSpreadFromOAS (
  11866.         final org.drip.param.valuation.ValuationParams valParams,
  11867.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11868.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11869.         final double dblOAS)
  11870.         throws java.lang.Exception;

  11871.     /**
  11872.      * Calculate N Spread from OAS to Optimal Exercise
  11873.      *
  11874.      * @param valParams Valuation Parameters
  11875.      * @param csqs Market Parameters
  11876.      * @param vcp Valuation Customization Parameters
  11877.      * @param dblOAS OAS to Optimal Exercise
  11878.      *
  11879.      * @return N Spread from OAS to Optimal Exercise
  11880.      *
  11881.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11882.      */

  11883.     public abstract double nSpreadFromOASToOptimalExercise (
  11884.         final org.drip.param.valuation.ValuationParams valParams,
  11885.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11886.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11887.         final double dblOAS)
  11888.         throws java.lang.Exception;

  11889.     /**
  11890.      * Calculate N Spread from PECS to Work-out
  11891.      *
  11892.      * @param valParams Valuation Parameters
  11893.      * @param csqs Market Parameters
  11894.      * @param vcp Valuation Customization Parameters
  11895.      * @param iWorkoutDate Work-out Date
  11896.      * @param dblWorkoutFactor Work-out Factor
  11897.      * @param dblPECS PECS to Work-out
  11898.      *
  11899.      * @return N Spread from PECS to Work-out
  11900.      *
  11901.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11902.      */

  11903.     public abstract double nSpreadFromPECS (
  11904.         final org.drip.param.valuation.ValuationParams valParams,
  11905.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11906.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11907.         final int iWorkoutDate,
  11908.         final double dblWorkoutFactor,
  11909.         final double dblPECS)
  11910.         throws java.lang.Exception;

  11911.     /**
  11912.      * Calculate N Spread from PECS to Maturity
  11913.      *
  11914.      * @param valParams Valuation Parameters
  11915.      * @param csqs Market Parameters
  11916.      * @param vcp Valuation Customization Parameters
  11917.      * @param dblPECS PECS to Maturity
  11918.      *
  11919.      * @return N Spread from PECS to Maturity
  11920.      *
  11921.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11922.      */

  11923.     public abstract double nSpreadFromPECS (
  11924.         final org.drip.param.valuation.ValuationParams valParams,
  11925.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11926.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11927.         final double dblPECS)
  11928.         throws java.lang.Exception;

  11929.     /**
  11930.      * Calculate N Spread from PECS to Optimal Exercise
  11931.      *
  11932.      * @param valParams Valuation Parameters
  11933.      * @param csqs Market Parameters
  11934.      * @param vcp Valuation Customization Parameters
  11935.      * @param dblPECS PECS to Optimal Exercise
  11936.      *
  11937.      * @return N Spread from PECS to Optimal Exercise
  11938.      *
  11939.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11940.      */

  11941.     public abstract double nSpreadFromPECSToOptimalExercise (
  11942.         final org.drip.param.valuation.ValuationParams valParams,
  11943.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11944.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11945.         final double dblPECS)
  11946.         throws java.lang.Exception;

  11947.     /**
  11948.      * Calculate N Spread from Price to Work-out
  11949.      *
  11950.      * @param valParams Valuation Parameters
  11951.      * @param csqs Market Parameters
  11952.      * @param vcp Valuation Customization Parameters
  11953.      * @param iWorkoutDate Work-out Date
  11954.      * @param dblWorkoutFactor Work-out Factor
  11955.      * @param dblPrice Price to Work-out
  11956.      *
  11957.      * @return N Spread from Price to Work-out
  11958.      *
  11959.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  11960.      */

  11961.     public abstract double nSpreadFromPrice (
  11962.         final org.drip.param.valuation.ValuationParams valParams,
  11963.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11964.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11965.         final int iWorkoutDate,
  11966.         final double dblWorkoutFactor,
  11967.         final double dblPrice)
  11968.         throws java.lang.Exception;

  11969.     /**
  11970.      * Calculate N Spread from Price to Maturity
  11971.      *
  11972.      * @param valParams Valuation Parameters
  11973.      * @param csqs Market Parameters
  11974.      * @param vcp Valuation Customization Parameters
  11975.      * @param dblPrice Price to Maturity
  11976.      *
  11977.      * @return N Spread from Price to Maturity
  11978.      *
  11979.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11980.      */

  11981.     public abstract double nSpreadFromPrice (
  11982.         final org.drip.param.valuation.ValuationParams valParams,
  11983.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  11984.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  11985.         final double dblPrice)
  11986.         throws java.lang.Exception;

  11987.     /**
  11988.      * Calculate N Spread from Price to Optimal Exercise
  11989.      *
  11990.      * @param valParams Valuation Parameters
  11991.      * @param csqs Market Parameters
  11992.      * @param vcp Valuation Customization Parameters
  11993.      * @param dblPrice Price to Optimal Exercise
  11994.      *
  11995.      * @return N Spread from Price to Optimal Exercise
  11996.      *
  11997.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  11998.      */

  11999.     public abstract double nSpreadFromPriceToOptimalExercise (
  12000.         final org.drip.param.valuation.ValuationParams valParams,
  12001.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12002.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12003.         final double dblPrice)
  12004.         throws java.lang.Exception;

  12005.     /**
  12006.      * Calculate N Spread from TSY Spread to Work-out
  12007.      *
  12008.      * @param valParams Valuation Parameters
  12009.      * @param csqs Market Parameters
  12010.      * @param vcp Valuation Customization Parameters
  12011.      * @param iWorkoutDate Work-out Date
  12012.      * @param dblWorkoutFactor Work-out Factor
  12013.      * @param dblTSYSpread TSY Spread to Work-out
  12014.      *
  12015.      * @return N Spread from TSY Spread to Work-out
  12016.      *
  12017.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  12018.      */

  12019.     public abstract double nSpreadFromTSYSpread (
  12020.         final org.drip.param.valuation.ValuationParams valParams,
  12021.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12022.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12023.         final int iWorkoutDate,
  12024.         final double dblWorkoutFactor,
  12025.         final double dblTSYSpread)
  12026.         throws java.lang.Exception;

  12027.     /**
  12028.      * Calculate N Spread from TSY Spread to Maturity
  12029.      *
  12030.      * @param valParams Valuation Parameters
  12031.      * @param csqs Market Parameters
  12032.      * @param vcp Valuation Customization Parameters
  12033.      * @param dblTSYSpread TSY Spread to Maturity
  12034.      *
  12035.      * @return N Spread from TSY Spread to Maturity
  12036.      *
  12037.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  12038.      */

  12039.     public abstract double nSpreadFromTSYSpread (
  12040.         final org.drip.param.valuation.ValuationParams valParams,
  12041.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12042.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12043.         final double dblTSYSpread)
  12044.         throws java.lang.Exception;

  12045.     /**
  12046.      * Calculate N Spread from TSY Spread to Optimal Exercise
  12047.      *
  12048.      * @param valParams Valuation Parameters
  12049.      * @param csqs Market Parameters
  12050.      * @param vcp Valuation Customization Parameters
  12051.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  12052.      *
  12053.      * @return N Spread from TSY Spread to Optimal Exercise
  12054.      *
  12055.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  12056.      */

  12057.     public abstract double nSpreadFromTSYSpreadToOptimalExercise (
  12058.         final org.drip.param.valuation.ValuationParams valParams,
  12059.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12060.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12061.         final double dblTSYSpread)
  12062.         throws java.lang.Exception;

  12063.     /**
  12064.      * Calculate N Spread from Yield to Work-out
  12065.      *
  12066.      * @param valParams Valuation Parameters
  12067.      * @param csqs Market Parameters
  12068.      * @param vcp Valuation Customization Parameters
  12069.      * @param iWorkoutDate Work-out Date
  12070.      * @param dblWorkoutFactor Work-out Factor
  12071.      * @param dblYield Yield to Work-out
  12072.      *
  12073.      * @return N Spread from Yield to Work-out
  12074.      *
  12075.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  12076.      */

  12077.     public abstract double nSpreadFromYield (
  12078.         final org.drip.param.valuation.ValuationParams valParams,
  12079.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12080.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12081.         final int iWorkoutDate,
  12082.         final double dblWorkoutFactor,
  12083.         final double dblYield)
  12084.         throws java.lang.Exception;

  12085.     /**
  12086.      * Calculate N Spread from Yield to Maturity
  12087.      *
  12088.      * @param valParams Valuation Parameters
  12089.      * @param csqs Market Parameters
  12090.      * @param vcp Valuation Customization Parameters
  12091.      * @param dblYield Yield to Maturity
  12092.      *
  12093.      * @return N Spread from Yield to Maturity
  12094.      *
  12095.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  12096.      */

  12097.     public abstract double nSpreadFromYield (
  12098.         final org.drip.param.valuation.ValuationParams valParams,
  12099.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12100.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12101.         final double dblYield)
  12102.         throws java.lang.Exception;

  12103.     /**
  12104.      * Calculate N Spread from Yield to Optimal Exercise
  12105.      *
  12106.      * @param valParams Valuation Parameters
  12107.      * @param csqs Market Parameters
  12108.      * @param vcp Valuation Customization Parameters
  12109.      * @param dblYield Yield to Optimal Exercise
  12110.      *
  12111.      * @return N Spread from Yield to Optimal Exercise
  12112.      *
  12113.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  12114.      */

  12115.     public abstract double nSpreadFromYieldToOptimalExercise (
  12116.         final org.drip.param.valuation.ValuationParams valParams,
  12117.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12118.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12119.         final double dblYield)
  12120.         throws java.lang.Exception;

  12121.     /**
  12122.      * Calculate N Spread from Yield Spread to Work-out
  12123.      *
  12124.      * @param valParams Valuation Parameters
  12125.      * @param csqs Market Parameters
  12126.      * @param vcp Valuation Customization Parameters
  12127.      * @param iWorkoutDate Work-out Date
  12128.      * @param dblWorkoutFactor Work-out Factor
  12129.      * @param dblYieldSpread Yield Spread to Work-out
  12130.      *
  12131.      * @return N Spread from Yield Spread to Work-out
  12132.      *
  12133.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  12134.      */

  12135.     public abstract double nSpreadFromYieldSpread (
  12136.         final org.drip.param.valuation.ValuationParams valParams,
  12137.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12138.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12139.         final int iWorkoutDate,
  12140.         final double dblWorkoutFactor,
  12141.         final double dblYieldSpread)
  12142.         throws java.lang.Exception;

  12143.     /**
  12144.      * Calculate N Spread from Yield Spread to Maturity
  12145.      *
  12146.      * @param valParams Valuation Parameters
  12147.      * @param csqs Market Parameters
  12148.      * @param vcp Valuation Customization Parameters
  12149.      * @param dblYieldSpread Yield Spread to Maturity
  12150.      *
  12151.      * @return N Spread from Yield Spread to Maturity
  12152.      *
  12153.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  12154.      */

  12155.     public abstract double nSpreadFromYieldSpread (
  12156.         final org.drip.param.valuation.ValuationParams valParams,
  12157.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12158.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12159.         final double dblYieldSpread)
  12160.         throws java.lang.Exception;

  12161.     /**
  12162.      * Calculate N Spread from Yield Spread to Optimal Exercise
  12163.      *
  12164.      * @param valParams Valuation Parameters
  12165.      * @param csqs Market Parameters
  12166.      * @param vcp Valuation Customization Parameters
  12167.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  12168.      *
  12169.      * @return N Spread from Yield Spread to Optimal Exercise
  12170.      *
  12171.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  12172.      */

  12173.     public abstract double nSpreadFromYieldSpreadToOptimalExercise (
  12174.         final org.drip.param.valuation.ValuationParams valParams,
  12175.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12176.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12177.         final double dblYieldSpread)
  12178.         throws java.lang.Exception;

  12179.     /**
  12180.      * Calculate N Spread from Z Spread to Work-out
  12181.      *
  12182.      * @param valParams Valuation Parameters
  12183.      * @param csqs Market Parameters
  12184.      * @param vcp Valuation Customization Parameters
  12185.      * @param iWorkoutDate Work-out Date
  12186.      * @param dblWorkoutFactor Work-out Factor
  12187.      * @param dblZSpread Z Spread to Work-out
  12188.      *
  12189.      * @return N Spread from Z Spread to Work-out
  12190.      *
  12191.      * @throws java.lang.Exception Thrown if the N Spread cannot be calculated
  12192.      */

  12193.     public abstract double nSpreadFromZSpread (
  12194.         final org.drip.param.valuation.ValuationParams valParams,
  12195.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12196.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12197.         final int iWorkoutDate,
  12198.         final double dblWorkoutFactor,
  12199.         final double dblZSpread)
  12200.         throws java.lang.Exception;

  12201.     /**
  12202.      * Calculate N Spread from Z Spread to Maturity
  12203.      *
  12204.      * @param valParams Valuation Parameters
  12205.      * @param csqs Market Parameters
  12206.      * @param vcp Valuation Customization Parameters
  12207.      * @param dblZSpread Z Spread to Maturity
  12208.      *
  12209.      * @return N Spread from Z Spread to Maturity
  12210.      *
  12211.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  12212.      */

  12213.     public abstract double nSpreadFromZSpread (
  12214.         final org.drip.param.valuation.ValuationParams valParams,
  12215.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12216.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12217.         final double dblZSpread)
  12218.         throws java.lang.Exception;

  12219.     /**
  12220.      * Calculate N Spread from Z Spread to Optimal Exercise
  12221.      *
  12222.      * @param valParams Valuation Parameters
  12223.      * @param csqs Market Parameters
  12224.      * @param vcp Valuation Customization Parameters
  12225.      * @param dblZSpread Z Spread to Optimal Exercise
  12226.      *
  12227.      * @return N Spread from Z Spread to Optimal Exercise
  12228.      *
  12229.      * @throws java.lang.Exception Thrown if N Spread cannot be calculated
  12230.      */

  12231.     public abstract double nSpreadFromZSpreadToOptimalExercise (
  12232.         final org.drip.param.valuation.ValuationParams valParams,
  12233.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12234.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12235.         final double dblZSpread)
  12236.         throws java.lang.Exception;

  12237.     /**
  12238.      * Calculate OAS from ASW to Work-out
  12239.      *
  12240.      * @param valParams Valuation Parameters
  12241.      * @param csqs Market Parameters
  12242.      * @param vcp Valuation Customization Parameters
  12243.      * @param iWorkoutDate Work-out Date
  12244.      * @param dblWorkoutFactor Work-out Factor
  12245.      * @param dblASW ASW to Work-out
  12246.      *
  12247.      * @return OAS from ASW to Work-out
  12248.      *
  12249.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12250.      */

  12251.     public abstract double oasFromASW (
  12252.         final org.drip.param.valuation.ValuationParams valParams,
  12253.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12254.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12255.         final int iWorkoutDate,
  12256.         final double dblWorkoutFactor,
  12257.         final double dblASW)
  12258.         throws java.lang.Exception;

  12259.     /**
  12260.      * Calculate OAS from ASW to Maturity
  12261.      *
  12262.      * @param valParams Valuation Parameters
  12263.      * @param csqs Market Parameters
  12264.      * @param vcp Valuation Customization Parameters
  12265.      * @param dblASW ASW to Maturity
  12266.      *
  12267.      * @return OAS from ASW to Maturity
  12268.      *
  12269.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12270.      */

  12271.     public abstract double oasFromASW (
  12272.         final org.drip.param.valuation.ValuationParams valParams,
  12273.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12274.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12275.         final double dblASW)
  12276.         throws java.lang.Exception;

  12277.     /**
  12278.      * Calculate OAS from ASW to Optimal Exercise
  12279.      *
  12280.      * @param valParams Valuation Parameters
  12281.      * @param csqs Market Parameters
  12282.      * @param vcp Valuation Customization Parameters
  12283.      * @param dblASW ASW to Optimal Exercise
  12284.      *
  12285.      * @return OAS from ASW to Optimal Exercise
  12286.      *
  12287.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12288.      */

  12289.     public abstract double oasFromASWToOptimalExercise (
  12290.         final org.drip.param.valuation.ValuationParams valParams,
  12291.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12292.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12293.         final double dblASW)
  12294.         throws java.lang.Exception;

  12295.     /**
  12296.      * Calculate OAS from Bond Basis to Work-out
  12297.      *
  12298.      * @param valParams Valuation Parameters
  12299.      * @param csqs Market Parameters
  12300.      * @param vcp Valuation Customization Parameters
  12301.      * @param iWorkoutDate Work-out Date
  12302.      * @param dblWorkoutFactor Work-out Factor
  12303.      * @param dblBondBasis Bond Basis to Work-out
  12304.      *
  12305.      * @return OAS from Bond Basis to Work-out
  12306.      *
  12307.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12308.      */

  12309.     public abstract double oasFromBondBasis (
  12310.         final org.drip.param.valuation.ValuationParams valParams,
  12311.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12312.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12313.         final int iWorkoutDate,
  12314.         final double dblWorkoutFactor,
  12315.         final double dblBondBasis)
  12316.         throws java.lang.Exception;

  12317.     /**
  12318.      * Calculate OAS from Bond Basis to Maturity
  12319.      *
  12320.      * @param valParams Valuation Parameters
  12321.      * @param csqs Market Parameters
  12322.      * @param vcp Valuation Customization Parameters
  12323.      * @param dblBondBasis Bond Basis to Maturity
  12324.      *
  12325.      * @return OAS from Bond Basis to Maturity
  12326.      *
  12327.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12328.      */

  12329.     public abstract double oasFromBondBasis (
  12330.         final org.drip.param.valuation.ValuationParams valParams,
  12331.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12332.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12333.         final double dblBondBasis)
  12334.         throws java.lang.Exception;

  12335.     /**
  12336.      * Calculate OAS from Bond Basis to Optimal Exercise
  12337.      *
  12338.      * @param valParams Valuation Parameters
  12339.      * @param csqs Market Parameters
  12340.      * @param vcp Valuation Customization Parameters
  12341.      * @param dblBondBasis Bond Basis to Optimal Exercise
  12342.      *
  12343.      * @return OAS from Bond Basis to Optimal Exercise
  12344.      *
  12345.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12346.      */

  12347.     public abstract double oasFromBondBasisToOptimalExercise (
  12348.         final org.drip.param.valuation.ValuationParams valParams,
  12349.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12350.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12351.         final double dblBondBasis)
  12352.         throws java.lang.Exception;

  12353.     /**
  12354.      * Calculate OAS from Credit Basis to Work-out
  12355.      *
  12356.      * @param valParams Valuation Parameters
  12357.      * @param csqs Market Parameters
  12358.      * @param vcp Valuation Customization Parameters
  12359.      * @param iWorkoutDate Work-out Date
  12360.      * @param dblWorkoutFactor Work-out Factor
  12361.      * @param dblCreditBasis Credit Basis to Work-out
  12362.      *
  12363.      * @return OAS from Credit Basis to Work-out
  12364.      *
  12365.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12366.      */

  12367.     public abstract double oasFromCreditBasis (
  12368.         final org.drip.param.valuation.ValuationParams valParams,
  12369.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12370.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12371.         final int iWorkoutDate,
  12372.         final double dblWorkoutFactor,
  12373.         final double dblCreditBasis)
  12374.         throws java.lang.Exception;

  12375.     /**
  12376.      * Calculate OAS from Credit Basis to Maturity
  12377.      *
  12378.      * @param valParams Valuation Parameters
  12379.      * @param csqs Market Parameters
  12380.      * @param vcp Valuation Customization Parameters
  12381.      * @param dblCreditBasis Credit Basis to Maturity
  12382.      *
  12383.      * @return OAS from Credit Basis to Maturity
  12384.      *
  12385.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12386.      */

  12387.     public abstract double oasFromCreditBasis (
  12388.         final org.drip.param.valuation.ValuationParams valParams,
  12389.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12390.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12391.         final double dblCreditBasis)
  12392.         throws java.lang.Exception;

  12393.     /**
  12394.      * Calculate OAS from Credit Basis to Optimal Exercise
  12395.      *
  12396.      * @param valParams Valuation Parameters
  12397.      * @param csqs Market Parameters
  12398.      * @param vcp Valuation Customization Parameters
  12399.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  12400.      *
  12401.      * @return OAS from Credit Basis to Optimal Exercise
  12402.      *
  12403.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12404.      */

  12405.     public abstract double oasFromCreditBasisToOptimalExercise (
  12406.         final org.drip.param.valuation.ValuationParams valParams,
  12407.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12408.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12409.         final double dblCreditBasis)
  12410.         throws java.lang.Exception;

  12411.     /**
  12412.      * Calculate OAS from Discount Margin to Work-out
  12413.      *
  12414.      * @param valParams Valuation Parameters
  12415.      * @param csqs Market Parameters
  12416.      * @param vcp Valuation Customization Parameters
  12417.      * @param iWorkoutDate Work-out Date
  12418.      * @param dblWorkoutFactor Work-out Factor
  12419.      * @param dblDiscountMargin Discount Margin to Work-out
  12420.      *
  12421.      * @return OAS from Discount Margin to Work-out
  12422.      *
  12423.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12424.      */

  12425.     public abstract double oasFromDiscountMargin (
  12426.         final org.drip.param.valuation.ValuationParams valParams,
  12427.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12428.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12429.         final int iWorkoutDate,
  12430.         final double dblWorkoutFactor,
  12431.         final double dblDiscountMargin)
  12432.         throws java.lang.Exception;

  12433.     /**
  12434.      * Calculate OAS from Discount Margin to Maturity
  12435.      *
  12436.      * @param valParams Valuation Parameters
  12437.      * @param csqs Market Parameters
  12438.      * @param vcp Valuation Customization Parameters
  12439.      * @param dblDiscountMargin Discount Margin to Maturity
  12440.      *
  12441.      * @return OAS from Discount Margin to Maturity
  12442.      *
  12443.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12444.      */

  12445.     public abstract double oasFromDiscountMargin (
  12446.         final org.drip.param.valuation.ValuationParams valParams,
  12447.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12448.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12449.         final double dblDiscountMargin)
  12450.         throws java.lang.Exception;

  12451.     /**
  12452.      * Calculate OAS from Discount Margin to Optimal Exercise
  12453.      *
  12454.      * @param valParams Valuation Parameters
  12455.      * @param csqs Market Parameters
  12456.      * @param vcp Valuation Customization Parameters
  12457.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  12458.      *
  12459.      * @return OAS from Discount Margin to Optimal Exercise
  12460.      *
  12461.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12462.      */

  12463.     public abstract double oasFromDiscountMarginToOptimalExercise (
  12464.         final org.drip.param.valuation.ValuationParams valParams,
  12465.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12466.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12467.         final double dblDiscountMargin)
  12468.         throws java.lang.Exception;

  12469.     /**
  12470.      * Calculate OAS from E Spread to Work-out
  12471.      *
  12472.      * @param valParams Valuation Parameters
  12473.      * @param csqs Market Parameters
  12474.      * @param vcp Valuation Customization Parameters
  12475.      * @param iWorkoutDate Work-out Date
  12476.      * @param dblWorkoutFactor Work-out Factor
  12477.      * @param dblESpread E Spread to Work-out
  12478.      *
  12479.      * @return OAS from E Spread to Work-out
  12480.      *
  12481.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12482.      */

  12483.     public abstract double oasFromESpread (
  12484.         final org.drip.param.valuation.ValuationParams valParams,
  12485.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12486.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12487.         final int iWorkoutDate,
  12488.         final double dblWorkoutFactor,
  12489.         final double dblESpread)
  12490.         throws java.lang.Exception;

  12491.     /**
  12492.      * Calculate OAS from E Spread to Maturity
  12493.      *
  12494.      * @param valParams Valuation Parameters
  12495.      * @param csqs Market Parameters
  12496.      * @param vcp Valuation Customization Parameters
  12497.      * @param dblESpread E Spread to Maturity
  12498.      *
  12499.      * @return OAS from E Spread to Maturity
  12500.      *
  12501.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12502.      */

  12503.     public abstract double oasFromESpread (
  12504.         final org.drip.param.valuation.ValuationParams valParams,
  12505.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12506.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12507.         final double dblESpread)
  12508.         throws java.lang.Exception;

  12509.     /**
  12510.      * Calculate OAS from E Spread to Optimal Exercise
  12511.      *
  12512.      * @param valParams Valuation Parameters
  12513.      * @param csqs Market Parameters
  12514.      * @param vcp Valuation Customization Parameters
  12515.      * @param dblESpread E Spread to Optimal Exercise
  12516.      *
  12517.      * @return OAS from E Spread to Optimal Exercise
  12518.      *
  12519.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12520.      */

  12521.     public abstract double oasFromESpreadToOptimalExercise (
  12522.         final org.drip.param.valuation.ValuationParams valParams,
  12523.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12524.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12525.         final double dblESpread)
  12526.         throws java.lang.Exception;

  12527.     /**
  12528.      * Calculate OAS from G Spread to Work-out
  12529.      *
  12530.      * @param valParams Valuation Parameters
  12531.      * @param csqs Market Parameters
  12532.      * @param vcp Valuation Customization Parameters
  12533.      * @param iWorkoutDate Work-out Date
  12534.      * @param dblWorkoutFactor Work-out Factor
  12535.      * @param dblGSpread G Spread to Work-out
  12536.      *
  12537.      * @return OAS from G Spread to Work-out
  12538.      *
  12539.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12540.      */

  12541.     public abstract double oasFromGSpread (
  12542.         final org.drip.param.valuation.ValuationParams valParams,
  12543.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12544.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12545.         final int iWorkoutDate,
  12546.         final double dblWorkoutFactor,
  12547.         final double dblGSpread)
  12548.         throws java.lang.Exception;

  12549.     /**
  12550.      * Calculate OAS from G Spread to Maturity
  12551.      *
  12552.      * @param valParams Valuation Parameters
  12553.      * @param csqs Market Parameters
  12554.      * @param vcp Valuation Customization Parameters
  12555.      * @param dblGSpread G Spread to Maturity
  12556.      *
  12557.      * @return OAS from G Spread to Maturity
  12558.      *
  12559.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12560.      */

  12561.     public abstract double oasFromGSpread (
  12562.         final org.drip.param.valuation.ValuationParams valParams,
  12563.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12564.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12565.         final double dblGSpread)
  12566.         throws java.lang.Exception;

  12567.     /**
  12568.      * Calculate OAS from G Spread to Optimal Exercise
  12569.      *
  12570.      * @param valParams Valuation Parameters
  12571.      * @param csqs Market Parameters
  12572.      * @param vcp Valuation Customization Parameters
  12573.      * @param dblGSpread G Spread to Optimal Exercise
  12574.      *
  12575.      * @return OAS from G Spread to Optimal Exercise
  12576.      *
  12577.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12578.      */

  12579.     public abstract double oasFromGSpreadToOptimalExercise (
  12580.         final org.drip.param.valuation.ValuationParams valParams,
  12581.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12582.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12583.         final double dblGSpread)
  12584.         throws java.lang.Exception;

  12585.     /**
  12586.      * Calculate OAS from I Spread to Work-out
  12587.      *
  12588.      * @param valParams Valuation Parameters
  12589.      * @param csqs Market Parameters
  12590.      * @param vcp Valuation Customization Parameters
  12591.      * @param iWorkoutDate Work-out Date
  12592.      * @param dblWorkoutFactor Work-out Factor
  12593.      * @param dblISpread I Spread to Work-out
  12594.      *
  12595.      * @return OAS from I Spread to Work-out
  12596.      *
  12597.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12598.      */

  12599.     public abstract double oasFromISpread (
  12600.         final org.drip.param.valuation.ValuationParams valParams,
  12601.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12602.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12603.         final int iWorkoutDate,
  12604.         final double dblWorkoutFactor,
  12605.         final double dblISpread)
  12606.         throws java.lang.Exception;

  12607.     /**
  12608.      * Calculate OAS from I Spread to Maturity
  12609.      *
  12610.      * @param valParams Valuation Parameters
  12611.      * @param csqs Market Parameters
  12612.      * @param vcp Valuation Customization Parameters
  12613.      * @param dblISpread I Spread to Maturity
  12614.      *
  12615.      * @return OAS from I Spread to Maturity
  12616.      *
  12617.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12618.      */

  12619.     public abstract double oasFromISpread (
  12620.         final org.drip.param.valuation.ValuationParams valParams,
  12621.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12622.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12623.         final double dblISpread)
  12624.         throws java.lang.Exception;

  12625.     /**
  12626.      * Calculate OAS from I Spread to Optimal Exercise
  12627.      *
  12628.      * @param valParams Valuation Parameters
  12629.      * @param csqs Market Parameters
  12630.      * @param vcp Valuation Customization Parameters
  12631.      * @param dblISpread ISpread to Optimal Exercise
  12632.      *
  12633.      * @return OAS from I Spread to Optimal Exercise
  12634.      *
  12635.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12636.      */

  12637.     public abstract double oasFromISpreadToOptimalExercise (
  12638.         final org.drip.param.valuation.ValuationParams valParams,
  12639.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12640.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12641.         final double dblISpread)
  12642.         throws java.lang.Exception;

  12643.     /**
  12644.      * Calculate OAS from J Spread to Work-out
  12645.      *
  12646.      * @param valParams Valuation Parameters
  12647.      * @param csqs Market Parameters
  12648.      * @param vcp Valuation Customization Parameters
  12649.      * @param iWorkoutDate Work-out Date
  12650.      * @param dblWorkoutFactor Work-out Factor
  12651.      * @param dblJSpread J Spread to Work-out
  12652.      *
  12653.      * @return OAS from J Spread to Work-out
  12654.      *
  12655.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12656.      */

  12657.     public abstract double oasFromJSpread (
  12658.         final org.drip.param.valuation.ValuationParams valParams,
  12659.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12660.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12661.         final int iWorkoutDate,
  12662.         final double dblWorkoutFactor,
  12663.         final double dblJSpread)
  12664.         throws java.lang.Exception;

  12665.     /**
  12666.      * Calculate OAS from J Spread to Maturity
  12667.      *
  12668.      * @param valParams Valuation Parameters
  12669.      * @param csqs Market Parameters
  12670.      * @param vcp Valuation Customization Parameters
  12671.      * @param dblJSpread J Spread to Maturity
  12672.      *
  12673.      * @return OAS from J Spread to Maturity
  12674.      *
  12675.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12676.      */

  12677.     public abstract double oasFromJSpread (
  12678.         final org.drip.param.valuation.ValuationParams valParams,
  12679.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12680.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12681.         final double dblJSpread)
  12682.         throws java.lang.Exception;

  12683.     /**
  12684.      * Calculate OAS from J Spread to Optimal Exercise
  12685.      *
  12686.      * @param valParams Valuation Parameters
  12687.      * @param csqs Market Parameters
  12688.      * @param vcp Valuation Customization Parameters
  12689.      * @param dblJSpread JSpread to Optimal Exercise
  12690.      *
  12691.      * @return OAS from J Spread to Optimal Exercise
  12692.      *
  12693.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12694.      */

  12695.     public abstract double oasFromJSpreadToOptimalExercise (
  12696.         final org.drip.param.valuation.ValuationParams valParams,
  12697.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12698.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12699.         final double dblJSpread)
  12700.         throws java.lang.Exception;

  12701.     /**
  12702.      * Calculate OAS from N Spread to Work-out
  12703.      *
  12704.      * @param valParams Valuation Parameters
  12705.      * @param csqs Market Parameters
  12706.      * @param vcp Valuation Customization Parameters
  12707.      * @param iWorkoutDate Work-out Date
  12708.      * @param dblWorkoutFactor Work-out Factor
  12709.      * @param dblNSpread N Spread to Work-out
  12710.      *
  12711.      * @return OAS from N Spread to Work-out
  12712.      *
  12713.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12714.      */

  12715.     public abstract double oasFromNSpread (
  12716.         final org.drip.param.valuation.ValuationParams valParams,
  12717.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12718.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12719.         final int iWorkoutDate,
  12720.         final double dblWorkoutFactor,
  12721.         final double dblNSpread)
  12722.         throws java.lang.Exception;

  12723.     /**
  12724.      * Calculate OAS from N Spread to Maturity
  12725.      *
  12726.      * @param valParams Valuation Parameters
  12727.      * @param csqs Market Parameters
  12728.      * @param vcp Valuation Customization Parameters
  12729.      * @param dblNSpread N Spread to Maturity
  12730.      *
  12731.      * @return OAS from N Spread to Maturity
  12732.      *
  12733.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12734.      */

  12735.     public abstract double oasFromNSpread (
  12736.         final org.drip.param.valuation.ValuationParams valParams,
  12737.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12738.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12739.         final double dblNSpread)
  12740.         throws java.lang.Exception;

  12741.     /**
  12742.      * Calculate OAS from N Spread to Optimal Exercise
  12743.      *
  12744.      * @param valParams Valuation Parameters
  12745.      * @param csqs Market Parameters
  12746.      * @param vcp Valuation Customization Parameters
  12747.      * @param dblNSpread N Spread to Optimal Exercise
  12748.      *
  12749.      * @return OAS from N Spread to Optimal Exercise
  12750.      *
  12751.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12752.      */

  12753.     public abstract double oasFromNSpreadToOptimalExercise (
  12754.         final org.drip.param.valuation.ValuationParams valParams,
  12755.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12756.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12757.         final double dblNSpread)
  12758.         throws java.lang.Exception;

  12759.     /**
  12760.      * Calculate OAS from PECS to Work-out
  12761.      *
  12762.      * @param valParams Valuation Parameters
  12763.      * @param csqs Market Parameters
  12764.      * @param vcp Valuation Customization Parameters
  12765.      * @param iWorkoutDate Work-out Date
  12766.      * @param dblWorkoutFactor Work-out Factor
  12767.      * @param dblPECS PECS to Work-out
  12768.      *
  12769.      * @return OAS from PECS to Work-out
  12770.      *
  12771.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12772.      */

  12773.     public abstract double oasFromPECS (
  12774.         final org.drip.param.valuation.ValuationParams valParams,
  12775.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12776.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12777.         final int iWorkoutDate,
  12778.         final double dblWorkoutFactor,
  12779.         final double dblPECS)
  12780.         throws java.lang.Exception;

  12781.     /**
  12782.      * Calculate OAS from PECS to Maturity
  12783.      *
  12784.      * @param valParams Valuation Parameters
  12785.      * @param csqs Market Parameters
  12786.      * @param vcp Valuation Customization Parameters
  12787.      * @param dblPECS PECS to Maturity
  12788.      *
  12789.      * @return OAS from PECS to Maturity
  12790.      *
  12791.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12792.      */

  12793.     public abstract double oasFromPECS (
  12794.         final org.drip.param.valuation.ValuationParams valParams,
  12795.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12796.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12797.         final double dblPECS)
  12798.         throws java.lang.Exception;

  12799.     /**
  12800.      * Calculate OAS from PECS to Optimal Exercise
  12801.      *
  12802.      * @param valParams Valuation Parameters
  12803.      * @param csqs Market Parameters
  12804.      * @param vcp Valuation Customization Parameters
  12805.      * @param dblPECS PECS to Optimal Exercise
  12806.      *
  12807.      * @return OAS from PECS to Optimal Exercise
  12808.      *
  12809.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12810.      */

  12811.     public abstract double oasFromPECSToOptimalExercise (
  12812.         final org.drip.param.valuation.ValuationParams valParams,
  12813.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12814.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12815.         final double dblPECS)
  12816.         throws java.lang.Exception;

  12817.     /**
  12818.      * Calculate OAS from Price to Work-out
  12819.      *
  12820.      * @param valParams Valuation Parameters
  12821.      * @param csqs Market Parameters
  12822.      * @param vcp Valuation Customization Parameters
  12823.      * @param iWorkoutDate Work-out Date
  12824.      * @param dblWorkoutFactor Work-out Factor
  12825.      * @param dblPrice Price to Work-out
  12826.      *
  12827.      * @return OAS from Price to Work-out
  12828.      *
  12829.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12830.      */

  12831.     public abstract double oasFromPrice (
  12832.         final org.drip.param.valuation.ValuationParams valParams,
  12833.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12834.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12835.         final int iWorkoutDate,
  12836.         final double dblWorkoutFactor,
  12837.         final double dblPrice)
  12838.         throws java.lang.Exception;

  12839.     /**
  12840.      * Calculate OAS from Price to Maturity
  12841.      *
  12842.      * @param valParams Valuation Parameters
  12843.      * @param csqs Market Parameters
  12844.      * @param vcp Valuation Customization Parameters
  12845.      * @param dblPrice Price to Maturity
  12846.      *
  12847.      * @return OAS from Price to Maturity
  12848.      *
  12849.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12850.      */

  12851.     public abstract double oasFromPrice (
  12852.         final org.drip.param.valuation.ValuationParams valParams,
  12853.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12854.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12855.         final double dblPrice)
  12856.         throws java.lang.Exception;

  12857.     /**
  12858.      * Calculate OAS from Price to Optimal Exercise
  12859.      *
  12860.      * @param valParams Valuation Parameters
  12861.      * @param csqs Market Parameters
  12862.      * @param vcp Valuation Customization Parameters
  12863.      * @param dblPrice Price to Optimal Exercise
  12864.      *
  12865.      * @return OAS from Price to Optimal Exercise
  12866.      *
  12867.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12868.      */

  12869.     public abstract double oasFromPriceToOptimalExercise (
  12870.         final org.drip.param.valuation.ValuationParams valParams,
  12871.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12872.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12873.         final double dblPrice)
  12874.         throws java.lang.Exception;

  12875.     /**
  12876.      * Calculate OAS from TSY Spread to Work-out
  12877.      *
  12878.      * @param valParams Valuation Parameters
  12879.      * @param csqs Market Parameters
  12880.      * @param vcp Valuation Customization Parameters
  12881.      * @param iWorkoutDate Work-out Date
  12882.      * @param dblWorkoutFactor Work-out Factor
  12883.      * @param dblTSYSpread TSY Spread to Work-out
  12884.      *
  12885.      * @return OAS from TSY Spread to Work-out
  12886.      *
  12887.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12888.      */

  12889.     public abstract double oasFromTSYSpread (
  12890.         final org.drip.param.valuation.ValuationParams valParams,
  12891.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12892.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12893.         final int iWorkoutDate,
  12894.         final double dblWorkoutFactor,
  12895.         final double dblTSYSpread)
  12896.         throws java.lang.Exception;

  12897.     /**
  12898.      * Calculate OAS from TSY Spread to Maturity
  12899.      *
  12900.      * @param valParams Valuation Parameters
  12901.      * @param csqs Market Parameters
  12902.      * @param vcp Valuation Customization Parameters
  12903.      * @param dblTSYSpread TSY Spread to Maturity
  12904.      *
  12905.      * @return OAS from TSY Spread to Maturity
  12906.      *
  12907.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12908.      */

  12909.     public abstract double oasFromTSYSpread (
  12910.         final org.drip.param.valuation.ValuationParams valParams,
  12911.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12912.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12913.         final double dblTSYSpread)
  12914.         throws java.lang.Exception;

  12915.     /**
  12916.      * Calculate OAS from TSY Spread to Optimal Exercise
  12917.      *
  12918.      * @param valParams Valuation Parameters
  12919.      * @param csqs Market Parameters
  12920.      * @param vcp Valuation Customization Parameters
  12921.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  12922.      *
  12923.      * @return OAS from TSY Spread to Optimal Exercise
  12924.      *
  12925.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12926.      */

  12927.     public abstract double oasFromTSYSpreadToOptimalExercise (
  12928.         final org.drip.param.valuation.ValuationParams valParams,
  12929.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12930.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12931.         final double dblTSYSpread)
  12932.         throws java.lang.Exception;

  12933.     /**
  12934.      * Calculate OAS from Yield to Work-out
  12935.      *
  12936.      * @param valParams Valuation Parameters
  12937.      * @param csqs Market Parameters
  12938.      * @param vcp Valuation Customization Parameters
  12939.      * @param iWorkoutDate Work-out Date
  12940.      * @param dblWorkoutFactor Work-out Factor
  12941.      * @param dblYield Yield to Work-out
  12942.      *
  12943.      * @return OAS from Yield to Work-out
  12944.      *
  12945.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  12946.      */

  12947.     public abstract double oasFromYield (
  12948.         final org.drip.param.valuation.ValuationParams valParams,
  12949.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12950.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12951.         final int iWorkoutDate,
  12952.         final double dblWorkoutFactor,
  12953.         final double dblYield)
  12954.         throws java.lang.Exception;

  12955.     /**
  12956.      * Calculate OAS from Yield to Maturity
  12957.      *
  12958.      * @param valParams Valuation Parameters
  12959.      * @param csqs Market Parameters
  12960.      * @param vcp Valuation Customization Parameters
  12961.      * @param dblYield Yield to Maturity
  12962.      *
  12963.      * @return OAS from Yield to Maturity
  12964.      *
  12965.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12966.      */

  12967.     public abstract double oasFromYield (
  12968.         final org.drip.param.valuation.ValuationParams valParams,
  12969.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12970.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12971.         final double dblYield)
  12972.         throws java.lang.Exception;

  12973.     /**
  12974.      * Calculate OAS from Yield to Optimal Exercise
  12975.      *
  12976.      * @param valParams Valuation Parameters
  12977.      * @param csqs Market Parameters
  12978.      * @param vcp Valuation Customization Parameters
  12979.      * @param dblYield Yield to Optimal Exercise
  12980.      *
  12981.      * @return OAS from Yield to Optimal Exercise
  12982.      *
  12983.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  12984.      */

  12985.     public abstract double oasFromYieldToOptimalExercise (
  12986.         final org.drip.param.valuation.ValuationParams valParams,
  12987.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  12988.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  12989.         final double dblYield)
  12990.         throws java.lang.Exception;

  12991.     /**
  12992.      * Calculate OAS from Yield Spread to Work-out
  12993.      *
  12994.      * @param valParams Valuation Parameters
  12995.      * @param csqs Market Parameters
  12996.      * @param vcp Valuation Customization Parameters
  12997.      * @param iWorkoutDate Work-out Date
  12998.      * @param dblWorkoutFactor Work-out Factor
  12999.      * @param dblYieldSpread Yield Spread to Work-out
  13000.      *
  13001.      * @return OAS from Yield Spread to Work-out
  13002.      *
  13003.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  13004.      */

  13005.     public abstract double oasFromYieldSpread (
  13006.         final org.drip.param.valuation.ValuationParams valParams,
  13007.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13008.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13009.         final int iWorkoutDate,
  13010.         final double dblWorkoutFactor,
  13011.         final double dblYieldSpread)
  13012.         throws java.lang.Exception;

  13013.     /**
  13014.      * Calculate OAS from Yield Spread to Maturity
  13015.      *
  13016.      * @param valParams Valuation Parameters
  13017.      * @param csqs Market Parameters
  13018.      * @param vcp Valuation Customization Parameters
  13019.      * @param dblYieldSpread Yield Spread to Maturity
  13020.      *
  13021.      * @return OAS from Yield Spread to Maturity
  13022.      *
  13023.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  13024.      */

  13025.     public abstract double oasFromYieldSpread (
  13026.         final org.drip.param.valuation.ValuationParams valParams,
  13027.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13028.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13029.         final double dblYieldSpread)
  13030.         throws java.lang.Exception;

  13031.     /**
  13032.      * Calculate OAS from Yield Spread to Optimal Exercise
  13033.      *
  13034.      * @param valParams Valuation Parameters
  13035.      * @param csqs Market Parameters
  13036.      * @param vcp Valuation Customization Parameters
  13037.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  13038.      *
  13039.      * @return OAS from Yield Spread to Optimal Exercise
  13040.      *
  13041.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  13042.      */

  13043.     public abstract double oasFromYieldSpreadToOptimalExercise (
  13044.         final org.drip.param.valuation.ValuationParams valParams,
  13045.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13046.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13047.         final double dblYieldSpread)
  13048.         throws java.lang.Exception;

  13049.     /**
  13050.      * Calculate OAS from Z Spread to Work-out
  13051.      *
  13052.      * @param valParams Valuation Parameters
  13053.      * @param csqs Market Parameters
  13054.      * @param vcp Valuation Customization Parameters
  13055.      * @param iWorkoutDate Work-out Date
  13056.      * @param dblWorkoutFactor Work-out Factor
  13057.      * @param dblZSpread Z Spread to Work-out
  13058.      *
  13059.      * @return OAS from Z Spread to Work-out
  13060.      *
  13061.      * @throws java.lang.Exception Thrown if the OAS cannot be calculated
  13062.      */

  13063.     public abstract double oasFromZSpread (
  13064.         final org.drip.param.valuation.ValuationParams valParams,
  13065.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13066.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13067.         final int iWorkoutDate,
  13068.         final double dblWorkoutFactor,
  13069.         final double dblZSpread)
  13070.         throws java.lang.Exception;

  13071.     /**
  13072.      * Calculate OAS from Z Spread to Maturity
  13073.      *
  13074.      * @param valParams Valuation Parameters
  13075.      * @param csqs Market Parameters
  13076.      * @param vcp Valuation Customization Parameters
  13077.      * @param dblZSpread Z Spread to Maturity
  13078.      *
  13079.      * @return OAS from Z Spread to Maturity
  13080.      *
  13081.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  13082.      */

  13083.     public abstract double oasFromZSpread (
  13084.         final org.drip.param.valuation.ValuationParams valParams,
  13085.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13086.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13087.         final double dblZSpread)
  13088.         throws java.lang.Exception;

  13089.     /**
  13090.      * Calculate OAS from Z Spread to Optimal Exercise
  13091.      *
  13092.      * @param valParams Valuation Parameters
  13093.      * @param csqs Market Parameters
  13094.      * @param vcp Valuation Customization Parameters
  13095.      * @param dblZSpread Z Spread to Optimal Exercise
  13096.      *
  13097.      * @return OAS from Z Spread to Optimal Exercise
  13098.      *
  13099.      * @throws java.lang.Exception Thrown if OAS cannot be calculated
  13100.      */

  13101.     public abstract double oasFromZSpreadToOptimalExercise (
  13102.         final org.drip.param.valuation.ValuationParams valParams,
  13103.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13104.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13105.         final double dblZSpread)
  13106.         throws java.lang.Exception;

  13107.     /**
  13108.      * Calculate PECS from ASW to Work-out
  13109.      *
  13110.      * @param valParams Valuation Parameters
  13111.      * @param csqs Market Parameters
  13112.      * @param vcp Valuation Customization Parameters
  13113.      * @param iWorkoutDate Work-out Date
  13114.      * @param dblWorkoutFactor Work-out Factor
  13115.      * @param dblASW ASW to Work-out
  13116.      *
  13117.      * @return PECS from ASW to Work-out
  13118.      *
  13119.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13120.      */

  13121.     public abstract double pecsFromASW (
  13122.         final org.drip.param.valuation.ValuationParams valParams,
  13123.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13124.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13125.         final int iWorkoutDate,
  13126.         final double dblWorkoutFactor,
  13127.         final double dblASW)
  13128.         throws java.lang.Exception;

  13129.     /**
  13130.      * Calculate PECS from ASW to Maturity
  13131.      *
  13132.      * @param valParams Valuation Parameters
  13133.      * @param csqs Market Parameters
  13134.      * @param vcp Valuation Customization Parameters
  13135.      * @param dblASW ASW to Maturity
  13136.      *
  13137.      * @return PECS from ASW to Maturity
  13138.      *
  13139.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13140.      */

  13141.     public abstract double pecsFromASW (
  13142.         final org.drip.param.valuation.ValuationParams valParams,
  13143.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13144.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13145.         final double dblASW)
  13146.         throws java.lang.Exception;

  13147.     /**
  13148.      * Calculate PECS from ASW to Optimal Exercise
  13149.      *
  13150.      * @param valParams Valuation Parameters
  13151.      * @param csqs Market Parameters
  13152.      * @param vcp Valuation Customization Parameters
  13153.      * @param dblASW ASW to Optimal Exercise
  13154.      *
  13155.      * @return PECS from ASW to Optimal Exercise
  13156.      *
  13157.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13158.      */

  13159.     public abstract double pecsFromASWToOptimalExercise (
  13160.         final org.drip.param.valuation.ValuationParams valParams,
  13161.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13162.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13163.         final double dblASW)
  13164.         throws java.lang.Exception;

  13165.     /**
  13166.      * Calculate PECS from Bond Basis to Work-out
  13167.      *
  13168.      * @param valParams Valuation Parameters
  13169.      * @param csqs Market Parameters
  13170.      * @param vcp Valuation Customization Parameters
  13171.      * @param iWorkoutDate Work-out Date
  13172.      * @param dblWorkoutFactor Work-out Factor
  13173.      * @param dblBondBasis Bond Basis to Work-out
  13174.      *
  13175.      * @return PECS from Bond Basis to Work-out
  13176.      *
  13177.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13178.      */

  13179.     public abstract double pecsFromBondBasis (
  13180.         final org.drip.param.valuation.ValuationParams valParams,
  13181.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13182.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13183.         final int iWorkoutDate,
  13184.         final double dblWorkoutFactor,
  13185.         final double dblBondBasis)
  13186.         throws java.lang.Exception;

  13187.     /**
  13188.      * Calculate PECS from Bond Basis to Maturity
  13189.      *
  13190.      * @param valParams Valuation Parameters
  13191.      * @param csqs Market Parameters
  13192.      * @param vcp Valuation Customization Parameters
  13193.      * @param dblBondBasis Bond Basis to Maturity
  13194.      *
  13195.      * @return PECS from Bond Basis to Maturity
  13196.      *
  13197.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13198.      */

  13199.     public abstract double pecsFromBondBasis (
  13200.         final org.drip.param.valuation.ValuationParams valParams,
  13201.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13202.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13203.         final double dblBondBasis)
  13204.         throws java.lang.Exception;

  13205.     /**
  13206.      * Calculate PECS from Bond Basis to Optimal Exercise
  13207.      *
  13208.      * @param valParams Valuation Parameters
  13209.      * @param csqs Market Parameters
  13210.      * @param vcp Valuation Customization Parameters
  13211.      * @param dblBondBasis Bond Basis to Optimal Exercise
  13212.      *
  13213.      * @return PECS from Bond Basis to Optimal Exercise
  13214.      *
  13215.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13216.      */

  13217.     public abstract double pecsFromBondBasisToOptimalExercise (
  13218.         final org.drip.param.valuation.ValuationParams valParams,
  13219.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13220.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13221.         final double dblBondBasis)
  13222.         throws java.lang.Exception;

  13223.     /**
  13224.      * Calculate PECS from Credit Basis to Work-out
  13225.      *
  13226.      * @param valParams Valuation Parameters
  13227.      * @param csqs Market Parameters
  13228.      * @param vcp Valuation Customization Parameters
  13229.      * @param iWorkoutDate Work-out Date
  13230.      * @param dblWorkoutFactor Work-out Factor
  13231.      * @param dblCreditBasis Credit Basis to Work-out
  13232.      *
  13233.      * @return PECS from Credit Basis to Work-out
  13234.      *
  13235.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13236.      */

  13237.     public abstract double pecsFromCreditBasis (
  13238.         final org.drip.param.valuation.ValuationParams valParams,
  13239.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13240.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13241.         final int iWorkoutDate,
  13242.         final double dblWorkoutFactor,
  13243.         final double dblCreditBasis)
  13244.         throws java.lang.Exception;

  13245.     /**
  13246.      * Calculate PECS from Credit Basis to Maturity
  13247.      *
  13248.      * @param valParams Valuation Parameters
  13249.      * @param csqs Market Parameters
  13250.      * @param vcp Valuation Customization Parameters
  13251.      * @param dblCreditBasis Credit Basis to Maturity
  13252.      *
  13253.      * @return PECS from Credit Basis to Maturity
  13254.      *
  13255.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13256.      */

  13257.     public abstract double pecsFromCreditBasis (
  13258.         final org.drip.param.valuation.ValuationParams valParams,
  13259.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13260.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13261.         final double dblCreditBasis)
  13262.         throws java.lang.Exception;

  13263.     /**
  13264.      * Calculate PECS from Credit Basis to Optimal Exercise
  13265.      *
  13266.      * @param valParams Valuation Parameters
  13267.      * @param csqs Market Parameters
  13268.      * @param vcp Valuation Customization Parameters
  13269.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  13270.      *
  13271.      * @return PECS from Credit Basis to Optimal Exercise
  13272.      *
  13273.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13274.      */

  13275.     public abstract double pecsFromCreditBasisToOptimalExercise (
  13276.         final org.drip.param.valuation.ValuationParams valParams,
  13277.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13278.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13279.         final double dblCreditBasis)
  13280.         throws java.lang.Exception;

  13281.     /**
  13282.      * Calculate PECS from Discount Margin to Work-out
  13283.      *
  13284.      * @param valParams Valuation Parameters
  13285.      * @param csqs Market Parameters
  13286.      * @param vcp Valuation Customization Parameters
  13287.      * @param iWorkoutDate Work-out Date
  13288.      * @param dblWorkoutFactor Work-out Factor
  13289.      * @param dblDiscountMargin Discount Margin to Work-out
  13290.      *
  13291.      * @return PECS from Discount Margin to Work-out
  13292.      *
  13293.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13294.      */

  13295.     public abstract double pecsFromDiscountMargin (
  13296.         final org.drip.param.valuation.ValuationParams valParams,
  13297.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13298.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13299.         final int iWorkoutDate,
  13300.         final double dblWorkoutFactor,
  13301.         final double dblDiscountMargin)
  13302.         throws java.lang.Exception;

  13303.     /**
  13304.      * Calculate PECS from Discount Margin to Maturity
  13305.      *
  13306.      * @param valParams Valuation Parameters
  13307.      * @param csqs Market Parameters
  13308.      * @param vcp Valuation Customization Parameters
  13309.      * @param dblDiscountMargin Discount Margin to Maturity
  13310.      *
  13311.      * @return PECS from Discount Margin to Maturity
  13312.      *
  13313.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13314.      */

  13315.     public abstract double pecsFromDiscountMargin (
  13316.         final org.drip.param.valuation.ValuationParams valParams,
  13317.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13318.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13319.         final double dblDiscountMargin)
  13320.         throws java.lang.Exception;

  13321.     /**
  13322.      * Calculate PECS from Discount Margin to Optimal Exercise
  13323.      *
  13324.      * @param valParams Valuation Parameters
  13325.      * @param csqs Market Parameters
  13326.      * @param vcp Valuation Customization Parameters
  13327.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  13328.      *
  13329.      * @return PECS from Discount Margin to Optimal Exercise
  13330.      *
  13331.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13332.      */

  13333.     public abstract double pecsFromDiscountMarginToOptimalExercise (
  13334.         final org.drip.param.valuation.ValuationParams valParams,
  13335.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13336.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13337.         final double dblDiscountMargin)
  13338.         throws java.lang.Exception;

  13339.     /**
  13340.      * Calculate PECS from E Spread to Work-out
  13341.      *
  13342.      * @param valParams Valuation Parameters
  13343.      * @param csqs Market Parameters
  13344.      * @param vcp Valuation Customization Parameters
  13345.      * @param iWorkoutDate Work-out Date
  13346.      * @param dblWorkoutFactor Work-out Factor
  13347.      * @param dblESpread E Spread to Work-out
  13348.      *
  13349.      * @return PECS from E Spread to Work-out
  13350.      *
  13351.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13352.      */

  13353.     public abstract double pecsFromESpread (
  13354.         final org.drip.param.valuation.ValuationParams valParams,
  13355.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13356.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13357.         final int iWorkoutDate,
  13358.         final double dblWorkoutFactor,
  13359.         final double dblESpread)
  13360.         throws java.lang.Exception;

  13361.     /**
  13362.      * Calculate PECS from E Spread to Maturity
  13363.      *
  13364.      * @param valParams Valuation Parameters
  13365.      * @param csqs Market Parameters
  13366.      * @param vcp Valuation Customization Parameters
  13367.      * @param dblESpread E Spread to Maturity
  13368.      *
  13369.      * @return PECS from E Spread to Maturity
  13370.      *
  13371.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13372.      */

  13373.     public abstract double pecsFromESpread (
  13374.         final org.drip.param.valuation.ValuationParams valParams,
  13375.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13376.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13377.         final double dblESpread)
  13378.         throws java.lang.Exception;

  13379.     /**
  13380.      * Calculate PECS from E Spread to Optimal Exercise
  13381.      *
  13382.      * @param valParams Valuation Parameters
  13383.      * @param csqs Market Parameters
  13384.      * @param vcp Valuation Customization Parameters
  13385.      * @param dblESpread E Spread to Optimal Exercise
  13386.      *
  13387.      * @return PECS from E Spread to Optimal Exercise
  13388.      *
  13389.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13390.      */

  13391.     public abstract double pecsFromESpreadToOptimalExercise (
  13392.         final org.drip.param.valuation.ValuationParams valParams,
  13393.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13394.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13395.         final double dblESpread)
  13396.         throws java.lang.Exception;

  13397.     /**
  13398.      * Calculate PECS from G Spread to Work-out
  13399.      *
  13400.      * @param valParams Valuation Parameters
  13401.      * @param csqs Market Parameters
  13402.      * @param vcp Valuation Customization Parameters
  13403.      * @param iWorkoutDate Work-out Date
  13404.      * @param dblWorkoutFactor Work-out Factor
  13405.      * @param dblGSpread G Spread to Work-out
  13406.      *
  13407.      * @return PECS from G Spread to Work-out
  13408.      *
  13409.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13410.      */

  13411.     public abstract double pecsFromGSpread (
  13412.         final org.drip.param.valuation.ValuationParams valParams,
  13413.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13414.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13415.         final int iWorkoutDate,
  13416.         final double dblWorkoutFactor,
  13417.         final double dblGSpread)
  13418.         throws java.lang.Exception;

  13419.     /**
  13420.      * Calculate PECS from G Spread to Maturity
  13421.      *
  13422.      * @param valParams Valuation Parameters
  13423.      * @param csqs Market Parameters
  13424.      * @param vcp Valuation Customization Parameters
  13425.      * @param dblGSpread G Spread to Maturity
  13426.      *
  13427.      * @return PECS from G Spread to Maturity
  13428.      *
  13429.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13430.      */

  13431.     public abstract double pecsFromGSpread (
  13432.         final org.drip.param.valuation.ValuationParams valParams,
  13433.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13434.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13435.         final double dblGSpread)
  13436.         throws java.lang.Exception;

  13437.     /**
  13438.      * Calculate PECS from G Spread to Optimal Exercise
  13439.      *
  13440.      * @param valParams Valuation Parameters
  13441.      * @param csqs Market Parameters
  13442.      * @param vcp Valuation Customization Parameters
  13443.      * @param dblGSpread G Spread to Optimal Exercise
  13444.      *
  13445.      * @return PECS from G Spread to Optimal Exercise
  13446.      *
  13447.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13448.      */

  13449.     public abstract double pecsFromGSpreadToOptimalExercise (
  13450.         final org.drip.param.valuation.ValuationParams valParams,
  13451.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13452.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13453.         final double dblGSpread)
  13454.         throws java.lang.Exception;

  13455.     /**
  13456.      * Calculate PECS from I Spread to Work-out
  13457.      *
  13458.      * @param valParams Valuation Parameters
  13459.      * @param csqs Market Parameters
  13460.      * @param vcp Valuation Customization Parameters
  13461.      * @param iWorkoutDate Work-out Date
  13462.      * @param dblWorkoutFactor Work-out Factor
  13463.      * @param dblISpread I Spread to Work-out
  13464.      *
  13465.      * @return PECS from I Spread to Work-out
  13466.      *
  13467.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13468.      */

  13469.     public abstract double pecsFromISpread (
  13470.         final org.drip.param.valuation.ValuationParams valParams,
  13471.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13472.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13473.         final int iWorkoutDate,
  13474.         final double dblWorkoutFactor,
  13475.         final double dblISpread)
  13476.         throws java.lang.Exception;

  13477.     /**
  13478.      * Calculate PECS from I Spread to Maturity
  13479.      *
  13480.      * @param valParams Valuation Parameters
  13481.      * @param csqs Market Parameters
  13482.      * @param vcp Valuation Customization Parameters
  13483.      * @param dblISpread I Spread to Maturity
  13484.      *
  13485.      * @return PECS from I Spread to Maturity
  13486.      *
  13487.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13488.      */

  13489.     public abstract double pecsFromISpread (
  13490.         final org.drip.param.valuation.ValuationParams valParams,
  13491.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13492.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13493.         final double dblISpread)
  13494.         throws java.lang.Exception;

  13495.     /**
  13496.      * Calculate PECS from I Spread to Optimal Exercise
  13497.      *
  13498.      * @param valParams Valuation Parameters
  13499.      * @param csqs Market Parameters
  13500.      * @param vcp Valuation Customization Parameters
  13501.      * @param dblISpread ISpread to Optimal Exercise
  13502.      *
  13503.      * @return PECS from I Spread to Optimal Exercise
  13504.      *
  13505.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13506.      */

  13507.     public abstract double pecsFromISpreadToOptimalExercise (
  13508.         final org.drip.param.valuation.ValuationParams valParams,
  13509.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13510.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13511.         final double dblISpread)
  13512.         throws java.lang.Exception;

  13513.     /**
  13514.      * Calculate PECS from J Spread to Work-out
  13515.      *
  13516.      * @param valParams Valuation Parameters
  13517.      * @param csqs Market Parameters
  13518.      * @param vcp Valuation Customization Parameters
  13519.      * @param iWorkoutDate Work-out Date
  13520.      * @param dblWorkoutFactor Work-out Factor
  13521.      * @param dblJSpread J Spread to Work-out
  13522.      *
  13523.      * @return PECS from J Spread to Work-out
  13524.      *
  13525.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13526.      */

  13527.     public abstract double pecsFromJSpread (
  13528.         final org.drip.param.valuation.ValuationParams valParams,
  13529.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13530.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13531.         final int iWorkoutDate,
  13532.         final double dblWorkoutFactor,
  13533.         final double dblJSpread)
  13534.         throws java.lang.Exception;

  13535.     /**
  13536.      * Calculate PECS from J Spread to Maturity
  13537.      *
  13538.      * @param valParams Valuation Parameters
  13539.      * @param csqs Market Parameters
  13540.      * @param vcp Valuation Customization Parameters
  13541.      * @param dblJSpread J Spread to Maturity
  13542.      *
  13543.      * @return PECS from J Spread to Maturity
  13544.      *
  13545.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13546.      */

  13547.     public abstract double pecsFromJSpread (
  13548.         final org.drip.param.valuation.ValuationParams valParams,
  13549.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13550.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13551.         final double dblJSpread)
  13552.         throws java.lang.Exception;

  13553.     /**
  13554.      * Calculate PECS from J Spread to Optimal Exercise
  13555.      *
  13556.      * @param valParams Valuation Parameters
  13557.      * @param csqs Market Parameters
  13558.      * @param vcp Valuation Customization Parameters
  13559.      * @param dblJSpread JSpread to Optimal Exercise
  13560.      *
  13561.      * @return PECS from J Spread to Optimal Exercise
  13562.      *
  13563.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13564.      */

  13565.     public abstract double pecsFromJSpreadToOptimalExercise (
  13566.         final org.drip.param.valuation.ValuationParams valParams,
  13567.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13568.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13569.         final double dblJSpread)
  13570.         throws java.lang.Exception;

  13571.     /**
  13572.      * Calculate PECS from N Spread to Work-out
  13573.      *
  13574.      * @param valParams Valuation Parameters
  13575.      * @param csqs Market Parameters
  13576.      * @param vcp Valuation Customization Parameters
  13577.      * @param iWorkoutDate Work-out Date
  13578.      * @param dblWorkoutFactor Work-out Factor
  13579.      * @param dblNSpread N Spread to Work-out
  13580.      *
  13581.      * @return PECS from N Spread to Work-out
  13582.      *
  13583.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13584.      */

  13585.     public abstract double pecsFromNSpread (
  13586.         final org.drip.param.valuation.ValuationParams valParams,
  13587.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13588.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13589.         final int iWorkoutDate,
  13590.         final double dblWorkoutFactor,
  13591.         final double dblNSpread)
  13592.         throws java.lang.Exception;

  13593.     /**
  13594.      * Calculate PECS from N Spread to Maturity
  13595.      *
  13596.      * @param valParams Valuation Parameters
  13597.      * @param csqs Market Parameters
  13598.      * @param vcp Valuation Customization Parameters
  13599.      * @param dblNSpread N Spread to Maturity
  13600.      *
  13601.      * @return PECS from N Spread to Maturity
  13602.      *
  13603.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13604.      */

  13605.     public abstract double pecsFromNSpread (
  13606.         final org.drip.param.valuation.ValuationParams valParams,
  13607.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13608.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13609.         final double dblNSpread)
  13610.         throws java.lang.Exception;

  13611.     /**
  13612.      * Calculate PECS from N Spread to Optimal Exercise
  13613.      *
  13614.      * @param valParams Valuation Parameters
  13615.      * @param csqs Market Parameters
  13616.      * @param vcp Valuation Customization Parameters
  13617.      * @param dblNSpread N Spread to Optimal Exercise
  13618.      *
  13619.      * @return PECS from N Spread to Optimal Exercise
  13620.      *
  13621.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13622.      */

  13623.     public abstract double pecsFromNSpreadToOptimalExercise (
  13624.         final org.drip.param.valuation.ValuationParams valParams,
  13625.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13626.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13627.         final double dblNSpread)
  13628.         throws java.lang.Exception;

  13629.     /**
  13630.      * Calculate PECS from OAS to Work-out
  13631.      *
  13632.      * @param valParams Valuation Parameters
  13633.      * @param csqs Market Parameters
  13634.      * @param vcp Valuation Customization Parameters
  13635.      * @param iWorkoutDate Work-out Date
  13636.      * @param dblWorkoutFactor Work-out Factor
  13637.      * @param dblOAS OAS to Work-out
  13638.      *
  13639.      * @return PECS from OAS to Work-out
  13640.      *
  13641.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13642.      */

  13643.     public abstract double pecsFromOAS (
  13644.         final org.drip.param.valuation.ValuationParams valParams,
  13645.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13646.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13647.         final int iWorkoutDate,
  13648.         final double dblWorkoutFactor,
  13649.         final double dblOAS)
  13650.         throws java.lang.Exception;

  13651.     /**
  13652.      * Calculate PECS from OAS to Maturity
  13653.      *
  13654.      * @param valParams Valuation Parameters
  13655.      * @param csqs Market Parameters
  13656.      * @param vcp Valuation Customization Parameters
  13657.      * @param dblOAS OAS to Maturity
  13658.      *
  13659.      * @return PECS from OAS to Maturity
  13660.      *
  13661.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13662.      */

  13663.     public abstract double pecsFromOAS (
  13664.         final org.drip.param.valuation.ValuationParams valParams,
  13665.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13666.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13667.         final double dblOAS)
  13668.         throws java.lang.Exception;

  13669.     /**
  13670.      * Calculate PECS from OAS to Optimal Exercise
  13671.      *
  13672.      * @param valParams Valuation Parameters
  13673.      * @param csqs Market Parameters
  13674.      * @param vcp Valuation Customization Parameters
  13675.      * @param dblOAS OAS to Optimal Exercise
  13676.      *
  13677.      * @return PECS from OAS to Optimal Exercise
  13678.      *
  13679.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13680.      */

  13681.     public abstract double pecsFromOASToOptimalExercise (
  13682.         final org.drip.param.valuation.ValuationParams valParams,
  13683.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13684.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13685.         final double dblOAS)
  13686.         throws java.lang.Exception;

  13687.     /**
  13688.      * Calculate PECS from Price to Work-out
  13689.      *
  13690.      * @param valParams Valuation Parameters
  13691.      * @param csqs Market Parameters
  13692.      * @param vcp Valuation Customization Parameters
  13693.      * @param iWorkoutDate Work-out Date
  13694.      * @param dblWorkoutFactor Work-out Factor
  13695.      * @param dblPrice Price to Work-out
  13696.      *
  13697.      * @return PECS from Price to Work-out
  13698.      *
  13699.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  13700.      */

  13701.     public abstract double pecsFromPrice (
  13702.         final org.drip.param.valuation.ValuationParams valParams,
  13703.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13704.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13705.         final int iWorkoutDate,
  13706.         final double dblWorkoutFactor,
  13707.         final double dblPrice)
  13708.         throws java.lang.Exception;

  13709.     /**
  13710.      * Calculate PECS from Price to Maturity
  13711.      *
  13712.      * @param valParams Valuation Parameters
  13713.      * @param csqs Market Parameters
  13714.      * @param vcp Valuation Customization Parameters
  13715.      * @param dblPrice Price to Maturity
  13716.      *
  13717.      * @return PECS from Price to Maturity
  13718.      *
  13719.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13720.      */

  13721.     public abstract double pecsFromPrice (
  13722.         final org.drip.param.valuation.ValuationParams valParams,
  13723.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13724.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13725.         final double dblPrice)
  13726.         throws java.lang.Exception;

  13727.     /**
  13728.      * Calculate PECS from Price to Optimal Exercise
  13729.      *
  13730.      * @param valParams Valuation Parameters
  13731.      * @param csqs Market Parameters
  13732.      * @param vcp Valuation Customization Parameters
  13733.      * @param dblPrice Price to Optimal Exercise
  13734.      *
  13735.      * @return PECS from Price to Optimal Exercise
  13736.      *
  13737.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13738.      */

  13739.     public abstract double pecsFromPriceToOptimalExercise (
  13740.         final org.drip.param.valuation.ValuationParams valParams,
  13741.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13742.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13743.         final double dblPrice)
  13744.         throws java.lang.Exception;

  13745.     /**
  13746.      * Calculate PECS from TSY Spread to Work-out
  13747.      *
  13748.      * @param valParams Valuation Parameters
  13749.      * @param csqs Market Parameters
  13750.      * @param vcp Valuation Customization Parameters
  13751.      * @param iWorkoutDate Work-out Date
  13752.      * @param dblWorkoutFactor Work-out Factor
  13753.      * @param dblTSYSpread TSY Spread to Work-out
  13754.      *
  13755.      * @return PECS from TSY Spread to Work-out
  13756.      *
  13757.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13758.      */

  13759.     public abstract double pecsFromTSYSpread (
  13760.         final org.drip.param.valuation.ValuationParams valParams,
  13761.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13762.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13763.         final int iWorkoutDate,
  13764.         final double dblWorkoutFactor,
  13765.         final double dblTSYSpread)
  13766.         throws java.lang.Exception;

  13767.     /**
  13768.      * Calculate PECS from TSY Spread to Maturity
  13769.      *
  13770.      * @param valParams Valuation Parameters
  13771.      * @param csqs Market Parameters
  13772.      * @param vcp Valuation Customization Parameters
  13773.      * @param dblTSYSpread TSY Spread to Maturity
  13774.      *
  13775.      * @return PECS from TSY Spread to Maturity
  13776.      *
  13777.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13778.      */

  13779.     public abstract double pecsFromTSYSpread (
  13780.         final org.drip.param.valuation.ValuationParams valParams,
  13781.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13782.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13783.         final double dblTSYSpread)
  13784.         throws java.lang.Exception;

  13785.     /**
  13786.      * Calculate PECS from TSY Spread to Optimal Exercise
  13787.      *
  13788.      * @param valParams Valuation Parameters
  13789.      * @param csqs Market Parameters
  13790.      * @param vcp Valuation Customization Parameters
  13791.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  13792.      *
  13793.      * @return PECS from TSY Spread to Optimal Exercise
  13794.      *
  13795.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13796.      */

  13797.     public abstract double pecsFromTSYSpreadToOptimalExercise (
  13798.         final org.drip.param.valuation.ValuationParams valParams,
  13799.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13800.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13801.         final double dblTSYSpread)
  13802.         throws java.lang.Exception;

  13803.     /**
  13804.      * Calculate PECS from Yield to Work-out
  13805.      *
  13806.      * @param valParams Valuation Parameters
  13807.      * @param csqs Market Parameters
  13808.      * @param vcp Valuation Customization Parameters
  13809.      * @param iWorkoutDate Work-out Date
  13810.      * @param dblWorkoutFactor Work-out Factor
  13811.      * @param dblYield Yield to Work-out
  13812.      *
  13813.      * @return PECS from Yield to Work-out
  13814.      *
  13815.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13816.      */

  13817.     public abstract double pecsFromYield (
  13818.         final org.drip.param.valuation.ValuationParams valParams,
  13819.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13820.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13821.         final int iWorkoutDate,
  13822.         final double dblWorkoutFactor,
  13823.         final double dblYield)
  13824.         throws java.lang.Exception;

  13825.     /**
  13826.      * Calculate PECS from Yield to Maturity
  13827.      *
  13828.      * @param valParams Valuation Parameters
  13829.      * @param csqs Market Parameters
  13830.      * @param vcp Valuation Customization Parameters
  13831.      * @param dblYield Yield to Maturity
  13832.      *
  13833.      * @return PECS from Yield to Maturity
  13834.      *
  13835.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13836.      */

  13837.     public abstract double pecsFromYield (
  13838.         final org.drip.param.valuation.ValuationParams valParams,
  13839.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13840.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13841.         final double dblYield)
  13842.         throws java.lang.Exception;

  13843.     /**
  13844.      * Calculate PECS from Yield to Optimal Exercise
  13845.      *
  13846.      * @param valParams Valuation Parameters
  13847.      * @param csqs Market Parameters
  13848.      * @param vcp Valuation Customization Parameters
  13849.      * @param dblYield Yield to Optimal Exercise
  13850.      *
  13851.      * @return PECS from Yield to Optimal Exercise
  13852.      *
  13853.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13854.      */

  13855.     public abstract double pecsFromYieldToOptimalExercise (
  13856.         final org.drip.param.valuation.ValuationParams valParams,
  13857.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13858.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13859.         final double dblYield)
  13860.         throws java.lang.Exception;

  13861.     /**
  13862.      * Calculate PECS from Yield Spread to Work-out
  13863.      *
  13864.      * @param valParams Valuation Parameters
  13865.      * @param csqs Market Parameters
  13866.      * @param vcp Valuation Customization Parameters
  13867.      * @param iWorkoutDate Work-out Date
  13868.      * @param dblWorkoutFactor Work-out Factor
  13869.      * @param dblYieldSpread Yield Spread to Work-out
  13870.      *
  13871.      * @return PECS from Yield Spread to Work-out
  13872.      *
  13873.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13874.      */

  13875.     public abstract double pecsFromYieldSpread (
  13876.         final org.drip.param.valuation.ValuationParams valParams,
  13877.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13878.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13879.         final int iWorkoutDate,
  13880.         final double dblWorkoutFactor,
  13881.         final double dblYieldSpread)
  13882.         throws java.lang.Exception;

  13883.     /**
  13884.      * Calculate PECS from Yield Spread to Maturity
  13885.      *
  13886.      * @param valParams Valuation Parameters
  13887.      * @param csqs Market Parameters
  13888.      * @param vcp Valuation Customization Parameters
  13889.      * @param dblYieldSpread Yield Spread to Maturity
  13890.      *
  13891.      * @return PECS from Yield Spread to Maturity
  13892.      *
  13893.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13894.      */

  13895.     public abstract double pecsFromYieldSpread (
  13896.         final org.drip.param.valuation.ValuationParams valParams,
  13897.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13898.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13899.         final double dblYieldSpread)
  13900.         throws java.lang.Exception;

  13901.     /**
  13902.      * Calculate PECS from Yield Spread to Optimal Exercise
  13903.      *
  13904.      * @param valParams Valuation Parameters
  13905.      * @param csqs Market Parameters
  13906.      * @param vcp Valuation Customization Parameters
  13907.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  13908.      *
  13909.      * @return PECS from Yield Spread to Optimal Exercise
  13910.      *
  13911.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13912.      */

  13913.     public abstract double pecsFromYieldSpreadToOptimalExercise (
  13914.         final org.drip.param.valuation.ValuationParams valParams,
  13915.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13916.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13917.         final double dblYieldSpread)
  13918.         throws java.lang.Exception;

  13919.     /**
  13920.      * Calculate PECS from Z Spread to Work-out
  13921.      *
  13922.      * @param valParams Valuation Parameters
  13923.      * @param csqs Market Parameters
  13924.      * @param vcp Valuation Customization Parameters
  13925.      * @param iWorkoutDate Work-out Date
  13926.      * @param dblWorkoutFactor Work-out Factor
  13927.      * @param dblZSpread Z Spread to Work-out
  13928.      *
  13929.      * @return PECS from Z Spread to Work-out
  13930.      *
  13931.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  13932.      */

  13933.     public abstract double pecsFromZSpread (
  13934.         final org.drip.param.valuation.ValuationParams valParams,
  13935.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13936.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13937.         final int iWorkoutDate,
  13938.         final double dblWorkoutFactor,
  13939.         final double dblZSpread)
  13940.         throws java.lang.Exception;

  13941.     /**
  13942.      * Calculate PECS from Z Spread to Maturity
  13943.      *
  13944.      * @param valParams Valuation Parameters
  13945.      * @param csqs Market Parameters
  13946.      * @param vcp Valuation Customization Parameters
  13947.      * @param dblZSpread Z Spread to Maturity
  13948.      *
  13949.      * @return PECS from Z Spread to Maturity
  13950.      *
  13951.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13952.      */

  13953.     public abstract double pecsFromZSpread (
  13954.         final org.drip.param.valuation.ValuationParams valParams,
  13955.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13956.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13957.         final double dblZSpread)
  13958.         throws java.lang.Exception;

  13959.     /**
  13960.      * Calculate PECS from Z Spread to Optimal Exercise
  13961.      *
  13962.      * @param valParams Valuation Parameters
  13963.      * @param csqs Market Parameters
  13964.      * @param vcp Valuation Customization Parameters
  13965.      * @param dblZSpread Z Spread to Optimal Exercise
  13966.      *
  13967.      * @return PECS from Z Spread to Optimal Exercise
  13968.      *
  13969.      * @throws java.lang.Exception Thrown if PECS cannot be calculated
  13970.      */

  13971.     public abstract double pecsFromZSpreadToOptimalExercise (
  13972.         final org.drip.param.valuation.ValuationParams valParams,
  13973.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13974.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13975.         final double dblZSpread)
  13976.         throws java.lang.Exception;

  13977.     /**
  13978.      * Calculate Price from ASW to Work-out
  13979.      *
  13980.      * @param valParams Valuation Parameters
  13981.      * @param csqs Market Parameters
  13982.      * @param vcp Valuation Customization Parameters
  13983.      * @param iWorkoutDate Work-out Date
  13984.      * @param dblWorkoutFactor Work-out Factor
  13985.      * @param dblASW ASW to Work-out
  13986.      *
  13987.      * @return Price from ASW to Work-out
  13988.      *
  13989.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  13990.      */

  13991.     public abstract double priceFromASW (
  13992.         final org.drip.param.valuation.ValuationParams valParams,
  13993.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  13994.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  13995.         final int iWorkoutDate,
  13996.         final double dblWorkoutFactor,
  13997.         final double dblASW)
  13998.         throws java.lang.Exception;

  13999.     /**
  14000.      * Calculate Price from ASW to Maturity
  14001.      *
  14002.      * @param valParams Valuation Parameters
  14003.      * @param csqs Market Parameters
  14004.      * @param vcp Valuation Customization Parameters
  14005.      * @param dblASW ASW to Maturity
  14006.      *
  14007.      * @return Price from ASW to Maturity
  14008.      *
  14009.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14010.      */

  14011.     public abstract double priceFromASW (
  14012.         final org.drip.param.valuation.ValuationParams valParams,
  14013.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14014.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14015.         final double dblASW)
  14016.         throws java.lang.Exception;

  14017.     /**
  14018.      * Calculate Price from ASW to Optimal Exercise
  14019.      *
  14020.      * @param valParams Valuation Parameters
  14021.      * @param csqs Market Parameters
  14022.      * @param vcp Valuation Customization Parameters
  14023.      * @param dblASW ASW to Optimal Exercise
  14024.      *
  14025.      * @return Price from ASW to Optimal Exercise
  14026.      *
  14027.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14028.      */

  14029.     public abstract double priceFromASWToOptimalExercise (
  14030.         final org.drip.param.valuation.ValuationParams valParams,
  14031.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14032.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14033.         final double dblASW)
  14034.         throws java.lang.Exception;

  14035.     /**
  14036.      * Calculate Price from Bond Basis to Work-out
  14037.      *
  14038.      * @param valParams Valuation Parameters
  14039.      * @param csqs Market Parameters
  14040.      * @param vcp Valuation Customization Parameters
  14041.      * @param iWorkoutDate Work-out Date
  14042.      * @param dblWorkoutFactor Work-out Factor
  14043.      * @param dblBondBasis Bond Basis to Work-out
  14044.      *
  14045.      * @return Price from Bond Basis to Work-out
  14046.      *
  14047.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14048.      */

  14049.     public abstract double priceFromBondBasis (
  14050.         final org.drip.param.valuation.ValuationParams valParams,
  14051.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14052.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14053.         final int iWorkoutDate,
  14054.         final double dblWorkoutFactor,
  14055.         final double dblBondBasis)
  14056.         throws java.lang.Exception;

  14057.     /**
  14058.      * Calculate Price from Bond Basis to Maturity
  14059.      *
  14060.      * @param valParams Valuation Parameters
  14061.      * @param csqs Market Parameters
  14062.      * @param vcp Valuation Customization Parameters
  14063.      * @param dblBondBasis Bond Basis to Maturity
  14064.      *
  14065.      * @return Price from Bond Basis to Maturity
  14066.      *
  14067.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14068.      */

  14069.     public abstract double priceFromBondBasis (
  14070.         final org.drip.param.valuation.ValuationParams valParams,
  14071.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14072.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14073.         final double dblBondBasis)
  14074.         throws java.lang.Exception;

  14075.     /**
  14076.      * Calculate Price from Bond Basis to Optimal Exercise
  14077.      *
  14078.      * @param valParams Valuation Parameters
  14079.      * @param csqs Market Parameters
  14080.      * @param vcp Valuation Customization Parameters
  14081.      * @param dblBondBasis Bond Basis to Optimal Exercise
  14082.      *
  14083.      * @return Price from Bond Basis to Optimal Exercise
  14084.      *
  14085.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14086.      */

  14087.     public abstract double priceFromBondBasisToOptimalExercise (
  14088.         final org.drip.param.valuation.ValuationParams valParams,
  14089.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14090.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14091.         final double dblBondBasis)
  14092.         throws java.lang.Exception;

  14093.     /**
  14094.      * Calculate Price from Credit Basis to Work-out
  14095.      *
  14096.      * @param valParams Valuation Parameters
  14097.      * @param csqs Market Parameters
  14098.      * @param vcp Valuation Customization Parameters
  14099.      * @param iWorkoutDate Work-out Date
  14100.      * @param dblWorkoutFactor Work-out Factor
  14101.      * @param dblCreditBasis Credit Basis to Work-out
  14102.      *
  14103.      * @return Price from Credit Basis to Work-out
  14104.      *
  14105.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14106.      */

  14107.     public abstract double priceFromCreditBasis (
  14108.         final org.drip.param.valuation.ValuationParams valParams,
  14109.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14110.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14111.         final int iWorkoutDate,
  14112.         final double dblWorkoutFactor,
  14113.         final double dblCreditBasis)
  14114.         throws java.lang.Exception;

  14115.     /**
  14116.      * Calculate Price from Credit Basis to Maturity
  14117.      *
  14118.      * @param valParams Valuation Parameters
  14119.      * @param csqs Market Parameters
  14120.      * @param vcp Valuation Customization Parameters
  14121.      * @param dblCreditBasis Credit Basis to Maturity
  14122.      *
  14123.      * @return Price from Credit Basis to Maturity
  14124.      *
  14125.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14126.      */

  14127.     public abstract double priceFromCreditBasis (
  14128.         final org.drip.param.valuation.ValuationParams valParams,
  14129.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14130.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14131.         final double dblCreditBasis)
  14132.         throws java.lang.Exception;

  14133.     /**
  14134.      * Calculate Price from Credit Basis to Optimal Exercise
  14135.      *
  14136.      * @param valParams Valuation Parameters
  14137.      * @param csqs Market Parameters
  14138.      * @param vcp Valuation Customization Parameters
  14139.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  14140.      *
  14141.      * @return Price from Credit Basis to Optimal Exercise
  14142.      *
  14143.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14144.      */

  14145.     public abstract double priceFromCreditBasisToOptimalExercise (
  14146.         final org.drip.param.valuation.ValuationParams valParams,
  14147.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14148.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14149.         final double dblCreditBasis)
  14150.         throws java.lang.Exception;

  14151.     /**
  14152.      * Calculate Price from Discount Margin to Work-out
  14153.      *
  14154.      * @param valParams Valuation Parameters
  14155.      * @param csqs Market Parameters
  14156.      * @param vcp Valuation Customization Parameters
  14157.      * @param iWorkoutDate Work-out Date
  14158.      * @param dblWorkoutFactor Work-out Factor
  14159.      * @param dblDiscountMargin Discount Margin to Work-out
  14160.      *
  14161.      * @return Price from Discount Margin to Work-out
  14162.      *
  14163.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14164.      */

  14165.     public abstract double priceFromDiscountMargin (
  14166.         final org.drip.param.valuation.ValuationParams valParams,
  14167.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14168.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14169.         final int iWorkoutDate,
  14170.         final double dblWorkoutFactor,
  14171.         final double dblDiscountMargin)
  14172.         throws java.lang.Exception;

  14173.     /**
  14174.      * Calculate Price from Discount Margin to Maturity
  14175.      *
  14176.      * @param valParams Valuation Parameters
  14177.      * @param csqs Market Parameters
  14178.      * @param vcp Valuation Customization Parameters
  14179.      * @param dblDiscountMargin Discount Margin to Maturity
  14180.      *
  14181.      * @return Price from Discount Margin to Maturity
  14182.      *
  14183.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14184.      */

  14185.     public abstract double priceFromDiscountMargin (
  14186.         final org.drip.param.valuation.ValuationParams valParams,
  14187.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14188.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14189.         final double dblDiscountMargin)
  14190.         throws java.lang.Exception;

  14191.     /**
  14192.      * Calculate Price from Discount Margin to Optimal Exercise
  14193.      *
  14194.      * @param valParams Valuation Parameters
  14195.      * @param csqs Market Parameters
  14196.      * @param vcp Valuation Customization Parameters
  14197.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  14198.      *
  14199.      * @return Price from Discount Margin to Optimal Exercise
  14200.      *
  14201.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14202.      */

  14203.     public abstract double priceFromDiscountMarginToOptimalExercise (
  14204.         final org.drip.param.valuation.ValuationParams valParams,
  14205.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14206.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14207.         final double dblDiscountMargin)
  14208.         throws java.lang.Exception;

  14209.     /**
  14210.      * Calculate Price from E Spread to Work-out
  14211.      *
  14212.      * @param valParams Valuation Parameters
  14213.      * @param csqs Market Parameters
  14214.      * @param vcp Valuation Customization Parameters
  14215.      * @param iWorkoutDate Work-out Date
  14216.      * @param dblWorkoutFactor Work-out Factor
  14217.      * @param dblESpread E Spread to Work-out
  14218.      *
  14219.      * @return Price from E Spread to Work-out
  14220.      *
  14221.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14222.      */

  14223.     public abstract double priceFromESpread (
  14224.         final org.drip.param.valuation.ValuationParams valParams,
  14225.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14226.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14227.         final int iWorkoutDate,
  14228.         final double dblWorkoutFactor,
  14229.         final double dblESpread)
  14230.         throws java.lang.Exception;

  14231.     /**
  14232.      * Calculate Price from E Spread to Maturity
  14233.      *
  14234.      * @param valParams Valuation Parameters
  14235.      * @param csqs Market Parameters
  14236.      * @param vcp Valuation Customization Parameters
  14237.      * @param dblESpread E Spread to Maturity
  14238.      *
  14239.      * @return Price from E Spread to Maturity
  14240.      *
  14241.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14242.      */

  14243.     public abstract double priceFromESpread (
  14244.         final org.drip.param.valuation.ValuationParams valParams,
  14245.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14246.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14247.         final double dblESpread)
  14248.         throws java.lang.Exception;

  14249.     /**
  14250.      * Calculate Price from E Spread to Optimal Exercise
  14251.      *
  14252.      * @param valParams Valuation Parameters
  14253.      * @param csqs Market Parameters
  14254.      * @param vcp Valuation Customization Parameters
  14255.      * @param dblESpread E Spread to Optimal Exercise
  14256.      *
  14257.      * @return Price from E Spread to Optimal Exercise
  14258.      *
  14259.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14260.      */

  14261.     public abstract double priceFromESpreadToOptimalExercise (
  14262.         final org.drip.param.valuation.ValuationParams valParams,
  14263.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14264.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14265.         final double dblESpread)
  14266.         throws java.lang.Exception;

  14267.     /**
  14268.      * Calculate Price from G Spread to Work-out
  14269.      *
  14270.      * @param valParams Valuation Parameters
  14271.      * @param csqs Market Parameters
  14272.      * @param vcp Valuation Customization Parameters
  14273.      * @param iWorkoutDate Work-out Date
  14274.      * @param dblWorkoutFactor Work-out Factor
  14275.      * @param dblGSpread G Spread to Work-out
  14276.      *
  14277.      * @return Price from G Spread to Work-out
  14278.      *
  14279.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14280.      */

  14281.     public abstract double priceFromGSpread (
  14282.         final org.drip.param.valuation.ValuationParams valParams,
  14283.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14284.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14285.         final int iWorkoutDate,
  14286.         final double dblWorkoutFactor,
  14287.         final double dblGSpread)
  14288.         throws java.lang.Exception;

  14289.     /**
  14290.      * Calculate Price from G Spread to Maturity
  14291.      *
  14292.      * @param valParams Valuation Parameters
  14293.      * @param csqs Market Parameters
  14294.      * @param vcp Valuation Customization Parameters
  14295.      * @param dblGSpread G Spread to Maturity
  14296.      *
  14297.      * @return Price from G Spread to Maturity
  14298.      *
  14299.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14300.      */

  14301.     public abstract double priceFromGSpread (
  14302.         final org.drip.param.valuation.ValuationParams valParams,
  14303.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14304.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14305.         final double dblGSpread)
  14306.         throws java.lang.Exception;

  14307.     /**
  14308.      * Calculate Price from G Spread to Optimal Exercise
  14309.      *
  14310.      * @param valParams Valuation Parameters
  14311.      * @param csqs Market Parameters
  14312.      * @param vcp Valuation Customization Parameters
  14313.      * @param dblGSpread G Spread to Optimal Exercise
  14314.      *
  14315.      * @return Price from G Spread to Optimal Exercise
  14316.      *
  14317.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14318.      */

  14319.     public abstract double priceFromGSpreadToOptimalExercise (
  14320.         final org.drip.param.valuation.ValuationParams valParams,
  14321.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14322.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14323.         final double dblGSpread)
  14324.         throws java.lang.Exception;

  14325.     /**
  14326.      * Calculate Price from I Spread to Work-out
  14327.      *
  14328.      * @param valParams Valuation Parameters
  14329.      * @param csqs Market Parameters
  14330.      * @param vcp Valuation Customization Parameters
  14331.      * @param iWorkoutDate Work-out Date
  14332.      * @param dblWorkoutFactor Work-out Factor
  14333.      * @param dblISpread I Spread to Work-out
  14334.      *
  14335.      * @return Price from I Spread to Work-out
  14336.      *
  14337.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14338.      */

  14339.     public abstract double priceFromISpread (
  14340.         final org.drip.param.valuation.ValuationParams valParams,
  14341.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14342.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14343.         final int iWorkoutDate,
  14344.         final double dblWorkoutFactor,
  14345.         final double dblISpread)
  14346.         throws java.lang.Exception;

  14347.     /**
  14348.      * Calculate Price from I Spread to Maturity
  14349.      *
  14350.      * @param valParams Valuation Parameters
  14351.      * @param csqs Market Parameters
  14352.      * @param vcp Valuation Customization Parameters
  14353.      * @param dblISpread I Spread to Maturity
  14354.      *
  14355.      * @return Price from I Spread to Maturity
  14356.      *
  14357.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14358.      */

  14359.     public abstract double priceFromISpread (
  14360.         final org.drip.param.valuation.ValuationParams valParams,
  14361.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14362.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14363.         final double dblISpread)
  14364.         throws java.lang.Exception;

  14365.     /**
  14366.      * Calculate Price from I Spread to Optimal Exercise
  14367.      *
  14368.      * @param valParams Valuation Parameters
  14369.      * @param csqs Market Parameters
  14370.      * @param vcp Valuation Customization Parameters
  14371.      * @param dblISpread ISpread to Optimal Exercise
  14372.      *
  14373.      * @return Price from I Spread to Optimal Exercise
  14374.      *
  14375.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14376.      */

  14377.     public abstract double priceFromISpreadToOptimalExercise (
  14378.         final org.drip.param.valuation.ValuationParams valParams,
  14379.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14380.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14381.         final double dblISpread)
  14382.         throws java.lang.Exception;

  14383.     /**
  14384.      * Calculate Price from J Spread to Work-out
  14385.      *
  14386.      * @param valParams Valuation Parameters
  14387.      * @param csqs Market Parameters
  14388.      * @param vcp Valuation Customization Parameters
  14389.      * @param iWorkoutDate Work-out Date
  14390.      * @param dblWorkoutFactor Work-out Factor
  14391.      * @param dblJSpread J Spread to Work-out
  14392.      *
  14393.      * @return Price from J Spread to Work-out
  14394.      *
  14395.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14396.      */

  14397.     public abstract double priceFromJSpread (
  14398.         final org.drip.param.valuation.ValuationParams valParams,
  14399.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14400.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14401.         final int iWorkoutDate,
  14402.         final double dblWorkoutFactor,
  14403.         final double dblJSpread)
  14404.         throws java.lang.Exception;

  14405.     /**
  14406.      * Calculate Price from J Spread to Maturity
  14407.      *
  14408.      * @param valParams Valuation Parameters
  14409.      * @param csqs Market Parameters
  14410.      * @param vcp Valuation Customization Parameters
  14411.      * @param dblJSpread J Spread to Maturity
  14412.      *
  14413.      * @return Price from J Spread to Maturity
  14414.      *
  14415.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14416.      */

  14417.     public abstract double priceFromJSpread (
  14418.         final org.drip.param.valuation.ValuationParams valParams,
  14419.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14420.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14421.         final double dblJSpread)
  14422.         throws java.lang.Exception;

  14423.     /**
  14424.      * Calculate Price from J Spread to Optimal Exercise
  14425.      *
  14426.      * @param valParams Valuation Parameters
  14427.      * @param csqs Market Parameters
  14428.      * @param vcp Valuation Customization Parameters
  14429.      * @param dblJSpread J Spread to Optimal Exercise
  14430.      *
  14431.      * @return Price from J Spread to Optimal Exercise
  14432.      *
  14433.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14434.      */

  14435.     public abstract double priceFromJSpreadToOptimalExercise (
  14436.         final org.drip.param.valuation.ValuationParams valParams,
  14437.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14438.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14439.         final double dblJSpread)
  14440.         throws java.lang.Exception;

  14441.     /**
  14442.      * Calculate Price from N Spread to Work-out
  14443.      *
  14444.      * @param valParams Valuation Parameters
  14445.      * @param csqs Market Parameters
  14446.      * @param vcp Valuation Customization Parameters
  14447.      * @param iWorkoutDate Work-out Date
  14448.      * @param dblWorkoutFactor Work-out Factor
  14449.      * @param dblNSpread N Spread to Work-out
  14450.      *
  14451.      * @return Price from N Spread to Work-out
  14452.      *
  14453.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14454.      */

  14455.     public abstract double priceFromNSpread (
  14456.         final org.drip.param.valuation.ValuationParams valParams,
  14457.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14458.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14459.         final int iWorkoutDate,
  14460.         final double dblWorkoutFactor,
  14461.         final double dblNSpread)
  14462.         throws java.lang.Exception;

  14463.     /**
  14464.      * Calculate Price from N Spread to Maturity
  14465.      *
  14466.      * @param valParams Valuation Parameters
  14467.      * @param csqs Market Parameters
  14468.      * @param vcp Valuation Customization Parameters
  14469.      * @param dblNSpread N Spread to Maturity
  14470.      *
  14471.      * @return Price from N Spread to Maturity
  14472.      *
  14473.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14474.      */

  14475.     public abstract double priceFromNSpread (
  14476.         final org.drip.param.valuation.ValuationParams valParams,
  14477.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14478.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14479.         final double dblNSpread)
  14480.         throws java.lang.Exception;

  14481.     /**
  14482.      * Calculate Price from N Spread to Optimal Exercise
  14483.      *
  14484.      * @param valParams Valuation Parameters
  14485.      * @param csqs Market Parameters
  14486.      * @param vcp Valuation Customization Parameters
  14487.      * @param dblNSpread N Spread to Optimal Exercise
  14488.      *
  14489.      * @return Price from N Spread to Optimal Exercise
  14490.      *
  14491.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14492.      */

  14493.     public abstract double priceFromNSpreadToOptimalExercise (
  14494.         final org.drip.param.valuation.ValuationParams valParams,
  14495.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14496.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14497.         final double dblNSpread)
  14498.         throws java.lang.Exception;

  14499.     /**
  14500.      * Calculate Price from OAS to Work-out
  14501.      *
  14502.      * @param valParams Valuation Parameters
  14503.      * @param csqs Market Parameters
  14504.      * @param vcp Valuation Customization Parameters
  14505.      * @param iWorkoutDate Work-out Date
  14506.      * @param dblWorkoutFactor Work-out Factor
  14507.      * @param dblOAS OAS to Work-out
  14508.      *
  14509.      * @return Price from OAS to Work-out
  14510.      *
  14511.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14512.      */

  14513.     public abstract double priceFromOAS (
  14514.         final org.drip.param.valuation.ValuationParams valParams,
  14515.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14516.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14517.         final int iWorkoutDate,
  14518.         final double dblWorkoutFactor,
  14519.         final double dblOAS)
  14520.         throws java.lang.Exception;

  14521.     /**
  14522.      * Calculate Price from OAS to Maturity
  14523.      *
  14524.      * @param valParams Valuation Parameters
  14525.      * @param csqs Market Parameters
  14526.      * @param vcp Valuation Customization Parameters
  14527.      * @param dblOAS OAS to Maturity
  14528.      *
  14529.      * @return Price from OAS to Maturity
  14530.      *
  14531.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14532.      */

  14533.     public abstract double priceFromOAS (
  14534.         final org.drip.param.valuation.ValuationParams valParams,
  14535.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14536.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14537.         final double dblOAS)
  14538.         throws java.lang.Exception;

  14539.     /**
  14540.      * Calculate Price from OAS to Optimal Exercise
  14541.      *
  14542.      * @param valParams Valuation Parameters
  14543.      * @param csqs Market Parameters
  14544.      * @param vcp Valuation Customization Parameters
  14545.      * @param dblOAS OAS to Optimal Exercise
  14546.      *
  14547.      * @return Price from OAS to Optimal Exercise
  14548.      *
  14549.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14550.      */

  14551.     public abstract double priceFromOASToOptimalExercise (
  14552.         final org.drip.param.valuation.ValuationParams valParams,
  14553.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14554.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14555.         final double dblOAS)
  14556.         throws java.lang.Exception;

  14557.     /**
  14558.      * Calculate Price from PECS to Work-out
  14559.      *
  14560.      * @param valParams Valuation Parameters
  14561.      * @param csqs Market Parameters
  14562.      * @param vcp Valuation Customization Parameters
  14563.      * @param iWorkoutDate Work-out Date
  14564.      * @param dblWorkoutFactor Work-out Factor
  14565.      * @param dblPECS PECS to Work-out
  14566.      *
  14567.      * @return Price from PECS to Work-out
  14568.      *
  14569.      * @throws java.lang.Exception Thrown if the PECS cannot be calculated
  14570.      */

  14571.     public abstract double priceFromPECS (
  14572.         final org.drip.param.valuation.ValuationParams valParams,
  14573.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14574.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14575.         final int iWorkoutDate,
  14576.         final double dblWorkoutFactor,
  14577.         final double dblPECS)
  14578.         throws java.lang.Exception;

  14579.     /**
  14580.      * Calculate Price from PECS to Maturity
  14581.      *
  14582.      * @param valParams Valuation Parameters
  14583.      * @param csqs Market Parameters
  14584.      * @param vcp Valuation Customization Parameters
  14585.      * @param dblPECS PECS to Maturity
  14586.      *
  14587.      * @return Price from PECS to Maturity
  14588.      *
  14589.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14590.      */

  14591.     public abstract double priceFromPECS (
  14592.         final org.drip.param.valuation.ValuationParams valParams,
  14593.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14594.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14595.         final double dblPECS)
  14596.         throws java.lang.Exception;

  14597.     /**
  14598.      * Calculate Price from PECS to Optimal Exercise
  14599.      *
  14600.      * @param valParams Valuation Parameters
  14601.      * @param csqs Market Parameters
  14602.      * @param vcp Valuation Customization Parameters
  14603.      * @param dblPECS PECS to Optimal Exercise
  14604.      *
  14605.      * @return Price from PECS to Optimal Exercise
  14606.      *
  14607.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14608.      */

  14609.     public abstract double priceFromPECSToOptimalExercise (
  14610.         final org.drip.param.valuation.ValuationParams valParams,
  14611.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14612.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14613.         final double dblPECS)
  14614.         throws java.lang.Exception;

  14615.     /**
  14616.      * Calculate Price from TSY Spread to Work-out
  14617.      *
  14618.      * @param valParams Valuation Parameters
  14619.      * @param csqs Market Parameters
  14620.      * @param vcp Valuation Customization Parameters
  14621.      * @param iWorkoutDate Work-out Date
  14622.      * @param dblWorkoutFactor Work-out Factor
  14623.      * @param dblTSYSpread TSY Spread to Work-out
  14624.      *
  14625.      * @return Price from TSY Spread to Work-out
  14626.      *
  14627.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14628.      */

  14629.     public abstract double priceFromTSYSpread (
  14630.         final org.drip.param.valuation.ValuationParams valParams,
  14631.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14632.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14633.         final int iWorkoutDate,
  14634.         final double dblWorkoutFactor,
  14635.         final double dblTSYSpread)
  14636.         throws java.lang.Exception;

  14637.     /**
  14638.      * Calculate Price from TSY Spread to Maturity
  14639.      *
  14640.      * @param valParams Valuation Parameters
  14641.      * @param csqs Market Parameters
  14642.      * @param vcp Valuation Customization Parameters
  14643.      * @param dblTSYSpread TSY Spread to Maturity
  14644.      *
  14645.      * @return Price from TSY Spread to Maturity
  14646.      *
  14647.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14648.      */

  14649.     public abstract double priceFromTSYSpread (
  14650.         final org.drip.param.valuation.ValuationParams valParams,
  14651.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14652.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14653.         final double dblTSYSpread)
  14654.         throws java.lang.Exception;

  14655.     /**
  14656.      * Calculate Price from TSY Spread to Optimal Exercise
  14657.      *
  14658.      * @param valParams Valuation Parameters
  14659.      * @param csqs Market Parameters
  14660.      * @param vcp Valuation Customization Parameters
  14661.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  14662.      *
  14663.      * @return Price from TSY Spread to Optimal Exercise
  14664.      *
  14665.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14666.      */

  14667.     public abstract double priceFromTSYSpreadToOptimalExercise (
  14668.         final org.drip.param.valuation.ValuationParams valParams,
  14669.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14670.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14671.         final double dblTSYSpread)
  14672.         throws java.lang.Exception;

  14673.     /**
  14674.      * Calculate Price from Yield to Work-out
  14675.      *
  14676.      * @param valParams Valuation Parameters
  14677.      * @param csqs Market Parameters
  14678.      * @param vcp Valuation Customization Parameters
  14679.      * @param iWorkoutDate Work-out Date
  14680.      * @param dblWorkoutFactor Work-out Factor
  14681.      * @param dblYield Yield to Work-out
  14682.      *
  14683.      * @return Price from Yield to Work-out
  14684.      *
  14685.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14686.      */

  14687.     public abstract double priceFromYield (
  14688.         final org.drip.param.valuation.ValuationParams valParams,
  14689.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14690.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14691.         final int iWorkoutDate,
  14692.         final double dblWorkoutFactor,
  14693.         final double dblYield)
  14694.         throws java.lang.Exception;

  14695.     /**
  14696.      * Calculate Price from Yield to Maturity
  14697.      *
  14698.      * @param valParams Valuation Parameters
  14699.      * @param csqs Market Parameters
  14700.      * @param vcp Valuation Customization Parameters
  14701.      * @param dblYield Yield to Maturity
  14702.      *
  14703.      * @return Price from Yield to Maturity
  14704.      *
  14705.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14706.      */

  14707.     public abstract double priceFromYield (
  14708.         final org.drip.param.valuation.ValuationParams valParams,
  14709.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14710.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14711.         final double dblYield)
  14712.         throws java.lang.Exception;

  14713.     /**
  14714.      * Calculate Price from Yield to Optimal Exercise
  14715.      *
  14716.      * @param valParams Valuation Parameters
  14717.      * @param csqs Market Parameters
  14718.      * @param vcp Valuation Customization Parameters
  14719.      * @param dblYield Yield to Optimal Exercise
  14720.      *
  14721.      * @return Price from Yield to Optimal Exercise
  14722.      *
  14723.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14724.      */

  14725.     public abstract double priceFromYieldToOptimalExercise (
  14726.         final org.drip.param.valuation.ValuationParams valParams,
  14727.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14728.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14729.         final double dblYield)
  14730.         throws java.lang.Exception;

  14731.     /**
  14732.      * Calculate Price from Yield Spread to Work-out
  14733.      *
  14734.      * @param valParams Valuation Parameters
  14735.      * @param csqs Market Parameters
  14736.      * @param vcp Valuation Customization Parameters
  14737.      * @param iWorkoutDate Work-out Date
  14738.      * @param dblWorkoutFactor Work-out Factor
  14739.      * @param dblYieldSpread Yield Spread to Work-out
  14740.      *
  14741.      * @return Price from Yield Spread to Work-out
  14742.      *
  14743.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14744.      */

  14745.     public abstract double priceFromYieldSpread (
  14746.         final org.drip.param.valuation.ValuationParams valParams,
  14747.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14748.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14749.         final int iWorkoutDate,
  14750.         final double dblWorkoutFactor,
  14751.         final double dblYieldSpread)
  14752.         throws java.lang.Exception;

  14753.     /**
  14754.      * Calculate Price from Yield Spread to Maturity
  14755.      *
  14756.      * @param valParams Valuation Parameters
  14757.      * @param csqs Market Parameters
  14758.      * @param vcp Valuation Customization Parameters
  14759.      * @param dblYieldSpread Yield Spread to Maturity
  14760.      *
  14761.      * @return Price from Yield Spread to Maturity
  14762.      *
  14763.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14764.      */

  14765.     public abstract double priceFromYieldSpread (
  14766.         final org.drip.param.valuation.ValuationParams valParams,
  14767.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14768.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14769.         final double dblYieldSpread)
  14770.         throws java.lang.Exception;

  14771.     /**
  14772.      * Calculate Price from Yield Spread to Optimal Exercise
  14773.      *
  14774.      * @param valParams Valuation Parameters
  14775.      * @param csqs Market Parameters
  14776.      * @param vcp Valuation Customization Parameters
  14777.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  14778.      *
  14779.      * @return Price from Yield Spread to Optimal Exercise
  14780.      *
  14781.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14782.      */

  14783.     public abstract double priceFromYieldSpreadToOptimalExercise (
  14784.         final org.drip.param.valuation.ValuationParams valParams,
  14785.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14786.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14787.         final double dblYieldSpread)
  14788.         throws java.lang.Exception;

  14789.     /**
  14790.      * Calculate Price from Z Spread to Work-out
  14791.      *
  14792.      * @param valParams Valuation Parameters
  14793.      * @param csqs Market Parameters
  14794.      * @param vcp Valuation Customization Parameters
  14795.      * @param iWorkoutDate Work-out Date
  14796.      * @param dblWorkoutFactor Work-out Factor
  14797.      * @param dblZSpread Z Spread to Work-out
  14798.      *
  14799.      * @return Price from Z Spread to Work-out
  14800.      *
  14801.      * @throws java.lang.Exception Thrown if the Price cannot be calculated
  14802.      */

  14803.     public abstract double priceFromZSpread (
  14804.         final org.drip.param.valuation.ValuationParams valParams,
  14805.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14806.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14807.         final int iWorkoutDate,
  14808.         final double dblWorkoutFactor,
  14809.         final double dblZSpread)
  14810.         throws java.lang.Exception;

  14811.     /**
  14812.      * Calculate Price from Z Spread to Maturity
  14813.      *
  14814.      * @param valParams Valuation Parameters
  14815.      * @param csqs Market Parameters
  14816.      * @param vcp Valuation Customization Parameters
  14817.      * @param dblZSpread Z Spread to Maturity
  14818.      *
  14819.      * @return Price from Z Spread to Maturity
  14820.      *
  14821.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14822.      */

  14823.     public abstract double priceFromZSpread (
  14824.         final org.drip.param.valuation.ValuationParams valParams,
  14825.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14826.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14827.         final double dblZSpread)
  14828.         throws java.lang.Exception;

  14829.     /**
  14830.      * Calculate Price from Z Spread to Optimal Exercise
  14831.      *
  14832.      * @param valParams Valuation Parameters
  14833.      * @param csqs Market Parameters
  14834.      * @param vcp Valuation Customization Parameters
  14835.      * @param dblZSpread Z Spread to Optimal Exercise
  14836.      *
  14837.      * @return Price from Z Spread to Optimal Exercise
  14838.      *
  14839.      * @throws java.lang.Exception Thrown if Price cannot be calculated
  14840.      */

  14841.     public abstract double priceFromZSpreadToOptimalExercise (
  14842.         final org.drip.param.valuation.ValuationParams valParams,
  14843.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14844.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14845.         final double dblZSpread)
  14846.         throws java.lang.Exception;

  14847.     /**
  14848.      * Calculate TSY Spread from ASW to Work-out
  14849.      *
  14850.      * @param valParams Valuation Parameters
  14851.      * @param csqs Market Parameters
  14852.      * @param vcp Valuation Customization Parameters
  14853.      * @param iWorkoutDate Work-out Date
  14854.      * @param dblWorkoutFactor Work-out Factor
  14855.      * @param dblASW ASW to Work-out
  14856.      *
  14857.      * @return TSY Spread from ASW to Work-out
  14858.      *
  14859.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  14860.      */

  14861.     public abstract double tsySpreadFromASW (
  14862.         final org.drip.param.valuation.ValuationParams valParams,
  14863.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14864.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14865.         final int iWorkoutDate,
  14866.         final double dblWorkoutFactor,
  14867.         final double dblASW)
  14868.         throws java.lang.Exception;

  14869.     /**
  14870.      * Calculate TSY Spread from ASW to Maturity
  14871.      *
  14872.      * @param valParams Valuation Parameters
  14873.      * @param csqs Market Parameters
  14874.      * @param vcp Valuation Customization Parameters
  14875.      * @param dblASW ASW to Maturity
  14876.      *
  14877.      * @return TSY Spread from ASW to Maturity
  14878.      *
  14879.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  14880.      */

  14881.     public abstract double tsySpreadFromASW (
  14882.         final org.drip.param.valuation.ValuationParams valParams,
  14883.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14884.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14885.         final double dblASW)
  14886.         throws java.lang.Exception;

  14887.     /**
  14888.      * Calculate TSY Spread from ASW to Optimal Exercise
  14889.      *
  14890.      * @param valParams Valuation Parameters
  14891.      * @param csqs Market Parameters
  14892.      * @param vcp Valuation Customization Parameters
  14893.      * @param dblASW ASW to Optimal Exercise
  14894.      *
  14895.      * @return TSY Spread from ASW to Optimal Exercise
  14896.      *
  14897.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  14898.      */

  14899.     public abstract double tsySpreadFromASWToOptimalExercise (
  14900.         final org.drip.param.valuation.ValuationParams valParams,
  14901.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14902.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14903.         final double dblASW)
  14904.         throws java.lang.Exception;

  14905.     /**
  14906.      * Calculate TSY Spread from Bond Basis to Work-out
  14907.      *
  14908.      * @param valParams Valuation Parameters
  14909.      * @param csqs Market Parameters
  14910.      * @param vcp Valuation Customization Parameters
  14911.      * @param iWorkoutDate Work-out Date
  14912.      * @param dblWorkoutFactor Work-out Factor
  14913.      * @param dblBondBasis Bond Basis to Work-out
  14914.      *
  14915.      * @return TSY Spread from Bond Basis to Work-out
  14916.      *
  14917.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  14918.      */

  14919.     public abstract double tsySpreadFromBondBasis (
  14920.         final org.drip.param.valuation.ValuationParams valParams,
  14921.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14922.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14923.         final int iWorkoutDate,
  14924.         final double dblWorkoutFactor,
  14925.         final double dblBondBasis)
  14926.         throws java.lang.Exception;

  14927.     /**
  14928.      * Calculate TSY Spread from Bond Basis to Maturity
  14929.      *
  14930.      * @param valParams Valuation Parameters
  14931.      * @param csqs Market Parameters
  14932.      * @param vcp Valuation Customization Parameters
  14933.      * @param dblBondBasis Bond Basis to Maturity
  14934.      *
  14935.      * @return TSY Spread from Bond Basis to Maturity
  14936.      *
  14937.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  14938.      */

  14939.     public abstract double tsySpreadFromBondBasis (
  14940.         final org.drip.param.valuation.ValuationParams valParams,
  14941.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14942.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14943.         final double dblBondBasis)
  14944.         throws java.lang.Exception;

  14945.     /**
  14946.      * Calculate TSY Spread from Bond Basis to Optimal Exercise
  14947.      *
  14948.      * @param valParams Valuation Parameters
  14949.      * @param csqs Market Parameters
  14950.      * @param vcp Valuation Customization Parameters
  14951.      * @param dblBondBasis Bond Basis to Optimal Exercise
  14952.      *
  14953.      * @return TSY Spread from Bond Basis to Optimal Exercise
  14954.      *
  14955.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  14956.      */

  14957.     public abstract double tsySpreadFromBondBasisToOptimalExercise (
  14958.         final org.drip.param.valuation.ValuationParams valParams,
  14959.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14960.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14961.         final double dblBondBasis)
  14962.         throws java.lang.Exception;

  14963.     /**
  14964.      * Calculate TSY Spread from Credit Basis to Work-out
  14965.      *
  14966.      * @param valParams Valuation Parameters
  14967.      * @param csqs Market Parameters
  14968.      * @param vcp Valuation Customization Parameters
  14969.      * @param iWorkoutDate Work-out Date
  14970.      * @param dblWorkoutFactor Work-out Factor
  14971.      * @param dblCreditBasis Credit Basis to Work-out
  14972.      *
  14973.      * @return TSY Spread from Credit Basis to Work-out
  14974.      *
  14975.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  14976.      */

  14977.     public abstract double tsySpreadFromCreditBasis (
  14978.         final org.drip.param.valuation.ValuationParams valParams,
  14979.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  14980.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  14981.         final int iWorkoutDate,
  14982.         final double dblWorkoutFactor,
  14983.         final double dblCreditBasis)
  14984.         throws java.lang.Exception;

  14985.     /**
  14986.      * Calculate TSY Spread from Credit Basis to Maturity
  14987.      *
  14988.      * @param valParams Valuation Parameters
  14989.      * @param csqs Market Parameters
  14990.      * @param vcp Valuation Customization Parameters
  14991.      * @param dblCreditBasis Credit Basis to Maturity
  14992.      *
  14993.      * @return TSY Spread from Credit Basis to Maturity
  14994.      *
  14995.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  14996.      */

  14997.     public abstract double tsySpreadFromCreditBasis (
  14998.         final org.drip.param.valuation.ValuationParams valParams,
  14999.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15000.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15001.         final double dblCreditBasis)
  15002.         throws java.lang.Exception;

  15003.     /**
  15004.      * Calculate TSY Spread from Credit Basis to Optimal Exercise
  15005.      *
  15006.      * @param valParams Valuation Parameters
  15007.      * @param csqs Market Parameters
  15008.      * @param vcp Valuation Customization Parameters
  15009.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  15010.      *
  15011.      * @return TSY Spread from Credit Basis to Optimal Exercise
  15012.      *
  15013.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15014.      */

  15015.     public abstract double tsySpreadFromCreditBasisToOptimalExercise (
  15016.         final org.drip.param.valuation.ValuationParams valParams,
  15017.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15018.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15019.         final double dblCreditBasis)
  15020.         throws java.lang.Exception;

  15021.     /**
  15022.      * Calculate TSY Spread from Discount Margin to Work-out
  15023.      *
  15024.      * @param valParams Valuation Parameters
  15025.      * @param csqs Market Parameters
  15026.      * @param vcp Valuation Customization Parameters
  15027.      * @param iWorkoutDate Work-out Date
  15028.      * @param dblWorkoutFactor Work-out Factor
  15029.      * @param dblDiscountMargin Discount Margin to Work-out
  15030.      *
  15031.      * @return TSY Spread from Discount Margin to Work-out
  15032.      *
  15033.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15034.      */

  15035.     public abstract double tsySpreadFromDiscountMargin (
  15036.         final org.drip.param.valuation.ValuationParams valParams,
  15037.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15038.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15039.         final int iWorkoutDate,
  15040.         final double dblWorkoutFactor,
  15041.         final double dblDiscountMargin)
  15042.         throws java.lang.Exception;

  15043.     /**
  15044.      * Calculate TSY Spread from Discount Margin to Maturity
  15045.      *
  15046.      * @param valParams Valuation Parameters
  15047.      * @param csqs Market Parameters
  15048.      * @param vcp Valuation Customization Parameters
  15049.      * @param dblDiscountMargin Discount Margin to Maturity
  15050.      *
  15051.      * @return TSY Spread from Discount Margin to Maturity
  15052.      *
  15053.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15054.      */

  15055.     public abstract double tsySpreadFromDiscountMargin (
  15056.         final org.drip.param.valuation.ValuationParams valParams,
  15057.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15058.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15059.         final double dblDiscountMargin)
  15060.         throws java.lang.Exception;

  15061.     /**
  15062.      * Calculate TSY Spread from Discount Margin to Optimal Exercise
  15063.      *
  15064.      * @param valParams Valuation Parameters
  15065.      * @param csqs Market Parameters
  15066.      * @param vcp Valuation Customization Parameters
  15067.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  15068.      *
  15069.      * @return TSY Spread from Discount Margin to Optimal Exercise
  15070.      *
  15071.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15072.      */

  15073.     public abstract double tsySpreadFromDiscountMarginToOptimalExercise (
  15074.         final org.drip.param.valuation.ValuationParams valParams,
  15075.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15076.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15077.         final double dblDiscountMargin)
  15078.         throws java.lang.Exception;

  15079.     /**
  15080.      * Calculate TSY Spread from I Spread to Work-out
  15081.      *
  15082.      * @param valParams Valuation Parameters
  15083.      * @param csqs Market Parameters
  15084.      * @param vcp Valuation Customization Parameters
  15085.      * @param iWorkoutDate Work-out Date
  15086.      * @param dblWorkoutFactor Work-out Factor
  15087.      * @param dblISpread I Spread to Work-out
  15088.      *
  15089.      * @return TSY Spread from I Spread to Work-out
  15090.      *
  15091.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15092.      */

  15093.     public abstract double tsySpreadFromISpread (
  15094.         final org.drip.param.valuation.ValuationParams valParams,
  15095.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15096.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15097.         final int iWorkoutDate,
  15098.         final double dblWorkoutFactor,
  15099.         final double dblISpread)
  15100.         throws java.lang.Exception;

  15101.     /**
  15102.      * Calculate TSY Spread from I Spread to Maturity
  15103.      *
  15104.      * @param valParams Valuation Parameters
  15105.      * @param csqs Market Parameters
  15106.      * @param vcp Valuation Customization Parameters
  15107.      * @param dblISpread I Spread to Maturity
  15108.      *
  15109.      * @return TSY Spread from I Spread to Maturity
  15110.      *
  15111.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15112.      */

  15113.     public abstract double tsySpreadFromISpread (
  15114.         final org.drip.param.valuation.ValuationParams valParams,
  15115.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15116.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15117.         final double dblISpread)
  15118.         throws java.lang.Exception;

  15119.     /**
  15120.      * Calculate TSY Spread from I Spread to Optimal Exercise
  15121.      *
  15122.      * @param valParams Valuation Parameters
  15123.      * @param csqs Market Parameters
  15124.      * @param vcp Valuation Customization Parameters
  15125.      * @param dblISpread I Spread to Optimal Exercise
  15126.      *
  15127.      * @return TSY Spread from I Spread to Optimal Exercise
  15128.      *
  15129.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15130.      */

  15131.     public abstract double tsySpreadFromISpreadToOptimalExercise (
  15132.         final org.drip.param.valuation.ValuationParams valParams,
  15133.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15134.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15135.         final double dblISpread)
  15136.         throws java.lang.Exception;

  15137.     /**
  15138.      * Calculate TSY Spread from E Spread to Work-out
  15139.      *
  15140.      * @param valParams Valuation Parameters
  15141.      * @param csqs Market Parameters
  15142.      * @param vcp Valuation Customization Parameters
  15143.      * @param iWorkoutDate Work-out Date
  15144.      * @param dblWorkoutFactor Work-out Factor
  15145.      * @param dblESpread E Spread to Work-out
  15146.      *
  15147.      * @return TSY Spread from E Spread to Work-out
  15148.      *
  15149.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15150.      */

  15151.     public abstract double tsySpreadFromESpread (
  15152.         final org.drip.param.valuation.ValuationParams valParams,
  15153.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15154.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15155.         final int iWorkoutDate,
  15156.         final double dblWorkoutFactor,
  15157.         final double dblESpread)
  15158.         throws java.lang.Exception;

  15159.     /**
  15160.      * Calculate TSY Spread from E Spread to Maturity
  15161.      *
  15162.      * @param valParams Valuation Parameters
  15163.      * @param csqs Market Parameters
  15164.      * @param vcp Valuation Customization Parameters
  15165.      * @param dblESpread E Spread to Maturity
  15166.      *
  15167.      * @return TSY Spread from E Spread to Maturity
  15168.      *
  15169.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15170.      */

  15171.     public abstract double tsySpreadFromESpread (
  15172.         final org.drip.param.valuation.ValuationParams valParams,
  15173.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15174.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15175.         final double dblESpread)
  15176.         throws java.lang.Exception;

  15177.     /**
  15178.      * Calculate TSY Spread from E Spread to Optimal Exercise
  15179.      *
  15180.      * @param valParams Valuation Parameters
  15181.      * @param csqs Market Parameters
  15182.      * @param vcp Valuation Customization Parameters
  15183.      * @param dblESpread E Spread to Optimal Exercise
  15184.      *
  15185.      * @return TSY Spread from E Spread to Optimal Exercise
  15186.      *
  15187.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15188.      */

  15189.     public abstract double tsySpreadFromESpreadToOptimalExercise (
  15190.         final org.drip.param.valuation.ValuationParams valParams,
  15191.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15192.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15193.         final double dblESpread)
  15194.         throws java.lang.Exception;

  15195.     /**
  15196.      * Calculate TSY Spread from G Spread to Work-out
  15197.      *
  15198.      * @param valParams Valuation Parameters
  15199.      * @param csqs Market Parameters
  15200.      * @param vcp Valuation Customization Parameters
  15201.      * @param iWorkoutDate Work-out Date
  15202.      * @param dblWorkoutFactor Work-out Factor
  15203.      * @param dblGSpread G Spread to Work-out
  15204.      *
  15205.      * @return TSY Spread from G Spread to Work-out
  15206.      *
  15207.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15208.      */

  15209.     public abstract double tsySpreadFromGSpread (
  15210.         final org.drip.param.valuation.ValuationParams valParams,
  15211.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15212.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15213.         final int iWorkoutDate,
  15214.         final double dblWorkoutFactor,
  15215.         final double dblGSpread)
  15216.         throws java.lang.Exception;

  15217.     /**
  15218.      * Calculate TSY Spread from G Spread to Maturity
  15219.      *
  15220.      * @param valParams Valuation Parameters
  15221.      * @param csqs Market Parameters
  15222.      * @param vcp Valuation Customization Parameters
  15223.      * @param dblGSpread G Spread to Maturity
  15224.      *
  15225.      * @return TSY Spread from G Spread to Maturity
  15226.      *
  15227.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15228.      */

  15229.     public abstract double tsySpreadFromGSpread (
  15230.         final org.drip.param.valuation.ValuationParams valParams,
  15231.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15232.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15233.         final double dblGSpread)
  15234.         throws java.lang.Exception;

  15235.     /**
  15236.      * Calculate TSY Spread from G Spread to Optimal Exercise
  15237.      *
  15238.      * @param valParams Valuation Parameters
  15239.      * @param csqs Market Parameters
  15240.      * @param vcp Valuation Customization Parameters
  15241.      * @param dblGSpread G Spread to Optimal Exercise
  15242.      *
  15243.      * @return TSY Spread from G Spread to Optimal Exercise
  15244.      *
  15245.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15246.      */

  15247.     public abstract double tsySpreadFromGSpreadToOptimalExercise (
  15248.         final org.drip.param.valuation.ValuationParams valParams,
  15249.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15250.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15251.         final double dblGSpread)
  15252.         throws java.lang.Exception;

  15253.     /**
  15254.      * Calculate TSY Spread from J Spread to Work-out
  15255.      *
  15256.      * @param valParams Valuation Parameters
  15257.      * @param csqs Market Parameters
  15258.      * @param vcp Valuation Customization Parameters
  15259.      * @param iWorkoutDate Work-out Date
  15260.      * @param dblWorkoutFactor Work-out Factor
  15261.      * @param dblJSpread J Spread to Work-out
  15262.      *
  15263.      * @return TSY Spread from J Spread to Work-out
  15264.      *
  15265.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15266.      */

  15267.     public abstract double tsySpreadFromJSpread (
  15268.         final org.drip.param.valuation.ValuationParams valParams,
  15269.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15270.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15271.         final int iWorkoutDate,
  15272.         final double dblWorkoutFactor,
  15273.         final double dblJSpread)
  15274.         throws java.lang.Exception;

  15275.     /**
  15276.      * Calculate TSY Spread from J Spread to Maturity
  15277.      *
  15278.      * @param valParams Valuation Parameters
  15279.      * @param csqs Market Parameters
  15280.      * @param vcp Valuation Customization Parameters
  15281.      * @param dblJSpread J Spread to Maturity
  15282.      *
  15283.      * @return TSY Spread from J Spread to Maturity
  15284.      *
  15285.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15286.      */

  15287.     public abstract double tsySpreadFromJSpread (
  15288.         final org.drip.param.valuation.ValuationParams valParams,
  15289.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15290.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15291.         final double dblJSpread)
  15292.         throws java.lang.Exception;

  15293.     /**
  15294.      * Calculate TSY Spread from J Spread to Optimal Exercise
  15295.      *
  15296.      * @param valParams Valuation Parameters
  15297.      * @param csqs Market Parameters
  15298.      * @param vcp Valuation Customization Parameters
  15299.      * @param dblJSpread J Spread to Optimal Exercise
  15300.      *
  15301.      * @return TSY Spread from J Spread to Optimal Exercise
  15302.      *
  15303.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15304.      */

  15305.     public abstract double tsySpreadFromJSpreadToOptimalExercise (
  15306.         final org.drip.param.valuation.ValuationParams valParams,
  15307.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15308.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15309.         final double dblJSpread)
  15310.         throws java.lang.Exception;

  15311.     /**
  15312.      * Calculate TSY Spread from N Spread to Work-out
  15313.      *
  15314.      * @param valParams Valuation Parameters
  15315.      * @param csqs Market Parameters
  15316.      * @param vcp Valuation Customization Parameters
  15317.      * @param iWorkoutDate Work-out Date
  15318.      * @param dblWorkoutFactor Work-out Factor
  15319.      * @param dblNSpread N Spread to Work-out
  15320.      *
  15321.      * @return TSY Spread from N Spread to Work-out
  15322.      *
  15323.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15324.      */

  15325.     public abstract double tsySpreadFromNSpread (
  15326.         final org.drip.param.valuation.ValuationParams valParams,
  15327.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15328.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15329.         final int iWorkoutDate,
  15330.         final double dblWorkoutFactor,
  15331.         final double dblNSpread)
  15332.         throws java.lang.Exception;

  15333.     /**
  15334.      * Calculate TSY Spread from N Spread to Maturity
  15335.      *
  15336.      * @param valParams Valuation Parameters
  15337.      * @param csqs Market Parameters
  15338.      * @param vcp Valuation Customization Parameters
  15339.      * @param dblNSpread N Spread to Maturity
  15340.      *
  15341.      * @return TSY Spread from N Spread to Maturity
  15342.      *
  15343.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15344.      */

  15345.     public abstract double tsySpreadFromNSpread (
  15346.         final org.drip.param.valuation.ValuationParams valParams,
  15347.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15348.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15349.         final double dblNSpread)
  15350.         throws java.lang.Exception;

  15351.     /**
  15352.      * Calculate TSY Spread from N Spread to Optimal Exercise
  15353.      *
  15354.      * @param valParams Valuation Parameters
  15355.      * @param csqs Market Parameters
  15356.      * @param vcp Valuation Customization Parameters
  15357.      * @param dblNSpread N Spread to Optimal Exercise
  15358.      *
  15359.      * @return TSY Spread from N Spread to Optimal Exercise
  15360.      *
  15361.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15362.      */

  15363.     public abstract double tsySpreadFromNSpreadToOptimalExercise (
  15364.         final org.drip.param.valuation.ValuationParams valParams,
  15365.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15366.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15367.         final double dblNSpread)
  15368.         throws java.lang.Exception;

  15369.     /**
  15370.      * Calculate TSY Spread from OAS to Work-out
  15371.      *
  15372.      * @param valParams Valuation Parameters
  15373.      * @param csqs Market Parameters
  15374.      * @param vcp Valuation Customization Parameters
  15375.      * @param iWorkoutDate Work-out Date
  15376.      * @param dblWorkoutFactor Work-out Factor
  15377.      * @param dblOAS OAS to Work-out
  15378.      *
  15379.      * @return TSY Spread from OAS to Work-out
  15380.      *
  15381.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15382.      */

  15383.     public abstract double tsySpreadFromOAS (
  15384.         final org.drip.param.valuation.ValuationParams valParams,
  15385.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15386.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15387.         final int iWorkoutDate,
  15388.         final double dblWorkoutFactor,
  15389.         final double dblOAS)
  15390.         throws java.lang.Exception;

  15391.     /**
  15392.      * Calculate TSY Spread from OAS to Maturity
  15393.      *
  15394.      * @param valParams Valuation Parameters
  15395.      * @param csqs Market Parameters
  15396.      * @param vcp Valuation Customization Parameters
  15397.      * @param dblOAS OAS to Maturity
  15398.      *
  15399.      * @return TSY Spread from OAS to Maturity
  15400.      *
  15401.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15402.      */

  15403.     public abstract double tsySpreadFromOAS (
  15404.         final org.drip.param.valuation.ValuationParams valParams,
  15405.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15406.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15407.         final double dblOAS)
  15408.         throws java.lang.Exception;

  15409.     /**
  15410.      * Calculate TSY Spread from OAS to Optimal Exercise
  15411.      *
  15412.      * @param valParams Valuation Parameters
  15413.      * @param csqs Market Parameters
  15414.      * @param vcp Valuation Customization Parameters
  15415.      * @param dblOAS OAS to Optimal Exercise
  15416.      *
  15417.      * @return TSY Spread from OAS to Optimal Exercise
  15418.      *
  15419.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15420.      */

  15421.     public abstract double tsySpreadFromOASToOptimalExercise (
  15422.         final org.drip.param.valuation.ValuationParams valParams,
  15423.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15424.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15425.         final double dblOAS)
  15426.         throws java.lang.Exception;

  15427.     /**
  15428.      * Calculate TSY Spread from PECS to Work-out
  15429.      *
  15430.      * @param valParams Valuation Parameters
  15431.      * @param csqs Market Parameters
  15432.      * @param vcp Valuation Customization Parameters
  15433.      * @param iWorkoutDate Work-out Date
  15434.      * @param dblWorkoutFactor Work-out Factor
  15435.      * @param dblPECS PECS to Work-out
  15436.      *
  15437.      * @return TSY Spread from PECS to Work-out
  15438.      *
  15439.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15440.      */

  15441.     public abstract double tsySpreadFromPECS (
  15442.         final org.drip.param.valuation.ValuationParams valParams,
  15443.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15444.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15445.         final int iWorkoutDate,
  15446.         final double dblWorkoutFactor,
  15447.         final double dblPECS)
  15448.         throws java.lang.Exception;

  15449.     /**
  15450.      * Calculate TSY Spread from PECS to Maturity
  15451.      *
  15452.      * @param valParams Valuation Parameters
  15453.      * @param csqs Market Parameters
  15454.      * @param vcp Valuation Customization Parameters
  15455.      * @param dblPECS PECS to Maturity
  15456.      *
  15457.      * @return TSY Spread from PECS to Maturity
  15458.      *
  15459.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15460.      */

  15461.     public abstract double tsySpreadFromPECS (
  15462.         final org.drip.param.valuation.ValuationParams valParams,
  15463.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15464.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15465.         final double dblPECS)
  15466.         throws java.lang.Exception;

  15467.     /**
  15468.      * Calculate TSY Spread from PECS to Optimal Exercise
  15469.      *
  15470.      * @param valParams Valuation Parameters
  15471.      * @param csqs Market Parameters
  15472.      * @param vcp Valuation Customization Parameters
  15473.      * @param dblPECS PECS to Optimal Exercise
  15474.      *
  15475.      * @return TSY Spread from PECS to Optimal Exercise
  15476.      *
  15477.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15478.      */

  15479.     public abstract double tsySpreadFromPECSToOptimalExercise (
  15480.         final org.drip.param.valuation.ValuationParams valParams,
  15481.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15482.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15483.         final double dblPECS)
  15484.         throws java.lang.Exception;

  15485.     /**
  15486.      * Calculate TSY Spread from Price to Work-out
  15487.      *
  15488.      * @param valParams Valuation Parameters
  15489.      * @param csqs Market Parameters
  15490.      * @param vcp Valuation Customization Parameters
  15491.      * @param iWorkoutDate Work-out Date
  15492.      * @param dblWorkoutFactor Work-out Factor
  15493.      * @param dblPrice Price to Work-out
  15494.      *
  15495.      * @return TSY Spread from Price to Work-out
  15496.      *
  15497.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15498.      */

  15499.     public abstract double tsySpreadFromPrice (
  15500.         final org.drip.param.valuation.ValuationParams valParams,
  15501.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15502.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15503.         final int iWorkoutDate,
  15504.         final double dblWorkoutFactor,
  15505.         final double dblPrice)
  15506.         throws java.lang.Exception;

  15507.     /**
  15508.      * Calculate TSY Spread from Price to Maturity
  15509.      *
  15510.      * @param valParams Valuation Parameters
  15511.      * @param csqs Market Parameters
  15512.      * @param vcp Valuation Customization Parameters
  15513.      * @param dblPrice Price to Maturity
  15514.      *
  15515.      * @return TSY Spread from Price to Maturity
  15516.      *
  15517.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15518.      */

  15519.     public abstract double tsySpreadFromPrice (
  15520.         final org.drip.param.valuation.ValuationParams valParams,
  15521.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15522.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15523.         final double dblPrice)
  15524.         throws java.lang.Exception;

  15525.     /**
  15526.      * Calculate TSY Spread from Price to Optimal Exercise
  15527.      *
  15528.      * @param valParams Valuation Parameters
  15529.      * @param csqs Market Parameters
  15530.      * @param vcp Valuation Customization Parameters
  15531.      * @param dblPrice Price to Optimal Exercise
  15532.      *
  15533.      * @return TSY Spread from Price to Optimal Exercise
  15534.      *
  15535.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15536.      */

  15537.     public abstract double tsySpreadFromPriceToOptimalExercise (
  15538.         final org.drip.param.valuation.ValuationParams valParams,
  15539.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15540.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15541.         final double dblPrice)
  15542.         throws java.lang.Exception;

  15543.     /**
  15544.      * Calculate TSY Spread from Yield to Work-out
  15545.      *
  15546.      * @param valParams Valuation Parameters
  15547.      * @param csqs Market Parameters
  15548.      * @param vcp Valuation Customization Parameters
  15549.      * @param iWorkoutDate Work-out Date
  15550.      * @param dblWorkoutFactor Work-out Factor
  15551.      * @param dblYield Yield to Work-out
  15552.      *
  15553.      * @return TSY Spread from Yield to Work-out
  15554.      *
  15555.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15556.      */

  15557.     public abstract double tsySpreadFromYield (
  15558.         final org.drip.param.valuation.ValuationParams valParams,
  15559.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15560.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15561.         final int iWorkoutDate,
  15562.         final double dblWorkoutFactor,
  15563.         final double dblYield)
  15564.         throws java.lang.Exception;

  15565.     /**
  15566.      * Calculate TSY Spread from Yield to Maturity
  15567.      *
  15568.      * @param valParams Valuation Parameters
  15569.      * @param csqs Market Parameters
  15570.      * @param vcp Valuation Customization Parameters
  15571.      * @param dblYield Yield to Maturity
  15572.      *
  15573.      * @return TSY Spread from Yield to Maturity
  15574.      *
  15575.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15576.      */

  15577.     public abstract double tsySpreadFromYield (
  15578.         final org.drip.param.valuation.ValuationParams valParams,
  15579.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15580.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15581.         final double dblYield)
  15582.         throws java.lang.Exception;

  15583.     /**
  15584.      * Calculate TSY Spread from Yield to Optimal Exercise
  15585.      *
  15586.      * @param valParams Valuation Parameters
  15587.      * @param csqs Market Parameters
  15588.      * @param vcp Valuation Customization Parameters
  15589.      * @param dblYield Yield to Optimal Exercise
  15590.      *
  15591.      * @return TSY Spread from Yield to Optimal Exercise
  15592.      *
  15593.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15594.      */

  15595.     public abstract double tsySpreadFromYieldToOptimalExercise (
  15596.         final org.drip.param.valuation.ValuationParams valParams,
  15597.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15598.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15599.         final double dblYield)
  15600.         throws java.lang.Exception;

  15601.     /**
  15602.      * Calculate TSY Spread from Yield Spread to Work-out
  15603.      *
  15604.      * @param valParams Valuation Parameters
  15605.      * @param csqs Market Parameters
  15606.      * @param vcp Valuation Customization Parameters
  15607.      * @param iWorkoutDate Work-out Date
  15608.      * @param dblWorkoutFactor Work-out Factor
  15609.      * @param dblYieldSpread Yield Spread to Work-out
  15610.      *
  15611.      * @return TSY Spread from Yield Spread to Work-out
  15612.      *
  15613.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15614.      */

  15615.     public abstract double tsySpreadFromYieldSpread (
  15616.         final org.drip.param.valuation.ValuationParams valParams,
  15617.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15618.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15619.         final int iWorkoutDate,
  15620.         final double dblWorkoutFactor,
  15621.         final double dblYieldSpread)
  15622.         throws java.lang.Exception;

  15623.     /**
  15624.      * Calculate TSY Spread from Yield Spread to Maturity
  15625.      *
  15626.      * @param valParams Valuation Parameters
  15627.      * @param csqs Market Parameters
  15628.      * @param vcp Valuation Customization Parameters
  15629.      * @param dblYieldSpread Yield Spread to Maturity
  15630.      *
  15631.      * @return TSY Spread from Yield Spread to Maturity
  15632.      *
  15633.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15634.      */

  15635.     public abstract double tsySpreadFromYieldSpread (
  15636.         final org.drip.param.valuation.ValuationParams valParams,
  15637.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15638.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15639.         final double dblYieldSpread)
  15640.         throws java.lang.Exception;

  15641.     /**
  15642.      * Calculate TSY Spread from Yield Spread to Optimal Exercise
  15643.      *
  15644.      * @param valParams Valuation Parameters
  15645.      * @param csqs Market Parameters
  15646.      * @param vcp Valuation Customization Parameters
  15647.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  15648.      *
  15649.      * @return TSY Spread from Yield Spread to Optimal Exercise
  15650.      *
  15651.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15652.      */

  15653.     public abstract double tsySpreadFromYieldSpreadToOptimalExercise (
  15654.         final org.drip.param.valuation.ValuationParams valParams,
  15655.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15656.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15657.         final double dblYieldSpread)
  15658.         throws java.lang.Exception;

  15659.     /**
  15660.      * Calculate TSY Spread from Z Spread to Work-out
  15661.      *
  15662.      * @param valParams Valuation Parameters
  15663.      * @param csqs Market Parameters
  15664.      * @param vcp Valuation Customization Parameters
  15665.      * @param iWorkoutDate Work-out Date
  15666.      * @param dblWorkoutFactor Work-out Factor
  15667.      * @param dblZSpread Z Spread to Work-out
  15668.      *
  15669.      * @return TSY Spread from Z Spread to Work-out
  15670.      *
  15671.      * @throws java.lang.Exception Thrown if the TSY Spread cannot be calculated
  15672.      */

  15673.     public abstract double tsySpreadFromZSpread (
  15674.         final org.drip.param.valuation.ValuationParams valParams,
  15675.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15676.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15677.         final int iWorkoutDate,
  15678.         final double dblWorkoutFactor,
  15679.         final double dblZSpread)
  15680.         throws java.lang.Exception;

  15681.     /**
  15682.      * Calculate TSY Spread from Z Spread to Maturity
  15683.      *
  15684.      * @param valParams Valuation Parameters
  15685.      * @param csqs Market Parameters
  15686.      * @param vcp Valuation Customization Parameters
  15687.      * @param dblZSpread Z Spread to Maturity
  15688.      *
  15689.      * @return TSY Spread from Z Spread to Maturity
  15690.      *
  15691.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15692.      */

  15693.     public abstract double tsySpreadFromZSpread (
  15694.         final org.drip.param.valuation.ValuationParams valParams,
  15695.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15696.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15697.         final double dblZSpread)
  15698.         throws java.lang.Exception;

  15699.     /**
  15700.      * Calculate TSY Spread from Z Spread to Optimal Exercise
  15701.      *
  15702.      * @param valParams Valuation Parameters
  15703.      * @param csqs Market Parameters
  15704.      * @param vcp Valuation Customization Parameters
  15705.      * @param dblZSpread Z Spread to Optimal Exercise
  15706.      *
  15707.      * @return TSY Spread from Z Spread to Optimal Exercise
  15708.      *
  15709.      * @throws java.lang.Exception Thrown if TSY Spread cannot be calculated
  15710.      */

  15711.     public abstract double tsySpreadFromZSpreadToOptimalExercise (
  15712.         final org.drip.param.valuation.ValuationParams valParams,
  15713.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15714.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15715.         final double dblZSpread)
  15716.         throws java.lang.Exception;

  15717.     /**
  15718.      * Calculate Yield from ASW to Work-out
  15719.      *
  15720.      * @param valParams Valuation Parameters
  15721.      * @param csqs Market Parameters
  15722.      * @param vcp Valuation Customization Parameters
  15723.      * @param iWorkoutDate Work-out Date
  15724.      * @param dblWorkoutFactor Work-out Factor
  15725.      * @param dblASW ASW to Work-out
  15726.      *
  15727.      * @return Yield from ASW to Work-out
  15728.      *
  15729.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  15730.      */

  15731.     public abstract double yieldFromASW (
  15732.         final org.drip.param.valuation.ValuationParams valParams,
  15733.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15734.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15735.         final int iWorkoutDate,
  15736.         final double dblWorkoutFactor,
  15737.         final double dblASW)
  15738.         throws java.lang.Exception;

  15739.     /**
  15740.      * Calculate Yield from ASW to Maturity
  15741.      *
  15742.      * @param valParams Valuation Parameters
  15743.      * @param csqs Market Parameters
  15744.      * @param vcp Valuation Customization Parameters
  15745.      * @param dblASW ASW to Maturity
  15746.      *
  15747.      * @return Yield from ASW to Maturity
  15748.      *
  15749.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15750.      */

  15751.     public abstract double yieldFromASW (
  15752.         final org.drip.param.valuation.ValuationParams valParams,
  15753.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15754.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15755.         final double dblASW)
  15756.         throws java.lang.Exception;

  15757.     /**
  15758.      * Calculate Yield from ASW to Optimal Exercise
  15759.      *
  15760.      * @param valParams Valuation Parameters
  15761.      * @param csqs Market Parameters
  15762.      * @param vcp Valuation Customization Parameters
  15763.      * @param dblASW ASW to Optimal Exercise
  15764.      *
  15765.      * @return Yield from ASW to Optimal Exercise
  15766.      *
  15767.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15768.      */

  15769.     public abstract double yieldFromASWToOptimalExercise (
  15770.         final org.drip.param.valuation.ValuationParams valParams,
  15771.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15772.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15773.         final double dblASW)
  15774.         throws java.lang.Exception;

  15775.     /**
  15776.      * Calculate Yield from Bond Basis to Work-out
  15777.      *
  15778.      * @param valParams Valuation Parameters
  15779.      * @param csqs Market Parameters
  15780.      * @param vcp Valuation Customization Parameters
  15781.      * @param iWorkoutDate Work-out Date
  15782.      * @param dblWorkoutFactor Work-out Factor
  15783.      * @param dblBondBasis Bond Basis to Work-out
  15784.      *
  15785.      * @return Yield from Bond Basis to Work-out
  15786.      *
  15787.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  15788.      */

  15789.     public abstract double yieldFromBondBasis (
  15790.         final org.drip.param.valuation.ValuationParams valParams,
  15791.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15792.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15793.         final int iWorkoutDate,
  15794.         final double dblWorkoutFactor,
  15795.         final double dblBondBasis)
  15796.         throws java.lang.Exception;

  15797.     /**
  15798.      * Calculate Yield from Bond Basis to Maturity
  15799.      *
  15800.      * @param valParams Valuation Parameters
  15801.      * @param csqs Market Parameters
  15802.      * @param vcp Valuation Customization Parameters
  15803.      * @param dblBondBasis Bond Basis to Maturity
  15804.      *
  15805.      * @return Yield from Bond Basis to Maturity
  15806.      *
  15807.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15808.      */

  15809.     public abstract double yieldFromBondBasis (
  15810.         final org.drip.param.valuation.ValuationParams valParams,
  15811.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15812.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15813.         final double dblBondBasis)
  15814.         throws java.lang.Exception;

  15815.     /**
  15816.      * Calculate Yield from Bond Basis to Optimal Exercise
  15817.      *
  15818.      * @param valParams Valuation Parameters
  15819.      * @param csqs Market Parameters
  15820.      * @param vcp Valuation Customization Parameters
  15821.      * @param dblBondBasis Bond Basis to Optimal Exercise
  15822.      *
  15823.      * @return Yield from Bond Basis to Optimal Exercise
  15824.      *
  15825.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15826.      */

  15827.     public abstract double yieldFromBondBasisToOptimalExercise (
  15828.         final org.drip.param.valuation.ValuationParams valParams,
  15829.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15830.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15831.         final double dblBondBasis)
  15832.         throws java.lang.Exception;

  15833.     /**
  15834.      * Calculate Yield from Credit Basis to Work-out
  15835.      *
  15836.      * @param valParams Valuation Parameters
  15837.      * @param csqs Market Parameters
  15838.      * @param vcp Valuation Customization Parameters
  15839.      * @param iWorkoutDate Work-out Date
  15840.      * @param dblWorkoutFactor Work-out Factor
  15841.      * @param dblCreditBasis Credit Basis to Work-out
  15842.      *
  15843.      * @return Yield from Credit Basis to Work-out
  15844.      *
  15845.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  15846.      */

  15847.     public abstract double yieldFromCreditBasis (
  15848.         final org.drip.param.valuation.ValuationParams valParams,
  15849.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15850.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15851.         final int iWorkoutDate,
  15852.         final double dblWorkoutFactor,
  15853.         final double dblCreditBasis)
  15854.         throws java.lang.Exception;

  15855.     /**
  15856.      * Calculate Yield from Credit Basis to Maturity
  15857.      *
  15858.      * @param valParams Valuation Parameters
  15859.      * @param csqs Market Parameters
  15860.      * @param vcp Valuation Customization Parameters
  15861.      * @param dblCreditBasis Credit Basis to Maturity
  15862.      *
  15863.      * @return Yield from Credit Basis to Maturity
  15864.      *
  15865.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15866.      */

  15867.     public abstract double yieldFromCreditBasis (
  15868.         final org.drip.param.valuation.ValuationParams valParams,
  15869.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15870.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15871.         final double dblCreditBasis)
  15872.         throws java.lang.Exception;

  15873.     /**
  15874.      * Calculate Yield from Credit Basis to Optimal Exercise
  15875.      *
  15876.      * @param valParams Valuation Parameters
  15877.      * @param csqs Market Parameters
  15878.      * @param vcp Valuation Customization Parameters
  15879.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  15880.      *
  15881.      * @return Yield from Credit Basis to Optimal Exercise
  15882.      *
  15883.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15884.      */

  15885.     public abstract double yieldFromCreditBasisToOptimalExercise (
  15886.         final org.drip.param.valuation.ValuationParams valParams,
  15887.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15888.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15889.         final double dblCreditBasis)
  15890.         throws java.lang.Exception;

  15891.     /**
  15892.      * Calculate Yield from Discount Margin to Work-out
  15893.      *
  15894.      * @param valParams Valuation Parameters
  15895.      * @param csqs Market Parameters
  15896.      * @param vcp Valuation Customization Parameters
  15897.      * @param iWorkoutDate Work-out Date
  15898.      * @param dblWorkoutFactor Work-out Factor
  15899.      * @param dblDiscountMargin Discount Margin to Work-out
  15900.      *
  15901.      * @return Yield from Discount Margin to Work-out
  15902.      *
  15903.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  15904.      */

  15905.     public abstract double yieldFromDiscountMargin (
  15906.         final org.drip.param.valuation.ValuationParams valParams,
  15907.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15908.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15909.         final int iWorkoutDate,
  15910.         final double dblWorkoutFactor,
  15911.         final double dblDiscountMargin)
  15912.         throws java.lang.Exception;

  15913.     /**
  15914.      * Calculate Yield from Discount Margin to Maturity
  15915.      *
  15916.      * @param valParams Valuation Parameters
  15917.      * @param csqs Market Parameters
  15918.      * @param vcp Valuation Customization Parameters
  15919.      * @param dblDiscountMargin Discount Margin to Maturity
  15920.      *
  15921.      * @return Yield from Discount Margin to Maturity
  15922.      *
  15923.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15924.      */

  15925.     public abstract double yieldFromDiscountMargin (
  15926.         final org.drip.param.valuation.ValuationParams valParams,
  15927.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15928.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15929.         final double dblDiscountMargin)
  15930.         throws java.lang.Exception;

  15931.     /**
  15932.      * Calculate Yield from Discount Margin to Optimal Exercise
  15933.      *
  15934.      * @param valParams Valuation Parameters
  15935.      * @param csqs Market Parameters
  15936.      * @param vcp Valuation Customization Parameters
  15937.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  15938.      *
  15939.      * @return Yield from Discount Margin to Optimal Exercise
  15940.      *
  15941.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15942.      */

  15943.     public abstract double yieldFromDiscountMarginToOptimalExercise (
  15944.         final org.drip.param.valuation.ValuationParams valParams,
  15945.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15946.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15947.         final double dblDiscountMargin)
  15948.         throws java.lang.Exception;

  15949.     /**
  15950.      * Calculate Yield from E Spread to Work-out
  15951.      *
  15952.      * @param valParams Valuation Parameters
  15953.      * @param csqs Market Parameters
  15954.      * @param vcp Valuation Customization Parameters
  15955.      * @param iWorkoutDate Work-out Date
  15956.      * @param dblWorkoutFactor Work-out Factor
  15957.      * @param dblESpread E Spread to Work-out
  15958.      *
  15959.      * @return Yield from E Spread to Work-out
  15960.      *
  15961.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  15962.      */

  15963.     public abstract double yieldFromESpread (
  15964.         final org.drip.param.valuation.ValuationParams valParams,
  15965.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15966.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15967.         final int iWorkoutDate,
  15968.         final double dblWorkoutFactor,
  15969.         final double dblESpread)
  15970.         throws java.lang.Exception;

  15971.     /**
  15972.      * Calculate Yield from E Spread to Maturity
  15973.      *
  15974.      * @param valParams Valuation Parameters
  15975.      * @param csqs Market Parameters
  15976.      * @param vcp Valuation Customization Parameters
  15977.      * @param dblESpread E Spread to Maturity
  15978.      *
  15979.      * @return Yield from E Spread to Maturity
  15980.      *
  15981.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  15982.      */

  15983.     public abstract double yieldFromESpread (
  15984.         final org.drip.param.valuation.ValuationParams valParams,
  15985.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  15986.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  15987.         final double dblESpread)
  15988.         throws java.lang.Exception;

  15989.     /**
  15990.      * Calculate Yield from E Spread to Optimal Exercise
  15991.      *
  15992.      * @param valParams Valuation Parameters
  15993.      * @param csqs Market Parameters
  15994.      * @param vcp Valuation Customization Parameters
  15995.      * @param dblESpread E Spread to Optimal Exercise
  15996.      *
  15997.      * @return Yield from E Spread to Optimal Exercise
  15998.      *
  15999.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16000.      */

  16001.     public abstract double yieldFromESpreadToOptimalExercise (
  16002.         final org.drip.param.valuation.ValuationParams valParams,
  16003.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16004.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16005.         final double dblESpread)
  16006.         throws java.lang.Exception;

  16007.     /**
  16008.      * Calculate Yield from G Spread to Work-out
  16009.      *
  16010.      * @param valParams Valuation Parameters
  16011.      * @param csqs Market Parameters
  16012.      * @param vcp Valuation Customization Parameters
  16013.      * @param iWorkoutDate Work-out Date
  16014.      * @param dblWorkoutFactor Work-out Factor
  16015.      * @param dblGSpread G Spread to Work-out
  16016.      *
  16017.      * @return Yield from G Spread to Work-out
  16018.      *
  16019.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16020.      */

  16021.     public abstract double yieldFromGSpread (
  16022.         final org.drip.param.valuation.ValuationParams valParams,
  16023.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16024.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16025.         final int iWorkoutDate,
  16026.         final double dblWorkoutFactor,
  16027.         final double dblGSpread)
  16028.         throws java.lang.Exception;

  16029.     /**
  16030.      * Calculate Yield from G Spread to Maturity
  16031.      *
  16032.      * @param valParams Valuation Parameters
  16033.      * @param csqs Market Parameters
  16034.      * @param vcp Valuation Customization Parameters
  16035.      * @param dblGSpread G Spread to Maturity
  16036.      *
  16037.      * @return Yield from G Spread to Maturity
  16038.      *
  16039.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16040.      */

  16041.     public abstract double yieldFromGSpread (
  16042.         final org.drip.param.valuation.ValuationParams valParams,
  16043.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16044.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16045.         final double dblGSpread)
  16046.         throws java.lang.Exception;

  16047.     /**
  16048.      * Calculate Yield from G Spread to Optimal Exercise
  16049.      *
  16050.      * @param valParams Valuation Parameters
  16051.      * @param csqs Market Parameters
  16052.      * @param vcp Valuation Customization Parameters
  16053.      * @param dblGSpread G Spread to Optimal Exercise
  16054.      *
  16055.      * @return Yield from G Spread to Optimal Exercise
  16056.      *
  16057.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16058.      */

  16059.     public abstract double yieldFromGSpreadToOptimalExercise (
  16060.         final org.drip.param.valuation.ValuationParams valParams,
  16061.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16062.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16063.         final double dblGSpread)
  16064.         throws java.lang.Exception;

  16065.     /**
  16066.      * Calculate Yield from I Spread to Work-out
  16067.      *
  16068.      * @param valParams Valuation Parameters
  16069.      * @param csqs Market Parameters
  16070.      * @param vcp Valuation Customization Parameters
  16071.      * @param iWorkoutDate Work-out Date
  16072.      * @param dblWorkoutFactor Work-out Factor
  16073.      * @param dblISpread I Spread to Work-out
  16074.      *
  16075.      * @return Yield from I Spread to Work-out
  16076.      *
  16077.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16078.      */

  16079.     public abstract double yieldFromISpread (
  16080.         final org.drip.param.valuation.ValuationParams valParams,
  16081.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16082.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16083.         final int iWorkoutDate,
  16084.         final double dblWorkoutFactor,
  16085.         final double dblISpread)
  16086.         throws java.lang.Exception;

  16087.     /**
  16088.      * Calculate Yield from I Spread to Maturity
  16089.      *
  16090.      * @param valParams Valuation Parameters
  16091.      * @param csqs Market Parameters
  16092.      * @param vcp Valuation Customization Parameters
  16093.      * @param dblISpread I Spread to Maturity
  16094.      *
  16095.      * @return Yield from I Spread to Maturity
  16096.      *
  16097.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16098.      */

  16099.     public abstract double yieldFromISpread (
  16100.         final org.drip.param.valuation.ValuationParams valParams,
  16101.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16102.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16103.         final double dblISpread)
  16104.         throws java.lang.Exception;

  16105.     /**
  16106.      * Calculate Yield from I Spread to Optimal Exercise
  16107.      *
  16108.      * @param valParams Valuation Parameters
  16109.      * @param csqs Market Parameters
  16110.      * @param vcp Valuation Customization Parameters
  16111.      * @param dblISpread ISpread to Optimal Exercise
  16112.      *
  16113.      * @return Yield from I Spread to Optimal Exercise
  16114.      *
  16115.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16116.      */

  16117.     public abstract double yieldFromISpreadToOptimalExercise (
  16118.         final org.drip.param.valuation.ValuationParams valParams,
  16119.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16120.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16121.         final double dblISpread)
  16122.         throws java.lang.Exception;

  16123.     /**
  16124.      * Calculate Yield from J Spread to Work-out
  16125.      *
  16126.      * @param valParams Valuation Parameters
  16127.      * @param csqs Market Parameters
  16128.      * @param vcp Valuation Customization Parameters
  16129.      * @param iWorkoutDate Work-out Date
  16130.      * @param dblWorkoutFactor Work-out Factor
  16131.      * @param dblJSpread J Spread to Work-out
  16132.      *
  16133.      * @return Yield from J Spread to Work-out
  16134.      *
  16135.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16136.      */

  16137.     public abstract double yieldFromJSpread (
  16138.         final org.drip.param.valuation.ValuationParams valParams,
  16139.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16140.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16141.         final int iWorkoutDate,
  16142.         final double dblWorkoutFactor,
  16143.         final double dblJSpread)
  16144.         throws java.lang.Exception;

  16145.     /**
  16146.      * Calculate Yield from J Spread to Maturity
  16147.      *
  16148.      * @param valParams Valuation Parameters
  16149.      * @param csqs Market Parameters
  16150.      * @param vcp Valuation Customization Parameters
  16151.      * @param dblJSpread J Spread to Maturity
  16152.      *
  16153.      * @return Yield from J Spread to Maturity
  16154.      *
  16155.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16156.      */

  16157.     public abstract double yieldFromJSpread (
  16158.         final org.drip.param.valuation.ValuationParams valParams,
  16159.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16160.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16161.         final double dblJSpread)
  16162.         throws java.lang.Exception;

  16163.     /**
  16164.      * Calculate Yield from J Spread to Optimal Exercise
  16165.      *
  16166.      * @param valParams Valuation Parameters
  16167.      * @param csqs Market Parameters
  16168.      * @param vcp Valuation Customization Parameters
  16169.      * @param dblJSpread J Spread to Optimal Exercise
  16170.      *
  16171.      * @return Yield from J Spread to Optimal Exercise
  16172.      *
  16173.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16174.      */

  16175.     public abstract double yieldFromJSpreadToOptimalExercise (
  16176.         final org.drip.param.valuation.ValuationParams valParams,
  16177.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16178.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16179.         final double dblJSpread)
  16180.         throws java.lang.Exception;

  16181.     /**
  16182.      * Calculate Yield from N Spread to Work-out
  16183.      *
  16184.      * @param valParams Valuation Parameters
  16185.      * @param csqs Market Parameters
  16186.      * @param vcp Valuation Customization Parameters
  16187.      * @param iWorkoutDate Work-out Date
  16188.      * @param dblWorkoutFactor Work-out Factor
  16189.      * @param dblNSpread N Spread to Work-out
  16190.      *
  16191.      * @return Yield from N Spread to Work-out
  16192.      *
  16193.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16194.      */

  16195.     public abstract double yieldFromNSpread (
  16196.         final org.drip.param.valuation.ValuationParams valParams,
  16197.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16198.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16199.         final int iWorkoutDate,
  16200.         final double dblWorkoutFactor,
  16201.         final double dblNSpread)
  16202.         throws java.lang.Exception;

  16203.     /**
  16204.      * Calculate Yield from N Spread to Maturity
  16205.      *
  16206.      * @param valParams Valuation Parameters
  16207.      * @param csqs Market Parameters
  16208.      * @param vcp Valuation Customization Parameters
  16209.      * @param dblNSpread N Spread to Maturity
  16210.      *
  16211.      * @return Yield from N Spread to Maturity
  16212.      *
  16213.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16214.      */

  16215.     public abstract double yieldFromNSpread (
  16216.         final org.drip.param.valuation.ValuationParams valParams,
  16217.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16218.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16219.         final double dblNSpread)
  16220.         throws java.lang.Exception;

  16221.     /**
  16222.      * Calculate Yield from N Spread to Optimal Exercise
  16223.      *
  16224.      * @param valParams Valuation Parameters
  16225.      * @param csqs Market Parameters
  16226.      * @param vcp Valuation Customization Parameters
  16227.      * @param dblNSpread N Spread to Optimal Exercise
  16228.      *
  16229.      * @return Yield from N Spread to Optimal Exercise
  16230.      *
  16231.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16232.      */

  16233.     public abstract double yieldFromNSpreadToOptimalExercise (
  16234.         final org.drip.param.valuation.ValuationParams valParams,
  16235.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16236.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16237.         final double dblNSpread)
  16238.         throws java.lang.Exception;

  16239.     /**
  16240.      * Calculate Yield from OAS to Work-out
  16241.      *
  16242.      * @param valParams Valuation Parameters
  16243.      * @param csqs Market Parameters
  16244.      * @param vcp Valuation Customization Parameters
  16245.      * @param iWorkoutDate Work-out Date
  16246.      * @param dblWorkoutFactor Work-out Factor
  16247.      * @param dblOAS OAS to Work-out
  16248.      *
  16249.      * @return Yield from OAS to Work-out
  16250.      *
  16251.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16252.      */

  16253.     public abstract double yieldFromOAS (
  16254.         final org.drip.param.valuation.ValuationParams valParams,
  16255.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16256.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16257.         final int iWorkoutDate,
  16258.         final double dblWorkoutFactor,
  16259.         final double dblOAS)
  16260.         throws java.lang.Exception;

  16261.     /**
  16262.      * Calculate Yield from OAS to Maturity
  16263.      *
  16264.      * @param valParams Valuation Parameters
  16265.      * @param csqs Market Parameters
  16266.      * @param vcp Valuation Customization Parameters
  16267.      * @param dblOAS OAS to Maturity
  16268.      *
  16269.      * @return Yield from OAS to Maturity
  16270.      *
  16271.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16272.      */

  16273.     public abstract double yieldFromOAS (
  16274.         final org.drip.param.valuation.ValuationParams valParams,
  16275.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16276.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16277.         final double dblOAS)
  16278.         throws java.lang.Exception;

  16279.     /**
  16280.      * Calculate Yield from OAS to Optimal Exercise
  16281.      *
  16282.      * @param valParams Valuation Parameters
  16283.      * @param csqs Market Parameters
  16284.      * @param vcp Valuation Customization Parameters
  16285.      * @param dblOAS OAS to Optimal Exercise
  16286.      *
  16287.      * @return Yield from OAS to Optimal Exercise
  16288.      *
  16289.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16290.      */

  16291.     public abstract double yieldFromOASToOptimalExercise (
  16292.         final org.drip.param.valuation.ValuationParams valParams,
  16293.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16294.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16295.         final double dblOAS)
  16296.         throws java.lang.Exception;

  16297.     /**
  16298.      * Calculate Yield from PECS to Work-out
  16299.      *
  16300.      * @param valParams Valuation Parameters
  16301.      * @param csqs Market Parameters
  16302.      * @param vcp Valuation Customization Parameters
  16303.      * @param iWorkoutDate Work-out Date
  16304.      * @param dblWorkoutFactor Work-out Factor
  16305.      * @param dblPECS PECS to Work-out
  16306.      *
  16307.      * @return Yield from PECS to Work-out
  16308.      *
  16309.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16310.      */

  16311.     public abstract double yieldFromPECS (
  16312.         final org.drip.param.valuation.ValuationParams valParams,
  16313.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16314.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16315.         final int iWorkoutDate,
  16316.         final double dblWorkoutFactor,
  16317.         final double dblPECS)
  16318.         throws java.lang.Exception;

  16319.     /**
  16320.      * Calculate Yield from PECS to Maturity
  16321.      *
  16322.      * @param valParams Valuation Parameters
  16323.      * @param csqs Market Parameters
  16324.      * @param vcp Valuation Customization Parameters
  16325.      * @param dblPECS PECS to Maturity
  16326.      *
  16327.      * @return Yield from PECS to Maturity
  16328.      *
  16329.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16330.      */

  16331.     public abstract double yieldFromPECS (
  16332.         final org.drip.param.valuation.ValuationParams valParams,
  16333.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16334.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16335.         final double dblPECS)
  16336.         throws java.lang.Exception;

  16337.     /**
  16338.      * Calculate Yield from PECS to Optimal Exercise
  16339.      *
  16340.      * @param valParams Valuation Parameters
  16341.      * @param csqs Market Parameters
  16342.      * @param vcp Valuation Customization Parameters
  16343.      * @param dblPECS PECS to Optimal Exercise
  16344.      *
  16345.      * @return Yield from PECS to Optimal Exercise
  16346.      *
  16347.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16348.      */

  16349.     public abstract double yieldFromPECSToOptimalExercise (
  16350.         final org.drip.param.valuation.ValuationParams valParams,
  16351.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16352.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16353.         final double dblPECS)
  16354.         throws java.lang.Exception;

  16355.     /**
  16356.      * Calculate Yield from Price to Work-out
  16357.      *
  16358.      * @param valParams Valuation Parameters
  16359.      * @param csqs Market Parameters
  16360.      * @param vcp Valuation Customization Parameters
  16361.      * @param iWorkoutDate Work-out Date
  16362.      * @param dblWorkoutFactor Work-out Factor
  16363.      * @param dblPrice Price to Work-out
  16364.      *
  16365.      * @return Yield from Price to Work-out
  16366.      *
  16367.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16368.      */

  16369.     public abstract double yieldFromPrice (
  16370.         final org.drip.param.valuation.ValuationParams valParams,
  16371.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16372.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16373.         final int iWorkoutDate,
  16374.         final double dblWorkoutFactor,
  16375.         final double dblPrice)
  16376.         throws java.lang.Exception;

  16377.     /**
  16378.      * Calculate Yield from Price to Maturity
  16379.      *
  16380.      * @param valParams Valuation Parameters
  16381.      * @param csqs Market Parameters
  16382.      * @param vcp Valuation Customization Parameters
  16383.      * @param dblPrice Price to Maturity
  16384.      *
  16385.      * @return Yield from Price to Maturity
  16386.      *
  16387.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16388.      */

  16389.     public abstract double yieldFromPrice (
  16390.         final org.drip.param.valuation.ValuationParams valParams,
  16391.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16392.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16393.         final double dblPrice)
  16394.         throws java.lang.Exception;

  16395.     /**
  16396.      * Calculate Yield from Price to Optimal Exercise
  16397.      *
  16398.      * @param valParams Valuation Parameters
  16399.      * @param csqs Market Parameters
  16400.      * @param vcp Valuation Customization Parameters
  16401.      * @param dblPrice Price to Optimal Exercise
  16402.      *
  16403.      * @return Yield from Price to Optimal Exercise
  16404.      *
  16405.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16406.      */

  16407.     public abstract double yieldFromPriceToOptimalExercise (
  16408.         final org.drip.param.valuation.ValuationParams valParams,
  16409.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16410.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16411.         final double dblPrice)
  16412.         throws java.lang.Exception;

  16413.     /**
  16414.      * Calculate Yield from Price to Work-out after applying the Tax Credit Coupon Extension
  16415.      *
  16416.      * @param valParams Valuation Parameters
  16417.      * @param csqs Market Parameters
  16418.      * @param vcp Valuation Customization Parameters
  16419.      * @param iWorkoutDate Work-out Date
  16420.      * @param dblWorkoutFactor Work-out Factor
  16421.      * @param dblPrice Price to Work-out
  16422.      *
  16423.      * @return Yield from Price to Work-out after applying the Tax Credit Coupon Extension
  16424.      *
  16425.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16426.      */

  16427.     public abstract double yieldFromPriceTC (
  16428.         final org.drip.param.valuation.ValuationParams valParams,
  16429.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16430.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16431.         final int iWorkoutDate,
  16432.         final double dblWorkoutFactor,
  16433.         final double dblPrice)
  16434.         throws java.lang.Exception;

  16435.     /**
  16436.      * Calculate Yield from TSY Spread to Work-out
  16437.      *
  16438.      * @param valParams Valuation Parameters
  16439.      * @param csqs Market Parameters
  16440.      * @param vcp Valuation Customization Parameters
  16441.      * @param iWorkoutDate Work-out Date
  16442.      * @param dblWorkoutFactor Work-out Factor
  16443.      * @param dblTSYSpread TSY Spread to Work-out
  16444.      *
  16445.      * @return Yield from TSY Spread to Work-out
  16446.      *
  16447.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16448.      */

  16449.     public abstract double yieldFromTSYSpread (
  16450.         final org.drip.param.valuation.ValuationParams valParams,
  16451.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16452.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16453.         final int iWorkoutDate,
  16454.         final double dblWorkoutFactor,
  16455.         final double dblTSYSpread)
  16456.         throws java.lang.Exception;

  16457.     /**
  16458.      * Calculate Yield from TSY Spread to Maturity
  16459.      *
  16460.      * @param valParams Valuation Parameters
  16461.      * @param csqs Market Parameters
  16462.      * @param vcp Valuation Customization Parameters
  16463.      * @param dblTSYSpread TSY Spread to Maturity
  16464.      *
  16465.      * @return Yield from TSY Spread to Maturity
  16466.      *
  16467.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16468.      */

  16469.     public abstract double yieldFromTSYSpread (
  16470.         final org.drip.param.valuation.ValuationParams valParams,
  16471.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16472.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16473.         final double dblTSYSpread)
  16474.         throws java.lang.Exception;

  16475.     /**
  16476.      * Calculate Yield from TSY Spread to Optimal Exercise
  16477.      *
  16478.      * @param valParams Valuation Parameters
  16479.      * @param csqs Market Parameters
  16480.      * @param vcp Valuation Customization Parameters
  16481.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  16482.      *
  16483.      * @return Yield from TSY Spread to Optimal Exercise
  16484.      *
  16485.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16486.      */

  16487.     public abstract double yieldFromTSYSpreadToOptimalExercise (
  16488.         final org.drip.param.valuation.ValuationParams valParams,
  16489.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16490.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16491.         final double dblTSYSpread)
  16492.         throws java.lang.Exception;

  16493.     /**
  16494.      * Calculate Yield from Yield Spread to Work-out
  16495.      *
  16496.      * @param valParams Valuation Parameters
  16497.      * @param csqs Market Parameters
  16498.      * @param vcp Valuation Customization Parameters
  16499.      * @param iWorkoutDate Work-out Date
  16500.      * @param dblWorkoutFactor Work-out Factor
  16501.      * @param dblYieldSpread Yield Spread to Work-out
  16502.      *
  16503.      * @return Yield from Yield Spread to Work-out
  16504.      *
  16505.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16506.      */

  16507.     public abstract double yieldFromYieldSpread (
  16508.         final org.drip.param.valuation.ValuationParams valParams,
  16509.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16510.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16511.         final int iWorkoutDate,
  16512.         final double dblWorkoutFactor,
  16513.         final double dblYieldSpread)
  16514.         throws java.lang.Exception;

  16515.     /**
  16516.      * Calculate Yield from Yield Spread to Maturity
  16517.      *
  16518.      * @param valParams Valuation Parameters
  16519.      * @param csqs Market Parameters
  16520.      * @param vcp Valuation Customization Parameters
  16521.      * @param dblYieldSpread Yield Spread to Maturity
  16522.      *
  16523.      * @return Yield from Yield Spread to Maturity
  16524.      *
  16525.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16526.      */

  16527.     public abstract double yieldFromYieldSpread (
  16528.         final org.drip.param.valuation.ValuationParams valParams,
  16529.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16530.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16531.         final double dblYieldSpread)
  16532.         throws java.lang.Exception;

  16533.     /**
  16534.      * Calculate Yield from Yield Spread to Optimal Exercise
  16535.      *
  16536.      * @param valParams Valuation Parameters
  16537.      * @param csqs Market Parameters
  16538.      * @param vcp Valuation Customization Parameters
  16539.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  16540.      *
  16541.      * @return Yield from Yield Spread to Optimal Exercise
  16542.      *
  16543.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16544.      */

  16545.     public abstract double yieldFromYieldSpreadToOptimalExercise (
  16546.         final org.drip.param.valuation.ValuationParams valParams,
  16547.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16548.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16549.         final double dblYieldSpread)
  16550.         throws java.lang.Exception;

  16551.     /**
  16552.      * Calculate Yield from Z Spread to Work-out
  16553.      *
  16554.      * @param valParams Valuation Parameters
  16555.      * @param csqs Market Parameters
  16556.      * @param vcp Valuation Customization Parameters
  16557.      * @param iWorkoutDate Work-out Date
  16558.      * @param dblWorkoutFactor Work-out Factor
  16559.      * @param dblZSpread Z Spread to Work-out
  16560.      *
  16561.      * @return Yield from Z Spread to Work-out
  16562.      *
  16563.      * @throws java.lang.Exception Thrown if the Yield cannot be calculated
  16564.      */

  16565.     public abstract double yieldFromZSpread (
  16566.         final org.drip.param.valuation.ValuationParams valParams,
  16567.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16568.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16569.         final int iWorkoutDate,
  16570.         final double dblWorkoutFactor,
  16571.         final double dblZSpread)
  16572.         throws java.lang.Exception;

  16573.     /**
  16574.      * Calculate Yield from Z Spread to Maturity
  16575.      *
  16576.      * @param valParams Valuation Parameters
  16577.      * @param csqs Market Parameters
  16578.      * @param vcp Valuation Customization Parameters
  16579.      * @param dblZSpread Z Spread to Maturity
  16580.      *
  16581.      * @return Yield from Z Spread to Maturity
  16582.      *
  16583.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16584.      */

  16585.     public abstract double yieldFromZSpread (
  16586.         final org.drip.param.valuation.ValuationParams valParams,
  16587.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16588.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16589.         final double dblZSpread)
  16590.         throws java.lang.Exception;

  16591.     /**
  16592.      * Calculate Yield from Z Spread to Optimal Exercise
  16593.      *
  16594.      * @param valParams Valuation Parameters
  16595.      * @param csqs Market Parameters
  16596.      * @param vcp Valuation Customization Parameters
  16597.      * @param dblZSpread Z Spread to Optimal Exercise
  16598.      *
  16599.      * @return Yield from Z Spread to Optimal Exercise
  16600.      *
  16601.      * @throws java.lang.Exception Thrown if Yield cannot be calculated
  16602.      */

  16603.     public abstract double yieldFromZSpreadToOptimalExercise (
  16604.         final org.drip.param.valuation.ValuationParams valParams,
  16605.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16606.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16607.         final double dblZSpread)
  16608.         throws java.lang.Exception;

  16609.     /**
  16610.      * Calculate Yield01 from ASW to Work-out
  16611.      *
  16612.      * @param valParams Valuation Parameters
  16613.      * @param csqs Market Parameters
  16614.      * @param vcp Valuation Customization Parameters
  16615.      * @param iWorkoutDate Work-out Date
  16616.      * @param dblWorkoutFactor Work-out Factor
  16617.      * @param dblASW ASW to Work-out
  16618.      *
  16619.      * @return Yield01 from ASW to Work-out
  16620.      *
  16621.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  16622.      */

  16623.     public abstract double yield01FromASW (
  16624.         final org.drip.param.valuation.ValuationParams valParams,
  16625.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16626.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16627.         final int iWorkoutDate,
  16628.         final double dblWorkoutFactor,
  16629.         final double dblASW)
  16630.         throws java.lang.Exception;

  16631.     /**
  16632.      * Calculate Yield01 from ASW to Maturity
  16633.      *
  16634.      * @param valParams Valuation Parameters
  16635.      * @param csqs Market Parameters
  16636.      * @param vcp Valuation Customization Parameters
  16637.      * @param dblASW ASW to Maturity
  16638.      *
  16639.      * @return Yield01 from ASW to Maturity
  16640.      *
  16641.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16642.      */

  16643.     public abstract double yield01FromASW (
  16644.         final org.drip.param.valuation.ValuationParams valParams,
  16645.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16646.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16647.         final double dblASW)
  16648.         throws java.lang.Exception;

  16649.     /**
  16650.      * Calculate Yield01 from ASW to Optimal Exercise
  16651.      *
  16652.      * @param valParams Valuation Parameters
  16653.      * @param csqs Market Parameters
  16654.      * @param vcp Valuation Customization Parameters
  16655.      * @param dblASW ASW to Optimal Exercise
  16656.      *
  16657.      * @return Yield01 from ASW to Optimal Exercise
  16658.      *
  16659.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16660.      */

  16661.     public abstract double yield01FromASWToOptimalExercise (
  16662.         final org.drip.param.valuation.ValuationParams valParams,
  16663.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16664.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16665.         final double dblASW)
  16666.         throws java.lang.Exception;

  16667.     /**
  16668.      * Calculate Yield01 from Bond Basis to Work-out
  16669.      *
  16670.      * @param valParams Valuation Parameters
  16671.      * @param csqs Market Parameters
  16672.      * @param vcp Valuation Customization Parameters
  16673.      * @param iWorkoutDate Work-out Date
  16674.      * @param dblWorkoutFactor Work-out Factor
  16675.      * @param dblBondBasis Bond Basis to Work-out
  16676.      *
  16677.      * @return Yield01 from Bond Basis to Work-out
  16678.      *
  16679.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  16680.      */

  16681.     public abstract double yield01FromBondBasis (
  16682.         final org.drip.param.valuation.ValuationParams valParams,
  16683.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16684.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16685.         final int iWorkoutDate,
  16686.         final double dblWorkoutFactor,
  16687.         final double dblBondBasis)
  16688.         throws java.lang.Exception;

  16689.     /**
  16690.      * Calculate Yield01 from Bond Basis to Maturity
  16691.      *
  16692.      * @param valParams Valuation Parameters
  16693.      * @param csqs Market Parameters
  16694.      * @param vcp Valuation Customization Parameters
  16695.      * @param dblBondBasis Bond Basis to Maturity
  16696.      *
  16697.      * @return Yield01 from Bond Basis to Maturity
  16698.      *
  16699.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16700.      */

  16701.     public abstract double yield01FromBondBasis (
  16702.         final org.drip.param.valuation.ValuationParams valParams,
  16703.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16704.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16705.         final double dblBondBasis)
  16706.         throws java.lang.Exception;

  16707.     /**
  16708.      * Calculate Yield01 from Bond Basis to Optimal Exercise
  16709.      *
  16710.      * @param valParams Valuation Parameters
  16711.      * @param csqs Market Parameters
  16712.      * @param vcp Valuation Customization Parameters
  16713.      * @param dblBondBasis Bond Basis to Optimal Exercise
  16714.      *
  16715.      * @return Yield01 from Bond Basis to Optimal Exercise
  16716.      *
  16717.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16718.      */

  16719.     public abstract double yield01FromBondBasisToOptimalExercise (
  16720.         final org.drip.param.valuation.ValuationParams valParams,
  16721.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16722.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16723.         final double dblBondBasis)
  16724.         throws java.lang.Exception;

  16725.     /**
  16726.      * Calculate Yield01 from Credit Basis to Work-out
  16727.      *
  16728.      * @param valParams Valuation Parameters
  16729.      * @param csqs Market Parameters
  16730.      * @param vcp Valuation Customization Parameters
  16731.      * @param iWorkoutDate Work-out Date
  16732.      * @param dblWorkoutFactor Work-out Factor
  16733.      * @param dblCreditBasis Credit Basis to Work-out
  16734.      *
  16735.      * @return Yield01 from Credit Basis to Work-out
  16736.      *
  16737.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  16738.      */

  16739.     public abstract double yield01FromCreditBasis (
  16740.         final org.drip.param.valuation.ValuationParams valParams,
  16741.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16742.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16743.         final int iWorkoutDate,
  16744.         final double dblWorkoutFactor,
  16745.         final double dblCreditBasis)
  16746.         throws java.lang.Exception;

  16747.     /**
  16748.      * Calculate Yield01 from Credit Basis to Maturity
  16749.      *
  16750.      * @param valParams Valuation Parameters
  16751.      * @param csqs Market Parameters
  16752.      * @param vcp Valuation Customization Parameters
  16753.      * @param dblCreditBasis Credit Basis to Maturity
  16754.      *
  16755.      * @return Yield01 from Credit Basis to Maturity
  16756.      *
  16757.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16758.      */

  16759.     public abstract double yield01FromCreditBasis (
  16760.         final org.drip.param.valuation.ValuationParams valParams,
  16761.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16762.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16763.         final double dblCreditBasis)
  16764.         throws java.lang.Exception;

  16765.     /**
  16766.      * Calculate Yield01 from Credit Basis to Optimal Exercise
  16767.      *
  16768.      * @param valParams Valuation Parameters
  16769.      * @param csqs Market Parameters
  16770.      * @param vcp Valuation Customization Parameters
  16771.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  16772.      *
  16773.      * @return Yield01 from Credit Basis to Optimal Exercise
  16774.      *
  16775.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16776.      */

  16777.     public abstract double yield01FromCreditBasisToOptimalExercise (
  16778.         final org.drip.param.valuation.ValuationParams valParams,
  16779.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16780.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16781.         final double dblCreditBasis)
  16782.         throws java.lang.Exception;

  16783.     /**
  16784.      * Calculate Yield01 from Discount Margin to Work-out
  16785.      *
  16786.      * @param valParams Valuation Parameters
  16787.      * @param csqs Market Parameters
  16788.      * @param vcp Valuation Customization Parameters
  16789.      * @param iWorkoutDate Work-out Date
  16790.      * @param dblWorkoutFactor Work-out Factor
  16791.      * @param dblDiscountMargin Discount Margin to Work-out
  16792.      *
  16793.      * @return Yield01 from Discount Margin to Work-out
  16794.      *
  16795.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  16796.      */

  16797.     public abstract double yield01FromDiscountMargin (
  16798.         final org.drip.param.valuation.ValuationParams valParams,
  16799.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16800.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16801.         final int iWorkoutDate,
  16802.         final double dblWorkoutFactor,
  16803.         final double dblDiscountMargin)
  16804.         throws java.lang.Exception;

  16805.     /**
  16806.      * Calculate Yield01 from Discount Margin to Maturity
  16807.      *
  16808.      * @param valParams Valuation Parameters
  16809.      * @param csqs Market Parameters
  16810.      * @param vcp Valuation Customization Parameters
  16811.      * @param dblDiscountMargin Discount Margin to Maturity
  16812.      *
  16813.      * @return Yield01 from Discount Margin to Maturity
  16814.      *
  16815.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16816.      */

  16817.     public abstract double yield01FromDiscountMargin (
  16818.         final org.drip.param.valuation.ValuationParams valParams,
  16819.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16820.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16821.         final double dblDiscountMargin)
  16822.         throws java.lang.Exception;

  16823.     /**
  16824.      * Calculate Yield01 from Discount Margin to Optimal Exercise
  16825.      *
  16826.      * @param valParams Valuation Parameters
  16827.      * @param csqs Market Parameters
  16828.      * @param vcp Valuation Customization Parameters
  16829.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  16830.      *
  16831.      * @return Yield01 from Discount Margin to Optimal Exercise
  16832.      *
  16833.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16834.      */

  16835.     public abstract double yield01FromDiscountMarginToOptimalExercise (
  16836.         final org.drip.param.valuation.ValuationParams valParams,
  16837.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16838.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16839.         final double dblDiscountMargin)
  16840.         throws java.lang.Exception;

  16841.     /**
  16842.      * Calculate Yield01 from E Spread to Work-out
  16843.      *
  16844.      * @param valParams Valuation Parameters
  16845.      * @param csqs Market Parameters
  16846.      * @param vcp Valuation Customization Parameters
  16847.      * @param iWorkoutDate Work-out Date
  16848.      * @param dblWorkoutFactor Work-out Factor
  16849.      * @param dblESpread E Spread to Work-out
  16850.      *
  16851.      * @return Yield01 from E Spread to Work-out
  16852.      *
  16853.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  16854.      */

  16855.     public abstract double yield01FromESpread (
  16856.         final org.drip.param.valuation.ValuationParams valParams,
  16857.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16858.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16859.         final int iWorkoutDate,
  16860.         final double dblWorkoutFactor,
  16861.         final double dblESpread)
  16862.         throws java.lang.Exception;

  16863.     /**
  16864.      * Calculate Yield01 from E Spread to Maturity
  16865.      *
  16866.      * @param valParams Valuation Parameters
  16867.      * @param csqs Market Parameters
  16868.      * @param vcp Valuation Customization Parameters
  16869.      * @param dblESpread E Spread to Maturity
  16870.      *
  16871.      * @return Yield01 from E Spread to Maturity
  16872.      *
  16873.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16874.      */

  16875.     public abstract double yield01FromESpread (
  16876.         final org.drip.param.valuation.ValuationParams valParams,
  16877.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16878.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16879.         final double dblESpread)
  16880.         throws java.lang.Exception;

  16881.     /**
  16882.      * Calculate Yield01 from E Spread to Optimal Exercise
  16883.      *
  16884.      * @param valParams Valuation Parameters
  16885.      * @param csqs Market Parameters
  16886.      * @param vcp Valuation Customization Parameters
  16887.      * @param dblESpread E Spread to Optimal Exercise
  16888.      *
  16889.      * @return Yield01 from E Spread to Optimal Exercise
  16890.      *
  16891.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16892.      */

  16893.     public abstract double yield01FromESpreadToOptimalExercise (
  16894.         final org.drip.param.valuation.ValuationParams valParams,
  16895.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16896.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16897.         final double dblESpread)
  16898.         throws java.lang.Exception;

  16899.     /**
  16900.      * Calculate Yield01 from G Spread to Work-out
  16901.      *
  16902.      * @param valParams Valuation Parameters
  16903.      * @param csqs Market Parameters
  16904.      * @param vcp Valuation Customization Parameters
  16905.      * @param iWorkoutDate Work-out Date
  16906.      * @param dblWorkoutFactor Work-out Factor
  16907.      * @param dblGSpread G Spread to Work-out
  16908.      *
  16909.      * @return Yield01 from G Spread to Work-out
  16910.      *
  16911.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  16912.      */

  16913.     public abstract double yield01FromGSpread (
  16914.         final org.drip.param.valuation.ValuationParams valParams,
  16915.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16916.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16917.         final int iWorkoutDate,
  16918.         final double dblWorkoutFactor,
  16919.         final double dblGSpread)
  16920.         throws java.lang.Exception;

  16921.     /**
  16922.      * Calculate Yield01 from G Spread to Maturity
  16923.      *
  16924.      * @param valParams Valuation Parameters
  16925.      * @param csqs Market Parameters
  16926.      * @param vcp Valuation Customization Parameters
  16927.      * @param dblGSpread G Spread to Maturity
  16928.      *
  16929.      * @return Yield01 from G Spread to Maturity
  16930.      *
  16931.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16932.      */

  16933.     public abstract double yield01FromGSpread (
  16934.         final org.drip.param.valuation.ValuationParams valParams,
  16935.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16936.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16937.         final double dblGSpread)
  16938.         throws java.lang.Exception;

  16939.     /**
  16940.      * Calculate Yield01 from G Spread to Optimal Exercise
  16941.      *
  16942.      * @param valParams Valuation Parameters
  16943.      * @param csqs Market Parameters
  16944.      * @param vcp Valuation Customization Parameters
  16945.      * @param dblGSpread G Spread to Optimal Exercise
  16946.      *
  16947.      * @return Yield01 from G Spread to Optimal Exercise
  16948.      *
  16949.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16950.      */

  16951.     public abstract double yield01FromGSpreadToOptimalExercise (
  16952.         final org.drip.param.valuation.ValuationParams valParams,
  16953.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16954.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16955.         final double dblGSpread)
  16956.         throws java.lang.Exception;

  16957.     /**
  16958.      * Calculate Yield01 from I Spread to Work-out
  16959.      *
  16960.      * @param valParams Valuation Parameters
  16961.      * @param csqs Market Parameters
  16962.      * @param vcp Valuation Customization Parameters
  16963.      * @param iWorkoutDate Work-out Date
  16964.      * @param dblWorkoutFactor Work-out Factor
  16965.      * @param dblISpread I Spread to Work-out
  16966.      *
  16967.      * @return Yield01 from I Spread to Work-out
  16968.      *
  16969.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  16970.      */

  16971.     public abstract double yield01FromISpread (
  16972.         final org.drip.param.valuation.ValuationParams valParams,
  16973.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16974.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16975.         final int iWorkoutDate,
  16976.         final double dblWorkoutFactor,
  16977.         final double dblISpread)
  16978.         throws java.lang.Exception;

  16979.     /**
  16980.      * Calculate Yield01 from I Spread to Maturity
  16981.      *
  16982.      * @param valParams Valuation Parameters
  16983.      * @param csqs Market Parameters
  16984.      * @param vcp Valuation Customization Parameters
  16985.      * @param dblISpread I Spread to Maturity
  16986.      *
  16987.      * @return Yield01 from I Spread to Maturity
  16988.      *
  16989.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  16990.      */

  16991.     public abstract double yield01FromISpread (
  16992.         final org.drip.param.valuation.ValuationParams valParams,
  16993.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  16994.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  16995.         final double dblISpread)
  16996.         throws java.lang.Exception;

  16997.     /**
  16998.      * Calculate Yield01 from I Spread to Optimal Exercise
  16999.      *
  17000.      * @param valParams Valuation Parameters
  17001.      * @param csqs Market Parameters
  17002.      * @param vcp Valuation Customization Parameters
  17003.      * @param dblISpread ISpread to Optimal Exercise
  17004.      *
  17005.      * @return Yield01 from I Spread to Optimal Exercise
  17006.      *
  17007.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17008.      */

  17009.     public abstract double yield01FromISpreadToOptimalExercise (
  17010.         final org.drip.param.valuation.ValuationParams valParams,
  17011.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17012.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17013.         final double dblISpread)
  17014.         throws java.lang.Exception;

  17015.     /**
  17016.      * Calculate Yield01 from J Spread to Work-out
  17017.      *
  17018.      * @param valParams Valuation Parameters
  17019.      * @param csqs Market Parameters
  17020.      * @param vcp Valuation Customization Parameters
  17021.      * @param iWorkoutDate Work-out Date
  17022.      * @param dblWorkoutFactor Work-out Factor
  17023.      * @param dblJSpread J Spread to Work-out
  17024.      *
  17025.      * @return Yield01 from J Spread to Work-out
  17026.      *
  17027.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  17028.      */

  17029.     public abstract double yield01FromJSpread (
  17030.         final org.drip.param.valuation.ValuationParams valParams,
  17031.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17032.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17033.         final int iWorkoutDate,
  17034.         final double dblWorkoutFactor,
  17035.         final double dblJSpread)
  17036.         throws java.lang.Exception;

  17037.     /**
  17038.      * Calculate Yield01 from J Spread to Maturity
  17039.      *
  17040.      * @param valParams Valuation Parameters
  17041.      * @param csqs Market Parameters
  17042.      * @param vcp Valuation Customization Parameters
  17043.      * @param dblJSpread J Spread to Maturity
  17044.      *
  17045.      * @return Yield01 from J Spread to Maturity
  17046.      *
  17047.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17048.      */

  17049.     public abstract double yield01FromJSpread (
  17050.         final org.drip.param.valuation.ValuationParams valParams,
  17051.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17052.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17053.         final double dblJSpread)
  17054.         throws java.lang.Exception;

  17055.     /**
  17056.      * Calculate Yield01 from J Spread to Optimal Exercise
  17057.      *
  17058.      * @param valParams Valuation Parameters
  17059.      * @param csqs Market Parameters
  17060.      * @param vcp Valuation Customization Parameters
  17061.      * @param dblJSpread JSpread to Optimal Exercise
  17062.      *
  17063.      * @return Yield01 from J Spread to Optimal Exercise
  17064.      *
  17065.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17066.      */

  17067.     public abstract double yield01FromJSpreadToOptimalExercise (
  17068.         final org.drip.param.valuation.ValuationParams valParams,
  17069.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17070.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17071.         final double dblJSpread)
  17072.         throws java.lang.Exception;

  17073.     /**
  17074.      * Calculate Yield01 from OAS to Work-out
  17075.      *
  17076.      * @param valParams Valuation Parameters
  17077.      * @param csqs Market Parameters
  17078.      * @param vcp Valuation Customization Parameters
  17079.      * @param iWorkoutDate Work-out Date
  17080.      * @param dblWorkoutFactor Work-out Factor
  17081.      * @param dblOAS OAS to Work-out
  17082.      *
  17083.      * @return Yield01 from OAS to Work-out
  17084.      *
  17085.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  17086.      */

  17087.     public abstract double yield01FromOAS (
  17088.         final org.drip.param.valuation.ValuationParams valParams,
  17089.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17090.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17091.         final int iWorkoutDate,
  17092.         final double dblWorkoutFactor,
  17093.         final double dblOAS)
  17094.         throws java.lang.Exception;

  17095.     /**
  17096.      * Calculate Yield01 from OAS to Maturity
  17097.      *
  17098.      * @param valParams Valuation Parameters
  17099.      * @param csqs Market Parameters
  17100.      * @param vcp Valuation Customization Parameters
  17101.      * @param dblOAS OAS to Maturity
  17102.      *
  17103.      * @return Yield01 from OAS to Maturity
  17104.      *
  17105.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17106.      */

  17107.     public abstract double yield01FromOAS (
  17108.         final org.drip.param.valuation.ValuationParams valParams,
  17109.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17110.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17111.         final double dblOAS)
  17112.         throws java.lang.Exception;

  17113.     /**
  17114.      * Calculate Yield01 from OAS to Optimal Exercise
  17115.      *
  17116.      * @param valParams Valuation Parameters
  17117.      * @param csqs Market Parameters
  17118.      * @param vcp Valuation Customization Parameters
  17119.      * @param dblOAS OAS to Optimal Exercise
  17120.      *
  17121.      * @return Yield01 from OAS to Optimal Exercise
  17122.      *
  17123.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17124.      */

  17125.     public abstract double yield01FromOASToOptimalExercise (
  17126.         final org.drip.param.valuation.ValuationParams valParams,
  17127.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17128.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17129.         final double dblOAS)
  17130.         throws java.lang.Exception;

  17131.     /**
  17132.      * Calculate Yield01 from PECS to Work-out
  17133.      *
  17134.      * @param valParams Valuation Parameters
  17135.      * @param csqs Market Parameters
  17136.      * @param vcp Valuation Customization Parameters
  17137.      * @param iWorkoutDate Work-out Date
  17138.      * @param dblWorkoutFactor Work-out Factor
  17139.      * @param dblPECS PECS to Work-out
  17140.      *
  17141.      * @return Yield01 from PECS to Work-out
  17142.      *
  17143.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  17144.      */

  17145.     public abstract double yield01FromPECS (
  17146.         final org.drip.param.valuation.ValuationParams valParams,
  17147.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17148.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17149.         final int iWorkoutDate,
  17150.         final double dblWorkoutFactor,
  17151.         final double dblPECS)
  17152.         throws java.lang.Exception;

  17153.     /**
  17154.      * Calculate Yield01 from PECS to Maturity
  17155.      *
  17156.      * @param valParams Valuation Parameters
  17157.      * @param csqs Market Parameters
  17158.      * @param vcp Valuation Customization Parameters
  17159.      * @param dblPECS PECS to Maturity
  17160.      *
  17161.      * @return Yield01 from PECS to Maturity
  17162.      *
  17163.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17164.      */

  17165.     public abstract double yield01FromPECS (
  17166.         final org.drip.param.valuation.ValuationParams valParams,
  17167.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17168.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17169.         final double dblPECS)
  17170.         throws java.lang.Exception;

  17171.     /**
  17172.      * Calculate Yield01 from PECS to Optimal Exercise
  17173.      *
  17174.      * @param valParams Valuation Parameters
  17175.      * @param csqs Market Parameters
  17176.      * @param vcp Valuation Customization Parameters
  17177.      * @param dblPECS PECS to Optimal Exercise
  17178.      *
  17179.      * @return Yield01 from PECS to Optimal Exercise
  17180.      *
  17181.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17182.      */

  17183.     public abstract double yield01FromPECSToOptimalExercise (
  17184.         final org.drip.param.valuation.ValuationParams valParams,
  17185.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17186.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17187.         final double dblPECS)
  17188.         throws java.lang.Exception;

  17189.     /**
  17190.      * Calculate Yield01 from Price to Work-out
  17191.      *
  17192.      * @param valParams Valuation Parameters
  17193.      * @param csqs Market Parameters
  17194.      * @param vcp Valuation Customization Parameters
  17195.      * @param iWorkoutDate Work-out Date
  17196.      * @param dblWorkoutFactor Work-out Factor
  17197.      * @param dblPrice Price to Work-out
  17198.      *
  17199.      * @return Yield01 from Price to Work-out
  17200.      *
  17201.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  17202.      */

  17203.     public abstract double yield01FromPrice (
  17204.         final org.drip.param.valuation.ValuationParams valParams,
  17205.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17206.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17207.         final int iWorkoutDate,
  17208.         final double dblWorkoutFactor,
  17209.         final double dblPrice)
  17210.         throws java.lang.Exception;

  17211.     /**
  17212.      * Calculate Yield01 from Price to Maturity
  17213.      *
  17214.      * @param valParams Valuation Parameters
  17215.      * @param csqs Market Parameters
  17216.      * @param vcp Valuation Customization Parameters
  17217.      * @param dblPrice Price to Maturity
  17218.      *
  17219.      * @return Yield01 from Price to Maturity
  17220.      *
  17221.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17222.      */

  17223.     public abstract double yield01FromPrice (
  17224.         final org.drip.param.valuation.ValuationParams valParams,
  17225.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17226.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17227.         final double dblPrice)
  17228.         throws java.lang.Exception;

  17229.     /**
  17230.      * Calculate Yield01 from Price to Optimal Exercise
  17231.      *
  17232.      * @param valParams Valuation Parameters
  17233.      * @param csqs Market Parameters
  17234.      * @param vcp Valuation Customization Parameters
  17235.      * @param dblPrice Price to Optimal Exercise
  17236.      *
  17237.      * @return Yield01 from Price to Optimal Exercise
  17238.      *
  17239.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17240.      */

  17241.     public abstract double yield01FromPriceToOptimalExercise (
  17242.         final org.drip.param.valuation.ValuationParams valParams,
  17243.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17244.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17245.         final double dblPrice)
  17246.         throws java.lang.Exception;

  17247.     /**
  17248.      * Calculate Yield01 from TSY Spread to Work-out
  17249.      *
  17250.      * @param valParams Valuation Parameters
  17251.      * @param csqs Market Parameters
  17252.      * @param vcp Valuation Customization Parameters
  17253.      * @param iWorkoutDate Work-out Date
  17254.      * @param dblWorkoutFactor Work-out Factor
  17255.      * @param dblTSYSpread TSY Spread to Work-out
  17256.      *
  17257.      * @return Yield01 from TSY Spread to Work-out
  17258.      *
  17259.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  17260.      */

  17261.     public abstract double yield01FromTSYSpread (
  17262.         final org.drip.param.valuation.ValuationParams valParams,
  17263.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17264.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17265.         final int iWorkoutDate,
  17266.         final double dblWorkoutFactor,
  17267.         final double dblTSYSpread)
  17268.         throws java.lang.Exception;

  17269.     /**
  17270.      * Calculate Yield01 from TSY Spread to Maturity
  17271.      *
  17272.      * @param valParams Valuation Parameters
  17273.      * @param csqs Market Parameters
  17274.      * @param vcp Valuation Customization Parameters
  17275.      * @param dblTSYSpread TSY Spread to Maturity
  17276.      *
  17277.      * @return Yield01 from TSY Spread to Maturity
  17278.      *
  17279.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17280.      */

  17281.     public abstract double yield01FromTSYSpread (
  17282.         final org.drip.param.valuation.ValuationParams valParams,
  17283.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17284.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17285.         final double dblTSYSpread)
  17286.         throws java.lang.Exception;

  17287.     /**
  17288.      * Calculate Yield01 from TSY Spread to Optimal Exercise
  17289.      *
  17290.      * @param valParams Valuation Parameters
  17291.      * @param csqs Market Parameters
  17292.      * @param vcp Valuation Customization Parameters
  17293.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  17294.      *
  17295.      * @return Yield01 from TSY Spread to Optimal Exercise
  17296.      *
  17297.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17298.      */

  17299.     public abstract double yield01FromTSYSpreadToOptimalExercise (
  17300.         final org.drip.param.valuation.ValuationParams valParams,
  17301.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17302.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17303.         final double dblTSYSpread)
  17304.         throws java.lang.Exception;

  17305.     /**
  17306.      * Calculate Yield01 from Yield to Work-out
  17307.      *
  17308.      * @param valParams Valuation Parameters
  17309.      * @param csqs Market Parameters
  17310.      * @param vcp Valuation Customization Parameters
  17311.      * @param iWorkoutDate Work-out Date
  17312.      * @param dblWorkoutFactor Work-out Factor
  17313.      * @param dblYield Yield to Work-out
  17314.      *
  17315.      * @return Yield01 from Yield to Work-out
  17316.      *
  17317.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  17318.      */

  17319.     public abstract double yield01FromYield (
  17320.         final org.drip.param.valuation.ValuationParams valParams,
  17321.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17322.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17323.         final int iWorkoutDate,
  17324.         final double dblWorkoutFactor,
  17325.         final double dblYield)
  17326.         throws java.lang.Exception;

  17327.     /**
  17328.      * Calculate Yield01 from Yield to Maturity
  17329.      *
  17330.      * @param valParams Valuation Parameters
  17331.      * @param csqs Market Parameters
  17332.      * @param vcp Valuation Customization Parameters
  17333.      * @param dblYield Yield to Maturity
  17334.      *
  17335.      * @return Yield01 from Yield to Maturity
  17336.      *
  17337.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17338.      */

  17339.     public abstract double yield01FromYield (
  17340.         final org.drip.param.valuation.ValuationParams valParams,
  17341.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17342.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17343.         final double dblYield)
  17344.         throws java.lang.Exception;

  17345.     /**
  17346.      * Calculate Yield01 from Yield to Optimal Exercise
  17347.      *
  17348.      * @param valParams Valuation Parameters
  17349.      * @param csqs Market Parameters
  17350.      * @param vcp Valuation Customization Parameters
  17351.      * @param dblYield Yield to Optimal Exercise
  17352.      *
  17353.      * @return Yield01 from Yield to Optimal Exercise
  17354.      *
  17355.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17356.      */

  17357.     public abstract double yield01FromYieldToOptimalExercise (
  17358.         final org.drip.param.valuation.ValuationParams valParams,
  17359.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17360.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17361.         final double dblYield)
  17362.         throws java.lang.Exception;

  17363.     /**
  17364.      * Calculate Yield01 from Yield Spread to Work-out
  17365.      *
  17366.      * @param valParams Valuation Parameters
  17367.      * @param csqs Market Parameters
  17368.      * @param vcp Valuation Customization Parameters
  17369.      * @param iWorkoutDate Work-out Date
  17370.      * @param dblWorkoutFactor Work-out Factor
  17371.      * @param dblYieldSpread Yield Spread to Work-out
  17372.      *
  17373.      * @return Yield01 from Yield Spread to Work-out
  17374.      *
  17375.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  17376.      */

  17377.     public abstract double yield01FromYieldSpread (
  17378.         final org.drip.param.valuation.ValuationParams valParams,
  17379.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17380.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17381.         final int iWorkoutDate,
  17382.         final double dblWorkoutFactor,
  17383.         final double dblYieldSpread)
  17384.         throws java.lang.Exception;

  17385.     /**
  17386.      * Calculate Yield01 from Yield Spread to Maturity
  17387.      *
  17388.      * @param valParams Valuation Parameters
  17389.      * @param csqs Market Parameters
  17390.      * @param vcp Valuation Customization Parameters
  17391.      * @param dblYieldSpread Yield Spread to Maturity
  17392.      *
  17393.      * @return Yield01 from Yield Spread to Maturity
  17394.      *
  17395.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17396.      */

  17397.     public abstract double yield01FromYieldSpread (
  17398.         final org.drip.param.valuation.ValuationParams valParams,
  17399.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17400.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17401.         final double dblYieldSpread)
  17402.         throws java.lang.Exception;

  17403.     /**
  17404.      * Calculate Yield01 from Yield Spread to Optimal Exercise
  17405.      *
  17406.      * @param valParams Valuation Parameters
  17407.      * @param csqs Market Parameters
  17408.      * @param vcp Valuation Customization Parameters
  17409.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  17410.      *
  17411.      * @return Yield01 from Yield Spread to Optimal Exercise
  17412.      *
  17413.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17414.      */

  17415.     public abstract double yield01FromYieldSpreadToOptimalExercise (
  17416.         final org.drip.param.valuation.ValuationParams valParams,
  17417.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17418.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17419.         final double dblYieldSpread)
  17420.         throws java.lang.Exception;

  17421.     /**
  17422.      * Calculate Yield01 from Z Spread to Work-out
  17423.      *
  17424.      * @param valParams Valuation Parameters
  17425.      * @param csqs Market Parameters
  17426.      * @param vcp Valuation Customization Parameters
  17427.      * @param iWorkoutDate Work-out Date
  17428.      * @param dblWorkoutFactor Work-out Factor
  17429.      * @param dblZSpread Z Spread to Work-out
  17430.      *
  17431.      * @return Yield01 from Z Spread to Work-out
  17432.      *
  17433.      * @throws java.lang.Exception Thrown if the Yield01 cannot be calculated
  17434.      */

  17435.     public abstract double yield01FromZSpread (
  17436.         final org.drip.param.valuation.ValuationParams valParams,
  17437.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17438.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17439.         final int iWorkoutDate,
  17440.         final double dblWorkoutFactor,
  17441.         final double dblZSpread)
  17442.         throws java.lang.Exception;

  17443.     /**
  17444.      * Calculate Yield01 from Z Spread to Maturity
  17445.      *
  17446.      * @param valParams Valuation Parameters
  17447.      * @param csqs Market Parameters
  17448.      * @param vcp Valuation Customization Parameters
  17449.      * @param dblZSpread Z Spread to Maturity
  17450.      *
  17451.      * @return Yield01 from Z Spread to Maturity
  17452.      *
  17453.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17454.      */

  17455.     public abstract double yield01FromZSpread (
  17456.         final org.drip.param.valuation.ValuationParams valParams,
  17457.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17458.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17459.         final double dblZSpread)
  17460.         throws java.lang.Exception;

  17461.     /**
  17462.      * Calculate Yield01 from Z Spread to Optimal Exercise
  17463.      *
  17464.      * @param valParams Valuation Parameters
  17465.      * @param csqs Market Parameters
  17466.      * @param vcp Valuation Customization Parameters
  17467.      * @param dblZSpread Z Spread to Optimal Exercise
  17468.      *
  17469.      * @return Yield01 from Z Spread to Optimal Exercise
  17470.      *
  17471.      * @throws java.lang.Exception Thrown if Yield01 cannot be calculated
  17472.      */

  17473.     public abstract double yield01FromZSpreadToOptimalExercise (
  17474.         final org.drip.param.valuation.ValuationParams valParams,
  17475.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17476.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17477.         final double dblZSpread)
  17478.         throws java.lang.Exception;

  17479.     /**
  17480.      * Calculate Yield Spread from ASW to Work-out
  17481.      *
  17482.      * @param valParams Valuation Parameters
  17483.      * @param csqs Market Parameters
  17484.      * @param vcp Valuation Customization Parameters
  17485.      * @param iWorkoutDate Work-out Date
  17486.      * @param dblWorkoutFactor Work-out Factor
  17487.      * @param dblASW ASW to Work-out
  17488.      *
  17489.      * @return Yield Spread from ASW to Work-out
  17490.      *
  17491.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17492.      */

  17493.     public abstract double yieldSpreadFromASW (
  17494.         final org.drip.param.valuation.ValuationParams valParams,
  17495.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17496.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17497.         final int iWorkoutDate,
  17498.         final double dblWorkoutFactor,
  17499.         final double dblASW)
  17500.         throws java.lang.Exception;

  17501.     /**
  17502.      * Calculate Yield Spread from ASW to Maturity
  17503.      *
  17504.      * @param valParams Valuation Parameters
  17505.      * @param csqs Market Parameters
  17506.      * @param vcp Valuation Customization Parameters
  17507.      * @param dblASW ASW to Maturity
  17508.      *
  17509.      * @return Yield Spread from ASW to Maturity
  17510.      *
  17511.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17512.      */

  17513.     public abstract double yieldSpreadFromASW (
  17514.         final org.drip.param.valuation.ValuationParams valParams,
  17515.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17516.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17517.         final double dblASW)
  17518.         throws java.lang.Exception;

  17519.     /**
  17520.      * Calculate Yield Spread from ASW to Optimal Exercise
  17521.      *
  17522.      * @param valParams Valuation Parameters
  17523.      * @param csqs Market Parameters
  17524.      * @param vcp Valuation Customization Parameters
  17525.      * @param dblASW ASW to Optimal Exercise
  17526.      *
  17527.      * @return Yield Spread from ASW to Optimal Exercise
  17528.      *
  17529.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17530.      */

  17531.     public abstract double yieldSpreadFromASWToOptimalExercise (
  17532.         final org.drip.param.valuation.ValuationParams valParams,
  17533.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17534.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17535.         final double dblASW)
  17536.         throws java.lang.Exception;

  17537.     /**
  17538.      * Calculate Yield Spread from Bond Basis to Work-out
  17539.      *
  17540.      * @param valParams Valuation Parameters
  17541.      * @param csqs Market Parameters
  17542.      * @param vcp Valuation Customization Parameters
  17543.      * @param iWorkoutDate Work-out Date
  17544.      * @param dblWorkoutFactor Work-out Factor
  17545.      * @param dblBondBasis Bond Basis to Work-out
  17546.      *
  17547.      * @return Yield Spread from Bond Basis to Work-out
  17548.      *
  17549.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17550.      */

  17551.     public abstract double yieldSpreadFromBondBasis (
  17552.         final org.drip.param.valuation.ValuationParams valParams,
  17553.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17554.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17555.         final int iWorkoutDate,
  17556.         final double dblWorkoutFactor,
  17557.         final double dblBondBasis)
  17558.         throws java.lang.Exception;

  17559.     /**
  17560.      * Calculate Yield Spread from Bond Basis to Maturity
  17561.      *
  17562.      * @param valParams Valuation Parameters
  17563.      * @param csqs Market Parameters
  17564.      * @param vcp Valuation Customization Parameters
  17565.      * @param dblBondBasis Bond Basis to Maturity
  17566.      *
  17567.      * @return Yield Spread from Bond Basis to Maturity
  17568.      *
  17569.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17570.      */

  17571.     public abstract double yieldSpreadFromBondBasis (
  17572.         final org.drip.param.valuation.ValuationParams valParams,
  17573.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17574.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17575.         final double dblBondBasis)
  17576.         throws java.lang.Exception;

  17577.     /**
  17578.      * Calculate Yield Spread from Bond Basis to Optimal Exercise
  17579.      *
  17580.      * @param valParams Valuation Parameters
  17581.      * @param csqs Market Parameters
  17582.      * @param vcp Valuation Customization Parameters
  17583.      * @param dblBondBasis Bond Basis to Optimal Exercise
  17584.      *
  17585.      * @return Yield Spread from Bond Basis to Optimal Exercise
  17586.      *
  17587.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17588.      */

  17589.     public abstract double yieldSpreadFromBondBasisToOptimalExercise (
  17590.         final org.drip.param.valuation.ValuationParams valParams,
  17591.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17592.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17593.         final double dblBondBasis)
  17594.         throws java.lang.Exception;

  17595.     /**
  17596.      * Calculate Yield Spread from Credit Basis to Work-out
  17597.      *
  17598.      * @param valParams Valuation Parameters
  17599.      * @param csqs Market Parameters
  17600.      * @param vcp Valuation Customization Parameters
  17601.      * @param iWorkoutDate Work-out Date
  17602.      * @param dblWorkoutFactor Work-out Factor
  17603.      * @param dblCreditBasis Credit Basis to Work-out
  17604.      *
  17605.      * @return Yield Spread from Credit Basis to Work-out
  17606.      *
  17607.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17608.      */

  17609.     public abstract double yieldSpreadFromCreditBasis (
  17610.         final org.drip.param.valuation.ValuationParams valParams,
  17611.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17612.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17613.         final int iWorkoutDate,
  17614.         final double dblWorkoutFactor,
  17615.         final double dblCreditBasis)
  17616.         throws java.lang.Exception;

  17617.     /**
  17618.      * Calculate Yield Spread from Credit Basis to Maturity
  17619.      *
  17620.      * @param valParams Valuation Parameters
  17621.      * @param csqs Market Parameters
  17622.      * @param vcp Valuation Customization Parameters
  17623.      * @param dblCreditBasis Credit Basis to Maturity
  17624.      *
  17625.      * @return Yield Spread from Credit Basis to Maturity
  17626.      *
  17627.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17628.      */

  17629.     public abstract double yieldSpreadFromCreditBasis (
  17630.         final org.drip.param.valuation.ValuationParams valParams,
  17631.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17632.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17633.         final double dblCreditBasis)
  17634.         throws java.lang.Exception;

  17635.     /**
  17636.      * Calculate Yield Spread from Credit Basis to Optimal Exercise
  17637.      *
  17638.      * @param valParams Valuation Parameters
  17639.      * @param csqs Market Parameters
  17640.      * @param vcp Valuation Customization Parameters
  17641.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  17642.      *
  17643.      * @return Yield Spread from Credit Basis to Optimal Exercise
  17644.      *
  17645.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17646.      */

  17647.     public abstract double yieldSpreadFromCreditBasisToOptimalExercise (
  17648.         final org.drip.param.valuation.ValuationParams valParams,
  17649.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17650.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17651.         final double dblCreditBasis)
  17652.         throws java.lang.Exception;

  17653.     /**
  17654.      * Calculate Yield Spread from Discount Margin to Work-out
  17655.      *
  17656.      * @param valParams Valuation Parameters
  17657.      * @param csqs Market Parameters
  17658.      * @param vcp Valuation Customization Parameters
  17659.      * @param iWorkoutDate Work-out Date
  17660.      * @param dblWorkoutFactor Work-out Factor
  17661.      * @param dblDiscountMargin Discount Margin to Work-out
  17662.      *
  17663.      * @return Yield Spread from Discount Margin to Work-out
  17664.      *
  17665.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17666.      */

  17667.     public abstract double yieldSpreadFromDiscountMargin (
  17668.         final org.drip.param.valuation.ValuationParams valParams,
  17669.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17670.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17671.         final int iWorkoutDate,
  17672.         final double dblWorkoutFactor,
  17673.         final double dblDiscountMargin)
  17674.         throws java.lang.Exception;

  17675.     /**
  17676.      * Calculate Yield Spread from Discount Margin to Maturity
  17677.      *
  17678.      * @param valParams Valuation Parameters
  17679.      * @param csqs Market Parameters
  17680.      * @param vcp Valuation Customization Parameters
  17681.      * @param dblDiscountMargin Discount Margin to Maturity
  17682.      *
  17683.      * @return Yield Spread from Discount Margin to Maturity
  17684.      *
  17685.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17686.      */

  17687.     public abstract double yieldSpreadFromDiscountMargin (
  17688.         final org.drip.param.valuation.ValuationParams valParams,
  17689.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17690.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17691.         final double dblDiscountMargin)
  17692.         throws java.lang.Exception;

  17693.     /**
  17694.      * Calculate Yield Spread from Discount Margin to Optimal Exercise
  17695.      *
  17696.      * @param valParams Valuation Parameters
  17697.      * @param csqs Market Parameters
  17698.      * @param vcp Valuation Customization Parameters
  17699.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  17700.      *
  17701.      * @return Yield Spread from Discount Margin to Optimal Exercise
  17702.      *
  17703.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17704.      */

  17705.     public abstract double yieldSpreadFromDiscountMarginToOptimalExercise (
  17706.         final org.drip.param.valuation.ValuationParams valParams,
  17707.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17708.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17709.         final double dblDiscountMargin)
  17710.         throws java.lang.Exception;

  17711.     /**
  17712.      * Calculate Yield Spread from E Spread to Work-out
  17713.      *
  17714.      * @param valParams Valuation Parameters
  17715.      * @param csqs Market Parameters
  17716.      * @param vcp Valuation Customization Parameters
  17717.      * @param iWorkoutDate Work-out Date
  17718.      * @param dblWorkoutFactor Work-out Factor
  17719.      * @param dblESpread E Spread to Work-out
  17720.      *
  17721.      * @return Yield Spread from E Spread to Work-out
  17722.      *
  17723.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17724.      */

  17725.     public abstract double yieldSpreadFromESpread (
  17726.         final org.drip.param.valuation.ValuationParams valParams,
  17727.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17728.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17729.         final int iWorkoutDate,
  17730.         final double dblWorkoutFactor,
  17731.         final double dblESpread)
  17732.         throws java.lang.Exception;

  17733.     /**
  17734.      * Calculate Yield Spread from E Spread to Maturity
  17735.      *
  17736.      * @param valParams Valuation Parameters
  17737.      * @param csqs Market Parameters
  17738.      * @param vcp Valuation Customization Parameters
  17739.      * @param dblESpread E Spread to Maturity
  17740.      *
  17741.      * @return Yield Spread from E Spread to Maturity
  17742.      *
  17743.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17744.      */

  17745.     public abstract double yieldSpreadFromESpread (
  17746.         final org.drip.param.valuation.ValuationParams valParams,
  17747.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17748.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17749.         final double dblESpread)
  17750.         throws java.lang.Exception;

  17751.     /**
  17752.      * Calculate Yield Spread from E Spread to Optimal Exercise
  17753.      *
  17754.      * @param valParams Valuation Parameters
  17755.      * @param csqs Market Parameters
  17756.      * @param vcp Valuation Customization Parameters
  17757.      * @param dblESpread E Spread to Optimal Exercise
  17758.      *
  17759.      * @return Yield Spread from E Spread to Optimal Exercise
  17760.      *
  17761.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17762.      */

  17763.     public abstract double yieldSpreadFromESpreadToOptimalExercise (
  17764.         final org.drip.param.valuation.ValuationParams valParams,
  17765.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17766.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17767.         final double dblESpread)
  17768.         throws java.lang.Exception;

  17769.     /**
  17770.      * Calculate Yield Spread from G Spread to Work-out
  17771.      *
  17772.      * @param valParams Valuation Parameters
  17773.      * @param csqs Market Parameters
  17774.      * @param vcp Valuation Customization Parameters
  17775.      * @param iWorkoutDate Work-out Date
  17776.      * @param dblWorkoutFactor Work-out Factor
  17777.      * @param dblGSpread G Spread to Work-out
  17778.      *
  17779.      * @return Yield Spread from G Spread to Work-out
  17780.      *
  17781.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17782.      */

  17783.     public abstract double yieldSpreadFromGSpread (
  17784.         final org.drip.param.valuation.ValuationParams valParams,
  17785.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17786.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17787.         final int iWorkoutDate,
  17788.         final double dblWorkoutFactor,
  17789.         final double dblGSpread)
  17790.         throws java.lang.Exception;

  17791.     /**
  17792.      * Calculate Yield Spread from G Spread to Maturity
  17793.      *
  17794.      * @param valParams Valuation Parameters
  17795.      * @param csqs Market Parameters
  17796.      * @param vcp Valuation Customization Parameters
  17797.      * @param dblGSpread G Spread to Maturity
  17798.      *
  17799.      * @return Yield Spread from G Spread to Maturity
  17800.      *
  17801.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17802.      */

  17803.     public abstract double yieldSpreadFromGSpread (
  17804.         final org.drip.param.valuation.ValuationParams valParams,
  17805.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17806.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17807.         final double dblGSpread)
  17808.         throws java.lang.Exception;

  17809.     /**
  17810.      * Calculate Yield Spread from G Spread to Optimal Exercise
  17811.      *
  17812.      * @param valParams Valuation Parameters
  17813.      * @param csqs Market Parameters
  17814.      * @param vcp Valuation Customization Parameters
  17815.      * @param dblGSpread G Spread to Optimal Exercise
  17816.      *
  17817.      * @return Yield Spread from G Spread to Optimal Exercise
  17818.      *
  17819.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17820.      */

  17821.     public abstract double yieldSpreadFromGSpreadToOptimalExercise (
  17822.         final org.drip.param.valuation.ValuationParams valParams,
  17823.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17824.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17825.         final double dblGSpread)
  17826.         throws java.lang.Exception;

  17827.     /**
  17828.      * Calculate Yield Spread from I Spread to Work-out
  17829.      *
  17830.      * @param valParams Valuation Parameters
  17831.      * @param csqs Market Parameters
  17832.      * @param vcp Valuation Customization Parameters
  17833.      * @param iWorkoutDate Work-out Date
  17834.      * @param dblWorkoutFactor Work-out Factor
  17835.      * @param dblISpread I Spread to Work-out
  17836.      *
  17837.      * @return Yield Spread from I Spread to Work-out
  17838.      *
  17839.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17840.      */

  17841.     public abstract double yieldSpreadFromISpread (
  17842.         final org.drip.param.valuation.ValuationParams valParams,
  17843.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17844.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17845.         final int iWorkoutDate,
  17846.         final double dblWorkoutFactor,
  17847.         final double dblISpread)
  17848.         throws java.lang.Exception;

  17849.     /**
  17850.      * Calculate Yield Spread from I Spread to Maturity
  17851.      *
  17852.      * @param valParams Valuation Parameters
  17853.      * @param csqs Market Parameters
  17854.      * @param vcp Valuation Customization Parameters
  17855.      * @param dblISpread I Spread to Maturity
  17856.      *
  17857.      * @return Yield Spread from I Spread to Maturity
  17858.      *
  17859.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17860.      */

  17861.     public abstract double yieldSpreadFromISpread (
  17862.         final org.drip.param.valuation.ValuationParams valParams,
  17863.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17864.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17865.         final double dblISpread)
  17866.         throws java.lang.Exception;

  17867.     /**
  17868.      * Calculate Yield Spread from I Spread to Optimal Exercise
  17869.      *
  17870.      * @param valParams Valuation Parameters
  17871.      * @param csqs Market Parameters
  17872.      * @param vcp Valuation Customization Parameters
  17873.      * @param dblISpread ISpread to Optimal Exercise
  17874.      *
  17875.      * @return Yield Spread from I Spread to Optimal Exercise
  17876.      *
  17877.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17878.      */

  17879.     public abstract double yieldSpreadFromISpreadToOptimalExercise (
  17880.         final org.drip.param.valuation.ValuationParams valParams,
  17881.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17882.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17883.         final double dblISpread)
  17884.         throws java.lang.Exception;

  17885.     /**
  17886.      * Calculate Yield Spread from J Spread to Work-out
  17887.      *
  17888.      * @param valParams Valuation Parameters
  17889.      * @param csqs Market Parameters
  17890.      * @param vcp Valuation Customization Parameters
  17891.      * @param iWorkoutDate Work-out Date
  17892.      * @param dblWorkoutFactor Work-out Factor
  17893.      * @param dblJSpread J Spread to Work-out
  17894.      *
  17895.      * @return Yield Spread from J Spread to Work-out
  17896.      *
  17897.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17898.      */

  17899.     public abstract double yieldSpreadFromJSpread (
  17900.         final org.drip.param.valuation.ValuationParams valParams,
  17901.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17902.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17903.         final int iWorkoutDate,
  17904.         final double dblWorkoutFactor,
  17905.         final double dblJSpread)
  17906.         throws java.lang.Exception;

  17907.     /**
  17908.      * Calculate Yield Spread from J Spread to Maturity
  17909.      *
  17910.      * @param valParams Valuation Parameters
  17911.      * @param csqs Market Parameters
  17912.      * @param vcp Valuation Customization Parameters
  17913.      * @param dblJSpread J Spread to Maturity
  17914.      *
  17915.      * @return Yield Spread from J Spread to Maturity
  17916.      *
  17917.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17918.      */

  17919.     public abstract double yieldSpreadFromJSpread (
  17920.         final org.drip.param.valuation.ValuationParams valParams,
  17921.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17922.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17923.         final double dblJSpread)
  17924.         throws java.lang.Exception;

  17925.     /**
  17926.      * Calculate Yield Spread from J Spread to Optimal Exercise
  17927.      *
  17928.      * @param valParams Valuation Parameters
  17929.      * @param csqs Market Parameters
  17930.      * @param vcp Valuation Customization Parameters
  17931.      * @param dblJSpread JSpread to Optimal Exercise
  17932.      *
  17933.      * @return Yield Spread from J Spread to Optimal Exercise
  17934.      *
  17935.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17936.      */

  17937.     public abstract double yieldSpreadFromJSpreadToOptimalExercise (
  17938.         final org.drip.param.valuation.ValuationParams valParams,
  17939.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17940.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17941.         final double dblJSpread)
  17942.         throws java.lang.Exception;

  17943.     /**
  17944.      * Calculate Yield Spread from N Spread to Work-out
  17945.      *
  17946.      * @param valParams Valuation Parameters
  17947.      * @param csqs Market Parameters
  17948.      * @param vcp Valuation Customization Parameters
  17949.      * @param iWorkoutDate Work-out Date
  17950.      * @param dblWorkoutFactor Work-out Factor
  17951.      * @param dblNSpread N Spread to Work-out
  17952.      *
  17953.      * @return Yield Spread from N Spread to Work-out
  17954.      *
  17955.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  17956.      */

  17957.     public abstract double yieldSpreadFromNSpread (
  17958.         final org.drip.param.valuation.ValuationParams valParams,
  17959.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17960.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17961.         final int iWorkoutDate,
  17962.         final double dblWorkoutFactor,
  17963.         final double dblNSpread)
  17964.         throws java.lang.Exception;

  17965.     /**
  17966.      * Calculate Yield Spread from N Spread to Maturity
  17967.      *
  17968.      * @param valParams Valuation Parameters
  17969.      * @param csqs Market Parameters
  17970.      * @param vcp Valuation Customization Parameters
  17971.      * @param dblNSpread N Spread to Maturity
  17972.      *
  17973.      * @return Yield Spread from N Spread to Maturity
  17974.      *
  17975.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17976.      */

  17977.     public abstract double yieldSpreadFromNSpread (
  17978.         final org.drip.param.valuation.ValuationParams valParams,
  17979.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17980.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17981.         final double dblNSpread)
  17982.         throws java.lang.Exception;

  17983.     /**
  17984.      * Calculate Yield Spread from N Spread to Optimal Exercise
  17985.      *
  17986.      * @param valParams Valuation Parameters
  17987.      * @param csqs Market Parameters
  17988.      * @param vcp Valuation Customization Parameters
  17989.      * @param dblNSpread N Spread to Optimal Exercise
  17990.      *
  17991.      * @return Yield Spread from N Spread to Optimal Exercise
  17992.      *
  17993.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  17994.      */

  17995.     public abstract double yieldSpreadFromNSpreadToOptimalExercise (
  17996.         final org.drip.param.valuation.ValuationParams valParams,
  17997.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  17998.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  17999.         final double dblNSpread)
  18000.         throws java.lang.Exception;

  18001.     /**
  18002.      * Calculate Yield Spread from OAS to Work-out
  18003.      *
  18004.      * @param valParams Valuation Parameters
  18005.      * @param csqs Market Parameters
  18006.      * @param vcp Valuation Customization Parameters
  18007.      * @param iWorkoutDate Work-out Date
  18008.      * @param dblWorkoutFactor Work-out Factor
  18009.      * @param dblOAS OAS to Work-out
  18010.      *
  18011.      * @return Yield Spread from OAS to Work-out
  18012.      *
  18013.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  18014.      */

  18015.     public abstract double yieldSpreadFromOAS (
  18016.         final org.drip.param.valuation.ValuationParams valParams,
  18017.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18018.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18019.         final int iWorkoutDate,
  18020.         final double dblWorkoutFactor,
  18021.         final double dblOAS)
  18022.         throws java.lang.Exception;

  18023.     /**
  18024.      * Calculate Yield Spread from OAS to Maturity
  18025.      *
  18026.      * @param valParams Valuation Parameters
  18027.      * @param csqs Market Parameters
  18028.      * @param vcp Valuation Customization Parameters
  18029.      * @param dblOAS OAS to Maturity
  18030.      *
  18031.      * @return Yield Spread from OAS to Maturity
  18032.      *
  18033.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18034.      */

  18035.     public abstract double yieldSpreadFromOAS (
  18036.         final org.drip.param.valuation.ValuationParams valParams,
  18037.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18038.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18039.         final double dblOAS)
  18040.         throws java.lang.Exception;

  18041.     /**
  18042.      * Calculate Yield Spread from OAS to Optimal Exercise
  18043.      *
  18044.      * @param valParams Valuation Parameters
  18045.      * @param csqs Market Parameters
  18046.      * @param vcp Valuation Customization Parameters
  18047.      * @param dblOAS OAS to Optimal Exercise
  18048.      *
  18049.      * @return Yield Spread from OAS to Optimal Exercise
  18050.      *
  18051.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18052.      */

  18053.     public abstract double yieldSpreadFromOASToOptimalExercise (
  18054.         final org.drip.param.valuation.ValuationParams valParams,
  18055.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18056.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18057.         final double dblOAS)
  18058.         throws java.lang.Exception;

  18059.     /**
  18060.      * Calculate Yield Spread from Price to Work-out
  18061.      *
  18062.      * @param valParams Valuation Parameters
  18063.      * @param csqs Market Parameters
  18064.      * @param vcp Valuation Customization Parameters
  18065.      * @param iWorkoutDate Work-out Date
  18066.      * @param dblWorkoutFactor Work-out Factor
  18067.      * @param dblPrice Price to Work-out
  18068.      *
  18069.      * @return Yield Spread from Price to Work-out
  18070.      *
  18071.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  18072.      */

  18073.     public abstract double yieldSpreadFromPrice (
  18074.         final org.drip.param.valuation.ValuationParams valParams,
  18075.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18076.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18077.         final int iWorkoutDate,
  18078.         final double dblWorkoutFactor,
  18079.         final double dblPrice)
  18080.         throws java.lang.Exception;

  18081.     /**
  18082.      * Calculate Yield Spread from Price to Maturity
  18083.      *
  18084.      * @param valParams Valuation Parameters
  18085.      * @param csqs Market Parameters
  18086.      * @param vcp Valuation Customization Parameters
  18087.      * @param dblPrice Price to Maturity
  18088.      *
  18089.      * @return Yield Spread from Price to Maturity
  18090.      *
  18091.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18092.      */

  18093.     public abstract double yieldSpreadFromPrice (
  18094.         final org.drip.param.valuation.ValuationParams valParams,
  18095.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18096.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18097.         final double dblPrice)
  18098.         throws java.lang.Exception;

  18099.     /**
  18100.      * Calculate Yield Spread from Price to Optimal Exercise
  18101.      *
  18102.      * @param valParams Valuation Parameters
  18103.      * @param csqs Market Parameters
  18104.      * @param vcp Valuation Customization Parameters
  18105.      * @param dblPrice Price to Optimal Exercise
  18106.      *
  18107.      * @return Yield Spread from Price to Optimal Exercise
  18108.      *
  18109.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18110.      */

  18111.     public abstract double yieldSpreadFromPriceToOptimalExercise (
  18112.         final org.drip.param.valuation.ValuationParams valParams,
  18113.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18114.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18115.         final double dblPrice)
  18116.         throws java.lang.Exception;

  18117.     /**
  18118.      * Calculate Yield Spread from PECS to Work-out
  18119.      *
  18120.      * @param valParams Valuation Parameters
  18121.      * @param csqs Market Parameters
  18122.      * @param vcp Valuation Customization Parameters
  18123.      * @param iWorkoutDate Work-out Date
  18124.      * @param dblWorkoutFactor Work-out Factor
  18125.      * @param dblPECS PECS to Work-out
  18126.      *
  18127.      * @return Yield Spread from PECS to Work-out
  18128.      *
  18129.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  18130.      */

  18131.     public abstract double yieldSpreadFromPECS (
  18132.         final org.drip.param.valuation.ValuationParams valParams,
  18133.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18134.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18135.         final int iWorkoutDate,
  18136.         final double dblWorkoutFactor,
  18137.         final double dblPECS)
  18138.         throws java.lang.Exception;

  18139.     /**
  18140.      * Calculate Yield Spread from PECS to Maturity
  18141.      *
  18142.      * @param valParams Valuation Parameters
  18143.      * @param csqs Market Parameters
  18144.      * @param vcp Valuation Customization Parameters
  18145.      * @param dblPECS PECS to Maturity
  18146.      *
  18147.      * @return Yield Spread from PECS to Maturity
  18148.      *
  18149.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18150.      */

  18151.     public abstract double yieldSpreadFromPECS (
  18152.         final org.drip.param.valuation.ValuationParams valParams,
  18153.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18154.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18155.         final double dblPECS)
  18156.         throws java.lang.Exception;

  18157.     /**
  18158.      * Calculate Yield Spread from PECS to Optimal Exercise
  18159.      *
  18160.      * @param valParams Valuation Parameters
  18161.      * @param csqs Market Parameters
  18162.      * @param vcp Valuation Customization Parameters
  18163.      * @param dblPECS PECS to Optimal Exercise
  18164.      *
  18165.      * @return Yield Spread from PECS to Optimal Exercise
  18166.      *
  18167.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18168.      */

  18169.     public abstract double yieldSpreadFromPECSToOptimalExercise (
  18170.         final org.drip.param.valuation.ValuationParams valParams,
  18171.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18172.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18173.         final double dblPECS)
  18174.         throws java.lang.Exception;

  18175.     /**
  18176.      * Calculate Yield Spread from TSY Spread to Work-out
  18177.      *
  18178.      * @param valParams Valuation Parameters
  18179.      * @param csqs Market Parameters
  18180.      * @param vcp Valuation Customization Parameters
  18181.      * @param iWorkoutDate Work-out Date
  18182.      * @param dblWorkoutFactor Work-out Factor
  18183.      * @param dblTSYSpread TSY Spread to Work-out
  18184.      *
  18185.      * @return Yield Spread from TSY Spread to Work-out
  18186.      *
  18187.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  18188.      */

  18189.     public abstract double yieldSpreadFromTSYSpread (
  18190.         final org.drip.param.valuation.ValuationParams valParams,
  18191.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18192.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18193.         final int iWorkoutDate,
  18194.         final double dblWorkoutFactor,
  18195.         final double dblTSYSpread)
  18196.         throws java.lang.Exception;

  18197.     /**
  18198.      * Calculate Yield Spread from TSY Spread to Maturity
  18199.      *
  18200.      * @param valParams Valuation Parameters
  18201.      * @param csqs Market Parameters
  18202.      * @param vcp Valuation Customization Parameters
  18203.      * @param dblTSYSpread TSY Spread to Maturity
  18204.      *
  18205.      * @return Yield Spread from TSY Spread to Maturity
  18206.      *
  18207.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18208.      */

  18209.     public abstract double yieldSpreadFromTSYSpread (
  18210.         final org.drip.param.valuation.ValuationParams valParams,
  18211.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18212.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18213.         final double dblTSYSpread)
  18214.         throws java.lang.Exception;

  18215.     /**
  18216.      * Calculate Yield Spread from TSY Spread to Optimal Exercise
  18217.      *
  18218.      * @param valParams Valuation Parameters
  18219.      * @param csqs Market Parameters
  18220.      * @param vcp Valuation Customization Parameters
  18221.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  18222.      *
  18223.      * @return Yield Spread from TSY Spread to Optimal Exercise
  18224.      *
  18225.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18226.      */

  18227.     public abstract double yieldSpreadFromTSYSpreadToOptimalExercise (
  18228.         final org.drip.param.valuation.ValuationParams valParams,
  18229.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18230.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18231.         final double dblTSYSpread)
  18232.         throws java.lang.Exception;

  18233.     /**
  18234.      * Calculate Yield Spread from Yield to Work-out
  18235.      *
  18236.      * @param valParams Valuation Parameters
  18237.      * @param csqs Market Parameters
  18238.      * @param vcp Valuation Customization Parameters
  18239.      * @param iWorkoutDate Work-out Date
  18240.      * @param dblWorkoutFactor Work-out Factor
  18241.      * @param dblYield Yield to Work-out
  18242.      *
  18243.      * @return Yield Spread from Yield to Work-out
  18244.      *
  18245.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  18246.      */

  18247.     public abstract double yieldSpreadFromYield (
  18248.         final org.drip.param.valuation.ValuationParams valParams,
  18249.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18250.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18251.         final int iWorkoutDate,
  18252.         final double dblWorkoutFactor,
  18253.         final double dblYield)
  18254.         throws java.lang.Exception;

  18255.     /**
  18256.      * Calculate Yield Spread from Yield to Maturity
  18257.      *
  18258.      * @param valParams Valuation Parameters
  18259.      * @param csqs Market Parameters
  18260.      * @param vcp Valuation Customization Parameters
  18261.      * @param dblYield Yield to Maturity
  18262.      *
  18263.      * @return Yield Spread from Yield to Maturity
  18264.      *
  18265.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18266.      */

  18267.     public abstract double yieldSpreadFromYield (
  18268.         final org.drip.param.valuation.ValuationParams valParams,
  18269.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18270.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18271.         final double dblYield)
  18272.         throws java.lang.Exception;

  18273.     /**
  18274.      * Calculate Yield Spread from Yield to Optimal Exercise
  18275.      *
  18276.      * @param valParams Valuation Parameters
  18277.      * @param csqs Market Parameters
  18278.      * @param vcp Valuation Customization Parameters
  18279.      * @param dblYield Yield to Optimal Exercise
  18280.      *
  18281.      * @return Yield Spread from Yield to Optimal Exercise
  18282.      *
  18283.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18284.      */

  18285.     public abstract double yieldSpreadFromYieldToOptimalExercise (
  18286.         final org.drip.param.valuation.ValuationParams valParams,
  18287.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18288.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18289.         final double dblYield)
  18290.         throws java.lang.Exception;

  18291.     /**
  18292.      * Calculate Yield Spread from Z Spread to Work-out
  18293.      *
  18294.      * @param valParams Valuation Parameters
  18295.      * @param csqs Market Parameters
  18296.      * @param vcp Valuation Customization Parameters
  18297.      * @param iWorkoutDate Work-out Date
  18298.      * @param dblWorkoutFactor Work-out Factor
  18299.      * @param dblZSpread Z Spread to Work-out
  18300.      *
  18301.      * @return Yield Spread from Z Spread to Work-out
  18302.      *
  18303.      * @throws java.lang.Exception Thrown if the Yield Spread cannot be calculated
  18304.      */

  18305.     public abstract double yieldSpreadFromZSpread (
  18306.         final org.drip.param.valuation.ValuationParams valParams,
  18307.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18308.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18309.         final int iWorkoutDate,
  18310.         final double dblWorkoutFactor,
  18311.         final double dblZSpread)
  18312.         throws java.lang.Exception;

  18313.     /**
  18314.      * Calculate Yield Spread from Z Spread to Maturity
  18315.      *
  18316.      * @param valParams Valuation Parameters
  18317.      * @param csqs Market Parameters
  18318.      * @param vcp Valuation Customization Parameters
  18319.      * @param dblZSpread Z Spread to Maturity
  18320.      *
  18321.      * @return Yield Spread from Z Spread to Maturity
  18322.      *
  18323.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18324.      */

  18325.     public abstract double yieldSpreadFromZSpread (
  18326.         final org.drip.param.valuation.ValuationParams valParams,
  18327.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18328.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18329.         final double dblZSpread)
  18330.         throws java.lang.Exception;

  18331.     /**
  18332.      * Calculate Yield Spread from Z Spread to Optimal Exercise
  18333.      *
  18334.      * @param valParams Valuation Parameters
  18335.      * @param csqs Market Parameters
  18336.      * @param vcp Valuation Customization Parameters
  18337.      * @param dblZSpread Z Spread to Optimal Exercise
  18338.      *
  18339.      * @return Yield Spread from Z Spread to Optimal Exercise
  18340.      *
  18341.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  18342.      */

  18343.     public abstract double yieldSpreadFromZSpreadToOptimalExercise (
  18344.         final org.drip.param.valuation.ValuationParams valParams,
  18345.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18346.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18347.         final double dblZSpread)
  18348.         throws java.lang.Exception;

  18349.     /**
  18350.      * Calculate Z Spread from ASW to Work-out
  18351.      *
  18352.      * @param valParams Valuation Parameters
  18353.      * @param csqs Market Parameters
  18354.      * @param vcp Valuation Customization Parameters
  18355.      * @param iWorkoutDate Work-out Date
  18356.      * @param dblWorkoutFactor Work-out Factor
  18357.      * @param dblASW ASW to Work-out
  18358.      *
  18359.      * @return Z Spread from ASW to Work-out
  18360.      *
  18361.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18362.      */

  18363.     public abstract double zSpreadFromASW (
  18364.         final org.drip.param.valuation.ValuationParams valParams,
  18365.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18366.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18367.         final int iWorkoutDate,
  18368.         final double dblWorkoutFactor,
  18369.         final double dblASW)
  18370.         throws java.lang.Exception;

  18371.     /**
  18372.      * Calculate Z Spread from ASW to Maturity
  18373.      *
  18374.      * @param valParams Valuation Parameters
  18375.      * @param csqs Market Parameters
  18376.      * @param vcp Valuation Customization Parameters
  18377.      * @param dblASW ASW to Maturity
  18378.      *
  18379.      * @return Z Spread from ASW to Maturity
  18380.      *
  18381.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18382.      */

  18383.     public abstract double zSpreadFromASW (
  18384.         final org.drip.param.valuation.ValuationParams valParams,
  18385.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18386.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18387.         final double dblASW)
  18388.         throws java.lang.Exception;

  18389.     /**
  18390.      * Calculate Z Spread from ASW to Optimal Exercise
  18391.      *
  18392.      * @param valParams Valuation Parameters
  18393.      * @param csqs Market Parameters
  18394.      * @param vcp Valuation Customization Parameters
  18395.      * @param dblASW ASW to Optimal Exercise
  18396.      *
  18397.      * @return Z Spread from ASW to Optimal Exercise
  18398.      *
  18399.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18400.      */

  18401.     public abstract double zSpreadFromASWToOptimalExercise (
  18402.         final org.drip.param.valuation.ValuationParams valParams,
  18403.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18404.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18405.         final double dblASW)
  18406.         throws java.lang.Exception;

  18407.     /**
  18408.      * Calculate Z Spread from Bond Basis to Work-out
  18409.      *
  18410.      * @param valParams Valuation Parameters
  18411.      * @param csqs Market Parameters
  18412.      * @param vcp Valuation Customization Parameters
  18413.      * @param iWorkoutDate Work-out Date
  18414.      * @param dblWorkoutFactor Work-out Factor
  18415.      * @param dblBondBasis Bond Basis to Work-out
  18416.      *
  18417.      * @return Z Spread from Bond Basis to Work-out
  18418.      *
  18419.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18420.      */

  18421.     public abstract double zSpreadFromBondBasis (
  18422.         final org.drip.param.valuation.ValuationParams valParams,
  18423.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18424.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18425.         final int iWorkoutDate,
  18426.         final double dblWorkoutFactor,
  18427.         final double dblBondBasis)
  18428.         throws java.lang.Exception;

  18429.     /**
  18430.      * Calculate Z Spread from Bond Basis to Maturity
  18431.      *
  18432.      * @param valParams Valuation Parameters
  18433.      * @param csqs Market Parameters
  18434.      * @param vcp Valuation Customization Parameters
  18435.      * @param dblBondBasis Bond Basis to Maturity
  18436.      *
  18437.      * @return Z Spread from Bond Basis to Maturity
  18438.      *
  18439.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18440.      */

  18441.     public abstract double zSpreadFromBondBasis (
  18442.         final org.drip.param.valuation.ValuationParams valParams,
  18443.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18444.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18445.         final double dblBondBasis)
  18446.         throws java.lang.Exception;

  18447.     /**
  18448.      * Calculate Z Spread from Bond Basis to Optimal Exercise
  18449.      *
  18450.      * @param valParams Valuation Parameters
  18451.      * @param csqs Market Parameters
  18452.      * @param vcp Valuation Customization Parameters
  18453.      * @param dblBondBasis Bond Basis to Optimal Exercise
  18454.      *
  18455.      * @return Z Spread from Bond Basis to Optimal Exercise
  18456.      *
  18457.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18458.      */

  18459.     public abstract double zSpreadFromBondBasisToOptimalExercise (
  18460.         final org.drip.param.valuation.ValuationParams valParams,
  18461.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18462.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18463.         final double dblBondBasis)
  18464.         throws java.lang.Exception;

  18465.     /**
  18466.      * Calculate Z Spread from Credit Basis to Work-out
  18467.      *
  18468.      * @param valParams Valuation Parameters
  18469.      * @param csqs Market Parameters
  18470.      * @param vcp Valuation Customization Parameters
  18471.      * @param iWorkoutDate Work-out Date
  18472.      * @param dblWorkoutFactor Work-out Factor
  18473.      * @param dblCreditBasis Credit Basis to Work-out
  18474.      *
  18475.      * @return Z Spread from Credit Basis to Work-out
  18476.      *
  18477.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18478.      */

  18479.     public abstract double zSpreadFromCreditBasis (
  18480.         final org.drip.param.valuation.ValuationParams valParams,
  18481.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18482.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18483.         final int iWorkoutDate,
  18484.         final double dblWorkoutFactor,
  18485.         final double dblCreditBasis)
  18486.         throws java.lang.Exception;

  18487.     /**
  18488.      * Calculate Z Spread from Credit Basis to Maturity
  18489.      *
  18490.      * @param valParams Valuation Parameters
  18491.      * @param csqs Market Parameters
  18492.      * @param vcp Valuation Customization Parameters
  18493.      * @param dblCreditBasis Credit Basis to Maturity
  18494.      *
  18495.      * @return Z Spread from Credit Basis to Maturity
  18496.      *
  18497.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18498.      */

  18499.     public abstract double zSpreadFromCreditBasis (
  18500.         final org.drip.param.valuation.ValuationParams valParams,
  18501.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18502.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18503.         final double dblCreditBasis)
  18504.         throws java.lang.Exception;

  18505.     /**
  18506.      * Calculate Z Spread from Credit Basis to Optimal Exercise
  18507.      *
  18508.      * @param valParams Valuation Parameters
  18509.      * @param csqs Market Parameters
  18510.      * @param vcp Valuation Customization Parameters
  18511.      * @param dblCreditBasis Credit Basis to Optimal Exercise
  18512.      *
  18513.      * @return Z Spread from Credit Basis to Optimal Exercise
  18514.      *
  18515.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18516.      */

  18517.     public abstract double zSpreadFromCreditBasisToOptimalExercise (
  18518.         final org.drip.param.valuation.ValuationParams valParams,
  18519.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18520.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18521.         final double dblCreditBasis)
  18522.         throws java.lang.Exception;

  18523.     /**
  18524.      * Calculate Z Spread from Discount Margin to Work-out
  18525.      *
  18526.      * @param valParams Valuation Parameters
  18527.      * @param csqs Market Parameters
  18528.      * @param vcp Valuation Customization Parameters
  18529.      * @param iWorkoutDate Work-out Date
  18530.      * @param dblWorkoutFactor Work-out Factor
  18531.      * @param dblDiscountMargin Discount Margin to Work-out
  18532.      *
  18533.      * @return Z Spread from Discount Margin to Work-out
  18534.      *
  18535.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18536.      */

  18537.     public abstract double zSpreadFromDiscountMargin (
  18538.         final org.drip.param.valuation.ValuationParams valParams,
  18539.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18540.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18541.         final int iWorkoutDate,
  18542.         final double dblWorkoutFactor,
  18543.         final double dblDiscountMargin)
  18544.         throws java.lang.Exception;

  18545.     /**
  18546.      * Calculate Z Spread from Discount Margin to Maturity
  18547.      *
  18548.      * @param valParams Valuation Parameters
  18549.      * @param csqs Market Parameters
  18550.      * @param vcp Valuation Customization Parameters
  18551.      * @param dblDiscountMargin Discount Margin to Maturity
  18552.      *
  18553.      * @return Z Spread from Discount Margin to Maturity
  18554.      *
  18555.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18556.      */

  18557.     public abstract double zSpreadFromDiscountMargin (
  18558.         final org.drip.param.valuation.ValuationParams valParams,
  18559.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18560.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18561.         final double dblDiscountMargin)
  18562.         throws java.lang.Exception;

  18563.     /**
  18564.      * Calculate Z Spread from Discount Margin to Optimal Exercise
  18565.      *
  18566.      * @param valParams Valuation Parameters
  18567.      * @param csqs Market Parameters
  18568.      * @param vcp Valuation Customization Parameters
  18569.      * @param dblDiscountMargin Discount Margin to Optimal Exercise
  18570.      *
  18571.      * @return Z Spread from Discount Margin to Optimal Exercise
  18572.      *
  18573.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18574.      */

  18575.     public abstract double zSpreadFromDiscountMarginToOptimalExercise (
  18576.         final org.drip.param.valuation.ValuationParams valParams,
  18577.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18578.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18579.         final double dblDiscountMargin)
  18580.         throws java.lang.Exception;

  18581.     /**
  18582.      * Calculate Z Spread from G Spread to Work-out
  18583.      *
  18584.      * @param valParams Valuation Parameters
  18585.      * @param csqs Market Parameters
  18586.      * @param vcp Valuation Customization Parameters
  18587.      * @param iWorkoutDate Work-out Date
  18588.      * @param dblWorkoutFactor Work-out Factor
  18589.      * @param dblGSpread G Spread to Work-out
  18590.      *
  18591.      * @return Z Spread from G Spread to Work-out
  18592.      *
  18593.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18594.      */

  18595.     public abstract double zSpreadFromGSpread (
  18596.         final org.drip.param.valuation.ValuationParams valParams,
  18597.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18598.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18599.         final int iWorkoutDate,
  18600.         final double dblWorkoutFactor,
  18601.         final double dblGSpread)
  18602.         throws java.lang.Exception;

  18603.     /**
  18604.      * Calculate Z Spread from G Spread to Maturity
  18605.      *
  18606.      * @param valParams Valuation Parameters
  18607.      * @param csqs Market Parameters
  18608.      * @param vcp Valuation Customization Parameters
  18609.      * @param dblGSpread G Spread to Maturity
  18610.      *
  18611.      * @return Z Spread from G Spread to Maturity
  18612.      *
  18613.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18614.      */

  18615.     public abstract double zSpreadFromGSpread (
  18616.         final org.drip.param.valuation.ValuationParams valParams,
  18617.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18618.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18619.         final double dblGSpread)
  18620.         throws java.lang.Exception;

  18621.     /**
  18622.      * Calculate Z Spread from G Spread to Optimal Exercise
  18623.      *
  18624.      * @param valParams Valuation Parameters
  18625.      * @param csqs Market Parameters
  18626.      * @param vcp Valuation Customization Parameters
  18627.      * @param dblGSpread G Spread to Optimal Exercise
  18628.      *
  18629.      * @return Z Spread from G Spread to Optimal Exercise
  18630.      *
  18631.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18632.      */

  18633.     public abstract double zSpreadFromGSpreadToOptimalExercise (
  18634.         final org.drip.param.valuation.ValuationParams valParams,
  18635.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18636.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18637.         final double dblGSpread)
  18638.         throws java.lang.Exception;

  18639.     /**
  18640.      * Calculate Z Spread from I Spread to Work-out
  18641.      *
  18642.      * @param valParams Valuation Parameters
  18643.      * @param csqs Market Parameters
  18644.      * @param vcp Valuation Customization Parameters
  18645.      * @param iWorkoutDate Work-out Date
  18646.      * @param dblWorkoutFactor Work-out Factor
  18647.      * @param dblISpread I Spread to Work-out
  18648.      *
  18649.      * @return Z Spread from I Spread to Work-out
  18650.      *
  18651.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18652.      */

  18653.     public abstract double zSpreadFromISpread (
  18654.         final org.drip.param.valuation.ValuationParams valParams,
  18655.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18656.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18657.         final int iWorkoutDate,
  18658.         final double dblWorkoutFactor,
  18659.         final double dblISpread)
  18660.         throws java.lang.Exception;

  18661.     /**
  18662.      * Calculate Z Spread from I Spread to Maturity
  18663.      *
  18664.      * @param valParams Valuation Parameters
  18665.      * @param csqs Market Parameters
  18666.      * @param vcp Valuation Customization Parameters
  18667.      * @param dblISpread I Spread to Maturity
  18668.      *
  18669.      * @return Z Spread from I Spread to Maturity
  18670.      *
  18671.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18672.      */

  18673.     public abstract double zSpreadFromISpread (
  18674.         final org.drip.param.valuation.ValuationParams valParams,
  18675.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18676.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18677.         final double dblISpread)
  18678.         throws java.lang.Exception;

  18679.     /**
  18680.      * Calculate Z Spread from I Spread to Optimal Exercise
  18681.      *
  18682.      * @param valParams Valuation Parameters
  18683.      * @param csqs Market Parameters
  18684.      * @param vcp Valuation Customization Parameters
  18685.      * @param dblISpread ISpread to Optimal Exercise
  18686.      *
  18687.      * @return Z Spread from I Spread to Optimal Exercise
  18688.      *
  18689.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18690.      */

  18691.     public abstract double zSpreadFromISpreadToOptimalExercise (
  18692.         final org.drip.param.valuation.ValuationParams valParams,
  18693.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18694.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18695.         final double dblISpread)
  18696.         throws java.lang.Exception;

  18697.     /**
  18698.      * Calculate Z Spread from J Spread to Work-out
  18699.      *
  18700.      * @param valParams Valuation Parameters
  18701.      * @param csqs Market Parameters
  18702.      * @param vcp Valuation Customization Parameters
  18703.      * @param iWorkoutDate Work-out Date
  18704.      * @param dblWorkoutFactor Work-out Factor
  18705.      * @param dblJSpread J Spread to Work-out
  18706.      *
  18707.      * @return Z Spread from J Spread to Work-out
  18708.      *
  18709.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18710.      */

  18711.     public abstract double zSpreadFromJSpread (
  18712.         final org.drip.param.valuation.ValuationParams valParams,
  18713.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18714.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18715.         final int iWorkoutDate,
  18716.         final double dblWorkoutFactor,
  18717.         final double dblJSpread)
  18718.         throws java.lang.Exception;

  18719.     /**
  18720.      * Calculate Z Spread from J Spread to Maturity
  18721.      *
  18722.      * @param valParams Valuation Parameters
  18723.      * @param csqs Market Parameters
  18724.      * @param vcp Valuation Customization Parameters
  18725.      * @param dblJSpread J Spread to Maturity
  18726.      *
  18727.      * @return Z Spread from J Spread to Maturity
  18728.      *
  18729.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18730.      */

  18731.     public abstract double zSpreadFromJSpread (
  18732.         final org.drip.param.valuation.ValuationParams valParams,
  18733.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18734.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18735.         final double dblJSpread)
  18736.         throws java.lang.Exception;

  18737.     /**
  18738.      * Calculate Z Spread from J Spread to Optimal Exercise
  18739.      *
  18740.      * @param valParams Valuation Parameters
  18741.      * @param csqs Market Parameters
  18742.      * @param vcp Valuation Customization Parameters
  18743.      * @param dblJSpread JSpread to Optimal Exercise
  18744.      *
  18745.      * @return Z Spread from J Spread to Optimal Exercise
  18746.      *
  18747.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18748.      */

  18749.     public abstract double zSpreadFromJSpreadToOptimalExercise (
  18750.         final org.drip.param.valuation.ValuationParams valParams,
  18751.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18752.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18753.         final double dblJSpread)
  18754.         throws java.lang.Exception;

  18755.     /**
  18756.      * Calculate Z Spread from N Spread to Work-out
  18757.      *
  18758.      * @param valParams Valuation Parameters
  18759.      * @param csqs Market Parameters
  18760.      * @param vcp Valuation Customization Parameters
  18761.      * @param iWorkoutDate Work-out Date
  18762.      * @param dblWorkoutFactor Work-out Factor
  18763.      * @param dblNSpread N Spread to Work-out
  18764.      *
  18765.      * @return Z Spread from N Spread to Work-out
  18766.      *
  18767.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18768.      */

  18769.     public abstract double zSpreadFromNSpread (
  18770.         final org.drip.param.valuation.ValuationParams valParams,
  18771.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18772.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18773.         final int iWorkoutDate,
  18774.         final double dblWorkoutFactor,
  18775.         final double dblNSpread)
  18776.         throws java.lang.Exception;

  18777.     /**
  18778.      * Calculate Z Spread from N Spread to Maturity
  18779.      *
  18780.      * @param valParams Valuation Parameters
  18781.      * @param csqs Market Parameters
  18782.      * @param vcp Valuation Customization Parameters
  18783.      * @param dblNSpread N Spread to Maturity
  18784.      *
  18785.      * @return Z Spread from N Spread to Maturity
  18786.      *
  18787.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18788.      */

  18789.     public abstract double zSpreadFromNSpread (
  18790.         final org.drip.param.valuation.ValuationParams valParams,
  18791.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18792.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18793.         final double dblNSpread)
  18794.         throws java.lang.Exception;

  18795.     /**
  18796.      * Calculate Z Spread from N Spread to Optimal Exercise
  18797.      *
  18798.      * @param valParams Valuation Parameters
  18799.      * @param csqs Market Parameters
  18800.      * @param vcp Valuation Customization Parameters
  18801.      * @param dblNSpread N Spread to Optimal Exercise
  18802.      *
  18803.      * @return Z Spread from N Spread to Optimal Exercise
  18804.      *
  18805.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18806.      */

  18807.     public abstract double zSpreadFromNSpreadToOptimalExercise (
  18808.         final org.drip.param.valuation.ValuationParams valParams,
  18809.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18810.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18811.         final double dblNSpread)
  18812.         throws java.lang.Exception;

  18813.     /**
  18814.      * Calculate Z Spread from OAS to Work-out
  18815.      *
  18816.      * @param valParams Valuation Parameters
  18817.      * @param csqs Market Parameters
  18818.      * @param vcp Valuation Customization Parameters
  18819.      * @param iWorkoutDate Work-out Date
  18820.      * @param dblWorkoutFactor Work-out Factor
  18821.      * @param dblOAS OAS to Work-out
  18822.      *
  18823.      * @return Z Spread from OAS to Work-out
  18824.      *
  18825.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18826.      */

  18827.     public abstract double zSpreadFromOAS (
  18828.         final org.drip.param.valuation.ValuationParams valParams,
  18829.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18830.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18831.         final int iWorkoutDate,
  18832.         final double dblWorkoutFactor,
  18833.         final double dblOAS)
  18834.         throws java.lang.Exception;

  18835.     /**
  18836.      * Calculate Z Spread from OAS to Maturity
  18837.      *
  18838.      * @param valParams Valuation Parameters
  18839.      * @param csqs Market Parameters
  18840.      * @param vcp Valuation Customization Parameters
  18841.      * @param dblOAS OAS to Maturity
  18842.      *
  18843.      * @return Z Spread from OAS to Maturity
  18844.      *
  18845.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18846.      */

  18847.     public abstract double zSpreadFromOAS (
  18848.         final org.drip.param.valuation.ValuationParams valParams,
  18849.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18850.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18851.         final double dblOAS)
  18852.         throws java.lang.Exception;

  18853.     /**
  18854.      * Calculate Z Spread from OAS to Optimal Exercise
  18855.      *
  18856.      * @param valParams Valuation Parameters
  18857.      * @param csqs Market Parameters
  18858.      * @param vcp Valuation Customization Parameters
  18859.      * @param dblOAS OAS to Optimal Exercise
  18860.      *
  18861.      * @return Z Spread from OAS to Optimal Exercise
  18862.      *
  18863.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18864.      */

  18865.     public abstract double zSpreadFromOASToOptimalExercise (
  18866.         final org.drip.param.valuation.ValuationParams valParams,
  18867.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18868.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18869.         final double dblOAS)
  18870.         throws java.lang.Exception;

  18871.     /**
  18872.      * Calculate Z Spread from Price to Work-out
  18873.      *
  18874.      * @param valParams Valuation Parameters
  18875.      * @param csqs Market Parameters
  18876.      * @param vcp Valuation Customization Parameters
  18877.      * @param iWorkoutDate Work-out Date
  18878.      * @param dblWorkoutFactor Work-out Factor
  18879.      * @param dblPrice Price to Work-out
  18880.      *
  18881.      * @return Z Spread from Price to Work-out
  18882.      *
  18883.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18884.      */

  18885.     public abstract double zSpreadFromPrice (
  18886.         final org.drip.param.valuation.ValuationParams valParams,
  18887.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18888.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18889.         final int iWorkoutDate,
  18890.         final double dblWorkoutFactor,
  18891.         final double dblPrice)
  18892.         throws java.lang.Exception;

  18893.     /**
  18894.      * Calculate Z Spread from Price to Maturity
  18895.      *
  18896.      * @param valParams Valuation Parameters
  18897.      * @param csqs Market Parameters
  18898.      * @param vcp Valuation Customization Parameters
  18899.      * @param dblPrice Price to Maturity
  18900.      *
  18901.      * @return Z Spread from Price to Maturity
  18902.      *
  18903.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18904.      */

  18905.     public abstract double zSpreadFromPrice (
  18906.         final org.drip.param.valuation.ValuationParams valParams,
  18907.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18908.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18909.         final double dblPrice)
  18910.         throws java.lang.Exception;

  18911.     /**
  18912.      * Calculate Z Spread from Price to Optimal Exercise
  18913.      *
  18914.      * @param valParams Valuation Parameters
  18915.      * @param csqs Market Parameters
  18916.      * @param vcp Valuation Customization Parameters
  18917.      * @param dblPrice Price to Optimal Exercise
  18918.      *
  18919.      * @return Z Spread from Price to Optimal Exercise
  18920.      *
  18921.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18922.      */

  18923.     public abstract double zSpreadFromPriceToOptimalExercise (
  18924.         final org.drip.param.valuation.ValuationParams valParams,
  18925.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18926.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18927.         final double dblPrice)
  18928.         throws java.lang.Exception;

  18929.     /**
  18930.      * Calculate Z Spread from PECS to Work-out
  18931.      *
  18932.      * @param valParams Valuation Parameters
  18933.      * @param csqs Market Parameters
  18934.      * @param vcp Valuation Customization Parameters
  18935.      * @param iWorkoutDate Work-out Date
  18936.      * @param dblWorkoutFactor Work-out Factor
  18937.      * @param dblPECS PECS to Work-out
  18938.      *
  18939.      * @return Z Spread from PECS to Work-out
  18940.      *
  18941.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  18942.      */

  18943.     public abstract double zSpreadFromPECS (
  18944.         final org.drip.param.valuation.ValuationParams valParams,
  18945.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18946.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18947.         final int iWorkoutDate,
  18948.         final double dblWorkoutFactor,
  18949.         final double dblPECS)
  18950.         throws java.lang.Exception;

  18951.     /**
  18952.      * Calculate Z Spread from PECS to Maturity
  18953.      *
  18954.      * @param valParams Valuation Parameters
  18955.      * @param csqs Market Parameters
  18956.      * @param vcp Valuation Customization Parameters
  18957.      * @param dblPECS PECS to Maturity
  18958.      *
  18959.      * @return Z Spread from PECS to Maturity
  18960.      *
  18961.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18962.      */

  18963.     public abstract double zSpreadFromPECS (
  18964.         final org.drip.param.valuation.ValuationParams valParams,
  18965.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18966.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18967.         final double dblPECS)
  18968.         throws java.lang.Exception;

  18969.     /**
  18970.      * Calculate Z Spread from PECS to Optimal Exercise
  18971.      *
  18972.      * @param valParams Valuation Parameters
  18973.      * @param csqs Market Parameters
  18974.      * @param vcp Valuation Customization Parameters
  18975.      * @param dblPECS PECS to Optimal Exercise
  18976.      *
  18977.      * @return Z Spread from PECS to Optimal Exercise
  18978.      *
  18979.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  18980.      */

  18981.     public abstract double zSpreadFromPECSToOptimalExercise (
  18982.         final org.drip.param.valuation.ValuationParams valParams,
  18983.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  18984.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  18985.         final double dblPECS)
  18986.         throws java.lang.Exception;

  18987.     /**
  18988.      * Calculate Z Spread from TSY Spread to Work-out
  18989.      *
  18990.      * @param valParams Valuation Parameters
  18991.      * @param csqs Market Parameters
  18992.      * @param vcp Valuation Customization Parameters
  18993.      * @param iWorkoutDate Work-out Date
  18994.      * @param dblWorkoutFactor Work-out Factor
  18995.      * @param dblTSYSpread TSY Spread to Work-out
  18996.      *
  18997.      * @return Z Spread from TSY Spread to Work-out
  18998.      *
  18999.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  19000.      */

  19001.     public abstract double zSpreadFromTSYSpread (
  19002.         final org.drip.param.valuation.ValuationParams valParams,
  19003.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19004.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19005.         final int iWorkoutDate,
  19006.         final double dblWorkoutFactor,
  19007.         final double dblTSYSpread)
  19008.         throws java.lang.Exception;

  19009.     /**
  19010.      * Calculate Z Spread from TSY Spread to Maturity
  19011.      *
  19012.      * @param valParams Valuation Parameters
  19013.      * @param csqs Market Parameters
  19014.      * @param vcp Valuation Customization Parameters
  19015.      * @param dblTSYSpread TSY Spread to Maturity
  19016.      *
  19017.      * @return Z Spread from TSY Spread to Maturity
  19018.      *
  19019.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  19020.      */

  19021.     public abstract double zSpreadFromTSYSpread (
  19022.         final org.drip.param.valuation.ValuationParams valParams,
  19023.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19024.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19025.         final double dblTSYSpread)
  19026.         throws java.lang.Exception;

  19027.     /**
  19028.      * Calculate Z Spread from TSY Spread to Optimal Exercise
  19029.      *
  19030.      * @param valParams Valuation Parameters
  19031.      * @param csqs Market Parameters
  19032.      * @param vcp Valuation Customization Parameters
  19033.      * @param dblTSYSpread TSY Spread to Optimal Exercise
  19034.      *
  19035.      * @return Z Spread from TSY Spread to Optimal Exercise
  19036.      *
  19037.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  19038.      */

  19039.     public abstract double zSpreadFromTSYSpreadToOptimalExercise (
  19040.         final org.drip.param.valuation.ValuationParams valParams,
  19041.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19042.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19043.         final double dblTSYSpread)
  19044.         throws java.lang.Exception;

  19045.     /**
  19046.      * Calculate Z Spread from Yield to Work-out
  19047.      *
  19048.      * @param valParams Valuation Parameters
  19049.      * @param csqs Market Parameters
  19050.      * @param vcp Valuation Customization Parameters
  19051.      * @param iWorkoutDate Work-out Date
  19052.      * @param dblWorkoutFactor Work-out Factor
  19053.      * @param dblYield Yield to Work-out
  19054.      *
  19055.      * @return Z Spread from Yield to Work-out
  19056.      *
  19057.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  19058.      */

  19059.     public abstract double zSpreadFromYield (
  19060.         final org.drip.param.valuation.ValuationParams valParams,
  19061.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19062.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19063.         final int iWorkoutDate,
  19064.         final double dblWorkoutFactor,
  19065.         final double dblYield)
  19066.         throws java.lang.Exception;

  19067.     /**
  19068.      * Calculate Z Spread from Yield to Maturity
  19069.      *
  19070.      * @param valParams Valuation Parameters
  19071.      * @param csqs Market Parameters
  19072.      * @param vcp Valuation Customization Parameters
  19073.      * @param dblYield Yield to Maturity
  19074.      *
  19075.      * @return Z Spread from Yield to Maturity
  19076.      *
  19077.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  19078.      */

  19079.     public abstract double zSpreadFromYield (
  19080.         final org.drip.param.valuation.ValuationParams valParams,
  19081.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19082.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19083.         final double dblYield)
  19084.         throws java.lang.Exception;

  19085.     /**
  19086.      * Calculate Z Spread from Yield to Optimal Exercise
  19087.      *
  19088.      * @param valParams Valuation Parameters
  19089.      * @param csqs Market Parameters
  19090.      * @param vcp Valuation Customization Parameters
  19091.      * @param dblYield Yield to Optimal Exercise
  19092.      *
  19093.      * @return Z Spread from Yield to Optimal Exercise
  19094.      *
  19095.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  19096.      */

  19097.     public abstract double zSpreadFromYieldToOptimalExercise (
  19098.         final org.drip.param.valuation.ValuationParams valParams,
  19099.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19100.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19101.         final double dblYield)
  19102.         throws java.lang.Exception;

  19103.     /**
  19104.      * Calculate Z Spread from Yield Spread to Work-out
  19105.      *
  19106.      * @param valParams Valuation Parameters
  19107.      * @param csqs Market Parameters
  19108.      * @param vcp Valuation Customization Parameters
  19109.      * @param iWorkoutDate Work-out Date
  19110.      * @param dblWorkoutFactor Work-out Factor
  19111.      * @param dblYieldSpread Yield Spread to Work-out
  19112.      *
  19113.      * @return Z Spread from Yield Spread to Work-out
  19114.      *
  19115.      * @throws java.lang.Exception Thrown if the Z Spread cannot be calculated
  19116.      */

  19117.     public abstract double zSpreadFromYieldSpread (
  19118.         final org.drip.param.valuation.ValuationParams valParams,
  19119.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19120.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19121.         final int iWorkoutDate,
  19122.         final double dblWorkoutFactor,
  19123.         final double dblYieldSpread)
  19124.         throws java.lang.Exception;

  19125.     /**
  19126.      * Calculate Z Spread from Yield Spread to Maturity
  19127.      *
  19128.      * @param valParams Valuation Parameters
  19129.      * @param csqs Market Parameters
  19130.      * @param vcp Valuation Customization Parameters
  19131.      * @param dblYieldSpread Yield Spread to Maturity
  19132.      *
  19133.      * @return Z Spread from Yield Spread to Maturity
  19134.      *
  19135.      * @throws java.lang.Exception Thrown if Z Spread cannot be calculated
  19136.      */

  19137.     public abstract double zSpreadFromYieldSpread (
  19138.         final org.drip.param.valuation.ValuationParams valParams,
  19139.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19140.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19141.         final double dblYieldSpread)
  19142.         throws java.lang.Exception;

  19143.     /**
  19144.      * Calculate Z Spread from Yield Spread to Optimal Exercise
  19145.      *
  19146.      * @param valParams Valuation Parameters
  19147.      * @param csqs Market Parameters
  19148.      * @param vcp Valuation Customization Parameters
  19149.      * @param dblYieldSpread Yield Spread to Optimal Exercise
  19150.      *
  19151.      * @return Z Spread from Yield Spread to Optimal Exercise
  19152.      *
  19153.      * @throws java.lang.Exception Thrown if Yield Spread cannot be calculated
  19154.      */

  19155.     public abstract double zSpreadFromYieldSpreadToOptimalExercise (
  19156.         final org.drip.param.valuation.ValuationParams valParams,
  19157.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19158.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19159.         final double dblYieldSpread)
  19160.         throws java.lang.Exception;

  19161.     /**
  19162.      * Calculate the full set of Bond RV Measures from the Price Input
  19163.      *
  19164.      * @param valParams ValuationParams
  19165.      * @param pricerParams Pricing Parameters
  19166.      * @param csqs Bond market parameters
  19167.      * @param vcp Valuation Customization Parameters
  19168.      * @param wi Work out Information
  19169.      * @param dblPrice Input Price
  19170.      *
  19171.      * @return Bond RV Measure Set
  19172.      */

  19173.     public abstract org.drip.analytics.output.BondRVMeasures standardMeasures (
  19174.         final org.drip.param.valuation.ValuationParams valParams,
  19175.         final org.drip.param.pricer.CreditPricerParams pricerParams,
  19176.         final org.drip.param.market.CurveSurfaceQuoteContainer csqs,
  19177.         final org.drip.param.valuation.ValuationCustomizationParams vcp,
  19178.         final org.drip.param.valuation.WorkoutInfo wi,
  19179.         final double dblPrice);

  19180.     /**
  19181.      * Display all the coupon periods onto stdout
  19182.      *
  19183.      * @throws java.lang.Exception Thrown if the coupon periods cannot be displayed onto stdout
  19184.      */

  19185.     public abstract void showPeriods()
  19186.         throws java.lang.Exception;
  19187. }