Permanent Research
ML Framework
Last updated: September 2026
The model earns its place by narrowing decisions and vetoing bad ones. This page says exactly what it does, what it reads, and what it can never do.
What the model does
Two jobs, and only two. First, it classifies the current market regime (bull, chop, bear, and transitions between them) from trend, volatility, and breadth inputs. Second, it ranks candidate setups against historical analogs and produces a confidence score. That score is one of the seven entry conditions on the QQQ LEAPS gate: a low score can veto a trade, but a high score alone never starts one.
Inputs
Price history, trend structure, realized and implied volatility, and breadth measures. The inputs are deliberately boring: no news sentiment, no social feeds, no alternative data exhaust. Boring inputs age more slowly and can be audited line by line.
Retraining and versioning
The model is retrained on a fixed schedule and after material regime breaks, always on data that existed before the window it will trade (walk-forward discipline). Every deployed version is versioned and logged, so any historical signal can be traced to the exact model that informed it.
What the model cannot do
- Start a trade on its own. Every entry requires the full rule set to agree.
- Override risk limits. Position caps and drawdown rules live outside the model.
- Predict news, earnings surprises, or geopolitical shocks. It reads market data, not headlines.
- Guarantee regime detection. It classifies probabilities from history; history changes.
- See the future. Every score is a statement about the past rhyming, nothing more.
Change log
Material changes to inputs, architecture, or gates are recorded here when deployed. Current production configuration: regime classifier plus confidence scoring on the inputs above, retrained on the standing walk-forward schedule. See the backtest validation page for how the model is evaluated.