Trading Glass
FeaturesPricingAcademyBlogChartJournal
Loading
All Courses
Regime Sensitivity & Volatility DependencyAutocorrelation of ReturnsEquity R-Squared
Academy/Trading Intelligence/Robustness Metrics

Equity R-Squared

Trading Intelligence

9 min read

equityR2

Measure how closely your equity curve follows a straight line of growth — the simplest indicator of strategy consistency.

Loading

Related Topics

Regime Sensitivity & Volatility Dependency

11 min

Zero-Sum Thinking and Trading

8 min

The Prisoner's Dilemma and Market Behavior

8 min

Nash Equilibrium and No Arbitrage

8 min

Previous Topic

Autocorrelation of Returns

Next Topic

Order Flow Foundations

Trading Glass

Next-generation charting order flow platform with rotation view, cluster visualization, and real-time analytics for professional traders and quantitative analysts.

Product

  • Features
  • Pricing
  • Chart
  • Journal

Resources

  • Academy
  • Blog
  • Documentation
  • API Reference
  • Support

Company

  • About
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2026 Trading Glass. All rights reserved.

PrivacyTerms

Plot cumulative P&L against trade number, draw a line of best fit, square the correlation. That single number — Equity R-Squared (R²) — separates strategies you can size from strategies you can only hope for. It is also one of the easiest numbers in finance to fool yourself with.

Definition

R² is the coefficient of determination from a linear regression of your cumulative equity curve against trade number (or time). If you size in percentage terms, run the regression on log(equity) — geometric compounding produces an exponential, not linear, ideal curve, and a raw-equity R² will artificially fall as the account grows.

Calculation:

  1. Plot your equity curve: X-axis = trade number (1, 2, 3, ..., N), Y-axis = cumulative equity
  2. Fit a linear regression line through these points
  3. R² = 1 - (SS_residual / SS_total)

Where:

  • SS_residual = sum of squared deviations from the regression line
  • SS_total = sum of squared deviations from the mean equity

R² = 1 − (SS_residual / SS_total)

SS_residual = sum of squared deviations from the regression lineSS_total = sum of squared deviations from the mean equity

R² ranges from 0 to 1:

  • R² = 1.0: The equity curve is a perfect straight line
  • R² = 0.0: The equity curve has no linear trend whatsoever

Interpreting R²

R² ValueQualityDescription
0.95 - 1.00ExcellentNear-linear growth, very consistent
0.85 - 0.95GoodSteady growth with manageable variation
0.70 - 0.85ModerateNoticeable drawdowns but overall upward trend
0.50 - 0.70WeakSignificant equity volatility, questionable consistency
<0.50PoorEquity curve is essentially random noise around a trend

Why R² Matters

1. Consistency Over Magnitude

Consider two strategies:

  • Strategy A: +200% return over 250 trades, R² = 0.45, max DD -38%, Sharpe 0.9
  • Strategy B: +80% return over 250 trades, R² = 0.92, max DD -7%, Sharpe 2.1
MetricStrategy AStrategy B
Return (250 trades)+200%+80%
Equity R-squared0.450.92
Max drawdown-38%-7%
Sharpe0.92.1

Strategy A's CAGR looks better; B's Kelly-optimal sizing is ~3× higher because the path is predictable, so leveraged-B beats A on the same risk budget. A made more money on the headline, but its equity curve was chaotic — periods of huge gains followed by deep drawdowns. Strategy B's equity grew steadily. Which would you trust with real capital?

Strategy B is almost always the better choice. The deeper reason: B's trade returns have low positive autocorrelation (see Autocorrelation of Returns), so wins and losses interleave smoothly. A's returns cluster in regimes — exactly the failure mode covered in Regime Sensitivity & Volatility Dependency. A high-R² strategy is psychologically easier to trade, more predictable for risk management, and more likely to be genuinely robust rather than lucky.

2. Curve-Fitting Detection

