Buy-in Threshold Constraints
PortfolioOptimisers.BuyInThresholdEstimator Type
struct BuyInThresholdEstimator{T1, T2, T3} <: AbstractConstraintEstimator
val::T1
key::T2
dval::T3
endEstimator 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 theAssetSetsto specify the asset universe for constraint generation. When provided, takes precedence overkeyfield ofAssetSets.dval: Default threshold value applied to assets not explicitly specified inval.
Constructor
BuyInThresholdEstimator(; val::EstValType_CustWb, dval::Option{<:Number} = nothing,
key::Option{<:AbstractString} = nothing)Validation
If
valis aAbstractDictorAbstractVector,!isempty(val).If
dvalis provided, it is validated withassert_nonempty_nonneg_finite_val.If
keyis provided, it is a non-empty string.
Examples
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 ┴ nothingRelated
sourcePortfolioOptimisers.BuyInThreshold Type
struct BuyInThreshold{T1} <: AbstractConstraintResult
val::T1
endContainer 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
BuyInThreshold(; val::Num_VecNum)Validation
valis validated withassert_nonempty_nonneg_finite_val.
Examples
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
sourcePortfolioOptimisers.threshold_constraints Function
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 existingBuyInThresholdobject ornothing.args...: Additional positional arguments (ignored).kwargs...: Additional keyword arguments (ignored).
Returns
bt::Option{<:BuyInThreshold}: The input constraint object, unchanged.
Examples
julia> threshold_constraints(BuyInThreshold(0.05))
BuyInThreshold
val ┴ Float64: 0.05
julia> threshold_constraints(nothing)Related
sourcethreshold_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:BuyInThresholdEstimatorspecifying asset-specific threshold values.sets:AssetSetscontaining asset names or indices.datatype: Output data type for thresholds.strict: Iftrue, enforces strict matching between assets and thresholds (throws error on mismatch); iffalse, issues a warning.
Returns
bt::BuyInThreshold: Object containing threshold values aligned withsets.
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
strictistrue.
Examples
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
sourcethreshold_constraints(t::VecOptBtE_Bt, sets::AssetSets;
kwargs...)Broadcasts threshold_constraints over the vector.
Provides a uniform interface for processing multiple constraint estimators simultaneously.
source