Title: | Black-Litterman Posterior Distribution |
---|---|
Description: | Posterior distribution in the Black-Litterman model is computed from a prior distribution given in the form of a time series of asset returns and a continuous distribution of views provided by the user as an external function. |
Authors: | Andrzej Palczewski [aut, cre], Jan Palczewski [aut], Alicja Gosiewska [ctb] |
Maintainer: | Andrzej Palczewski <[email protected]> |
License: | GNU General Public License version 3 |
Version: | 1.0.2 |
Built: | 2024-12-12 06:57:17 UTC |
Source: | CRAN |
BL_post_distr computes posterior distribution in the Black-Litterman model starting from arbitrary prior distribution
given as a discrete time series dat
and using views_distr
– submitted by the user distribution of views.
BL_post_distr (dat, returns_freq, prior_type = c("elliptic", NULL), market_portfolio, SR, P, q, tau, risk = c("CVAR", "DCVAR", "LSAD", "MAD"), alpha = NULL, views_distr, views_cov_matrix_type = c("diag", "full"), cov_matrix = NULL)
BL_post_distr (dat, returns_freq, prior_type = c("elliptic", NULL), market_portfolio, SR, P, q, tau, risk = c("CVAR", "DCVAR", "LSAD", "MAD"), alpha = NULL, views_distr, views_cov_matrix_type = c("diag", "full"), cov_matrix = NULL)
dat |
Time series of returns data; dat = cbind(rr, pk), where |
returns_freq |
Frequency of data in time series |
prior_type |
Type of distribution in time series |
market_portfolio |
Market portfolio – benchmark (equilibrium) portfolio (for details see Palczewski&Palczewski). |
SR |
Benchmark Sharpe ratio. |
P |
"Pick" matrix in the Black-Litterman model (see Palczewski&Palczewski). |
q |
Vector of investor's views on future returns in the Black-Litterman model (see Palczewski&Palczewski). |
tau |
Confidence parameter in the Black-Litterman model. |
risk |
Risk measure chosen for optimization; one of "CVAR", "DCVAR", "LSAD", "MAD", where "CVAR" – denotes Conditional Value-at-Risk (CVaR), "DCVAR" – denotes deviation CVaR, "LSAD" – denotes Lower Semi Absolute Deviation, "MAD" – denotes Mean Absolute Deviation. |
alpha |
Value of alpha quantile in the definition of risk measures CVAR and DCVAR. Can be any number when risk measure is parameter free. |
views_distr |
Distribution of views. An external function submitted by the user which computes densities of the distribution of views in given data points.
It is assumed implicitly that this distribution is an elliptical distribution (but any other distribution type can be used
provided calling to this function will preserve described below structure).
Call to that function has to be of the following form
|
views_cov_matrix_type |
Type of the covariance matrix of the distribution of views; can be: "diag" – diagonal part of the covariance matrix is used; "full" – the complete covariance matrix is used; (for details see Palczewski&Palczewski). |
cov_matrix |
Covariance matrix used for computation of market expected return ( |
post_distr |
a time series of data for posterior distribution; for a time series of length and assets |
it is a matrix , where columns (1:k) contain return vectors and the last column |
|
probabilities of returns. |
Palczewski, J., Palczewski, A., Black-Litterman Model for Continuous Distributions (2016). Available at SSRN: https://ssrn.com/abstract=2744621.
library(mvtnorm) k = 3 num =100 dat <- cbind(rmvnorm (n=num, mean = rep(0,k), sigma=diag(k)), matrix(1/num,num,1)) # a data sample with num rows and (k+1) columns for k assets; returns_freq = 52 # we assume that data frequency is 1 week w_m <- rep(1/k,k) # benchmark portfolio, a vector of length k, SR = 0.5 # Sharpe ratio Pe <- diag(k) # we assume that views are "absolute views" qe <- rep(0.05, k) # user's opinions on future returns (views) tau = 0.02 BL_post_distr(dat, returns_freq, NULL, w_m, SR, Pe, qe, tau, risk = "MAD", alpha = 0, views_distr = observ_normal, "diag", cov_matrix = NULL)
library(mvtnorm) k = 3 num =100 dat <- cbind(rmvnorm (n=num, mean = rep(0,k), sigma=diag(k)), matrix(1/num,num,1)) # a data sample with num rows and (k+1) columns for k assets; returns_freq = 52 # we assume that data frequency is 1 week w_m <- rep(1/k,k) # benchmark portfolio, a vector of length k, SR = 0.5 # Sharpe ratio Pe <- diag(k) # we assume that views are "absolute views" qe <- rep(0.05, k) # user's opinions on future returns (views) tau = 0.02 BL_post_distr(dat, returns_freq, NULL, w_m, SR, Pe, qe, tau, risk = "MAD", alpha = 0, views_distr = observ_normal, "diag", cov_matrix = NULL)
The function computes the vector of equilibrium returns implied by a market portfolio.
The vector of means for the mean-risk optimization problem is found by inverse optimization.
The optimization problem is:
subject to,
where is a risk measure – one from the list c("CVAR", "DCVAR", "LSAD", "MAD"),
is a time series of market returns,
is market portfolio,
is market expected return.
equilibrium_mean(dat, w_m, RM, risk = c("CVAR", "DCVAR", "LSAD", "MAD"), alpha = 0.95)
equilibrium_mean(dat, w_m, RM, risk = c("CVAR", "DCVAR", "LSAD", "MAD"), alpha = 0.95)
dat |
Time series of returns data; dat = cbind(rr, pk), where |
w_m |
Market portfolio. |
RM |
Market_expected_return. |
risk |
A risk measure, one from the list c("CVAR", "DCVAR", "LSAD", "MAD"). |
alpha |
Value of alpha quantile in the definition of risk measures CVAR and DCVAR. Can be any number when risk measure is parameter free. |
market_returns |
a vector of market returns obtain by inverse optimization; this is vector
|
from the description of this function. |
Palczewski, J., Palczewski, A., Black-Litterman Model for Continuous Distributions (2016). Available at SSRN: https://ssrn.com/abstract=2744621.
# In normal usage all data are supplemented by function BL_post_distr. library(mvtnorm) k = 3 num =100 dat <- cbind(rmvnorm (n=num, mean = rep(0,k), sigma=diag(k)), matrix(1/num,num,1)) # a data sample with num rows and (k+1) columns for k assets; w_m <- rep(1/k,k) # market portfolio. RM = 0.05 # market expected return. equilibrium_mean (dat, w_m, RM, risk = "CVAR", alpha = 0.95)
# In normal usage all data are supplemented by function BL_post_distr. library(mvtnorm) k = 3 num =100 dat <- cbind(rmvnorm (n=num, mean = rep(0,k), sigma=diag(k)), matrix(1/num,num,1)) # a data sample with num rows and (k+1) columns for k assets; w_m <- rep(1/k,k) # market portfolio. RM = 0.05 # market expected return. equilibrium_mean (dat, w_m, RM, risk = "CVAR", alpha = 0.95)
Function observ_normal computes density of normal distribution of views using the formula ,
where is a normalization constant (depends on the dimension of
and
).
observ_normal(x, q, covmat)
observ_normal(x, q, covmat)
x |
Data points matrix which collects in rows coordinates of points in which distribution density is computed. |
q |
Vector of investor's views. |
covmat |
Covariance matrix of the distribution. |
function returns a vector of distribution densities in data points x.
Palczewski, J., Palczewski, A., Black-Litterman Model for Continuous Distributions (2016). Available at SSRN: https://ssrn.com/abstract=2744621.
k =3 observ_normal (x = matrix(c(rep(0.5,k),rep(0.2,k)),k,2), q = matrix(0,k,1), covmat = diag(k))
k =3 observ_normal (x = matrix(c(rep(0.5,k),rep(0.2,k)),k,2), q = matrix(0,k,1), covmat = diag(k))
Function observ_powerexp computes density of power exponential distribution of views using the formula,
where is a normalization constant (depends on the dimension of
and
) and
is the dispersion matrix.
observ_powerexp(x, q, covmat, beta = 0.6)
observ_powerexp(x, q, covmat, beta = 0.6)
x |
Data points matrix which collects in rows coordinates of points in which distribution density is computed. |
q |
Vector of investor's views. |
covmat |
Covariance matrix of the distribution; dispersion matrix |
beta |
Shape parameter of the power exponential distribution. |
function returns a vector of distribution densities in data points x.
Gomez, E., Gomez-Villegas, M., Marin, J., A multivariate generalization of the power exponential family of distributions. Commun. Statist. Theory Methods, 27 (1998), 589–600. DOI: 10.1080/03610929808832115
k =3 observ_powerexp (x = matrix(c(rep(0.5,k),rep(0.2,k)),k,2), q = matrix(0,k,1), covmat = diag(k), beta = 0.6)
k =3 observ_powerexp (x = matrix(c(rep(0.5,k),rep(0.2,k)),k,2), q = matrix(0,k,1), covmat = diag(k), beta = 0.6)
Function observ_ts computes density of Student t-distribution of views using the formula ,
where is a normalization constant (depends on the dimension of
and
) and
is the dispersion matrix.
observ_ts(x, q, covmat, df = 5)
observ_ts(x, q, covmat, df = 5)
x |
Data points matrix which collects in rows coordinates of points in which distribution density is computed. |
q |
Vector of investor's views. |
covmat |
Covariance matrix of the distribution; dispersion matrix |
df |
Number of degrees of freedom of Students t-distribution. |
function returns a vector of observation distribution densities in data points x.
Kotz, S., Nadarajah, S., Multivariate t Distributions and Their Applications. Cambridge University Press, 2004.
k =3 observ_ts (x = matrix(c(rep(0.5,k),rep(0.2,k)),k,2), q = matrix(0,k,1), covmat = diag(k), df=5)
k =3 observ_ts (x = matrix(c(rep(0.5,k),rep(0.2,k)),k,2), q = matrix(0,k,1), covmat = diag(k), df=5)