TRENDFORGE TrendForge v1.0 - Trend Breakout + Pullback
An established uptrend - whether breaking to new highs or resuming after a controlled pullback - tends to continue. Version v1 - status ACTIVE - daily evaluation cadence.
Consolidates ST-01 (compression breakout) and ST-02 (trend pullback) into one engine, plus two NEW patterns: relative-strength breakout and breakout retest.
RegimeShield now SCALES size instead of hard-blocking on anything but Risk-On (the old ST-01/02's biggest activity bottleneck).
3-tier Setup Score: 0.25xTrendMomentum + 0.25xPatternQuality + 0.15xRelativeStrength + 0.15xEstimateMomentum(neutral) + 0.10xPriceVolume + 0.10xRegime.
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 24.0%, avg R-multiple -0.36, expectancy -0.36R per trade.
N=25 closed trades, 11 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.