Research

Stochastic events — when AUC 0.85 is an artefact

On EURUSD, raw stochastic crosses inflate the model. After fixing sampling, AUC drops: weak regime filter, not a strategy.

In brief. I tested stochastic (%K) crosses as events on EURUSD (tick imbalance bars, 2023). Counting all crosses, the directional model shows a seductive AUC (~0.85). Restricting to tradable events (alternating sides, no same-leg spam), AUC falls to ~0.59–0.63. Sampling is the metric — possible use: regime / permission filter, not direct execution.

Why I ran this study

Stochastic crosses are a classic: visual signal, simple rule, trivial to code. In my process-first lab I ask first whether the event carries information under a frozen protocol (train/valid split, causal features, no PnL tuning).

Surprise: the gap between raw (all crosses) and alt (tradable events). The first pipeline pass looked promising; the second forced a rethink.

The trap: scoring on the wrong universe

On a Tr8dr up-leg, stoch can re-cross same-side repeatedly — “same-side spam”. The model learns replicated trend correlation, not an independent entry decision. Hence inflated directional AUC with no executable edge.

Schéma du biais same-side : univers raw vs alt

With alternate_sides=True, event count drops by ~5 (35,040 → 7,279 for stoch_32_10_90). That is the price of an honest metric.

Setup (summary)

ParameterValue
Asset / barrierEURUSD · TIMB (tick_imbalance_10_fixed), 2023
Splittrain H1 / valid H2
Focus configstoch_32_10_90 (period 32, bands 10/90)
Featurescontext (range, slope, TOD); direction (FFD slope, OFI)

Event at : %K crosses band .

Three universes:

ModeEvents (stoch_32_10_90)Role
raw35,040Archive — same-side bias
alt_overlap7,279Lab reference
alt_no_overlap3,736Trade-sim swing (RR1, time-cap)

Key results

AUC valid par tâche — raw vs alt (stoch_32_10_90)
ModeC_eventA_legA_fwd
raw0.700.850.79
alt_overlap0.630.590.54
alt_no_overlap0.620.630.60
  • C_event (~0.62 on alt): permission / context around the event — weak but coherent.
  • A_leg: brutal drop 0.85 → ~0.59 when sampling is fixed — raw “performance” was an artefact.
  • A_fwd: near random on alt; no net directional edge.

Incremental log-likelihood vs prior stays modest on alt. Stoch period 16 keeps slightly higher AUC (~0.70–0.75) than 32 — still “filter” territory, not alpha.

Takeaways

QuestionAnswer
Is raw AUC 0.85 an edge?No — same-side spam artefact
What remains on alt?C_event ~0.62; A_leg ~0.59–0.63
Recommended useRegime / permission filter, not execution

Always score on a tradable universe. Otherwise the model learns replicated trend correlation, not an entry decision.

I am not dropping stoch events — I relocate them: context brick in a stack (Tr8dr labels, HMM regime, upstream gates) rather than a standalone signal. Consistent with other lab notes where net tradability often fails while state structure holds.


Research note — Aug 2026. EURUSD · TIMB · frozen train/valid protocol.