WebCab Bonds
v2.01
(J2SE Edition)

webcab.lib.finance.pricing.contracts.standard
Class Forward

java.lang.Object
  |
  +--webcab.lib.finance.pricing.contracts.GeneralContractCommon
        |
        +--webcab.lib.finance.pricing.contracts.FixedExchangeMomentsContractCommon
              |
              +--webcab.lib.finance.pricing.contracts.FixedExchangeMarkovContractCommon
                    |
                    +--webcab.lib.finance.pricing.contracts.standard.Forward
All Implemented Interfaces:
FixedExchangeMarkovContract, FixedExchangeMomentsContract, GeneralContract, Serializable

public class Forward
extends FixedExchangeMarkovContractCommon
implements FixedExchangeMarkovContract

Implements a forward contract. Implicitly it is considered to have an equity as underlying, so a PriceContext is required to be provided by the model.

If you want to use some other variable of the model as underlying (like a volatility or an interest rate) you can do it by specifying the name of the context identifying the variable. Usually you construct a compound model, each submodel providing one of the model's variables (a submodel for the price, another for the volatility etc.). The first parameter given to the submodel constructor is always a String which identifies the variable provided by that submodel (to be more precise it is the name of the context produced by the submodel - which will be a node in the context graph produced by the compound model - see Context and ContextGraph classes for details). If you give this name as a parameter in VanillaOption constructor the underlying will be the scalar value contained in context with that name. If the context does not contain a scalar value an exception will be thrown.

If you want to price a forward having another contract as underlying, you can give the contract as a parameter to the constructor. You should be aware of the fact that in this case you have a second order contract which makes the pricing algorithm hundreds of times slower than normal.

The payoff of this contract is:

See Also:
Serialized Form

Field Summary
 
Fields inherited from class webcab.lib.finance.pricing.contracts.GeneralContractCommon
BUYER_INITIATED, NO_EARLY_EXERCISE, SELLER_INITIATED
 
Constructor Summary
Forward(double settledPrice, double maturity, double amount, boolean isAmerican)
          Creates an equity forward.
Forward(GeneralContract underlyingContract, Pricer underlyingPricer, double settledPrice, double maturity, double amount, boolean isAmerican)
          Creates a forward on another contract.
Forward(String underlyingContextName, double settledPrice, double maturity, double amount, boolean isAmerican)
          Creates a forward on a generic asset for which a model is provided.
 
Method Summary
 int getEarlyExercise()
           
 double getExpiry()
          Returns the maturity time for this contract.
 double[] getMoments()
          Returns an array containing the moments of all cash exchanges (payoffs).
 int getNMoments()
          Returns the total number of payoffs for the contract.
 double getPayoff(int moment, ContextGraph contextGraph, StochasticDifferentialModel updatedModel)
          Returns the amount exchanged at a moment specified by its index in the payoff moments vector (the vector returned by method getMoments()).
 boolean needsUpdatedModel()
          Returns whether this contract is a multi-order contract.
 
Methods inherited from class webcab.lib.finance.pricing.contracts.FixedExchangeMarkovContractCommon
getPayoff
 
Methods inherited from class webcab.lib.finance.pricing.contracts.FixedExchangeMomentsContractCommon
getAccumulatedCashflow, getFirstMoment
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface webcab.lib.finance.pricing.contracts.FixedExchangeMomentsContract
getFirstMoment, getPayoff
 
Methods inherited from interface webcab.lib.finance.pricing.contracts.GeneralContract
getAccumulatedCashflow
 

Constructor Detail

Forward

public Forward(double settledPrice,
               double maturity,
               double amount,
               boolean isAmerican)
        throws InvalidParametersException
Creates an equity forward.

Parameters:
settledPrice - the price fixed at settlement (strike price)
maturity - the expiry time (in years, absolute time)
amount - the number of shares which will be bought or sold
isAmerican - specifies if the buyer can exercise the option earlier (American style option).
Throws:
InvalidParametersException

Forward

public Forward(String underlyingContextName,
               double settledPrice,
               double maturity,
               double amount,
               boolean isAmerican)
        throws InvalidParametersException
Creates a forward on a generic asset for which a model is provided.

