epo {epo} | R Documentation |
Enhanced Portfolio Optimization (EPO)
Description
Computes the optimal portfolio allocation using the EPO method.
Usage
epo(
x,
signal,
lambda,
method = c("simple", "anchored"),
w,
anchor = NULL,
normalize = TRUE,
endogenous = TRUE
)
## Default S3 method:
epo(
x,
signal,
lambda,
method = c("simple", "anchored"),
w,
anchor = NULL,
normalize = TRUE,
endogenous = TRUE
)
## S3 method for class 'tbl'
epo(
x,
signal,
lambda,
method = c("simple", "anchored"),
w,
anchor = NULL,
normalize = TRUE,
endogenous = TRUE
)
## S3 method for class 'xts'
epo(
x,
signal,
lambda,
method = c("simple", "anchored"),
w,
anchor = NULL,
normalize = TRUE,
endogenous = TRUE
)
## S3 method for class 'matrix'
epo(
x,
signal,
lambda,
method = c("simple", "anchored"),
w,
anchor = NULL,
normalize = TRUE,
endogenous = TRUE
)
Arguments
x |
A data-set with asset returns. It should be a |
signal |
A |
lambda |
A |
method |
A |
w |
A |
anchor |
A |
normalize |
A |
endogenous |
A |
Value
The optimal allocation vector.
Examples
x <- diff(log(EuStockMarkets)) # stock returns
s <- colMeans(x) # it could be any signal
##################
### Simple EPO ###
##################
# Traditional Mean-Variance Analysis
epo(x = x, signal = s, lambda = 10, method = "simple", w = 0)
# 100% Shrinkage
epo(x = x, signal = s, lambda = 10, method = "simple", w = 1)
# 50% Classical MVO and 50% Shrinkage
epo(x = x, signal = s, lambda = 10, method = "simple", w = 0.5)
####################
### Anchored EPO ###
####################
benchmark <- rep(0.25, 4) # 1/N Portfolio
# Traditional Mean-Variance Analysis
epo(x = x, signal = s, lambda = 10, method = "anchored", w = 0.0, anchor = benchmark)
# 100% on the Anchor portfolio
epo(x = x, signal = s, lambda = 10, method = "anchored", w = 1.0, anchor = benchmark)
# Somewhere between the two worlds
epo(x = x, signal = s, lambda = 10, method = "anchored", w = 0.5, anchor = benchmark)