WebCab Bonds
v2.01
(J2SE Edition)

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

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.Future
All Implemented Interfaces:
FixedExchangeMarkovContract, FixedExchangeMomentsContract, GeneralContract, Serializable

public class Future
extends FixedExchangeMarkovContractCommon
implements FixedExchangeMarkovContract

Implements a future 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 future which has 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:

The payoff is the same as for a forward, the only difference is that the future has a Mark To Market characteristic (provides a continuous cashflow, positive or negative, based on the current value of the underlying variable; this process is also called remargining - as it reduces the credit exposure of the contract).

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
Future(double settledPrice, double settlementTime, double maturity, double amount, double marginingPeriod, boolean isAmerican)
          Creates a future on an equity.
Future(GeneralContract underlyingContract, Pricer underlyingPricer, double settledPrice, double settlementTime, double maturity, double amount, double marginingPeriod, boolean isAmerican)
          Creates an option on another contract.
Future(String underlyingContextName, double settledPrice, double settlementTime, double maturity, double amount, double marginingPeriod, boolean isAmerican)
          Creates an option 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

Future

public Future(double settledPrice,
              double settlementTime,
              double maturity,
              double amount,
              double marginingPeriod,
              boolean isAmerican)
       throws InvalidParametersException
Creates a future on an equity.

Parameters:
settledPrice - the price fixed at settlement (strike price)
settlementTime - the moment when the futures contract becomes effective
maturity - the expiry time (in years, absolute time)
amount - the number of shares which will be bought or sold
marginingPeriod - the time interval between two successive Mark To Market cash exchanges (usually 1 day - it depends on the calendar you use how this translates into years - e.g. 1.0 / 260, where 260 is the number of bussiness days in a year)
isAmerican - specifies if the buyer can exercise the option earlier (American style option).
Throws:
InvalidParametersException

Future

public Future(String underlyingContextName,
              double settledPrice,
              double settlementTime,
              double maturity,
              double amount,
              double marginingPeriod,
              boolean isAmerican)
       throws InvalidParametersException
Creates an option 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)
settlementTime - the moment when the futures contract becomes effective
maturity - the expiry time (in years, absolute time)
amount - the number of shares which will be bought or sold
marginingPeriod - the time interval between two successive Mark To Market cash exchanges (usually 1 day - it depends on the calendar you use how this translates into years - e.g. 1.0 / 260, where 260 is the number of bussiness days in a year)
isAmerican - specifies if the buyer can exercise the option earlier (American style option).
Throws:
InvalidParametersException

Future

public Future(GeneralContract underlyingContract,
              Pricer underlyingPricer,
              double settledPrice,
              double settlementTime,
              double maturity,
              double amount,
              double marginingPeriod,
              boolean isAmerican)
       throws InvalidParametersException
Creates an option 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)
settlementTime - the moment when the futures contract becomes effective
maturity - the expiry time (in years, absolute time)
amount - the number of shares which will be bought or sold
marginingPeriod - the time interval between two successive Mark To Market cash exchanges (usually 1 day - it depends on the calendar you use how this translates into years - e.g. 1.0 / 260, where 260 is the number of bussiness days in a year)
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)