CHI: Convex Hierarchical Portfolio

View source: R/CHI.R

CHIR Documentation

Convex Hierarchical Portfolio

Description

Computes the optimal CHI-MVO portfolio with full investment, weight and group constraints.

Usage

CHI(
  sigma,
  mu = NULL,
  meta_loss = c("MaxDiv", "ERC"),
  UB = NULL,
  LB = NULL,
  groups = NULL,
  group.UB = NULL,
  group.LB = NULL,
  gamma = 0,
  max_tilt = 1,
  groups_mat = NULL,
  verbose = F,
  ...
)

Arguments

sigma

a (N \times N) covariance matrix.

mu

a (N \times 1) vector of estimated returns.

meta_loss

a loss function of the most diversified hierarchical allocation graph.

UB

scalar or (N\times 1) vector of upper bound weight constraints.

LB

scalar or (N\times 1) vector of lower bound weight constraints.

groups

vector of group IDs. The names of the vector must be identical to the asset names.

group.UB

scalar or (N_groups\times 1) vector of upper bound group constraints.

group.LB

scalar or (N_groups\times 1) vector of lower bound group constraints.

gamma

risk aversion parameter. Default: gamma = 0 returns the minimum variance portfolio.

max_tilt

maximum percentage reduction in the effective number of assets. Default: max_tilt = 1 (no restriction).

groups_mat

Group constraints passed to MV.

verbose

Set to FALSE by default. If True, it returns the weights vector and the covariance matrix.

...

arguments passed to cluster::agnes method.

Details

The argument sigma is a covariance matrix.

Hierarchical clustering is performed using the cluster-package. If cluster_method == 'DIANA', the function cluster::diana is used to compute a cluster dendrogram, otherwise the function cluster::agnes(., method = cluster_method) is used. Default is single-linkage agglomerative nesting.

The argument meta_loss represents the loss function used to optimize the most diversified hierarchical allocation graph. The optimized hierarchy is used to filter sigma and mu. If the filtered covariance matrix is used in a mean variance portfolio optimizer, a CHI portfolio is constructed.

Value

A (N \times 1) vector of optimal portfolio weights.

Author(s)

Johann Pfitzinger

Examples

# Load returns of assets or portfolios
data("Industry_10")
rets <- Industry_10
sigma <- cov(rets)
CHI(sigma, UB = 0.15)


jpfitzinger/ClusterPortfolios documentation built on Sept. 27, 2024, 11:18 p.m.