Momentum Research Tool

Momentum Portfolio Calculator

Jegadeesh & Titman (1993) overlapping J-K portfolio returns. Upload monthly stock data, compute the full 4×4 winner–loser table with Newey-West t-statistics, visualise power curves, and export publication-ready output.

Upload Stock Data
What data do I need?

Monthly stock returns expressed as percentages. A return of 1.52 means +1.52% that month.

Wide format (recommended): First column = date (YYYY-MM), remaining columns = one per stock ticker. Each cell = that stock's return in that month.

\[ r_{i,t} = \frac{P_{i,t} - P_{i,t-1}}{P_{i,t-1}} \times 100 \]
Minimum: 10 tickers & 15 months. Ideal: 30+ tickers & 60+ months for robust decile sorts.
If you only have prices, tick the price checkbox below and the app will auto-compute returns. — Jegadeesh & Titman (1993), CRSP monthly return data.
Click or drag & drop a CSV file
Wide format: Date | STK1 | STK2 | … (monthly returns in %)
Or Use Sample Data

Load 40 synthetic stocks × 120 months with a built-in momentum factor — explore all features without uploading data.

Risk Factor Data (optional — for CAPM/FF3/Carhart alpha)
What are risk factors & why do I need them?

Risk-adjusted alpha tests whether momentum profits survive controlling for known risk factors. Three models:

  • CAPM: \(\alpha = \bar{R}_{WML} - \hat{\beta}\cdot\overline{MktRF}\)
  • Fama-French 3F: adds SMB + HML factors
  • Carhart 4F: +MOM factor. Significant alpha here = strategy beats priced momentum.
\[ \alpha = \bar{R}_{WML,t} - (\hat{\beta}_1 MktRF_t + \hat{\beta}_2 SMB_t + \hat{\beta}_3 HML_t + \hat{\beta}_4 MOM_t) \]
Ideal: Alpha still significantly > 0 after Carhart = unexplained excess return from the momentum strategy.
Kenneth French Data Library — Fama & French (1993); Carhart (1997).

Upload a monthly factor CSV with columns: date, mktrf, smb, hml, mom (Kenneth French Data Library format accepted). Dates must overlap with your stock data.

Click to upload factor CSV
Download from Kenneth French Data Library  — use the "Fama/French 3 Factors" file. For Carhart add the "Momentum Factor (Mom)" column.
Data Requirements
  • Minimum 10 stocks (for decile sort)
  • Minimum 15 months of data
  • Monthly frequency (returns in %)
  • First column = date (YYYY-MM or YYYY-MM-DD)
  • Remaining columns = stock tickers
  • Missing values (blank cells) are handled — stock excluded for that month
  • Longer series → more J-K cells with sufficient observations
Wide format example:
Date,AAPL,MSFT,AMZN,…
2020-01,1.52,-0.83,3.27,…
2020-02,-2.10,1.44,-0.91,…
Portfolio Construction Options
How does the JT momentum strategy work?

At each month s, rank all stocks by their cumulative return over the past \(J\) months. Buy the top decile (Winners), short the bottom decile (Losers), skip 1 month, hold for \(K\) months. Repeat for every month, creating overlapping cohorts.

\[ WML_t = \bar{R}_{W,t} - \bar{R}_{L,t} \]

where \(\bar{R}_{W,t}\) = equal-weighted return of winner portfolio in month \(t\).

Key insight: 16 strategy variants (J∈{3,6,9,12} × K∈{3,6,9,12}) are computed simultaneously. The 6-6 and 12-3 strategies typically show the strongest momentum in developed markets.
Jegadeesh, N., & Titman, S. (1993). Returns to buying winners and selling losers. Journal of Finance, 48(1), 65–91.
Why skip a month?

Without skip, the holding period immediately follows formation. Stocks tend to reverse in the immediate next month due to bid-ask bounce — not real momentum, just microstructure noise.

Standard: Skip = 1 (JT recommendation). Set to 0 only if deliberately studying short-term effects.
Jegadeesh (1990). Evidence of predictable behavior of security returns. Journal of Finance, 45(3).
Decile vs Quintile

Decile (top/bottom 10%) replicates the original JT methodology. Quintile (top/bottom 20%) is better for small universes where a decile would contain only 1–2 stocks per cohort.

When to use quintile: fewer than ~30 stocks per period. When to use decile: 30+ stocks — this is the academic standard from JT (1993).
Note: All 16 J-K strategies (J ∈ {3,6,9,12} × K ∈ {3,6,9,12}) are computed simultaneously. Formation = lookback ranking period. Holding = months to hold the portfolio. Overlapping portfolios use the exact Jegadeesh & Titman (1993) approach.
Advanced Options (Phase 4)
Why does January matter?

The January effect: abnormal January returns, especially for loser stocks (tax-loss selling in Dec, buying back in Jan). If WML is large with January but collapses without it, momentum is partly a seasonal artifact.

