# 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
Serialized Form
• ## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
class
FundingCapacity.DefaultFactors

• ## Constructor Summary

Constructors
Constructor
Description
FundingCapacity​(String currency, RandomVariable intialCapacity, SortedMap<Double,​Double> instantaneouseSurvivalProbability)

• ## Method Summary

Modifier and Type
Method
Description
RandomVariable
getCurrentFundingLevel()

RandomVariable
getDefaultCompensationForRequiredFunding​(double time, RandomVariable fundingRequirement)
Deprecated.
FundingCapacity.DefaultFactors
getDefaultFactors​(double time, RandomVariable fundingRequirement)
Apply a new funding requirement to this funding capacity and return the associated DefaultFactors.
RandomVariable
getSurvivalProbabilityRequiredFunding​(double time, RandomVariable fundingRequirement)
Deprecated.
RandomVariable
getValue​(double evaluationTime, TermStructureMonteCarloSimulationModel model)
This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime.
Set<String>
queryUnderlyings()
Returns a set of underlying names referenced by this product component (i.e., required for valuation) or null if none.

### Methods inherited from class net.finmath.montecarlo.interestrate.products.components.AbstractProductComponent

getExecutor, getValues

### Methods inherited from class net.finmath.montecarlo.interestrate.products.AbstractTermStructureMonteCarloProduct

getFactorDrift, getValue, getValueForModifiedData

### Methods inherited from class net.finmath.montecarlo.AbstractMonteCarloProduct

getCurrency, getValue, getValue, getValues, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, toString

### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

### Methods inherited from interface net.finmath.montecarlo.MonteCarloProduct

getCurrency, getValue, getValue, getValues, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData

• ## 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

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

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

public RandomVariable getCurrentFundingLevel()
• ### queryUnderlyings

public  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.