Two failure modes hide here. (1) Lumpy edge: low R² with high return means a few outsized trades carry the curve — remove them and the strategy dies. (2) Curve-fit edge: extremely high in-sample R² (>0.97) on a parameter-rich strategy is a red flag, not a green light. Always recompute R² on a holdout window — OOS R² is the only number worth quoting. The converse — high R² implies no curve-fit — is false: an over-fit, parameter-rich system on its training set can produce R² > 0.95 by construction. R² is necessary, not sufficient, evidence of robustness.

3. Position Sizing Confidence

With high out-of-sample R², you can size more aggressively — the equity path is predictable. With high in-sample R² alone, you have measured nothing about the future; sizing on it is the canonical overfit-then-blow-up pattern. With low R², even optimal Kelly sizing becomes dangerous because the equity volatility makes drawdowns deeper and less predictable than the formula assumes.

4. Strategy Comparison

R² allows fair comparison between strategies with different return profiles. A strategy with moderate returns but R² = 0.90 may be preferable to one with high returns and R² = 0.60, especially when you factor in the psychological cost of drawdowns.

The R² vs Sharpe Ratio Relationship

R² and the Sharpe Ratio are related but not identical:

MetricMeasuresBest at flaggingBlind to
R²Path linearityLumpy / outlier-driven curvesSlope sign, magnitude
SharpeReturn per σVolatility dragDrawdown shape
CalmarReturn / max DDTail drawdownPath between peaks
K-ratioSlope × √N / SE(slope)Slow, steady edgeOutlier sensitivity

A strategy can have a high Sharpe but moderate R² if returns are good on average but the equity curve has a curved (exponential) shape. Conversely, a strategy with a perfectly linear equity curve (R² = 1.0) will have a high Sharpe.

In practice, high R² almost always implies a respectable Sharpe, but the reverse is not always true. For the rigorous version, see Lars Kestner, Quantitative Trading Strategies (McGraw-Hill, 2003) — his K-ratio formalises "how straight is the line and how steep" into a single number.

How to compute equity R² (Python, 5 minutes)

  1. Build a pnl array, one entry per closed trade.
  2. equity = np.cumsum(pnl) — or np.log(np.cumsum(pnl) + start) for percentage sizing.
  3. t = np.arange(len(equity)).
  4. slope, _, r, _, se = scipy.stats.linregress(t, equity).
  5. r_squared = r**2. Pass criterion: r_squared > 0.85 and slope > 0 and N ≥ 100.
import numpy as np
import scipy.stats

equity = np.log(np.cumsum(pnl) + start_capital)  # log-equity if compounding
t = np.arange(len(equity))
slope, _, r, _, se = scipy.stats.linregress(t, equity)
r_squared = r ** 2
k_ratio   = slope * np.sqrt(len(equity)) / se

Excel: =RSQ(equity_range, sequence_range).

Two notes serious systematic traders care about: (1) Kestner's K-ratio = slope × √N / std-error of slope is the proper sibling — it rewards both straightness and slope, where R² alone does not. (2) Only out-of-sample R² is informative; an over-fit curve can hit R² > 0.98 in-sample and collapse on new data.

Improving R²

If your equity R² is low, investigate:

  1. Remove outlier trades: If R² improves dramatically, your strategy depends on rare events — not a sustainable edge.
  2. Segment by setup: Different setup types may have very different equity curves. A combined equity curve with low R² might contain two sub-strategies, each with high R².
  3. Reduce position sizing: Excessive sizing amplifies drawdowns, reducing linearity.
  4. Add a regime filter: If your strategy only works in certain conditions, adding a filter to sit out unfavorable periods can improve R².
  5. Check for time decay: A strategy that worked initially and degraded later produces a concave equity curve that can still score R² > 0.85 against a straight line — high enough to look fine. The diagnostic is rolling-window R²: compute R² on the first half vs the second half. A 0.92 → 0.40 split is decay even when full-sample R² looks healthy.

