Skip to content
6

Buy-in Threshold Constraints

PortfolioOptimisers.BuyInThresholdEstimator Type
julia
struct BuyInThresholdEstimator{T1, T2, T3} <: AbstractConstraintEstimator
    val::T1
    key::T2
    dval::T3
end

Estimator for buy-in threshold portfolio constraints.

BuyInThresholdEstimator specifies a minimum allocation threshold for each asset in a portfolio. Only assets with weights above the threshold are allocated nonzero weight. The estimator supports asset-specific thresholds via dictionaries, pairs, or vectors of pairs, and validates input for non-emptiness.

Fields

  • val: Asset-specific threshold values, as a dictionary, pair, or vector of pairs.

  • key: (Optional) Key in the AssetSets to specify the asset universe for constraint generation. When provided, takes precedence over key field of AssetSets.

  • dval: Default threshold value applied to assets not explicitly specified in val.

Constructor

julia
BuyInThresholdEstimator(; val::EstValType_CustWb, dval::Option{<:Number} = nothing,
                         key::Option{<:AbstractString} = nothing)

Validation

  • If val is a AbstractDict or AbstractVector, !isempty(val).

  • If dval is provided, it is validated with assert_nonempty_nonneg_finite_val.

  • If key is provided, it is a non-empty string.

Examples

julia
julia> BuyInThresholdEstimator(; val = Dict("A" => 0.05, "B" => 0.1))
BuyInThresholdEstimator
   val ┼ Dict{String, Float64}: Dict("B" => 0.1, "A" => 0.05)
   key ┼ nothing
  dval ┴ nothing

julia> BuyInThresholdEstimator(; val = "A" => 0.05)
BuyInThresholdEstimator
   val ┼ Pair{String, Float64}: "A" => 0.05
   key ┼ nothing
  dval ┴ nothing

julia> BuyInThresholdEstimator(; val = 0.05)
BuyInThresholdEstimator
   val ┼ Float64: 0.05
   key ┼ nothing
  dval ┴ nothing

julia> BuyInThresholdEstimator(; val = [0.05])
BuyInThresholdEstimator
   val ┼ Vector{Float64}: [0.05]
   key ┼ nothing
  dval ┴ nothing

julia> BuyInThresholdEstimator(; val = UniformlyDistributedBounds())
BuyInThresholdEstimator
   val ┼ UniformlyDistributedBounds()
   key ┼ nothing
  dval ┴ nothing

Related

source
PortfolioOptimisers.BuyInThreshold Type
julia
struct BuyInThreshold{T1} <: AbstractConstraintResult
    val::T1
end

Container for buy-in threshold portfolio constraints.

BuyInThreshold stores the minimum allocation threshold(s) for assets in a portfolio. The threshold can be specified as a scalar (applied to all assets) or as a vector of per-asset values. Input validation ensures all thresholds are finite and non-negative.

Fields

  • val: Scalar or vector of threshold values for portfolio weights.

Constructor

julia
BuyInThreshold(; val::Num_VecNum)

Validation

Examples

julia
julia> BuyInThreshold(0.05)
BuyInThreshold
  val ┴ Float64: 0.05

julia> BuyInThreshold([0.05, 0.1, 0.0])
BuyInThreshold
  val ┴ Vector{Float64}: [0.05, 0.1, 0.0]

Related

source
PortfolioOptimisers.threshold_constraints Function
julia
threshold_constraints(t::Option{<:BuyInThreshold}, args...; kwargs...)

Propagate or pass through buy-in threshold portfolio constraints.

threshold_constraints returns the input BuyInThreshold object or nothing unchanged. This method is used to propagate already constructed buy-in threshold constraints, enabling composability and uniform interface handling in constraint generation workflows.

Arguments

  • t: An existing BuyInThreshold object or nothing.

  • args...: Additional positional arguments (ignored).

  • kwargs...: Additional keyword arguments (ignored).

Returns

  • bt::Option{<:BuyInThreshold}: The input constraint object, unchanged.

Examples

julia
julia> threshold_constraints(BuyInThreshold(0.05))
BuyInThreshold
  val ┴ Float64: 0.05

julia> threshold_constraints(nothing)

Related

source
julia
threshold_constraints(t::BuyInThresholdEstimator, sets::AssetSets;
                      datatype::DataType = Float64, strict::Bool = false)

Generate buy-in threshold portfolio constraints from a BuyInThresholdEstimator and asset set.

threshold_constraints constructs a BuyInThreshold object representing minimum allocation thresholds for the assets in sets, using the specifications in t. Supports scalar, vector, dictionary, pair, or custom threshold types for flexible assignment and validation.

Arguments

  • t: BuyInThresholdEstimator specifying asset-specific threshold values.

  • sets: AssetSets containing asset names or indices.

  • datatype: Output data type for thresholds.

  • strict: If true, enforces strict matching between assets and thresholds (throws error on mismatch); if false, issues a warning.

Returns

  • bt::BuyInThreshold: Object containing threshold values aligned with sets.

Details

  • Thresholds are extracted and mapped to assets using estimator_to_val.

  • If a threshold is missing for an asset, assigns zero (no threshold) unless strict is true.

Examples

julia
julia> sets = AssetSets(; dict = Dict("nx" => ["A", "B", "C"]));

julia> t = BuyInThresholdEstimator(Dict("A" => 0.05, "B" => 0.1));

julia> threshold_constraints(t, sets)
BuyInThreshold
  val ┴ Vector{Float64}: [0.05, 0.1, 0.0]

Related

source
julia
threshold_constraints(t::VecOptBtE_Bt, sets::AssetSets;
                      kwargs...)

Broadcasts threshold_constraints over the vector.

Provides a uniform interface for processing multiple constraint estimators simultaneously.

source