Risk budget estimators: private API

PortfolioOptimisers.RkbE_RkbType
const RkbE_Rkb = Union{<:RiskBudgetEstimator, <:RiskBudget}

Alias for a risk budget estimator or result.

Matches either a RiskBudgetEstimator (specifying how to generate risk budget constraints) or a RiskBudget result (a pre-computed risk budget allocation). Used internally to accept either form in constraint generation dispatch.

There is no vector counterpart, and risk_budget_constraints has no vector method. A risk budget is one allocation over the whole universe, so an optimiser holds exactly one. This is the same reason WbE_Wb and FeesE_Fees are singular, and the reason TnE_Tn, LcE_Lc and PlCE_PlC are not: several turnover, linear or phylogeny constraints can hold at once, and each of those does carry a vector alias and a broadcast method.

The gap is a decision, not an omission. The routing targets that accumulate are (:lcse, :cte, :ple, :slt, :sst, :sglt, :sgst, :smtx, :sgmtx), and a risk budget's target :rkb is not among them, while four of the threshold's six targets — :slt, :sst, :sglt and :sgst — are, each holding a positional list with one entry per scenario or group block. That is why threshold_constraints carries a VecOptBtE_Bt method and this family carries none. Passing a vector here raises MethodError; no broader method takes it silently.

Related

source