Skip to content
13

Equilibrium expected returns

PortfolioOptimisers.EquilibriumExpectedReturns Type
julia
struct EquilibriumExpectedReturns{__T_ce, __T_w, __T_l} <: AbstractShrunkExpectedReturnsEstimator

Container type for equilibrium expected returns estimators.

EquilibriumExpectedReturns encapsulates the covariance estimator, equilibrium weights, and risk aversion parameter for computing equilibrium expected returns (e.g., as in Black-Litterman).

Fields

  • ce: Covariance estimator.

  • w: Equilibrium weights vector features × 1.

  • l: Risk aversion parameter.

Constructors

julia
EquilibriumExpectedReturns(;
    ce::StatsBase.CovarianceEstimator = PortfolioOptimisersCovariance(),
    w::Option{<:VecNum} = nothing,
    l::Number = 1
) -> EquilibriumExpectedReturns

Keywords correspond to the struct's fields.

Validation

  • If w is not nothing, !isempty(w).

Propagated parameters

When factory is called on this type, the following @fprop-tagged fields are automatically propagated:

  • ce: Recursively updated via factory.

View parameters

When port_opt_view is called on this type, the following @vprop-tagged fields are automatically subset to the selected indices:

Examples

julia
julia> EquilibriumExpectedReturns()
EquilibriumExpectedReturns
  ce ┼ PortfolioOptimisersCovariance
     │   ce ┼ Covariance
     │      │    me ┼ SimpleExpectedReturns
     │      │       │   w ┴ nothing
     │      │    ce ┼ GeneralCovariance
     │      │       │   ce ┼ StatsBase.SimpleCovariance: StatsBase.SimpleCovariance(true)
     │      │       │    w ┴ nothing
     │      │   alg ┴ Full()
     │   mp ┼ MatrixProcessing
     │      │     pdm ┼ Posdef
     │      │         │      alg ┼ UnionAll: NearestCorrelationMatrix.Newton
     │      │         │   kwargs ┴ @NamedTuple{}: NamedTuple()
     │      │      dn ┼ nothing
     │      │      dt ┼ nothing
     │      │     alg ┼ nothing
     │      │   order ┴ NTuple{4, Symbol}: (:pdm, :dn, :dt, :alg)
   w ┼ nothing
   l ┴ Int64: 1

Related

source
Statistics.mean Method
julia
Statistics.mean(me::EquilibriumExpectedReturns, X::MatNum; dims::Int = 1, kwargs...)

Compute equilibrium expected returns from a covariance estimator, weights, and risk aversion.

This method computes equilibrium expected returns as λ * Σ * w, where λ is the risk aversion parameter, Σ is the covariance matrix, and w are the equilibrium weights. If w is not provided in the estimator, equal weights are used.

Mathematical definition

μ^eq=λΣ^w.

Where:

  • λ: Risk aversion parameter (me.l).

  • Σ^: N × N covariance matrix estimated from the data.

  • w: N × 1 equilibrium portfolio weights (equal weights if not provided).

Arguments

  • me: Equilibrium expected returns estimator.

  • X: Data matrix (observations × assets).

  • dims: Dimension along which to perform the computation.

  • kwargs...: Additional keyword arguments passed to the covariance estimator.

Returns

  • mu::ArrNum: Equilibrium expected returns vector.

Related

source