Returns the (possibly constrained) weights of the assets of the portfolio which offers the least risk for a given expected return.
An array of weights of the assets of the optimal portfolio with the given expected return. The first elements of the array corresponds to the weights of the first asset from which the portfolio can be constructed, the second terms corresponds to the weight of the second asset and so on.The asset weights of the portfolio at an arbitrary point of the Efficient Frontier via interpolation.
Stateful Nature of this method
This method is stateful because it requires that the interpolation points of the Efficient Frontier have already been evaluated by first called the method CalculateEfficientFrontier. Once the Efficient Frontier has been evaluated we are able to very efficiently evaluate the weights of the optimal portfolio for the range of expected returns considered. The reason being that the Efficient Frontier has already be constructed and here we are just `reading of' optimal portfolios within the range of expected returns consider which lie on the Efficient Frontier.
Setting Constraints on the weights of the Assets
By default the weights of the assets from which the portfolios on the Efficient Frontier
can be constructed can take any value within the closed interval [0,1]
.
However you are able to set an upper and lower constraint on each on the weights by called
the method SetConstraints behind constructing the Efficient Frontier by calling
CalculateEfficientFrontier, after which this method may be called.
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 value of the expected return about which the Efficient Frontier is evaluated must lie within this range. 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 the constraints should be set (by calling SetConstraints) before the range of the expected returns are evaluated.
Exception Type | Condition |
---|---|
EfficientFrontierNotCalculatedException | Thrown if the Efficient Frontier is not calculated. In order to evaluate the Efficient Frontier please call the method CalculateEfficientFrontier and then call this method again. |
NoSolutionException | Thrown if there are no portfolios with the desired value of the expected return within the Efficient Frontier constructed. If there exists a portfolio which can be constructed from the given collection of assets for the given desired expected return. Which is equivalent to asking whether there exists an asset within the collection of assets from which the portfolios can be constructed which has an expected return which is greater than or equal to the expected return of the portfolio desired. If this is the case then the Efficient Frontier should be re-evaluated using CalculateEfficientFrontier which a range of expected returns including the desired point, after which this method should be reapplied. If this is not the case then you will need additional assets to be included within the collection of assets from which the portfolio can be constructed which have an expected return which is greater than or equal to the expected return desired. When these asset(s) have been made available then you will be able to evaluate the Efficient Frontier on a range of value of the expected return which includes the desired point using CalculateEfficientFrontier after which you will be able to reapply this method. |
Markowitz Class | WebCab.Libraries.Finance.Portfolio Namespace | Markowitz.EfficientFrontier Overload List | CalculateEfficientFrontier - this method must be called previously in order to evaluate the Efficient Frontier.