No Risk
PortfolioOptimisers.NoRisk — Type
struct NoRisk{__T_settings} <: RiskMeasureRisk measure that contributes no risk.
NoRisk measures nothing: its functor returns zero and its optimisation formulation adds a zero risk expression. It exists so that a risk-taking optimiser can express a problem that genuinely has no risk term, without a vestigial one changing the model class.
Fields
settings: Risk measure settings.
Constructors
NoRisk(; settings::RiskMeasureSettings = RiskMeasureSettings()) -> NoRiskKeywords correspond to the struct's fields.
Details
MeanRisk requires a risk measure, so an objective that ignores risk — MaximumReturn — would otherwise still build the default Variance term. That term is discarded by the objective, but it drags second-order cone constraints into the model, forcing a conic solver on a problem that is a linear program. NoRisk keeps such problems linear.
Two families need this:
- The robust best-characteristic portfolios of [4] — the $1/N$, quintile and inverse-volatility portfolios — which are linear programs (see
CharacteristicUncertaintySet). - The global maximum return portfolio (GMRP),
maximize μᵀw subject to w ≥ 0, 1ᵀw = 1.
Notes
NoRisk is only coherent under an objective that does not consult risk. MeanRisk rejects it with MinimumRisk (whose objective would be identically zero, so any feasible portfolio would be optimal) and with MaximumRatio (whose risk-normalisation constraint would become vacuous, leaving the model unbounded). Use it with MaximumReturn, or with MaximumUtility where the risk-aversion term drops out.
Setting settings.ub is legal but pointless: the bound applies to a quantity that is always zero.
Functor
(r::NoRisk)(x::VecNum)Returns zero, with the element type of the portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> r = NoRisk()NoRisk settings ┼ RiskMeasureSettings │ scale ┼ Float64: 1.0 │ ub ┼ nothing │ rke ┴ Bool: truejulia> r([0.1, -0.2, 0.05])0.0Related
References
- [4]
- R. Zhou and D. P. Palomar. Understanding the Quintile Portfolio. IEEE Transactions on Signal Processing 68, 4030–4040 (2020).