If WML stays significant after removing January: momentum is real. If it collapses: January is driving your results.
Jegadeesh & Titman (1993), Table VI; Roll (1983) on the January effect.
What is a basis point and how is TC applied?

1 basis point (bps) = 0.01%. A round-trip cost of 50bps = 0.5% for buying + selling each rebalancing.

Applied as \(TC/K\) drag per held month (since overlapping portfolios share rebalancing costs across K months):

\[ WML_{\text{net}} = WML_{\text{gross}} - \frac{TC_{\text{bps}}}{100 \times K} \text{ (per month)} \]
Typical realistic TC: 20–50bps round-trip for institutional equity. At 50bps with K=6 → 0.083%/month drag. Momentum becomes less profitable at very high TC.
0bps (0.00%)

Applied as TC ÷ K drag per holding month (overlapping rebalancing). E.g. 50bps round-trip with K=6 → 0.083%/month WML drag.

Sub-Period Analysis

Split the sample at a year to test whether momentum persists across sub-periods. Both halves must have enough data (≥48 months each).

Phase 5 — Advanced Robustness
Fama-MacBeth Cross-Sectional Regression

Each month, regress individual stock returns on their past J-month momentum signal. The average slope (γ) tests whether past performance cross-sectionally predicts future returns — independent of portfolio grouping. t-statistics use Newey-West correction.

Bootstrap / Permutation Significance Test

Shuffles the time order of monthly returns N times (destroying autocorrelation while preserving cross-sectional co-movement). Reports the empirical fraction of shuffled WML means that exceed the actual WML — a non-parametric p-value that doesn't assume normality.

Sector-Neutralised Momentum

Ranks stocks within each sector separately (top/bottom quintile per sector), then combines the sector-relative winner and loser pools. Controls for the possibility that momentum is simply due to sector-level performance differences.

Upload sector mapping CSV
Columns: ticker, sector
Phase 6 — Behavioural Adjustments
Alternative Momentum Signal

Replace the raw formation-period return with a behaviourally-motivated signal, then re-run the full 4×4 portfolio engine on that signal.

%
Market-State Conditioning

Splits WML results by UP vs DOWN market (prior 36-month equal-weighted market return). Momentum is typically much stronger in UP markets (Cooper et al. 2004).

Crash Risk Statistics

Computes skewness, excess kurtosis, max monthly loss, max gain, and crash months (WML < mean − 2σ) for all 16 J-K strategies. Momentum strategies are known to have strong negative skewness (Daniel & Moskowitz 2016).

Sentiment Conditioning

Splits WML by high vs low investor sentiment months (above/below median). Momentum is typically stronger in high-sentiment periods when overreaction is largest (Baker & Wurgler 2006).

Upload sentiment index CSV
Columns: date (YYYY-MM), sentiment
Methodology Summary
  1. Sort stocks at each month s by their cumulative return over the past J months (formation period).
  2. Assign deciles — top 10% = Winner portfolio (W), bottom 10% = Loser portfolio (L) for that cohort.
  3. Skip 1 month (optional) to avoid short-term reversal from bid-ask bounce.
  4. Hold for K months — track equal-weighted return of each cohort's W and L portfolios for the next K months.
  5. Overlap — at each month t, the portfolio simultaneously holds 1/K portions from the K most recent formation cohorts.
  6. WML = Winner − Loser (zero-cost long-short). Monthly time series then tested with Newey-West HAC t-statistics (up to K lags).
Reference: Jegadeesh, N., & Titman, S. (1993). Returns to buying winners and selling losers: Implications for stock market efficiency. The Journal of Finance, 48(1), 65–91.
J-K Portfolio Return Matrix
How to read this table

Rows = J (formation period), Columns = K (holding period). Each cell shows the average monthly WML return for that J-K strategy.

\[ WML_{t} = \bar{R}_{\text{Winner},t} - \bar{R}_{\text{Loser},t} \]

Stars indicate Newey-West significance: *** p<0.01   ** p<0.05   * p<0.10. The t-stat below each value uses HAC standard errors with up to K lags to correct for autocorrelation from overlapping portfolios.

What to look for: Positive WML (blue) + significant stars = momentum strategy profitable in that period. The 6-6, 9-3, 12-3 cells are typically the strongest. Negative WML (red) = return reversal.
Jegadeesh & Titman (1993); Newey & West (1987) for HAC standard errors.
View:
*** p<0.01 ** p<0.05 * p<0.10  · Newey-West HAC t-statistics  · Values = % per month
Run the analysis first (Strategy tab → Run).

Colour intensity = magnitude of WML return. Blue = positive momentum, red = reversal.

WML Returns — All 16 J-K Strategies
Winner vs Loser Returns by J-K
Cumulative WML

Select strategies to plot:

WML Return Distribution (6-6)
12-Month Rolling WML (6-6)
Full Results Summary
J-KWML%Ann.%t-stat p-valSharpeMax DDWin%N
Run analysis to see results.
Download
APA Methods Paragraph

