Skip to content
13

Budget Constraints

PortfolioOptimisers.BudgetConstraintEstimator Type
julia
abstract type BudgetConstraintEstimator <: JuMPConstraintEstimator

Abstract supertype for all budget constraint estimators.

Related

source
PortfolioOptimisers.Num_BgtCE Type
julia
const Num_BgtCE = Union{<:Number, <:BudgetConstraintEstimator}

Union of scalar budget values and BudgetConstraintEstimator instances.

source
PortfolioOptimisers.BudgetEstimator Type
julia
abstract type BudgetEstimator <: BudgetConstraintEstimator

Abstract supertype for estimators that specify the portfolio budget range (sum of weights).

Related

source
PortfolioOptimisers.BudgetCostEstimator Type
julia
abstract type BudgetCostEstimator <: BudgetConstraintEstimator

Abstract supertype for estimators that specify transaction cost budgets.

Related

source
PortfolioOptimisers.BudgetRange Type
julia
struct BudgetRange{__T_lb, __T_ub} <: BudgetEstimator

Specifies the portfolio budget constraint as a closed interval [lb,ub] on the sum of weights. At least one of lb or ub must be provided.

Fields

  • lb::Option{<:Number}: Lower bound on the sum of weights. Defaults to 1.0.

  • ub::Option{<:Number}: Upper bound on the sum of weights. Defaults to 1.0.

Constructors

julia
BudgetRange(; lb::Option{<:Number} = 1.0, ub::Option{<:Number} = 1.0) -> BudgetRange

Validation

  • At least one of lb, ub must not be nothing.

  • lb and ub must be finite.

  • lb <= ub when both are provided.

Related

source
PortfolioOptimisers.BudgetCosts Type
julia
struct BudgetCosts{__T_bgt, __T_w, __T_vp, __T_vn, __T_up, __T_un} <: BudgetCostEstimator

Budget constraint that accounts for linear transaction costs. Models the portfolio budget as:

vpwp+vnwn[lb,ub]

where wp, wn are the positive and negative weight increments, and vp, vn are the corresponding cost coefficients.

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

julia
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
) -> BudgetCosts

Related

source
PortfolioOptimisers.BudgetMarketImpact Type
julia
struct BudgetMarketImpact{__T_bgt, __T_w, __T_vp, __T_vn, __T_up, __T_un, __T_beta} <: BudgetCostEstimator

Budget 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

source
PortfolioOptimisers.set_budget_constraints! Function
julia
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

Returns

  • nothing.

Related

source