Oversold Quality US: When Quality Companies Go Technically Oversold
Contents
The idea sounds reasonable: buy strong companies when they've been beaten down technically. Use Piotroski's nine-factor accounting quality score to filter for financial strength, then wait for RSI-14 to drop below 30 before buying. We ran this combination on 25 years of US market data. The strategy underperforms SPY by 4.12% annually, but the bear market behavior is worth understanding before you dismiss it.

The Strategy
The signal has two parts that must both be true at a quarterly rebalance date.
Piotroski F-Score >= 7 (out of 9): The Piotroski score, introduced by Joseph Piotroski in a 2000 paper on using historical financial statement data to separate winners from losers, checks nine binary conditions across three areas:
- Profitability (4 signals): Return on assets > 0, ROA improving year-over-year, operating cash flow > 0, accruals negative (cash earnings exceed reported earnings)
- Leverage and liquidity (3 signals): Debt-to-assets ratio falling, current ratio improving, no new share issuance in the past year
- Operating efficiency (2 signals): Gross margin improving, asset turnover improving
Each condition scores 0 or 1. A score of 7+ means the company passes at least seven of nine tests, indicating broad-based financial improvement.
RSI-14 < 30: The Relative Strength Index, developed by J. Welles Wilder in 1978, measures the magnitude of recent price changes on a 0-100 scale. An RSI below 30 is conventionally considered "oversold," meaning the stock has fallen faster than typical over the past 14 trading periods. The hypothesis: the market has overreacted, and a quality company at RSI < 30 is temporarily mispriced.
The strategy then buys the top 30 qualifying stocks by lowest RSI, equally weighted, and holds until the next quarterly rebalance.
Methodology
- Universe: NYSE, NASDAQ, and AMEX (full exchange, not index-constrained)
- Market cap filter: $1B+ USD at each rebalance date
- Rebalancing: Quarterly (January, April, July, October rebalance dates)
- Portfolio size: Up to 30 stocks, equal weight. Holds cash if fewer than 5 stocks qualify.
- RSI lookback: 14 trading periods, computed from daily price data
- Transaction costs: Size-tiered model based on market cap at time of trade
- Data period: January 2000 through December 2025 (25.8 years, 103 quarterly periods)
- Benchmark: SPY (S&P 500 ETF)
- Data source: Ceta Research FMP financial data warehouse
Full methodology, including the exact mathematical definitions of all metrics, is at backtests/METHODOLOGY.md.
Results
| Metric | Oversold Quality | SPY |
|---|---|---|
| CAGR | 3.89% | 8.01% |
| Total return (25.8yr) | 167.0% | 627.5% |
| Max drawdown | -47.2% | -45.5% |
| Sharpe ratio | 0.087 | — |
| Sortino ratio | 0.128 | — |
| Volatility (annualized) | 21.74% | — |
| Up capture vs SPY | 85.8% | — |
| Down capture vs SPY | 103.4% | — |
| Win rate vs SPY | 42.7% | — |
| Beta | 0.964 | — |
| Alpha | -3.91% | — |
| Cash periods | 7 of 103 quarters | — |
| Avg stocks (when invested) | 23.2 | — |
A $10,000 investment in January 2000 grew to roughly $26,700 by end of 2025 under this strategy. The same investment in SPY grew to roughly $72,700.
The down-capture of 103.4% means the strategy actually falls slightly more than SPY during market declines on average, not less. The up-capture of 85.8% means it participates in only 85.8% of SPY's gains. That combination explains the persistent underperformance.
The win rate of 42.7% tells the same story from a different angle: the strategy underperforms SPY in 57.3% of quarterly periods.

