On this page

Feature Importance & Collinearity Audit — scalp_v1 (50D)

ML-FEAT-002 (Stream B) — automated feature evaluation. READ-ONLY:

no feature is deleted, renamed or reordered here. This document is

the empirical input a future schema version cites before pruning.

  • Feature contract: scalp_v1 / 50 dimensions
  • Samples analysed: 5,945
  • Collinearity threshold: |Spearman rho| > 0.85
  • Scoring model: deterministic one-vs-rest ridge surrogate (closed-form, alpha=1e-3, train-fitted, chronological 70/30 split, seed-pinned)
  • Determinism: seed-pinned permutations (identical input -> identical output)

Method

  1. Spearman rank correlation across all 50 features — rank transform

captures monotonic non-linear relationships Pearson misses (the task's INVESTIGATION_PLAN).

  1. Mutual information I(feature; triple-barrier label), equal-width

binned, numpy-only (the slim verification venv carries no scikit-learn).

  1. Permutation feature importance on a chronological held-out tail:

each column is shuffled in validation only and the cross-entropy increase is the feature's measured contribution.

Top-10 Alpha Drivers (out-of-sample permutation importance)

RankFeaturePFI (mean Δloss)PFI stdMutual information
1norm_tk_diff0.0015730.0004300.003355
2dist_to_ema_500.0015480.0004010.003282
3dist_to_swing_low_200.0003200.0001560.002277
4dist_to_ema_210.0002520.0002910.002662
5cross_asset_z_score0.0002510.0002380.002655
6close_location_value0.0001840.0000990.001426
7lag_2_log_return0.0001380.0000320.005360
8norm_rsi0.0000940.0000160.002193
9dist_to_swing_high_200.0000750.0000090.002669
10breakout_sig0.0000720.0000130.000327

Constant Columns

None — every one of the 50 columns varied in this evaluation frame.

Collinear Pairs (|Spearman rho| > 0.85)

#Feature AFeature BSpearman rho
1norm_dist_to_tenkannorm_dist_to_kijun-1.0000
2norm_tk_diffnorm_dist_to_tenkan+1.0000
3norm_tk_diffnorm_dist_to_kijun-1.0000
4stop_hunt_depthfeat_ob_liquidity_swept+0.9640
5dist_to_ema_21cross_asset_z_score+0.9633
6dist_to_swing_low_20dist_to_ema_21+0.9340
7dist_to_swing_low_20cross_asset_z_score+0.9259
8dist_to_swing_high_20dist_to_ema_21-0.9243
9dist_to_swing_high_20cross_asset_z_score-0.9040
10kumo_sigdist_to_ema_50+0.8923
11dist_to_ema_21dist_to_ema_50+0.8682

Total: 11 collinear pair(s).

Hierarchical Collinearity Clusters

ClusterRepresentativeMembersMaxrhoRedundant
1norm_tk_diffnorm_tk_diff, norm_dist_to_tenkan, norm_dist_to_kijun1.0000norm_dist_to_tenkan, norm_dist_to_kijun
2feat_ob_liquidity_sweptfeat_ob_liquidity_swept, stop_hunt_depth0.9640stop_hunt_depth
3dist_to_ema_50dist_to_ema_50, dist_to_swing_low_20, dist_to_ema_21, cross_asset_z_score, dist_to_swing_high_20, kumo_sig0.9633dist_to_swing_low_20, dist_to_ema_21, cross_asset_z_score, dist_to_swing_high_20, kumo_sig

8 redundant feature(s) identified across 3 cluster(s).

Pruning Candidates (evidence, not a change)

NON_GOAL of ML-FEAT-002: scalp_v1 stays backwards compatible until a

new schema version is approved. These are the rows that proposal cites.

DropKeepsCluster maxrhoPFI of dropped
norm_dist_to_tenkannorm_tk_diff1.0000-0.000018
norm_dist_to_kijunnorm_tk_diff1.0000-0.000116
stop_hunt_depthfeat_ob_liquidity_swept0.9640-0.000003
dist_to_swing_low_20dist_to_ema_500.96330.000320
dist_to_ema_21dist_to_ema_500.96330.000252
cross_asset_z_scoredist_to_ema_500.96330.000251
dist_to_swing_high_20dist_to_ema_500.96330.000075
kumo_sigdist_to_ema_500.9633-0.000084

Interpretation

  • Highest measured out-of-sample contribution: norm_tk_diff (PFI 0.001573).
  • Lowest: consecutive_momentum_count (PFI -0.000174) — a low PFI means the scoring model did not use the column, which is model-dependent evidence, not proof the feature is worthless.
  • 8 of 50 features are statistically redundant neighbours of a stronger column at this threshold.
  • Frame provenance: synthetic XAUUSD M1 (6000 bars, seed=42) -> ScalpFeatureEngine (real 50D contract) + TripleBarrierLabeler; 5945 labelled rows. Synthetic bars exercise every feature branch of the production engine but do not carry real market microstructure; re-run with --dataset <id> on a broker-history artifact for the live verdict.

Artifacts

  • Dense Spearman / MI / PFI arrays: artifacts/research/correlation_matrix.npz
  • Machine-readable ranking: artifacts/research/feature_importance.json

Generated by scripts/analysis/evaluate_feature_importance.py (ML-FEAT-002).