Methodology & Data Integrity

How we calculate RSI, backtest signals, and ensure data quality

Data Sources

  • 1
    Primary: Stooq.com for complete historical price data (daily OHLCV)
  • 2
    Secondary: Yahoo Finance for real-time updates and incremental sync
  • 3
    Coverage: 11,000+ U.S. equities across NYSE, NASDAQ, and AMEX

RSI Calculation Methodology

We use Wilder's Smoothed RSI with a 14-period lookback, the industry standard developed by J. Welles Wilder Jr. in his 1978 book "New Concepts in Technical Trading Systems."

// Wilder's RSI Formula
RS = Average Gain / Average Loss
RSI = 100 - (100 / (1 + RS))
// Smoothing (after initial 14-period SMA)
Avg Gain = (Prev Avg Gain x 13 + Current Gain) / 14
Avg Loss = (Prev Avg Loss x 13 + Current Loss) / 14

Why 14-Period?

The 14-period RSI is the standard used by Bloomberg, Reuters, and academic research. It balances sensitivity with noise reduction.

Validation

Our RSI values are validated against Bloomberg terminal outputs with less than 0.01% variance on identical datasets.

Z-Score Calculation Methodology

The Z-Score measures how unusual today's daily return is compared to the rolling distribution of daily returns over the past 200 trading days. It helps identify abnormally large price moves and potential mean reversion opportunities.

daily_return = (close_today - close_yesterday) / close_yesterday
Z-Score = (daily_return - Mean_return₂₀₀) / StdDev_return₂₀₀
Where:
Mean_return₂₀₀ = 200-day average daily return
StdDev_return₂₀₀ = 200-day standard deviation of daily returns
daily_return = percentage change from prior close

Why 200-Period?

The 200-day period (approximately 10 months) is a standard long-term benchmark in technical analysis. It captures seasonal patterns and longer-term return distributions while filtering out short-term noise.

Interpretation

  • Z < -2: Unusually large daily drop (oversold signal)
  • Z > 2: Unusually large daily gain (overbought signal)
  • -2 < Z < 2: Typical daily move

Use with Stink Bid Signals

Stink Bid signals are generated by our proprietary multi-indicator framework designed to surface extreme mean reversion setups. Z-Score contributes to that framework, but exact factor weightings and trigger logic are intentionally not disclosed.

Backtest Methodology

Forward Returns

When RSI crosses below your threshold (e.g., 30), we calculate actual price returns at four horizons:

1 Day
Next trading day close
1 Week
5 trading days
2 Weeks
10 trading days
1 Month
21 trading days

Win Rate Calculation

Win Rate = (Signals with Positive Return) / (Total Signals) x 100%

A signal "wins" if the forward return is positive (price went up from the signal date).

No Look-Ahead Bias

All signals use only data available at the signal date. We never use future information to determine entry points. This is critical for realistic backtest results.

Data Quality Controls

RSI Anomaly Detection

RSI values outside the 1-99 range are flagged as data anomalies and set to NULL. These typically indicate data quality issues (missing prices, stock splits, etc.).

Minimum Data Requirement

Tickers require at least 200 trading days of history for analysis. This ensures the RSI has fully converged and provides meaningful historical signals.

Daily Sync

Prices are synced daily after market close (4:15 PM ET). RSI values are recalculated in real-time on every request to ensure freshness.

Limitations & Disclaimers

  • -Past performance does not guarantee future results. Historical win rates are informational only.
  • -RSI is one indicator among many. We recommend combining with fundamental analysis, volume, and market conditions.
  • -Backtests do not account for transaction costs, slippage, or liquidity constraints.
  • -Survivorship bias: Our dataset includes only currently traded securities. Delisted stocks are not included in historical analysis.
  • -This site is for educational and research purposes only. Nothing here constitutes financial advice.

Update Frequency

Data TypeFrequency
Price dataDaily sync after market close
RSI calculationsReal-time on request
Oversold/Overbought listsEvery 5 minutes during market hours
Ticker universeWeekly sync with NASDAQ/NYSE

Questions or Corrections?

Found a data issue or have questions about our methodology? We welcome feedback.