Annual returns:
| Year | Portfolio | SPY | Excess |
|---|---|---|---|
| 2000 | -5.63% | -10.50% | +4.87% |
| 2001 | -2.97% | -9.17% | +6.20% |
| 2002 | -0.89% | -19.92% | +19.03% |
| 2003 | +20.57% | +24.12% | -3.56% |
| 2004 | +12.97% | +10.24% | +2.73% |
| 2005 | +8.38% | +7.17% | +1.20% |
| 2006 | +17.17% | +13.65% | +3.53% |
| 2007 | +2.22% | +4.40% | -2.19% |
| 2008 | -36.98% | -34.31% | -2.67% |
| 2009 | +13.21% | +24.73% | -11.53% |
| 2010 | +9.72% | +14.31% | -4.58% |
| 2011 | +2.15% | +2.46% | -0.32% |
| 2012 | +0.61% | +17.09% | -16.48% |
| 2013 | +28.12% | +27.77% | +0.34% |
| 2014 | +15.67% | +14.50% | +1.18% |
| 2015 | -20.66% | -0.12% | -20.53% |
| 2016 | +22.62% | +14.45% | +8.16% |
| 2017 | +12.58% | +21.64% | -9.06% |
| 2018 | -17.85% | -5.15% | -12.70% |
| 2019 | +28.46% | +32.31% | -3.85% |
| 2020 | +20.00% | +15.64% | +4.36% |
| 2021 | +17.31% | +31.26% | -13.96% |
| 2022 | -22.49% | -18.99% | -3.50% |
| 2023 | +18.66% | +26.00% | -7.34% |
| 2024 | -9.04% | +25.28% | -34.32% |
| 2025 | +2.54% | +15.34% | -12.79% |
When It Works
Early bear markets. The three best years relative to SPY were 2002 (+19.03%), 2001 (+6.20%), and 2000 (+4.87%). The strategy outperformed by roughly 30 percentage points cumulative during the 2000-2002 dotcom crash. The signal was working as designed: quality companies that had genuinely been sold off were bouncing back while the broader market, full of money-losing tech stocks, kept falling.
Sector-driven recoveries. 2016 (+8.16% excess), 2006 (+3.53%), and 2020 (+4.36%) were all years where beaten-down sectors with strong fundamentals recovered. When a sector rotates from unloved to loved, quality oversold stocks in that sector get a tailwind.
Moderate bull markets. In years where SPY returned 10-15%, the strategy tended to keep up or slightly beat it. The RSI < 30 filter wasn't catastrophically restrictive in those environments.
When It Struggles
Strong concentrated bull markets. The 2024 result is the clearest example: -9.04% vs +25.28% SPY, a 34.32% excess loss. That year, SPY returns were driven by a handful of AI-related mega-cap stocks, none of which were ever technically oversold. A quality screen that required RSI < 30 missed the entire rally. Similar dynamics played out in 2012 (+0.61% vs +17.09%), 2021 (+17.31% vs +31.26%), and 2017 (+12.58% vs +21.64%).
Quality stocks that stay oversold for a reason. RSI < 30 on a Piotroski >= 7 stock can still mean the market knows something the accounting screen doesn't. A company with good historical financials can still face deteriorating fundamentals that haven't yet shown up in the annual statements. The backtest can't fully control for this.
The RSI < 30 threshold is strict. In strong bull markets, even high-quality stocks rarely stay below RSI 30 for long. The portfolio averaged 23.2 stocks when invested, but the signal naturally sends the portfolio into small or distressed corners of the market that don't always recover.
Post-bear recoveries. After the 2008 crash, the strategy returned +13.21% in 2009 vs SPY's +24.73%. Oversold quality stocks had already been bid up during the crash (the signal was active), and the portfolio missed the full mean-reversion bounce that drove SPY's recovery.
Part of a Series: Global | Germany | China
Run It Yourself
Current screen (live data):
-- Current Oversold Quality Screen
-- Step 1: Quality screen (5-factor TTM proxy for Piotroski >= 7)
SELECT
k.symbol,
p.companyName,
p.exchange,
ROUND(k.returnOnAssetsTTM * 100, 1) AS roa_pct,
ROUND(k.returnOnEquityTTM * 100, 1) AS roe_pct,
ROUND(k.incomeQualityTTM, 2) AS income_quality,
ROUND(k.currentRatioTTM, 2) AS current_ratio,
ROUND(k.netDebtToEBITDATTM, 2) AS net_debt_ebitda
FROM key_metrics_ttm k
JOIN profile p ON k.symbol = p.symbol
WHERE k.returnOnAssetsTTM > 0
AND k.returnOnEquityTTM > 0.10
AND k.incomeQualityTTM > 1.0
AND k.currentRatioTTM > 1.0
AND k.netDebtToEBITDATTM BETWEEN -10 AND 3.0
AND k.marketCap > 1000000000 -- $1B+ for US
AND p.exchange IN ('NYSE', 'NASDAQ', 'AMEX')
ORDER BY k.symbol
Run this query on Ceta Research Data Explorer
Note: this SQL uses TTM (trailing twelve months) financial ratios as a proxy for the full nine-factor annual Piotroski score used in the backtest. RSI is computed from daily price data at backtest time and isn't available directly in the quality screen SQL.
Run the full historical backtest:
git clone https://github.com/ceta-research/backtests.git
cd backtests
pip install -r requirements.txt
python3 oversold-quality/backtest.py --preset us --output results.json --verbose
Limitations
Survivorship bias: The FMP dataset includes delisted stocks, which reduces survivorship bias compared to index-only data. But the extent of coverage for stocks that were delisted mid-period isn't fully verifiable.
Look-ahead bias: The Piotroski score uses annual financial statements, applied with a 45-day filing lag to avoid look-ahead. RSI is computed from price data available at the rebalance date. We're confident in the point-in-time logic, but any backtest is susceptible to subtle look-ahead if data timestamps are inconsistent.
Transaction costs: We use a size-tiered cost model based on market cap. Real-world costs for small-cap stocks in the screen can be higher than modeled, particularly for positions that require substantial price impact to fill.
The RSI threshold is fixed: RSI < 30 is the conventional oversold threshold, but it was never specifically optimized for this strategy on US data. A different threshold (25, 35) might produce different results. We didn't test variations.
Regime dependence: The strategy's best years (2000-2002) came in a specific macro environment: a growth/tech bubble unwinding into a value recovery. That environment may not recur.
Currency: All results are in USD.
Data: Ceta Research (FMP financial data warehouse), January 2000 through December 2025. Full methodology: github.com/ceta-research/backtests/blob/main/METHODOLOGY.md.
Academic references: Piotroski, J.D. (2000). "Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers." Journal of Accounting Research, 38. Wilder, J.W. (1978). New Concepts in Technical Trading Systems. Trend Research.