Skip to main content
Strategy Lab / Swing-Trade / DRIFTEDGE

DRIFTEDGE DriftEdge v1.0 - Post-Event Continuation

A stock showing strong, confirmed price acceptance after a qualifying event (earnings) tends to keep drifting in that direction for several more sessions. Version v1 - status ACTIVE - daily evaluation cadence.

Equity
$10008.82
Closed Trades
16
Win Rate
43.8%
Evidence Status
Early Testing
N=16 closed trades

Three patterns: event acceptance, first controlled pullback, post-event flag breakout - within a widened 0-7 prior-session event window (vs. the old ST-03's single reaction-day-only window).

3-tier Setup Score (Tier A/B/C) replaces the old all-or-nothing gate: 0.25xMateriality + 0.25xAcceptance + 0.15xRevisions(neutral) + 0.15xVolume/RS + 0.10xRegime + 0.10xValuation(neutral).

The one engine allowed to trade THROUGH its own earnings blackout (it trades because of the event, not despite it) - a second unrelated upcoming report still blocks the pullback/flag patterns.

Known limitations:

  • No real Protected-NBBO/executable-quote feed - synthetic liquidity-tier spreads used instead (same substitution as the Day-Trade Lab).
  • No true 9:45am ET intraday primary-entry checkpoint or 10:15-11am secondary pullback window - the NEXT session's daily-bar OPEN price is used as the sole executable-price basis for every engine (strictly no-look-ahead, but this lab is uniformly daily-bar-driven, not intraday).
  • Earnings-calendar feed (Finnhub /calendar/earnings) powers DriftEdge's post-event entries and the 2-session earnings-blackout gate on TrendForge/ReboundEdge/RankForge - requires FINNHUB_API_KEY; degrades to no-op (no blackout, DriftEdge finds no candidates) if absent.
  • No qualifying-event feed beyond earnings for DriftEdge (guidance/contract/regulatory/product-update events per the spec's fuller event taxonomy aren't in this app's data layer).
  • No analyst-revisions or fundamental/valuation feed - every engine's revisions/valuation Setup Score component is held at a neutral 50 rather than fabricated (documented per-engine in each engines/*.py module).
  • RegimeShield's 5-tier state is derived from this app's existing 3-way Risk-On/Neutral/Risk-Off classifier + volatility/breadth flags, not an independently-scored regime model (see scoring.regime_shield_state).
  • Correlation controls use pairwise correlation computed directly from each symbol's own trailing 40-session daily log returns (see correlation.py) - a genuine but shorter/noisier sample than a dedicated vendor correlation matrix.
  • HistoricalTwin is now built (packages/shared/bullyeah_engine/swing_lab/learning.py) but stays observer-only (a genuine 0-delta) until an engine has 30+ closed episodes with a similar recorded component snapshot, per spec section 18's own gating rule.
  • RawSwing's 'raw Swing Direction' is a purely technical proxy (NearHighRatio/TrendEfficiency/residual momentum), not a second call to the real opportunity-scoring engine RankForge uses - see engines/controls.py's module docstring for why running that expensive call twice per cycle wasn't worth it for a lightweight comparison baseline.
  • Equal-Weight Basket / Industry ETF / SPY benchmark curves (§19's passive comparison half) ARE now built (see swing_lab/benchmarks.py) but are pure buy-and-hold return calculations, not paper-trading engines - they show up as their own 'Passive Benchmarks' dashboard section, not in ENGINE_SPECS/ALL_ENGINE_ORDER.
  • Full statistical-validation suite (Probabilistic/Deflated Sharpe, PBO, moving-block bootstrap, walk-forward holdout) is deferred - see evidence.py.

This is a research hypothesis, not a proven profitable methodology. See docs/strategy_lab_swing_trade_plan.md for the full repo-impact plan.

Evidence (Early Testing):

Win rate 43.8%, avg R-multiple 0.16, expectancy 0.16R per trade.

N=16 closed trades, 9 distinct entry days - descriptive stats only. This LITE_V1 label does NOT satisfy the full spec 39 gates (holdout protection, Probabilistic/Deflated Sharpe, matched-control outperformance, quarterly-block consistency, etc.) - see module docstring.