Common Pitfalls

  • In-sample only: This is the big one. A strategy with 12 tunable parameters can hit R² > 0.97 in-sample on a 300-trade backtest by accident. Always split: train R² is meaningless if test R² < 0.7.
  • Equity-curve management overlays: Adding a martingale or "pause after losses" rule mechanically smooths the curve and inflates R² without adding edge.
  • Too few trades: R² is unstable below ~50 trades and noisy below ~200. A coin-flip P&L with N=20 will produce R² ≈ 0.7 about a third of the time — pure luck. Treat any R² computed on fewer than ~100 trades as a confidence interval, not a point estimate.
  • Low-frequency strategies: A 1-trade-per-month strategy with N=24 over two years can show R² = 0.95 by accident. Equity-R² rewards high-frequency strategies and punishes low-frequency ones unfairly — pair it with K-ratio (which scales with √N) before comparing across strategies.
  • Ignoring compounding: If you use percentage-based sizing, the equity curve should be exponential, not linear. In this case, run the regression on log(equity) instead.
  • Confusing R² with edge: R² = 0.95 on a declining equity curve still means you are consistently losing money. Always check the slope of the regression line too.

Interactive: Equity Curve Quality

Experiment with different win rates and payoff ratios to see how they affect equity curve smoothness. A high R² strategy produces a near-linear equity curve — consistent and predictable. Use the demo to recreate the threshold table above: a 55% win-rate / 1:1 payoff strategy lands around R² ≈ 0.93; drop the win rate to 48% with a 2:1 payoff and R² collapses to ~0.55 even though expectancy is identical. Path quality is not expectancy.

ScenarioWin ratePayoffEquity R-squaredExpectancy
High frequency, balanced55%1:1~0.93+0.10R
Low hit rate, big winners48%2:1~0.55+0.10R
Equity Curve Simulator
34.8k28.6k22.4k16.2k10.0k0100200Trades
Final: $34281 (+242.8%)

How equity R² fits with the rest of the module

The three robustness metrics in this module measure overlapping but distinct things. Regime sensitivity asks does the edge survive across regimes? Autocorrelation of returns asks do trade outcomes cluster? Equity R² asks does the path look straight? A robust strategy passes all three. Equity R² is the easiest to compute and the easiest to fool — read it as the summary of the other two, not a replacement.

FAQ

What is a good equity R-squared value?

Above 0.85 with a positive regression slope is solid for most strategies; above 0.95 is exceptional and worth scrutinising for overfit. Below 0.70 is lumpy. The exact threshold depends on trade count — treat sub-100-trade samples as noise.

How is equity R-squared different from the Sharpe ratio?

Sharpe measures return per unit volatility; R² measures path linearity. A strategy can have a high Sharpe with a curved or noisy equity path, and a strategy with R² = 0.95 can still be losing money if the slope is negative. Use both — they answer different questions.

How many trades do I need before equity R² is meaningful?

R² is unstable below ~50 trades and noisy below ~200. Treat anything computed on fewer than ~100 trades as a confidence interval, not a point estimate. For cross-strategy comparison, ≥250 trades is the working floor.

Can a losing strategy have a high equity R²?

Yes. R² ignores the slope sign — a perfectly straight line going down still scores R² = 1.0. Always check that the regression slope is positive before celebrating a high R².

Does high in-sample R² mean a strategy will hold up out-of-sample?

No. A parameter-rich system can hit R² > 0.97 in-sample by construction and collapse on new data. Only out-of-sample R² is informative for sizing or live-trading decisions.

Final Thought

Equity R² is the cheapest sanity check you can run on a backtest — but it is also the easiest to fool. A strategy with R² = 0.92 out-of-sample, K-ratio > 2, and N > 250 has earned the right to capital. The same R² in-sample with 60 trades has earned nothing but a closer look. The question every trader should ask is not "is my growth consistent?" but "is my growth consistent on data my optimizer never saw?"