DEV Community

penny penguin
penny penguin

Posted on

We Built a Momentum + Quality Factor Model on 19 Large-Cap Stocks — Here's the Real Data (Free Download)

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.

Correction note: an earlier version of this post overstated the universe size and linked a test checkout page. This version states the actual data we have and how to get it.

The Setup

Report date: 2026-09-11 (data as of market close)
Universe: 19 large/mega-cap US tech & growth names
Observations: 499 trading days (2024-09-16 → 2026-09-11)
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
Enter fullscreen mode Exit fullscreen mode

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 Data (Free)

The full factor table, methodology writeup, and the exact reproducible script are in our public GitHub repo:

👉 github.com/pennypenguinapp-beep/launchtower-factor-datasets

What's in the repo:

  • data/factors_2026-09-13.csv — the dated factor dataset (rank, ticker, price, 1m/3m/6m/12m returns, 12m vol, 12m max drawdown, momentum, quality, composite)
  • README.md — full methodology, factor definitions, and disclaimers
  • The reproducible model script and dependencies

It's free. Clone it, load the CSV into pandas, and verify every number in this post yourself.

Paid Dataset Pack (USDC)

If you want the complete research pack — the full dated report, the factor CSV, the reproducible model code, and the methodology writeup, bundled and documented — we sell it as a one-time purchase:

Price: $29 USD (one-time)

Pay in USDC to this LaunchTower receiving address:

0x700cD70c490e181Fa8F66651Ee06Ce6A1949A4A3
Enter fullscreen mode Exit fullscreen mode

Networks: Ethereum, Polygon, Base, or Arbitrum (USDC on any of these).

What you receive (delivered by email after we confirm your payment):

  1. The full dated research report (methodology, factor definitions, ranked tables, disclaimers)
  2. The factor dataset CSV (all tickers, all factor columns, documented schema)
  3. The exact reproducible Python model script + requirements.txt
  4. A short "how to load it into pandas" quickstart

How to buy:

  1. Send 29 USDC to the address above on any supported network.
  2. Email your transaction hash and the email address you want the pack delivered to at the LaunchTower contact listed in the GitHub repo.
  3. Once we confirm the transaction on-chain, we send the pack to your email.

No subscription. No recurring fee. One payment, full pack.


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 or sell financial advice. Data is from Yahoo Finance via yfinance. Verify independently before making any investment decision.

Top comments (0)