rc | R Documentation |
Return contribution of portfolio segments.
rc(R, weights, timestamp, segments = NULL,
R.bm = NULL, weights.bm = NULL,
method = "contribution",
linking.method = NULL,
allocation.minus.bm = TRUE,
tol = sqrt(.Machine$double.eps))
R |
returns: a numeric matrix |
weights |
the segment weights: a numeric matrix.
|
timestamp |
character or numeric |
segments |
character. If missing, column names of |
method |
a string |
linking.method |
|
allocation.minus.bm |
logical |
tol |
numeric: weights whose absolute value is below
|
If portfolio returns are to be compared against benchmark returns, benchmark returns/weights must be supplied:
R.bm |
returns: a numeric matrix |
weights.bm |
the segment weights: a numeric matrix.
|
The function computes segment contribution, potentially
over time. Returns and weights must be arranged in
matrices, with rows corresponding to time periods and
columns to portfolio segments. If weights
and
R
are not matrices (i.e. are atomic vectors), then
they are interpreted as cross-sectional weights/returns
for a single period.
Weights can be missing, in which case R
is
assumed to already comprise segment returns.
A list of two components
period_contributions |
a data.frame |
total_contributions |
a numeric vector |
Enrico Schumann
Jon A. Christopherson and David R. CariƱo and Wayne E. Ferson (2009), Portfolio Performance Measurement and Benchmarking, McGraw-Hill.
Feibel, Bruce (2003), Investment Performance Measurement, Wiley.
http://enricoschumann.net/R/packages/PMwR/manual/PMwR.html#return-contribution
returns
weights <- rbind(c( 0.25, 0.75),
c( 0.40, 0.60),
c( 0.25, 0.75))
R <- rbind(c( 1 , 0),
c( 2.5, -1.0),
c(-2 , 0.5))/100
rc(R, weights, segment = c("equities", "bonds"))
## contribution for btest:
## run a portfolio 10% equities, 90% bonds
P <- as.matrix(merge(DAX, REXP, by = "row.names")[, -1])
(bt <- btest(prices = list(P),
signal = function() c(0.1, 0.9),
convert.weights = TRUE,
initial.cash = 100))
W <- bt$position*P/bt$wealth
rc(returns(P)*W[-nrow(W), ])$total_contributions
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.