Skip to content

Latest commit

 

History

History
61 lines (48 loc) · 3.2 KB

File metadata and controls

61 lines (48 loc) · 3.2 KB

Feature engineering module

Goal

Create economically interpretable predictors using only information available at each decision date, while keeping feature construction separate from future labels.

How it works

  • technical.py: returns, momentum, RSI, MACD, Bollinger position, ATR, volatility, gaps, and volume ratios.
  • cross_sectional.py: rolling beta, residual return, idiosyncratic volatility, point-in-time sector-relative ranks, sector confidence, and sector-classification margin.
  • macro_features.py: VIX, rates, term spread, market momentum, and regime state broadcast to each ticker-date.
  • nlp_features.py: lagged sentiment, mentions, novelty, and recency features.
  • alpha158.py: the 158 public Qlib OHLCV factors across candlestick, trend, regression, position, price-volume correlation, and volume-change families. The public price panel has no exchange VWAP, so VWAP0 uses a declared OHLC-mean proxy.
  • residual_rank_dataset.cross_sectionalize_predictors: converts stock features to same-date cross-sectional ranks. Macro state enters through interactions with stock exposures rather than through values that are identical for every stock.

The live residual-rank path supplies effective-dated sector context to the cross-sectional builder. It does not reuse the legacy current-sector map for historical rows. returns_1d is retained as risk_return_1d for covariance estimation but is excluded from model feature selection.

Current achievement

  • The frozen v4 Ridge model uses 40 stable predictors selected across nested outer folds.
  • Five frozen predictors are sentiment/event variables.
  • Features include short and medium momentum, volatility, technical state, residual return, macro-exposure interactions, and NLP state.
  • All weekly predictors align with a five-session future residual-rank target.
  • Candidate split features are generated from cached completed corporate actions but remain outside model selection until their event-study gate passes.

Limitations

  • Historical fundamentals, analyst revisions, options surfaces, and point-in-time accounting data are not yet part of the validated ranking pipeline.
  • Feature stability has been evaluated mainly through selection frequency, not causal robustness.
  • Sector proxies and incomplete sentiment coverage can introduce structured missingness.
  • Adding large numbers of correlated technical indicators can increase selection noise.
  • Alpha158 was designed and benchmarked on Chinese A-shares; its U.S. value must be established out of sample rather than inferred from Qlib's published CSI300 result.

Improvement backlog

  • Add features selectively, with economic rationale and point-in-time provenance.
  • Measure feature stability by period, regime, and universe coverage.
  • Retain SHAP/count-grid selection only inside nested training folds.
  • Compare the current 40-feature set with smaller stable sets using untouched validation periods.
  • Add neutral missingness indicators rather than allowing missing coverage to resemble sentiment.

Related documentation