Boruta compares feature importance with shuffled shadows to seek all relevant inputs. Learn why one hit is not confirmation and financial time dependence matters.
Boruta feature selection
Boruta is an all-relevant feature-selection method that compares original inputs with shuffled copies called shadow features. It asks which inputs carry detectable predictive information relative to that random reference. For a quant researching candidate signals, this is a screening question—not evidence that each retained signal earns money after costs.
Boruta usually wraps a random forest. The forest supplies importance scores; Boruta supplies the repeated shadow comparison and selection decisions. A forest's ranked importance chart alone is not Boruta.
All relevant is a different objective
A minimal-optimal search seeks a compact subset that predicts well with a chosen model. All-relevant selection tries to retain every informative input, including redundant ones. Two related measures of trading activity could both contain useful information even if a compact forecasting model needs only one. This distinction is central to Kursa and Rudnicki's original paper.
“All relevant” names the goal, not a guarantee that finite data reveal every useful variable. Detection depends on the importance model's ability to represent the relationship. A retained proxy is also not a causal explanation of returns.
Compete with shadows, then repeat
The core comparison works as follows:
Copy input columns and shuffle values within the copies to create shadows. Fit the importance model using originals and shadows together.
Find the largest shadow importance. An original feature scores a hit when its importance is strictly higher.
Refresh the shadows and repeat. Accumulated hits feed statistical tests; sufficiently weak inputs are removed and sufficiently strong ones are confirmed.
The author's overview of the method describes binomial hit testing against a reference hit probability of one half. This is an algorithmic testing reference, not a probability that a feature is economically useful. Nor does shuffling guarantee exact statistical calibration for arbitrary dependent data.
One round: a hit is not a verdict
Suppose a synthetic round produces these importance scores, all on the same illustrative scale:
Quantity
Score
Round result
Original feature A
0.7
Hit: above 0.4
Original feature B
0.3
No hit: below 0.4
Maximum across all shadows
0.4
Comparison threshold
If Ij,t is feature j's importance in round t and Mt is that round's shadow maximum, its hit is
hj,t=1{Ij,t>Mt}.
Thus A records one hit and B records none in this round. A is not yet Confirmed, and B is not yet Rejected. One comparison supplies neither a final classification nor a reported p-value. A tie with the shadow maximum would not be a hit.
Synthetic importance scores: Feature A is 0.7, Feature B is 0.3 and the maximum shadow importance is 0.4. A gets a hit; B gets no hit. Neither receives a final decision from this round.
Original synthetic comparison. The scores are stipulated, not fitted model output; a hit is not a confirmation.
These importance scores are not probabilities, return forecasts or percentages of explained variation. The construction deliberately contains no fitted model or performance claim.
Read the three outcomes honestly
The current R manual distinguishes Confirmed, Rejected and Tentative. Tentative means the run ended without resolving that feature; it is not a milder confirmation. A longer run may resolve it. TentativeRoughFix instead applies a weaker median comparison, so report that extra decision rule if used.
Implementation details matter. CRAN's version 10.0.0, published 16 May 2026, uses getImpFruZ from fru by default for normalised permutation importance. Its mcAdj option enables Bonferroni adjustment. Record the package version, importance adapter, random seed and testing settings when reproducing a selection. Do not assume an older implementation's defaults or a generic impurity ranking are equivalent.
The Bagging and Random Forests lesson explains the forest mechanism and introduces importance summaries; its full teaching requires membership, with a public preview.
Two separate problems in financial data
Selection leakage. Fit Boruta inside each eligible training fold, then apply the resulting column choice to its later validation block. Reusing a selection fitted on the whole history contaminates validation even if the forecasting model is refitted. This follows the official feature-selection leakage example. Tuning the selector needs the same separation inside any inner validation splits.
An unsuitable random reference. Ordinary row shuffling breaks serial structure as well as association with the target. A persistent real feature and its shuffled shadow can therefore have different temporal properties. For market panels, cross-sectional dependence adds another concern. Chronological validation does not by itself repair the shadow reference or prove the nominal tests are calibrated. Justify the randomisation against the dependence and null hypothesis of the application; a block-based modification is a changed procedure requiring its own assessment.
These are distinct checks: protect held-out information and assess whether the random reference is appropriate. The scikit-learn time-series guidance explains why independence-based splitting and indiscriminate shuffling can mislead. The Time-Ordered Train, Validation and Test Design lesson develops training eligibility and pipeline fitting; its full teaching requires membership, with a public preview.
Treat a selected set as a research output to assess across later periods, alongside a simpler baseline. Boruta's internal relevance test does not replace an out-of-sample comparison of the forecasting or trading procedure.