One-click ready-to-paste Methods section paragraph (based on the 6-6 strategy).

Cite This Tool
Tech Bridge Innovations. (2026). TBI Momentum Portfolio Calculator [Web application]. https://techbridgeinn.com/momentum/
How to Use
  1. Upload Stock Returns (Data Tab) — Wide CSV: rows = months (YYYY-MM), columns = tickers, values = % monthly return. Min 10 tickers & 15 months. Or click Load Sample Dataset. Supports wide or long format.
  2. Configure Strategy (Strategy Tab) — Choose skip-month (1 recommended), cutoff (decile for >30 stocks; quintile for smaller datasets). Expand Advanced Options for January effect, TC drag, sub-period split, and Phase 5 tools. Click ▶ Run.
  3. View Risk-Adjusted Alpha — Upload Fama-French factor data (Data Tab), then switch View in Results: CAPM α / FF3 α / Carhart α. Computes OLS regression with Newey-West t-stats.
  4. Read Results (Results Tab) — WML, Winner, Loser 4×4 tables. Blue cells = p<0.05. Hover cells for full stats. Also shows sub-period, bootstrap, FM, and sector-neutral result cards when triggered.
  5. Explore Charts (Tab 4) — Bar chart, Winner-Loser comparison, cumulative return (select strategies), WML distribution, 12-month rolling WML.
  6. Export (Tab 5) — CSV full results, LaTeX table, Word document (.doc), ready-made APA methods paragraph. All client-side; no data sent anywhere.
Phase 5 Features Explained
Fama-MacBeth Cross-Sectional Regression
Each month, run a cross-sectional OLS of all stocks' next-month return on their past J-month return signal. Average the monthly slope γ over time. A positive, significant γ (Newey-West t-stat) confirms momentum at the individual stock level — not just in sorted portfolio groups. This avoids arbitrary decile cut-offs. Output: γ, t, p, avg R², N months.
Bootstrap / Permutation Significance
Randomly shuffles the time order of monthly returns (destroying autocorrelation, preserving cross-sectional co-movement) N times. Each shuffle re-runs the full momentum engine. The empirical p-value = fraction of |shuffled WML means| ≥ |actual WML mean|. Makes no normality assumption; robust to fat tails and non-stationarity. Choose N = 200 (fast), 500 (recommended), or 1000 (precise).
Sector-Neutral Momentum
Winners and losers are ranked within each sector (top/bottom quintile per sector) then pooled across sectors. Momentum that persists after sector-neutralisation cannot be explained by sector rotation alone. Upload a ticker, sector CSV (or use Load Sample Sectors). Requires ≥6 stocks per sector per period.
Interpreting Results
What does a positive WML mean?
A positive WML return means momentum is present — past winners continue to outperform past losers over the holding period. According to Jegadeesh & Titman (1993), this is evidence of medium-term momentum (3–12 months). Values of 0.5–1.5% per month are typical in developed markets.
Why does WML vary across J-K?
Short formation periods (J=3) may capture noise, while long holding periods (K=12) can dilute the signal. The classic finding is that 6-6 and 12-3 tend to have the strongest, most significant WML in U.S. data. Reversal (negative WML) at very short horizons is due to bid-ask bounce.
Why Newey-West t-statistics?
Overlapping portfolios introduce autocorrelation in the WML time series (K adjacent portfolios share observations). Standard OLS t-statistics are too large in this case. Newey-West HAC (Heteroskedasticity and Autocorrelation Consistent) standard errors correct for this, using up to K lags in the Bartlett kernel — exactly as done in the original JT paper.
Skip-month — why does it matter?
Without skip-month, the holding period immediately follows formation, which captures the short-term reversal documented by Jegadeesh (1990) — a known anomaly driven by microstructure effects (bid-ask bounce, infrequent trading). Skipping 1 month ensures the strategy measures genuine medium-term momentum, not microstructure.
Key References

Jegadeesh, N., & Titman, S. (1993). Returns to buying winners and selling losers: Implications for stock market efficiency. The Journal of Finance, 48(1), 65–91.

Jegadeesh, N. (1990). Evidence of predictable behavior of security returns. The Journal of Finance, 45(3), 881–898.

Carhart, M. M. (1997). On persistence in mutual fund performance. The Journal of Finance, 52(1), 57–82.

Fama, E. F., & French, K. R. (1993). Common risk factors in the returns on stocks and bonds. Journal of Financial Economics, 33(1), 3–56.

Newey, W. K., & West, K. D. (1987). A simple, positive semi-definite, heteroskedasticity and autocorrelation consistent covariance matrix. Econometrica, 55(3), 703–708.

Typical Results (Literature)
Strategy Typical WML%/m Notes
3-30.6–1.0%Short-term
6-60.9–1.3%Classic JT
12-31.0–1.5%Strong signal
12-120.7–1.1%Dilutes later

Source: Jegadeesh & Titman (1993), U.S. stock data 1965–1989.