WebCab Portfolio Demo
v4.2
(J2EE Edition)

com.webcab.ejb.finance.portfolio
Interface SolveFrontierLocal

All Superinterfaces:
EJBLocalObject

public interface SolveFrontierLocal
extends EJBLocalObject

Local interface of SolveFrontier. This interface provides the same functionality as the SolveFrontier remote interface.

See Also:
SolveFrontier

Method Summary
 double findReturn(double[] riskUtility, double[] returnUtility, double[] riskAtPoints, double[] returnAtPoints, double precision)
          Method findReturn(double[], double[], double[], double[], double) as defined in the SolveFrontier remote interface.
 double findReturn(double risk, double[] riskAtPoints, double[] returnAtPoints)
          Method findReturn(double, double[], double[]) as defined in the SolveFrontier remote interface.
 double findRisk(double[] riskUtility, double[] returnUtility, double[] riskPoints, double[] returnPoints, double precision)
          Method findRisk(double[], double[], double[], double[], double) as defined in the SolveFrontier remote interface.
 double findRisk(double expectedReturn, double[] riskPoints, double[] returnPoints)
          Method findRisk(double, double[], double[]) as defined in the SolveFrontier remote interface.
 
Methods inherited from interface javax.ejb.EJBLocalObject
getEJBLocalHome, getPrimaryKey, isIdentical, remove
 

Method Detail

findRisk

public double findRisk(double expectedReturn,
                       double[] riskPoints,
                       double[] returnPoints)
                throws InterpolationException,
                       ReferencedServiceException,
                       SolveFrontierDemoException
Method findRisk(double, double[], double[]) as defined in the SolveFrontier remote interface.

Description copied from the SolveFrontier interface:

Evaluates the risk of the portfolio on the Efficient Frontier which has a given expected return.

Remarks:

  1. Since the Efficient Frontier is monotonically increasing in risk against return any possible value of the expected return will correspond on a unique value of the risk of the portfolio on the Efficient Frontier.
  2. For details concerning how to evaluated the weights of the assets within the portfolio on the Efficient Frontier with a given maximum risk please see the SolveFrontier class API documentation.

Notes on the input Parameters

A set of points on the Efficient Frontier should be evaluated using methods from the Markowitz Enterprise JavaBean, in particular:

  1. riskPoints - the values of the (known) risk points on the Efficient Frontier are evaluated using the method Markowitz.portfolioRisksEfficientFrontier(double[][])
  2. returnPoints - the values of the (known) return points on the Efficient Frontier are evaluated using the method Markowitz.expectedReturnEfficientFrontier()

Note: Alternatively you may choose to use the complex type PointsOnEfficientFrontier, and the related methods from the portfolio class in order to find the set of points on the efficient frontier for which it is evaluated.

Parameters:
expectedReturn - the value of the expected return of the portfolio on the Efficient Frontier for which the risk will be evaluated.
riskPoints - an array of doubles where the first term is the lowest value of the risk from the set of points at which the Efficient Frontier is known, the second term is the next lowest value of the risk and so on.
returnPoints - an array of doubles where the first term is the lowest value of the return from the set of points at which the Efficient Frontier is known, the second term is the next lowest values of the return and so on.
Throws:
InterpolationException - thrown when there does not correspond a point on the interpolation function corresponding to the parameters given.
ReferencedServiceException - thrown if an error occurs while invoking methods of another Enterprise JavaBean.
SolveFrontierDemoException
See Also:
findRisk(double[], double[], double[], double[], double) - evaluates the value of the risk on the Efficient Frontier where the expected return desire is given as a function of the risk. If this function is a constant function in risk then it reduces to the special case implemented here., SolveFrontier.findRisk(double, double[], double[])

findRisk

public double findRisk(double[] riskUtility,
                       double[] returnUtility,
                       double[] riskPoints,
                       double[] returnPoints,
                       double precision)
                throws SolveFrontierException,
                       InterpolationException,
                       SolveFrontierDemoException
Method findRisk(double[], double[], double[], double[], double) as defined in the SolveFrontier remote interface.

Description copied from the SolveFrontier interface:

Evaluates a value of the risk of the portfolio on the Efficient Frontier which is optimal with respect to the investors (Risk) Utility function which is a function of risk. Once the risk is known then the corresponding value of the expected return can be evaluated using the method findReturn(double, double[], double[]).

Notes on the Efficient Frontier input parameters

A set of points on the Efficient Frontier should be evaluated using methods from the Markowitz Enterprise JavaBean, in particular:

  1. riskPoints - the values of the (known) risk points on the Efficient Frontier are evaluated using the method Markowitz.portfolioRisksEfficientFrontier(double[][])
  2. returnPoints - the values of the (known) return points on the Efficient Frontier are evaluated using the method Markowitz.expectedReturnEfficientFrontier()

Note: Alternatively you may choose to use the complex type PointsOnEfficientFrontier, and the related methods from the portfolio class in order to find the set of points on the efficient frontier for which it is evaluated.

The parameters of the Investors Utility Function

The (Risk) Utility function is given by a set of points which lie on the Utility curve. The (Risk) Utility function is assumed to take the same range of values of the risk parameter as the range of the risk over which the efficient frontier is defined. It is essential within the formation of this approach that the (Risk) Utility function is a function of risk. In particular, if we are given a value of the risk then there corresponds a unique value of the expected return. In practice, since we are applying Cubic spline method in order to interpolate the (Risk) Utility function from a finite set of points it is enough to ensure that from this finite set of points there does not exist two distinct points which have the same value of the risk.

Advantages of a General Utility Function

A more general Utility function allows the investor to express the likely fact that as the risk increase they desirer a higher expected level of return. In the case when the (Risk) Utility function returns a constant value of the expected return this methods reduced to the case considered in findRisk(double, double[], double[]).

Parameters:
riskUtility - an array of double where the first term is the lowest value of the risk from the set of points at which the investors risk/reward Utility function is given, the second term is the next lowest value of the risk and so on.
returnUtility - an array of double where the first term is the lowest value of the expected return from the set of points at which the investors risk/reward Utility function is given, the second term is the next lowest value of the expected return and so on.
riskPoints - an array of doubles where the first term is the lowest value of the risk from the set of points at which the Efficient Frontier is known, the second term is the next lowest value of the risk and so on.
returnPoints - an array of doubles where the first term is the lowest value of the return from the set of points at which the Efficient Frontier is known, the second term is the next lowest values of the return and so on.
precision - the precision for which the value of the risk of an optimal portfolio will be returned. Since there may be more than one optimal portfolio we used the term `an optimal'. In particular, if the precision is set to 0.001 then the risk will be returned to within 0.001 etc, of the `exact' solution.
Throws:
InterpolationException - thrown when there does not correspond a points on the interpolation function corresponding to the parameters given.
SolveFrontierException - thrown if no value is found for the given input parameters.
SolveFrontierDemoException
See Also:
findRisk(double, double[], double[]) - this is a special case of this method which corresponds to the case where the (Risk) Utility function is a constant function which states that the investor requires a given expected return and is not influenced by the level of risk., SolveFrontier.findRisk(double[], double[], double[], double[], double)

findReturn

public double findReturn(double risk,
                         double[] riskAtPoints,
                         double[] returnAtPoints)
                  throws InterpolationException,
                         ReferencedServiceException,
                         SolveFrontierDemoException
Method findReturn(double, double[], double[]) as defined in the SolveFrontier remote interface.

Description copied from the SolveFrontier interface:

Evaluates the expected return of a portfolio on the efficient frontier which has a given level of risk.

Remark:

  1. Since the Efficient Frontier is monotonically increasing in risk against return any possible value of the expected return will correspond on a unique value of the risk of the portfolio on the Efficient Frontier.
  2. For details concerning how to evaluated the weights of the assets within the portfolio on the Efficient Frontier with a given expected return please see the SolveFrontier class API documentation.

Notes on the input Parameters

A set of points on the Efficient Frontier should be evaluated using methods from the Markowitz Enterprise JavaBean, in particular:

  1. riskPoints - the values of the (known) risk points on the Efficient Frontier are evaluated using the method Markowitz.portfolioRisksEfficientFrontier(double[][])
  2. returnPoints - the values of the (known) return points on the Efficient Frontier are evaluated using the method Markowitz.expectedReturnEfficientFrontier()