Parameters:
underlyingContextName - the name of the context produced by the underlying variable (asset) model. This should be a submodel of the compound model used for pricing. This name is usually the first parameter in a model constructor.
settledPrice - the price fixed at settlement (strike price)
maturity - the expiry time (in years, absolute time)
amount - the number of shares which will be bought or sold
isAmerican - specifies if the buyer can exercise the option earlier (American style option).
Throws:
InvalidParametersException

Forward

public Forward(GeneralContract underlyingContract,
               Pricer underlyingPricer,
               double settledPrice,
               double maturity,
               double amount,
               boolean isAmerican)
        throws InvalidParametersException
Creates a forward on another contract. There is no need to provide a model for the contract. It will be automatically priced using the same model as for the option,

Parameters:
underlyingContract - an instance of the underlying contract
underlyingPricer - an instance of the pricer that will be used to evaluate the underlying contract.
settledPrice - the price fixed at settlement (strike price)
maturity - the expiry time (in years, absolute time)
amount - the number of shares which will be bought or sold
isAmerican - specifies if the buyer can exercise the option earlier (American style option).
Throws:
InvalidParametersException
Method Detail

getExpiry

public double getExpiry()
Description copied from interface: GeneralContract
Returns the maturity time for this contract.

Specified by:
getExpiry in interface GeneralContract
Specified by:
getExpiry in class GeneralContractCommon
Returns:
double

getMoments

public double[] getMoments()
Description copied from interface: FixedExchangeMomentsContract
Returns an array containing the moments of all cash exchanges (payoffs). It is required that this array is sorted in ascending order. The moments are given as absolute times, not time relative to settlement date.

Specified by:
getMoments in interface FixedExchangeMomentsContract
Specified by:
getMoments in class FixedExchangeMomentsContractCommon
Returns:
double[]

getNMoments

public int getNMoments()
Description copied from interface: FixedExchangeMomentsContract
Returns the total number of payoffs for the contract. This number must be equal with the length of the vector returned by the getMoments() method.

Specified by:
getNMoments in interface FixedExchangeMomentsContract
Specified by:
getNMoments in class FixedExchangeMomentsContractCommon
Returns:
int

getPayoff

public double getPayoff(int moment,
                        ContextGraph contextGraph,
                        StochasticDifferentialModel updatedModel)
                 throws BondsException
Description copied from interface: FixedExchangeMarkovContract
Returns the amount exchanged at a moment specified by its index in the payoff moments vector (the vector returned by method getMoments()). Only the current values of the variables are available (the current context graph).

Specified by:
getPayoff in interface FixedExchangeMarkovContract
Specified by:
getPayoff in class FixedExchangeMarkovContractCommon
Parameters:
moment - the index of the moment for which the payoff is computed (the current moment)
contextGraph - the context graph produced by the model. The context graph contains a snapshot of the models' variables at the current moment. See ContextGraph for information on how to search for a specific variable on which the contract is dependent.
updatedModel - an instance of the model used to price the contract. It can be used with a pricer to evaluate an underlying contract (in case we have a second-order contract like, for example, a bond option). The initial values for this models' variables are implicitly set to the current values. If the higher order contract is path dependent and needs the values from the underlying contract at previous moments of time, you need to set the initial values of the model to the values that existed at that moment of time. You can use the path to find the historic context and then use the updatedModel.setInitialContext() method to set the initial values.
Returns:
double which represents the cash flow resulting from a contract at a given point in time.
Throws:
BondsException

getEarlyExercise

public int getEarlyExercise()
Overrides:
getEarlyExercise in class GeneralContractCommon

needsUpdatedModel

public boolean needsUpdatedModel()
Description copied from interface: GeneralContract
Returns whether this contract is a multi-order contract. That is if it must evaluate another contract in order to compute the payoffs. If this is true, the updatedModel parameter of getAccumulatedCashflow() method is needed. This information is used by the pricing algorithm to decide if it is necessary to initialize the above mentioned parameter. The overall efficiency of the algorithm is improved if the initialization is not performed.

Specified by:
needsUpdatedModel in interface GeneralContract
Overrides:
needsUpdatedModel in class GeneralContractCommon
Returns:
if the return value is false the updatedModel parameter is not correctly initialized and must not be used.

WebCab Bonds
v2.01
(J2SE Edition)