SECULARTREND SecularTrend v1.0 - Durable Growth, Let Winners Run
A stock in a sustained, well-established weekly uptrend (above rising 50w AND 200w SMAs) backed by genuinely strong trailing growth tends to keep compounding - a durable winner shouldn't be sold merely for not being statistically cheap. Version v1 - status ACTIVE - weekly evaluation cadence.
Setup Score: 0.35xTrendStrength + 0.30xFundamentals(growth) + 0.20xRelativeStrength(vs SPY, 52-week) + 0.15xValuationFloor(near-nonexistent - a premium is allowed here).
REQUIRES a real 200-week SMA read (unlike QualityCompound's softer 50w-only gate) - a genuinely durable secular trend, not just a recent bounce.
Deliberately NO max-holding-period exit - only a confirmed 3-week trend break below the 50-week SMA, or the stop.
Known limitations:
- No real Protected-NBBO/executable-quote feed - synthetic liquidity-tier spreads used instead (same substitution as every other lab).
- Entries/exits fill at the next COMPLETED WEEK's first available open (no true weekly-open microstructure feed exists) - strictly no-look-ahead, but this lab is weekly-bar-driven, not daily/intraday.
- No quarterly-fundamentals-HISTORY feed (only a trailing-twelve-months snapshot from Finnhub/Yahoo) - 'is the business's quality trend improving' is read from price action (trend/relative-strength), never fabricated from invented historical fundamentals. Disclosed per-engine.
- No sector-relative valuation feed - score_valuation() uses a flat ~20 fair-P/E assumption, the exact same simplification the live public Invest-horizon composite score already uses (weight_profiles.py).
- Regime is a single broad-market weekly SPY-trend read (Supportive/Neutral/Adverse), not swing_lab's fuller breadth/volatility/panic-rebound machinery - a long-horizon book doesn't need to react to short-term volatility spikes.
- No pairwise correlation matrix - concentration risk is managed via a simple max-3-positions-per-subsector cap instead (YAGNI at an 8-position-max concentrated book).
- HistoricalTwin/adaptive component weights share the exact same statistics engine as Day-Trade/Swing-Trade Labs (bullyeah_engine.adaptive_learning) - stays observer-only until 30+ closed episodes exist, per that module's own gating rule.
This is a research hypothesis, not a proven profitable methodology.
Evidence (Insufficient Evidence):
Needs at least 15 completed trades AND 15 independent entry days before any read is meaningful (spec section 39.1) - 0 trades so far. No significance testing applied above that floor either - see module docstring for what's deferred (PBO, Deflated Sharpe, bootstrap CIs, walk-forward holdout).