LaunchTower is an independent market-data desk. This is a real, dated, reproducible research note — not a stock tip. Every number below comes from public price data (yfinance, split/dividend-adjusted closes) and a simple, fully documented factor model. You can re-run it yourself.
The Setup
Report date: 2026-09-11 (data as of market close)
Universe: 19 large/mega-cap US tech & growth names (SQ excluded — delisted/renamed, no data)
Observations: 499 trading days (2024-09-16 → 2026-09-11), adjusted close prices via yfinance.
Method: Cross-sectional z-scores. Momentum = equal-weight of 1m/3m/6m/12m return z-scores. Quality = negative z of 12m realized volatility and 12m max drawdown. Composite = 0.6 × momentum + 0.4 × quality.
No paid data. No look-ahead bias. No black box.
Top 5 (Highest Composite Score)
| # | Ticker | Price | 3m Ret | 12m Ret | 12m Vol | 12m MaxDD | Momentum | Quality | Composite |
|---|---|---|---|---|---|---|---|---|---|
| 1 | CRM | $247.72 | +48.8% | +3.0% | 47.2% | −43.3% | 1.090 | 0.167 | 0.721 |
| 2 | AMD | $516.13 | +5.7% | +223.5% | 71.7% | −27.8% | 1.795 | −1.068 | 0.650 |
| 3 | MSFT | $495.63 | +27.2% | −0.1% | 32.4% | −34.5% | 0.212 | 0.390 | 0.283 |
| 4 | AAPL | $332.27 | +12.5% | +47.1% | 25.1% | −13.8% | 0.386 | 0.037 | 0.246 |
| 5 | MSTR | $130.97 | +9.0% | −59.9% | 79.7% | −77.1% | 0.205 | 0.084 | 0.157 |
Bottom 5 (Lowest Composite Score)
| # | Ticker | Price | 3m Ret | 12m Ret | 12m Vol | 12m MaxDD | Composite |
|---|---|---|---|---|---|---|---|
| 15 | TSLA | $365.44 | −8.5% | +5.1% | 47.5% | −39.1% | −0.183 |
| 16 | UBER | $71.67 | +3.1% | −23.9% | 35.9% | −34.1% | −0.218 |
| 17 | SHOP | $128.79 | +16.6% | −9.4% | 58.4% | −46.7% | −0.294 |
| 18 | ORCL | $150.28 | −18.1% | −53.7% | 57.2% | −64.6% | −0.396 |
| 19 | AVGO | $361.99 | −6.0% | −1.3% | 46.2% | −28.7% | −0.496 |
Read of the Tape
- CRM leads on momentum (strong 3m run) with acceptable quality — cleanest composite in the universe.
- AMD is a pure momentum story: +223% over 12m but very high vol (72%) and negative quality; the model still ranks it #2 because momentum dominates the 60/40 weighting.
- AAPL is the quality anchor: lowest vol (25%) and shallowest drawdown (−14%) in the universe.
- AVGO/ORCL are the clear laggards: negative 3m and 12m returns with elevated vol.
Full Factor Table (All 19 Names)
| Rank | Ticker | Price | 1m | 3m | 6m | 12m | 12m Vol | 12m MaxDD | Momentum | Quality | Composite |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | CRM | 247.72 | +28.1% | +48.8% | +24.9% | +3.0% | 47.2% | −43.3% | +1.09 | +0.17 | 0.721 |
| 2 | AMD | 516.13 | +6.9% | +5.7% | +161.0% | +223.5% | 71.7% | −27.8% | +1.80 | −1.07 | 0.650 |
| 3 | MSFT | 495.63 | +0.8% | +27.2% | +23.8% | −0.1% | 32.4% | −34.5% | +0.21 | +0.39 | 0.283 |
| 4 | AAPL | 332.27 | +9.9% | +12.5% | +30.2% | +47.1% | 25.1% | −13.8% | +0.39 | +0.04 | 0.246 |
| 5 | MSTR | 130.97 | +38.1% | +9.0% | −4.6% | −59.9% | 79.7% | −77.1% | +0.21 | +0.08 | 0.157 |
| 6 | ABNB | 170.19 | −5.5% | +30.1% | +33.3% | +37.9% | 34.8% | −17.2% | +0.35 | −0.18 | 0.140 |
| 7 | META | 648.03 | +12.0% | +14.1% | +1.7% | −13.5% | 39.4% | −32.5% | +0.02 | +0.11 | 0.054 |
| 8 | TSM | 433.24 | +1.0% | +2.9% | +29.3% | +68.2% | 40.2% | −21.6% | +0.14 | −0.23 | −0.005 |
| 9 | PLTR | 167.23 | −2.2% | +27.6% | +8.9% | +0.3% | 60.8% | −48.2% | +0.06 | −0.13 | −0.015 |
| 10 | COIN | 175.26 | +17.6% | +9.2% | −9.3% | −44.4% | 70.7% | −63.6% | −0.15 | −0.01 | −0.095 |
| 11 | AMZN | 256.78 | −3.9% | +6.3% | +22.6% | +11.5% | 34.3% | −21.7% | −0.17 | −0.03 | −0.114 |
| 12 | GOOGL | 338.50 | −1.4% | −5.3% | +11.7% | +41.9% | 31.5% | −21.1% | −0.25 | +0.04 | −0.137 |
| 13 | NVDA | 218.29 | −2.5% | +6.7% | +19.5% | +23.4% | 38.0% | −20.2% | −0.11 | −0.20 | −0.143 |
| 14 | NFLX | 77.40 | +4.3% | −4.8% | −17.9% | −38.0% | 35.9% | −45.5% | −0.65 | +0.59 | −0.154 |
| 15 | TSLA | 365.44 | +11.6% | −8.5% | −7.5% | +5.1% | 47.5% | −39.1% | −0.33 | +0.04 | −0.183 |
| 16 | UBER | 71.67 | −4.9% | +3.1% | −1.8% | −23.9% | 35.9% | −34.1% | −0.54 | +0.27 | −0.218 |
| 17 | SHOP | 128.79 | −14.4% | +16.6% | +2.1% | −9.4% | 58.4% | −46.7% | −0.42 | −0.10 | −0.294 |
| 18 | ORCL | 150.28 | −2.0% | −18.1% | −4.9% | −53.7% | 57.2% | −64.6% | −0.96 | +0.45 | −0.396 |
| 19 | AVGO | 361.99 | −13.0% | −6.0% | +8.1% | −1.3% | 46.2% | −28.7% | −0.68 | −0.22 | −0.496 |
Reproduce It Yourself
The model is a ~100-line Python script:
import yfinance as yf
import pandas as pd
import numpy as np
TICKERS = ["CRM","AMD","MSFT","AAPL","MSTR","ABNB","META","TSM","PLTR",
"COIN","AMZN","GOOGL","NVDA","NFLX","TSLA","UBER","SHOP","ORCL","AVGO"]
df = yf.download(TICKERS, start="2024-09-11", auto_adjust=True)["Close"]
rets = {w: df.pct_change(w).iloc[-1] for w in [21, 63, 126, 252]}
vol = df.pct_change().rolling(252).std().iloc[-1] * np.sqrt(252)
maxdd = (df / df.cummax() - 1).rolling(252).min().iloc[-1]
# Z-score cross-sectionally, blend 60/40
momentum = sum(pd.Series(rets[w]).rank(pct=True) for w in rets) / 4
quality = (1 - pd.Series(vol).rank(pct=True) + (1 - pd.Series(maxdd).rank(pct=True))) / 2
composite = 0.6 * momentum + 0.4 * quality
No black box. No paid data. Pull 2 years of adjusted closes, compute returns, z-score them cross-sectionally, blend momentum (60%) with a quality tilt (40%), and rank.
Get the Full Report + Dataset
The complete report includes all 19 tickers with every factor score, the full methodology writeup, the reproducible code, and the raw CSV dataset.
Get the full report + dataset → ($29)
This is a research report, not financial advice. Factor scores are computed from historical data and do not guarantee future performance. Momentum strategies can experience sharp reversals. Past performance is not indicative of future results. LaunchTower is an independent market-data desk. We do not manage client funds, sell financial advice, or solicit crypto payments. Data is from Yahoo Finance via yfinance. Verify independently before making any investment decision.
Top comments (0)