Class FundingCapacity

All Implemented Interfaces:
Serializable, Product, TermStructureMonteCarloProduct, MonteCarloProduct

public class FundingCapacity extends AbstractProductComponent
Models the notional dependent survival probability and default compensation of a funding capacity (funding provider) using a piecewise constant function for the instantaneous survival probability. The piecewise constant instantaneous survival probability has to be provided by a SortedMap<Double, Double> instantaneouseSurvivalProbability. This map defines the mapping \( x_{i} \mapsto q_{i} \). Defining \[ q(x) = q_{i} \text{\ for\ } x \in (x_{i-1}-x_{i}] \] the getDefaultFactors method of this class calculates for a given argument \( (t,x) \):
the effective survival probability
\[ \frac{1}{x} \int_{a}^{a+x} q(\xi) \mathrm{d}\xi \], where a denotes the current level of fund provided by this capacity, and
the effective default compensation factor R, such that
\[ \frac{1}{x} \int_{a}^{a+R x} q(\xi) \mathrm{d}\xi \ = \ 1 \],
Important:
  • Since the class keeps track of past fundings used, it is mandatory that the factors are calculated in time-sequential order.
  • The map instantaneouseSurvivalProbability \( x_{i} \mapsto q_{i} \) defines the survival probability for \( (x_{i-1},x_{i} \). For funding above the last discretization point \( x_{n-1} \) a value of \( q_{n} = 0 \) is used. Hence, to avoid this extrapolation, set a very large value of \( x_{n-1} \), e.g. Double.MAX_VALLUE
Author:
Christian Fries
See Also:
Serialized Form
  • Constructor Details

  • Method Details

    • getDefaultFactors

      public FundingCapacity.DefaultFactors getDefaultFactors(double time, RandomVariable fundingRequirement)
      Apply a new funding requirement to this funding capacity and return the associated DefaultFactors.
      Parameters:
      time - The time at which the funding is required.
      fundingRequirement - The required funding.
      Returns:
      A DefaultFactors that reflects the amount that has to be contracted to secure the funding.
    • getDefaultCompensationForRequiredFunding

      @Deprecated public RandomVariable getDefaultCompensationForRequiredFunding(double time, RandomVariable fundingRequirement)
      Deprecated.
    • getSurvivalProbabilityRequiredFunding

      @Deprecated public RandomVariable getSurvivalProbabilityRequiredFunding(double time, RandomVariable fundingRequirement)
      Deprecated.
    • getCurrentFundingLevel

      public RandomVariable getCurrentFundingLevel()
    • queryUnderlyings

      public Set<String> queryUnderlyings()
      Description copied from class: AbstractProductComponent
      Returns a set of underlying names referenced by this product component (i.e., required for valuation) or null if none.
      Specified by:
      queryUnderlyings in class AbstractProductComponent
      Returns:
      A set of underlying names referenced by this product component (i.e., required for valuation) or null if none.
    • getValue

      public RandomVariable getValue(double evaluationTime, TermStructureMonteCarloSimulationModel model) throws CalculationException
      Description copied from interface: TermStructureMonteCarloProduct
      This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime. Note: For a lattice this is often the value conditional to evalutationTime, for a Monte-Carlo simulation this is the (sum of) value discounted to evaluation time. Cashflows prior evaluationTime are not considered.
      Specified by:
      getValue in interface TermStructureMonteCarloProduct
      Specified by:
      getValue in class AbstractTermStructureMonteCarloProduct
      Parameters:
      evaluationTime - The time on which this products value should be observed.
      model - The model used to price the product.
      Returns:
      The random variable representing the value of the product discounted to evaluation time
      Throws:
      CalculationException - Thrown if the valuation fails, specific cause may be available via the cause() method.