Note: Alternatively you may choose to use the complex type PointsOnEfficientFrontier, and the related methods from the portfolio class in order to find the set of points on the efficient frontier for which it is evaluated.

Parameters:
risk - the value of the portfolio risk of a portfolio on the efficient frontier for which the corresponding expected return will be evaluated.
Throws:
InterpolationException - thrown when there does not correspond a points on the interpolation function corresponding to the parameters given.
ReferencedServiceException - thrown if an error occurs while invoking methods of another Enterprise JavaBean.
SolveFrontierDemoException
See Also:
findReturn(double[], double[], double[], double[], double) - evaluates the value of the expected return on the Efficient Frontier when the maximum risk is given as a function of the expected return. If this function is a constant function in the expected return then this methods reduces to the special case implemented here., SolveFrontier.findReturn(double, double[], double[])

findReturn

public double findReturn(double[] riskUtility,
                         double[] returnUtility,
                         double[] riskAtPoints,
                         double[] returnAtPoints,
                         double precision)
                  throws SolveFrontierException,
                         InterpolationException,
                         SolveFrontierDemoException
Method findReturn(double[], double[], double[], double[], double) as defined in the SolveFrontier remote interface.

Description copied from the SolveFrontier interface:

Evaluates a value of the expected return of the portfolio on the Efficient Frontier which is optimal with respect to the investors (Return) Utility function which is a function of the expected return. Once the expected return is known the corresponding value of the risk of the portfolio can be evaluated using the method findRisk(double, double[], double[]).

Notes on the Efficient Frontier input parameters

A set of points on the Efficient Frontier should be evaluated using methods from the Markowitz Enterprise JavaBean, in particular:

  1. riskPoints - the values of the (known) risk points on the Efficient Frontier are evaluated using the method Markowitz.portfolioRisksEfficientFrontier(double[][])
  2. returnPoints - the values of the (known) return points on the Efficient Frontier are evaluated using the method Markowitz.expectedReturnEfficientFrontier()

Note: Alternatively you may choose to use the complex type PointsOnEfficientFrontier, and the related methods from the portfolio class in order to find the set of points on the efficient frontier for which it is evaluated.

The parameters of the Investors Utility Function

The (Return) Utility function is given by a set of points which lie on the utility curve. The (Return) utility function is assumed to take the same range of values of the expected return parameter as the range of the expected return over which the Efficient Frontier is defined. It is essential within the formation of this approach that the (Return) Utility function is a function of the expected return. In particular, if we are given a value of the return then there corresponds a unique value of the risk. In practice, since we are applying a Cubic spline method in order to interpolate the (Return) Utility function from the finite set of points it is enough to ensure that from this set of points there does not exist two distinct points with have the same value of the return.

Advantages of a General Utility Function

A more general Utility function allows the investor to express the likely fact that as the expected return increase they may except a higher level of risk. In the case when the (Return) Utility function returns a constant value of the risk this methods reduced to the case considered in findReturn(double, double[], double[]).

Parameters:
riskUtility - an array of double where the first term is the lowest value of the risk from the set of points at which the investors risk/reward utility function is given, the second term is the next lowest value of the risk and so on.
returnUtility - an array of double where the first term is the lowest value of the expected return from the set of points at which the investors risk/reward utility function is given, the second term is the next lowest value of the expected return and so on.
precision - the precision for which the value of the risk of an optimal portfolio will be returned. Since there may be more than one optimal portfolio we used the term `an optimal'. In particular, if the precision is set to 0.001 then the risk will be returned to within 0.001 etc, of the `exact' solution.
Throws:
SolveFrontierException - thrown if no value is found for the given input parameters.
InterpolationException - thrown when there does not correspond a points on the interpolation function corresponding to the parameters given.
SolveFrontierDemoException
See Also:
findReturn(double, double[], double[]) - this is a special case of this method which corresponds to the case where the (Return) Utility function is a constant function which states that the investor will accept of given maximum risk and is not influence by the corresponding level of expected return., SolveFrontier.findReturn(double[], double[], double[], double[], double)

WebCab Portfolio Demo
v4.2
(J2EE Edition)