Skip to content
13

Grid search cross validation

PortfolioOptimisers.GridSearchCrossValidation Type
julia
struct GridSearchCrossValidation{__T_p, __T_cv, __T_r, __T_scorer, __T_ex, __T_train_score, __T_kwargs} <: AbstractSearchCrossValidationEstimator

Performs grid search cross-validation for portfolio optimisation estimators. Iterates over parameter grids, applies cross-validation splits, and scores each configuration to select the optimal parameters.

Fields

  • p: Hyperparameter search grid.

  • cv: Cross-validation estimator.

  • r: Risk measure or vector of risk measures.

  • scorer: Scoring function.

  • ex: Parallel execution strategy.

  • train_score: Whether to also compute the training set score.

  • kwargs: Additional keyword arguments.

Constructors

julia
GridSearchCrossValidation(
    p::MultiGSCVValType_VecMultiGSCVValType;
    cv::SearchCV = KFold(),
    r::AbstractBaseRiskMeasure = ConditionalValueatRisk(),
    scorer::CrossValSearchScorer = HighestMeanScore(),
    ex::FLoops.Transducers.Executor = FLoops.ThreadedEx(),
    train_score::Bool = false,
    kwargs::NamedTuple = (;),
) -> GridSearchCrossValidation

Positional and keyword arguments correspond to fields above.

Validation

  • !isempty(p).

  • If p is a vector of parameter sets: each element must not be empty.

  • All keys in p must be of type GSCVKey (i.e. String, Symbol, or Integer).

Examples

julia
julia> GridSearchCrossValidation(Dict("alpha" => [0.1, 0.2], "beta" => [1.0, 2.0]))
GridSearchCrossValidation
            p ┼ Dict{String, Vector{Float64}}: Dict("alpha" => [0.1, 0.2], "beta" => [1.0, 2.0])
           cv ┼ KFold
              │              n ┼ Int64: 5
              │    purged_size ┼ Int64: 0
              │   embargo_size ┴ Int64: 0
            r ┼ ConditionalValueatRisk
              │   settings ┼ RiskMeasureSettings
              │            │   scale ┼ Float64: 1.0
              │            │      ub ┼ nothing
              │            │     rke ┴ Bool: true
              │      alpha ┼ Float64: 0.05
              │          w ┴ nothing
       scorer ┼ HighestMeanScore()
           ex ┼ Transducers.ThreadedEx{@NamedTuple{}}: Transducers.ThreadedEx()
  train_score ┼ Bool: false
       kwargs ┴ @NamedTuple{}: NamedTuple()

Related

source
PortfolioOptimisers.search_cross_validation Method
julia
search_cross_validation(opt::NonFiniteAllocationOptimisationEstimator,
                       gscv::GridSearchCrossValidation,
                       rd::ReturnsResult)

Performs grid search cross-validation for portfolio optimisation estimators. Iterates over parameter grids, applies cross-validation splits, fits and scores each configuration, and selects the optimal parameters using the provided scoring strategy.

Arguments

  • opt: Portfolio optimisation estimator to be tuned.

  • gscv: Grid search cross-validation estimator specifying parameter grid, CV splitter, risk measure, scorer, execution strategy, and options.

  • rd: Returns result containing asset returns data.

Returns

  • SearchCrossValidationResult: Result type containing the optimal estimator, test and train scores, parameter grid, and selected index.

Details

  • Iterates over all parameter combinations in the grid.

  • Applies cross-validation splits to the returns data.

  • Fits the estimator for each parameter set and split.

  • Scores each configuration using the specified risk measure and scoring function.

  • Selects the optimal parameter set based on cross-validation scores.

  • Returns a result object encapsulating the optimal estimator and score matrices.

Related

source
PortfolioOptimisers.lens_val_grid Method
julia
lens_val_grid(estval)

Build a grid of (lens, value) pairs from a parameter specification.

Converts the input vector of key => values pairs into a grid of Accessors.jl lens and value combinations for grid search cross-validation.

Arguments

  • estval: Vector of String => AbstractVector pairs mapping parameter key paths to their candidate values.

Returns

  • Grid of (lens, value) combinations.

Related

source