Risk budget estimators: private API
PortfolioOptimisers.RkbE_Rkb — Type
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
RiskBudgetEstimatorRiskBudgetrisk_budget_constraintsBtE_Bt_VecOptBtE_Bt: the threshold family's alias, which does carry a vector arm.