Description Usage Arguments Details Value Note Author(s) References Examples
These are wrapper functions that calculate optimal portfolios under the prior and posterior return distributions.
optimalPortfolios
works with a user-supplied optimization function,
though simple Markowitz minimum-risk optimization is done with solve.QP
from quadprog
if none is supplied.
optimalPortfolios.fPort
is a generic utility function which calculates optimal portfolios using routines from
the fPortfolio
package.
1 2 3 4 5 | optimalPortfolios(result, optimizer = .optimalWeights.simpleMV, ..., doPlot = TRUE,
beside = TRUE)
optimalPortfolios.fPort(result, spec = NULL, constraints = "LongOnly",
optimizer = "minriskPortfolio", inputData = NULL,
numSimulations = BLCOPOptions("numSimulations"))
|
result |
An object of class |
optimizer |
For |
spec |
Object of class |
inputData |
Time series data (any form that can be coerced into a |
constraints |
String of constraints that may be passed into |
numSimulations |
For COP results only - the number of posterior simulations to use in the optimization (large numbers here will likely cause the routine to fail) |
... |
Additional arguments to the optimization function |
doPlot |
A logical flag. Should barplots of the optimal portfolio weights be produced? |
beside |
A logical flag. If a barplot is generated, should the bars appear side-by side? If |
By default, optimizer
is a simple function that performs Markowitz optimization via
solve.QP
. In addition to a mean and variance, it takes an optional constraints
parameter that if supplied should hold a named list with all of the parameters that solve.QP
takes.
optimalPortfolios
will return a list with the following items:
priorPFolioWeights |
The optimal weights under the prior distribution |
postPFolioWeights |
The optimal weights under the posterior distribution |
optimalPortfolios.fPort
will return a similar list with 2 elements of class fPORTFOLIO
.
It is expected that optimalPortfolios
will be deprecated in future releases in favour of
optimalPortfolios.fPort
.
Francisco Gochez <fgochez@mango-solutions.com>
Wuertz, D., Chalabi, Y., Chen W., Ellis A. (2009); Portfolio Optimization with R/Rmetrics, Rmetrics eBook, Rmetrics Association and Finance Online, Zurich.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | ## Not run:
entries <- c(0.001005,0.001328,-0.000579,-0.000675,0.000121,0.000128,
-0.000445, -0.000437, 0.001328,0.007277,-0.001307,-0.000610,
-0.002237,-0.000989,0.001442,-0.001535, -0.000579,-0.001307,
0.059852,0.027588,0.063497,0.023036,0.032967,0.048039,-0.000675,
-0.000610,0.027588,0.029609,0.026572,0.021465,0.020697,0.029854,
0.000121,-0.002237,0.063497,0.026572,0.102488,0.042744,0.039943,
0.065994 ,0.000128,-0.000989,0.023036,0.021465,0.042744,0.032056,
0.019881,0.032235 ,-0.000445,0.001442,0.032967,0.020697,0.039943,
0.019881,0.028355,0.035064 ,-0.000437,-0.001535,0.048039,0.029854,
0.065994,0.032235,0.035064,0.079958 )
varcov <- matrix(entries, ncol = 8, nrow = 8)
mu <- c(0.08, 0.67,6.41, 4.08, 7.43, 3.70, 4.80, 6.60) / 100
pick <- matrix(0, ncol = 8, nrow = 3, dimnames = list(NULL, letters[1:8]))
pick[1,7] <- 1
pick[2,1] <- -1; pick[2,2] <- 1
pick[3, 3:6] <- c(0.9, -0.9, .1, -.1)
confidences <- 1 / c(0.00709, 0.000141, 0.000866)
views <- BLViews(pick, c(0.0525, 0.0025, 0.02), confidences, letters[1:8])
posterior <- posteriorEst(views, tau = 0.025, mu, varcov )
optimalPortfolios(posterior, doPlot = TRUE)
optimalPortfolios.fPort(posterior, optimizer = "tangencyPortfolio")
# An example based on one found in "Beyond Black-Litterman:Views on Non-normal Markets"
dispersion <- c(.376,.253,.360,.333,.360,.600,.397,.396,.578,.775) / 1000
sigma <- BLCOP:::.symmetricMatrix(dispersion, dim = 4)
caps <- rep(1/4, 4)
mu <- 2.5 * sigma
dim(mu) <- NULL
marketDistribution <- mvdistribution("mt", mean = mu, S = sigma, df = 5 )
pick <- matrix(0, ncol = 4, nrow = 1, dimnames = list(NULL, c("SP", "FTSE", "CAC", "DAX")))
pick[1,4] <- 1
vdist <- list(distribution("unif", min = -0.02, max = 0))
views <- COPViews(pick, vdist, 0.2, c("SP", "FTSE", "CAC", "DAX"))
posterior <- COPPosterior(marketDistribution, views)
optimalPortfolios.fPort(myPosterior, spec = NULL, optimizer = "minriskPortfolio",
inputData = NULL, numSimulations = 100 )
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.