Calculates the (possibly constrained) portfolio on the Efficient Frontier which offers the maximum expected return from the set of portfolios which are selected from the Efficient Frontier by the investors utility function.
The optimal portfolio on the Efficient Frontier selected by the Investors Utility function with the highest expected return. If no optimal portfolio was found (i.e. no portfolio was selected from the Efficient Frontier by the investors utility function intersecting) then this method will return an empty array of dimension 2.
Further Illustration
Once the investors utility function is set, it may select none, one or many portfolios on the Efficient Frontier which are in accordance with the investors risk/reward profile. These portfolio(s) will have differing expected returns and this method will return the portfolio from the set selected which has the highest expected return. That is, we evaluate the portfolio which lies on an intersection of the utility function and the Efficient Frontier which represents the portfolio with the highest expected return.
Returned Portfolio
This method returns an array of the weights of the assets within the portfolio with the maximum expected return, within the set of (optimal) portfolio(s) selected from the Efficient Frontier. The first term of the array is the weight of the first asset within the collection of assets from which the portfolios can be selected, the second term is the weight of the second term and so on.
Methods which should be called prior to this method
Before this method is called you will be required to call three methods which set three private fields. These three methods are:
When the Investors Utility Function never cross the Efficient Frontier
This methods find the set of optimal portfolio by finding the points at which the Efficient Frontier and the investor's utility function cross. If over the considered range of the expected returns the two curves do not cross then either the investors utility function is above or below the Efficient Frontier over the range of expected returns considered. In these two cases one of the following two exceptions will be thrown:
In the case when the AboveException is thrown the follow two modifications of the problem are equally justified:
Suitable values of the Expected Return Parameter
For a given set of assets with possibly constrained asset weights there will correspond a range of values of the expected return over which the (constrained) Efficient Frontier exists. Naturally the range of the expected return about which the optimal portfolios are sort since these optimal portfolios lie on the Efficient Frontier must lie within this range in which the Efficient Frontier exists. You are able to evaluate this continuous range of expected returns for which the Efficient Frontier exists by calling the methods MinFrontierReturn and MaxFrontierReturn, in order to evaluate the upper and lower bounds respectively. If you are considering the constrained case then before evaluating the range of which the Efficient Frontier exists you should have set the constraints on the asset weights by calling SetConstraints.
Exception Type | Condition |
---|---|
EfficientFrontierNotCalculatedException | Thrown if the Efficient Frontier is not been constructed. That is, the method CalculateEfficientFrontier has not been called. In order remedy the situation please evaluated the Efficient Frontier using the method CalculateEfficientFrontier over a range of expected returns equal to or larger than the range considered her over which the optimal portfolio is sort. Once this process is complete you may re-apply this method. |
UtilityFunctionNotInitializedException | Thrown if Investors Utility function is not set. In order to set the Investors Utility function you will need to call one of the methods: SetUtilityFunctionInterp or SetUtilityFunctionPoly. Note that the range of the expected returns over which the Investors Utility function is given should be equal to or larger than the range of expected return used here over which the optimal portfolio is sort. Once the Investors Utility function has been set of a suitable range you will be able to re-apply this method. |
AboveException | Thrown if the investors utility function is above the Efficient Frontier for all values of the expected return (see above remarks for further explanation). |
BelowException | Thrown if the investors utility function is below the Efficient Frontier for all values of the expected return (see above remarks for further explanation). |
PortfolioException | Thrown if the number of optimal portfolios found is more than 100. In this instance the investors utility function is probably very close if not identical to the Efficient Frontier over at least a section of the range of the expected returns considered. To address this issue to utility function should be refined so that it is more clearly distinguishable from the Efficient Frontier. Since it is very likely that modulo interpolation errors the utility function is identical to the Efficient Frontier over a section of the expected returns considered which causes the method at present in principal to fail. Anyway, once the Investors Utility function has been refined you will be able to re-apply this method. |
Markowitz Class | WebCab.COM.Finance.Portfolio Namespace