Budget Constraints
PortfolioOptimisers.BudgetConstraintEstimator Type
abstract type BudgetConstraintEstimator <: JuMPConstraintEstimatorAbstract supertype for all budget constraint estimators.
Related
sourcePortfolioOptimisers.Num_BgtCE Type
const Num_BgtCE = Union{<:Number, <:BudgetConstraintEstimator}Union of scalar budget values and BudgetConstraintEstimator instances.
PortfolioOptimisers.BudgetEstimator Type
abstract type BudgetEstimator <: BudgetConstraintEstimatorAbstract supertype for estimators that specify the portfolio budget range (sum of weights).
Related
sourcePortfolioOptimisers.BudgetCostEstimator Type
abstract type BudgetCostEstimator <: BudgetConstraintEstimatorAbstract supertype for estimators that specify transaction cost budgets.
Related
sourcePortfolioOptimisers.BudgetRange Type
struct BudgetRange{__T_lb, __T_ub} <: BudgetEstimatorSpecifies the portfolio budget constraint as a closed interval lb or ub must be provided.
Fields
lb::Option{<:Number}: Lower bound on the sum of weights. Defaults to1.0.ub::Option{<:Number}: Upper bound on the sum of weights. Defaults to1.0.
Constructors
BudgetRange(; lb::Option{<:Number} = 1.0, ub::Option{<:Number} = 1.0) -> BudgetRangeValidation
At least one of
lb,ubmust not benothing.lbandubmust be finite.lb <= ubwhen both are provided.
Related
sourcePortfolioOptimisers.BudgetCosts Type
struct BudgetCosts{__T_bgt, __T_w, __T_vp, __T_vn, __T_up, __T_un} <: BudgetCostEstimatorBudget constraint that accounts for linear transaction costs. Models the portfolio budget as:
where
Fields
bgt::Num_BgtRg: Budget target or range.w::VecNum: Initial portfolio weights (current holdings).vp::Num_VecNum: Cost coefficients for positive weight changes. Non-negative.vn::Num_VecNum: Cost coefficients for negative weight changes. Non-negative.up::Num_VecNum: Upper limit on positive weight changes. Non-negative.un::Num_VecNum: Upper limit on negative weight changes. Non-negative.
Constructors
BudgetCosts(;
bgt::Num_BgtRg = 1.0,
w::VecNum,
vp::Num_VecNum = 1.0,
vn::Num_VecNum = 1.0,
up::Num_VecNum = 1.0,
un::Num_VecNum = 1.0
) -> BudgetCostsRelated
sourcePortfolioOptimisers.BudgetMarketImpact Type
struct BudgetMarketImpact{__T_bgt, __T_w, __T_vp, __T_vn, __T_up, __T_un, __T_beta} <: BudgetCostEstimatorBudget constraint that accounts for non-linear (power-law) market impact costs. Extends BudgetCosts with a beta exponent controlling the concavity of the market impact function.
Fields
bgt::Num_BgtRg: Budget target or range.w::VecNum: Initial portfolio weights.vp::Num_VecNum: Cost coefficients for positive weight changes. Non-negative.vn::Num_VecNum: Cost coefficients for negative weight changes. Non-negative.up::Num_VecNum: Upper limit on positive weight changes. Non-negative.un::Num_VecNum: Upper limit on negative weight changes. Non-negative.beta::Number: Market impact exponent in(0, 1].
Related
sourcePortfolioOptimisers.set_budget_constraints! Function
set_budget_constraints!(args...)
set_budget_constraints!(model::JuMP.Model, val::Number, w::VecNum)
set_budget_constraints!(model::JuMP.Model, bgt::BudgetRange, w::VecNum)
set_budget_constraints!(model::JuMP.Model, bgt::BudgetCosts, w::VecNum)
set_budget_constraints!(model::JuMP.Model, bgt::BudgetMarketImpact, w::VecNum)Add budget constraints to the JuMP optimisation model.
The fall-through method does nothing. The concrete methods add the appropriate portfolio budget constraint based on the type of budget specification provided.
Arguments
model::JuMP.Model: The JuMP optimisation model.val::Number: Fixed budget scalar.bgt: Budget constraint specification (BudgetRange,BudgetCosts, orBudgetMarketImpact).w: Portfolio weight vector.
Returns
nothing.
Related
source