Cortana Probability Score - Feature Taxonomy

The Cortana Probability Score (CPS) is the meta-label classifier’s output, blended with the impulse + signal engine score, that decides “take this trade.” Differentiator status depends on completeness of its input feature set across the dimensions the 0DTE literature identifies as predictive. This page is the canonical inventory of what’s captured, what’s missing, and what’s planned.

Categories

The literature (López de Prado AFML, SqueezeMetrics, Volland, Cem Karsan, Sinclair, Hudson & Thames, Cboe research) clusters predictive features into eight categories. CPS feature completeness rated by category.

1. Dealer Greek state (mechanically grounded, regime-stable)

Why it matters: Dealer hedging mechanics determine intraday volatility behavior more than any single technical pattern. SqueezeMetrics GEX paper: “the lion’s share of intraday realized volatility is explained by dealer gamma exposure.” Karsan’s Kai framework adds charm and vanna decay layers on top.

FeatureCoverageNotes
dp_charm_magnitude✓ shipped #65per-min hedge $ demand
dp_vanna_magnitude✓ shipped #65per-VIX-pt hedge $
dp_gex_magnitude✗ missing (#67)literature ranks #1
dp_spot_gamma_magnitude✗ missing (#67)dealer position at-the-money
dp_delta_magnitude✗ missing (#67)live delta exposure $
gamma_flip_price✗ 0% coverage (#67)structural inflection
dp_gex_dir (1-bit)partial (15%)should be replaced by magnitude
dp_charm_dir (1-bit)partial (15%)retain as fallback
dp_vanna_dir (1-bit)partial (15%)retain as fallback

2. Technical indicators (price-derived)

Why it matters: These are the price-pattern primitives every practitioner uses; the model can learn which combinations matter for 0DTE specifically. Chris Lori, Linda Raschke patterns.

FeatureCoverageNotes
bb_extension_pct✓ shipped #66Bollinger position
vwap_distance_sigma✓ shipped #66VWAP in σ-units
pre_entry_momentum_5m_pct✓ shipped #665-min impulse
pre_entry_momentum_15m_pct✓ shipped #6615-min impulse
time_since_last_pullback_sec✓ shipped #66extension age
rsi_14_5minplannedclassic momentum oscillator
atr_14_5minplannedaverage true range, vol scaling
macd_signal_5minplannedtrend-trigger indicator
adx_14plannedtrend strength
pivot_distance_classicplanneddistance from R1/S1 levels
realized_vol_30m_pctpartial (used in #66)should be its own column

3. Microstructure / order book

Why it matters: “Early and right” lives here. NBBO width, depth asymmetry, and quote churn predict execution quality and very-short- term direction. Briola/Zohren LOB literature. Optiver public talks.

FeatureCoverageNotes
nbbo_spread_pct✗ - Task #51option contract spread
nbbo_spread_widening_10s✗ - Task #51dealer pulling away
quote_churn_rate✗ - Task #51quote updates per second
top_of_book_depth_ratio✗ - Task #51bid size / ask size
signed_volume_imbalance_60s✗ - Task #51aggressive buy vs sell
sweep_velocity✗ - Task #51large block detection

4. Session / time-of-day context

Why it matters: Power hour ≠ midday ≠ open. Distinct microstructure regimes. Project memory project_eod_power_hour.

FeatureCoverageNotes
time_of_day_bucketopen/mid/lunch/power
time_of_day_sin/cos✓ in featurize()continuous encoding
vwap / vwap_distance_pct✓ #41session-relative
day_high / day_low / day_range_position_pct✓ #41range placement
session_cumul_call_premium / _put_premium✓ #41flow direction
recent_rejection_count✓ #41recent failed setups
recent_rejection_density_60s✓ #66finer granularity
minutes_to_market_closeplannedEOD power-hour proxy
is_within_5min_of_openplannedopen-auction tape distortion
is_within_15min_of_closeplannedMOC imbalance window

5. Cross-asset / breadth

Why it matters: SPY doesn’t trade in isolation. Divergence between SPY and QQQ/IWM/XLF or front-month ES is a leading reversal signal.

FeatureCoverageNotes
cax_spy_last, cax_qqq_last, cax_iwm_lastpartial coverageabsolute levels only
qqq_spy_divergence_1m✗ plannedcomputed delta of % returns
iwm_spy_divergence_1m✗ plannedsmall-cap vs large-cap
xlf_spy_divergence_1m✗ plannedfinancial sector
es_spy_basis✗ plannedfront-month future minus SPY
vix_term_roll_1d✗ plannedVX1-VX2 spread direction
vix9d_vix_ratio✗ plannedovernight risk pricing
vvix_level✗ plannedvol of vol
move_index✗ plannedbond vol; macro stress proxy

6. Options-chain-on-suggested-contract (counterfactual + microstructure)

Why it matters: Per-contract microstructure on the option we’d buy/sell is execution-quality reality. Also enables counterfactual “would this skip have been a winner.”

FeatureCoverageNotes
option_premium✓ at decision timethe entry mid
option_iv (at strike)✗ plannedimplied vol at the strike
option_volume_intraday✗ plannedcurrent-day contract volume
option_open_interest✗ plannedOI snapshot
option_theta_per_min✗ planneddecay rate
option_delta (live, not implied dir)✗ plannedper-contract greek
option_gamma✗ plannedper-contract greek
option_vega✗ plannedvol exposure
option_bid_ask_spread_pct✗ - Task #51execution friction
entry_option_mid✓ #63 (skips)counterfactual seed
option_mid_5m/15m/30mpartial #63needs UW historical or same-strike polling

7. Trader / position context

Why it matters: The 5th trade of a losing day is statistically different from the 1st trade of a fresh day. Implicit psychology and risk-adjusted-edge erosion.

FeatureCoverageNotes
trader_trade_number_today✓ #51 MVPsequence count
trader_open_positions_count✓ #51 MVPconcurrent risk
trader_loss_streak✓ #51 MVPconsecutive losers today
trader_pnl_day_to_date✓ #51 MVPcumulative $
trader_seconds_since_last_exit✓ #51 MVPrecovery interval

8. Macro / news / event-proximity

Why it matters: Trades 8 minutes before FOMC are not the same as trades 6 hours before. Macro proximity dominates other features when present.

FeatureCoverageNotes
is_macro_day✓ binaryFOMC/CPI/NFP day
minutes_to_fomc✗ plannedcontinuous proximity
minutes_to_cpi✗ plannedcontinuous proximity
minutes_to_opex✗ plannedquarterly OpEx
headline_velocity_5mfuturerequires news API

CPS architecture

Primary signal (impulse engine + signal engine + scoring)
    ↓
Score (0-100 integer)
    ↓
                                 ←  Feature snapshot at decision time  →
Meta-label classifier (L1 logistic, sklearn)
    ↓
meta_win_prob (0-1)
    ↓
CPS = meta_win_prob × score-confidence-adjustment
    ↓
Entry decision (currently primary-score gated; phase 2: meta-veto on
  bottom decile of CPS)

Coverage scorecard (2026-05-05)

  • Categories complete: 1 (Dealer Greeks: charm/vanna only - 2 of 6 features), 4 (Session), 7 (Trader)
  • Categories partial: 2 (Technical indicators), 5 (Cross-asset), 6 (Options chain)
  • Categories not started: 3 (Microstructure), 8 (Macro proximity)

Plan: each category gets a dedicated implementation task. Tonight’s queue is #67 (extend Greeks coverage to GEX/delta/gamma/gamma_flip). Microstructure (#51) is the biggest remaining lift; proximity features are quick wins.

See Also


Timeline

2026-05-05 | derived - Cody framed CPS as “the differentiator between Cortana and a coinflip.” Filed this taxonomy as the canonical inventory so feature work has structure instead of accumulating ad-hoc.