A complete breakdown of how our quantitative momentum strategy works, from stock selection to portfolio construction.
This page explains our momentum strategy in detail. You'll learn about the 85-stock universe we trade from, how we score each stock using seven momentum factors, how the QQQ market filter protects capital during downtrends, and how we construct and rebalance the portfolio daily. We also cover our trade execution process and how we optimize strategy parameters.
The EquiAlgo momentum strategy is a systematic, rules-based approach that identifies stocks with the strongest momentum characteristics and holds them in an equal-weight portfolio. The strategy operates on the empirical observation that stocks exhibiting strong momentum tend to continue outperforming in the near term.
The strategy trades from a curated universe of 85 stocks, carefully selected for their liquidity, volatility characteristics, and growth potential. These stocks span multiple sectors but are concentrated in areas with historically strong momentum characteristics.
The largest and most liquid tech stocks that drive market momentum.
Chip makers benefiting from AI, data centers, and device proliferation.
Companies disrupting traditional finance and digital assets.
Enterprise software and cloud infrastructure leaders.
Next-generation technologies including quantum, AI, and space.
Diversified holdings across healthcare, industrials, and consumer.
Each stock receives a composite momentum score from 0 to 100, calculated as a weighted sum of seven individual factor scores. Only stocks trading above their 20-day exponential moving average are considered for scoring, filtering out stocks in downtrends.
This factor measures how strongly a stock has been rising over recent months. We look at the 3-month return (the primary driver), the 1-month return (recent acceleration), and the trend quality using linear regression. A stock that has gained 30% over three months with a smooth, consistent uptrend will score higher than one with the same return but erratic price action. Returns are capped to prevent outliers from dominating the score.
Volume confirms price moves. This factor looks at two things: first, whether volume is higher on up days versus down days (indicating buying pressure), and second, whether recent volume is elevated compared to the historical average (indicating increased institutional interest). A stock rising on heavy volume is more likely to continue than one rising on light volume.
A stock in a healthy uptrend has its moving averages “stacked” in the right order: the price should be above the 10-day average, which should be above the 20-day, which should be above the 50-day. This factor also checks if each moving average is sloping upward. Perfect alignment with rising slopes scores highest; partial alignment or flat/declining slopes score lower.
We compare each moving average to its value 30 days ago. If it's higher now, the slope is positive, contributing to the score.
This factor counts how often the stock closes higher than it opens (a “green” or bullish day). We also give extra weight to “strong” bullish days where the gain exceeds 2%. A stock that closes up most days, with occasional big up days, shows consistent buying interest and scores well on this factor.
This factor rewards price stability. We measure the average daily trading range (high minus low) as a percentage of price, and also how consistent that range is over time. Stocks with smaller, more predictable daily swings score higher. The idea is that sustainable trends tend to be orderly rather than chaotic. Lower volatility equals a higher score.
A quality uptrend makes “higher highs” and “higher lows” over time. This factor tracks those patterns, penalizes deep pullbacks, and rewards stocks trading near their 52-week highs. Stocks that are close to new highs with shallow corrections during their advance score best.
This factor compares each stock's performance to a benchmark (AAPL) over the same time period. Stocks that are outperforming the benchmark score higher. This helps identify relative leaders that are gaining ground versus the broader market. The weight is kept low since the other factors already capture absolute momentum characteristics.
The strategy uses QQQ (Nasdaq 100 ETF) as a market regime indicator. We check whether QQQ is trading above or below its 13-day simple moving average to determine if we're in a favorable environment for buying.
This filter helps avoid deploying capital during market corrections. When the market is falling, it's often better to preserve cash than to buy stocks that may continue declining with the broader market.
Important: The filter decision uses the previous day's closing price of QQQ, not the current day. This ensures we only use information that would have been available at the time of the decision, avoiding any look-ahead bias in the backtest.
The strategy uses a next-day execution model: signals are generated at market close and trades are executed at the following day's open. This ensures realistic backtesting without look-ahead bias and reflects how a real trader would implement these signals.
Stock is currently held and remains in the top rankings. The position is maintained, with shares adjusted up or down to return to equal weight.
Stock is not currently held but has entered the top rankings. A new position will be opened (subject to the market filter allowing buys).
Stock is currently held but has dropped out of the top rankings. The entire position will be sold regardless of whether the market filter allows buying.
Trades are executed in a specific order to ensure proper cash management and realistic order filling.
All EXIT signals are executed first, selling entire positions. This frees up cash that can be used for new entries and rebalancing. Exits always happen regardless of the market filter.
For KEEP positions that have grown above their target weight (due to outperformance), excess shares are sold to bring them back to equal weight. This generates additional cash for underweight positions.
If the market filter allows buying, we calculate how many shares are needed for each underweight KEEP position and each new ENTER position to reach target weight.
Available cash is distributed to positions based on how far they are from target weight. Positions furthest from target get priority. Any remaining cash after filling major shortfalls is distributed by adding single shares to the cheapest positions.
The portfolio uses equal-weight allocation, meaning each position receives an equal share of total portfolio value. With 10 positions, each stock gets approximately 10% of the portfolio. This approach provides diversification benefits and prevents over-concentration in any single stock.
Each day, we calculate the target dollar amount per position by dividing total portfolio value by the number of positions. We then calculate how many whole shares that buys at the current open price.
Strategy parameters are optimized to maximize the Calmar ratio, which is annualized return divided by maximum drawdown. This metric balances high returns with controlled risk, favoring strategies that make money without excessive volatility.
The seven factor weights are optimized by testing tens of thousands of weight combinations. Each combination is backtested, and the weights producing the best Calmar ratio are selected.
We tested holding anywhere from 4 to 30 stocks, along with different minimum score thresholds (55 to 80). After extensive backtesting, 10 positions emerged as optimal, balancing concentration with diversification.
The QQQ moving average period is tested from 10 to 50 days. Shorter periods react faster but may whipsaw; longer periods are smoother but slower to respond.
Parameter optimization is performed on historical data and may not perfectly predict future performance. Markets change, and what worked in the past may not work as well going forward. We use the Calmar ratio rather than raw returns as the optimization target to balance performance with risk management. All backtested results are hypothetical and past performance is not indicative of future results.