RAWSWING RawSwing v1.0 - Raw Direction Control
Spec section 19 control: simply buying the strongest raw-direction stocks (no strategy logic) using the same entry timing and risk model as the main engines - answers whether DriftEdge/TrendForge/ReboundEdge/RankForge actually add value over a dumb direction rank. Version v1 - status ACTIVE - daily evaluation cadence.
NOT a strategy - a comparison baseline. Ranks the universe by a purely technical composite (NearHighRatio 40% + TrendEfficiency 30% + residual momentum 30%) and buys the strongest names, full stop.
Uses the exact same risk model, gap buffer, correlation controls, and next-session-open fill as every real engine, so any performance gap vs. DriftEdge/TrendForge/ReboundEdge/RankForge is attributable to their actual entry logic, not a different sizing/execution model.
Deliberately excluded from the adaptive-learning layer (learning.py) - a control must stay a fixed, naive baseline for the comparison to mean anything.
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 (Promising Candidate (LITE_V1 descriptive only)):
Win rate 21.0%, avg R-multiple -0.07, expectancy -0.07R per trade.
N=100 closed trades, 15 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.
| Tier A / Tier B risk budget | $35 / $20 (flat dollars) |
| Gap buffer (sizing multiplier) | 1.25x |
| Max position notional | $2,500 |
| Max gross exposure | $8,000 (80% of $10,000) |
| Max modeled open risk | $140 (1.4%) |
| Weekly realized-loss limit | $210 (2.1%) |
| Drawdown pause threshold | $600 (6% below prior EOD peak) |
| Tier thresholds (A / B / C floor) | 65.0 / 55.0 / 50.0 |
| Max concurrent positions (this engine) | 4 |
| Config hash | cf54ee528ec84c13 |
| Feature library version | swing_features_v1 |
No open positions right now.
| Symbol | Tier | Signal Date | Signal Close | Reason |
|---|---|---|---|---|
| CRWD | TIER_A (70.6) | 2026-09-23 | $262.49 | RawSwing control Tier A: raw direction score 70.6 (NearHighRatio/TrendEfficiency/residual momentum composite, no strategy logic) |
| META | TIER_A (68.5) | 2026-09-23 | $744.10 | RawSwing control Tier A: raw direction score 68.5 (NearHighRatio/TrendEfficiency/residual momentum composite, no strategy logic) |
| NET | TIER_A (66.3) | 2026-09-23 | $352.33 | RawSwing control Tier A: raw direction score 66.3 (NearHighRatio/TrendEfficiency/residual momentum composite, no strategy logic) |
| CRM | TIER_A (65.9) | 2026-09-23 | $237.58 | RawSwing control Tier A: raw direction score 65.9 (NearHighRatio/TrendEfficiency/residual momentum composite, no strategy logic) |
| Symbol | Tier | Entry | Exit | P/L | Reason |
|---|---|---|---|---|---|
| NET | TIER_A | $355.63 | $355.17 | -0.13% | No longer scoreable (missing data) |
| CRM | TIER_A | $234.56 | $234.26 | -0.13% | No longer scoreable (missing data) |
| CRWD | TIER_A | $252.15 | $251.82 | -0.13% | No longer scoreable (missing data) |
| META | TIER_A | $747.94 | $747.26 | -0.09% | No longer scoreable (missing data) |
| META | TIER_A | $748.29 | $747.61 | -0.09% | No longer scoreable (missing data) |
| NET | TIER_A | $352.69 | $355.10 | 0.68% | No longer scoreable (missing data) |
| DELL | TIER_A | $570.17 | $558.52 | -2.04% | No longer scoreable (missing data) |
| CRWD | TIER_A | $248.27 | $251.77 | 1.41% | No longer scoreable (missing data) |
| NET | TIER_A | $352.69 | $321.77 | -8.77% | Active protective stop reached (gap-aware) |
| META | TIER_A | $731.80 | $679.43 | -7.16% | Active protective stop reached (gap-aware) |
| AMD | TIER_B | $607.49 | $606.71 | -0.13% | No longer scoreable (missing data) |
| META | TIER_A | $731.80 | $731.14 | -0.09% | No longer scoreable (missing data) |
| AAPL | TIER_B | $340.48 | $340.18 | -0.09% | No longer scoreable (missing data) |
| CRWD | TIER_A | $231.77 | $247.95 | 6.98% | No longer scoreable (missing data) |
| NET | TIER_A | $327.21 | $326.79 | -0.13% | No longer scoreable (missing data) |
| DELL | TIER_A | $587.15 | $586.39 | -0.13% | No longer scoreable (missing data) |
| CRM | TIER_A | $239.96 | $239.64 | -0.13% | No longer scoreable (missing data) |
| CRWD | TIER_A | $231.77 | $231.47 | -0.13% | No longer scoreable (missing data) |
| CRM | TIER_A | $244.41 | $239.64 | -1.95% | No longer scoreable (missing data) |
| DELL | TIER_B | $593.65 | $586.39 | -1.22% | No longer scoreable (missing data) |
| SNOW | TIER_B | $338.90 | $335.34 | -1.05% | No longer scoreable (missing data) |
| META | TIER_B | $687.13 | $688.31 | 0.17% | No longer scoreable (missing data) |
| NET | TIER_A | $338.29 | $337.71 | -0.17% | No longer scoreable (missing data) |
| CRWD | TIER_B | $247.62 | $246.77 | -0.34% | No longer scoreable (missing data) |
| CRM | TIER_A | $244.41 | $244.04 | -0.15% | No longer scoreable (missing data) |
| META | TIER_B | $687.13 | $686.51 | -0.09% | No longer scoreable (missing data) |
| NET | TIER_A | $320.80 | $337.78 | 5.29% | No longer scoreable (missing data) |
| CRM | TIER_A | $244.34 | $244.09 | -0.10% | No longer scoreable (missing data) |
| AAPL | TIER_B | $338.14 | $337.84 | -0.09% | No longer scoreable (missing data) |
| MSFT | TIER_B | $498.02 | $497.25 | -0.16% | No longer scoreable (missing data) |
| DELL | TIER_B | $553.98 | $570.03 | 2.90% | No longer scoreable (missing data) |
| CRWD | TIER_B | $236.18 | $247.25 | 4.69% | No longer scoreable (missing data) |
| SNOW | TIER_B | $318.35 | $333.78 | 4.85% | No longer scoreable (missing data) |
| CRM | TIER_A | $252.01 | $251.69 | -0.13% | No longer scoreable (missing data) |
| META | TIER_B | $680.06 | $682.13 | 0.31% | No longer scoreable (missing data) |
| NET | TIER_B | $324.23 | $323.81 | -0.13% | No longer scoreable (missing data) |
| AAPL | TIER_B | $332.57 | $334.61 | 0.61% | No longer scoreable (missing data) |
| CRM | TIER_A | $257.11 | $251.64 | -2.13% | No longer scoreable (missing data) |
| MSFT | TIER_B | $500.23 | $492.95 | -1.45% | No longer scoreable (missing data) |
| DELL | TIER_B | $538.92 | $553.15 | 2.64% | No longer scoreable (missing data) |
| NET | TIER_B | $313.22 | $323.74 | 3.36% | No longer scoreable (missing data) |
| CRM | TIER_A | $255.92 | $255.58 | -0.13% | No longer scoreable (missing data) |
| SNOW | TIER_B | $330.07 | $328.79 | -0.39% | No longer scoreable (missing data) |
| AAPL | TIER_B | $334.98 | $330.11 | -1.45% | No longer scoreable (missing data) |
| META | TIER_B | $657.92 | $659.00 | 0.17% | No longer scoreable (missing data) |
| DELL | TIER_B | $524.28 | $517.73 | -1.25% | No longer scoreable (missing data) |
| CRM | TIER_A | $249.99 | $241.86 | -3.25% | No longer scoreable (missing data) |
| NVDA | TIER_B | $225.38 | $210.99 | -6.39% | No longer scoreable (missing data) |
| MSFT | TIER_B | $493.29 | $497.28 | 0.81% | No longer scoreable (missing data) |
| DELL | TIER_B | $538.93 | $523.49 | -2.86% | No longer scoreable (missing data) |
| NVDA | TIER_B | $225.37 | $225.17 | -0.09% | No longer scoreable (missing data) |
| MSFT | TIER_B | $493.29 | $492.85 | -0.09% | No longer scoreable (missing data) |
| DELL | TIER_B | $538.93 | $538.01 | -0.17% | No longer scoreable (missing data) |
| CRM | TIER_A | $249.99 | $249.62 | -0.15% | No longer scoreable (missing data) |
| SNOW | TIER_B | $333.81 | $335.50 | 0.51% | No longer scoreable (missing data) |
| CRM | TIER_A | $253.94 | $249.62 | -1.70% | No longer scoreable (missing data) |
| MSFT | TIER_B | $493.23 | $492.85 | -0.08% | No longer scoreable (missing data) |
| PLTR | TIER_B | $173.71 | $171.21 | -1.44% | No longer scoreable (missing data) |
| PLTR | TIER_B | $180.17 | $172.99 | -3.99% | No longer scoreable (missing data) |
| MSFT | TIER_B | $510.23 | $492.79 | -3.42% | No longer scoreable (missing data) |
| CRM | TIER_A | $263.58 | $253.55 | -3.81% | No longer scoreable (missing data) |
| SNOW | TIER_B | $353.93 | $333.37 | -5.81% | No longer scoreable (missing data) |
| CRM | TIER_A | $263.53 | $263.14 | -0.15% | No longer scoreable (missing data) |
| AAPL | TIER_B | $328.45 | $328.15 | -0.09% | No longer scoreable (missing data) |
| NVDA | TIER_B | $231.24 | $231.04 | -0.09% | No longer scoreable (missing data) |
| CRWD | TIER_B | $212.64 | $212.32 | -0.15% | No longer scoreable (missing data) |
| MSFT | TIER_B | $501.89 | $509.77 | 1.57% | No longer scoreable (missing data) |
| CRM | TIER_A | $262.15 | $261.81 | -0.13% | No longer scoreable (missing data) |
| PLTR | TIER_B | $172.61 | $179.90 | 4.22% | No longer scoreable (missing data) |
| NVDA | TIER_B | $226.12 | $225.92 | -0.09% | No longer scoreable (missing data) |
| MSFT | TIER_B | $502.37 | $501.43 | -0.19% | No longer scoreable (missing data) |
| PLTR | TIER_B | $172.46 | $172.39 | -0.04% | No longer scoreable (missing data) |
| CRM | TIER_A | $262.15 | $261.81 | -0.13% | No longer scoreable (missing data) |
| NVDA | TIER_B | $226.12 | $225.92 | -0.09% | No longer scoreable (missing data) |
| CRM | TIER_A | $262.20 | $261.76 | -0.17% | No longer scoreable (missing data) |
| PLTR | TIER_B | $172.50 | $172.24 | -0.15% | No longer scoreable (missing data) |
| MSFT | TIER_B | $502.37 | $501.91 | -0.09% | No longer scoreable (missing data) |
| PLTR | TIER_B | $172.46 | $172.20 | -0.15% | No longer scoreable (missing data) |
| SNOW | TIER_B | $310.74 | $376.92 | 21.30% | No longer scoreable (missing data) |
| MSFT | TIER_B | $502.37 | $501.91 | -0.09% | No longer scoreable (missing data) |
| CRM | TIER_A | $259.55 | $261.76 | 0.85% | No longer scoreable (missing data) |
| PLTR | TIER_B | $177.11 | $165.67 | -6.46% | Active protective stop reached (gap-aware) |
| PLTR | TIER_B | $177.14 | $165.67 | -6.48% | Active protective stop reached (gap-aware) |
| MSFT | TIER_B | $500.07 | $499.63 | -0.09% | No longer scoreable (missing data) |
| SNOW | TIER_B | $310.80 | $310.28 | -0.17% | No longer scoreable (missing data) |
| CRM | TIER_A | $259.60 | $259.21 | -0.15% | No longer scoreable (missing data) |
| PLTR | TIER_B | $177.14 | $165.67 | -6.48% | Active protective stop reached (gap-aware) |
| PLTR | TIER_B | $177.11 | $176.84 | -0.15% | No longer scoreable (missing data) |
| SNOW | TIER_B | $310.74 | $310.28 | -0.15% | No longer scoreable (missing data) |
| MSFT | TIER_B | $500.40 | $499.94 | -0.09% | No longer scoreable (missing data) |
| PLTR | TIER_B | $177.11 | $165.67 | -6.46% | Active protective stop reached (gap-aware) |
| CRM | TIER_A | $259.55 | $259.16 | -0.15% | No longer scoreable (missing data) |
| SNOW | TIER_B | $310.74 | $310.28 | -0.15% | No longer scoreable (missing data) |
| SNOW | TIER_B | $326.09 | $305.05 | -6.45% | Active protective stop reached (gap-aware) |
| CRM | TIER_A | $255.18 | $259.16 | 1.56% | No longer scoreable (missing data) |
| MSFT | TIER_B | $500.40 | $499.94 | -0.09% | No longer scoreable (missing data) |
| PLTR | TIER_B | $177.11 | $176.84 | -0.15% | No longer scoreable (missing data) |
| SNOW | TIER_B | $326.71 | $325.67 | -0.32% | No longer scoreable (missing data) |
| CRM | TIER_B | $254.56 | $254.84 | 0.11% | No longer scoreable (missing data) |
| PLTR | TIER_A | $182.87 | $182.63 | -0.13% | No longer scoreable (missing data) |
No funnel data yet this session - a new completed session triggers signal generation on the next page visit.
This is a comparison-baseline control (spec section 19), not one of the four main engines - it's deliberately excluded from the adaptive-learning layer. A control has to stay a fixed, naive baseline for it to mean anything to compare the real engines against.