S&P 500 Regression Trend Lines
i
Each line is a least-squares regression fit through the monthly S&P 500 closes, from its start month through the latest reading (the December 31, 2025 close). Start months can run from the first month in the data up to a few months before the latest reading. Use the controls below the chart to choose which lines are drawn. Very recent starts fit only a few points, so their growth rates are noisy.
- Linear: a straight line in index points. Poor over long spans, because the index compounds.
- Exponential (log-linear): constant percentage growth, a straight line on a log axis.
- Log-quadratic (default): ln(price) = a + b·t + c·t². This lets the growth rate speed up or slow down over the window, so it tracks the "middle" of the price history more closely than a single constant rate. Growth @ latest is each fit's annual % growth rate at the latest reading. Avg growth is the fitted line's compound annual growth rate (CAGR) over its window.
i
Each line is a least-squares regression fit through the monthly S&P 500 closes, from its start month through the latest reading (the December 31, 2025 close). Start months can run from the first month in the data up to a few months before the latest reading. Use the controls below the chart to choose which lines are drawn. Very recent starts fit only a few points, so their growth rates are noisy.
- Linear: a straight line in index points. Poor over long spans, because the index compounds.
- Exponential (log-linear): constant percentage growth, a straight line on a log axis.
- Log-quadratic (default): ln(price) = a + b·t + c·t². This lets the growth rate speed up or slow down over the window, so it tracks the "middle" of the price history more closely than a single constant rate. Growth @ latest is each fit's annual % growth rate at the latest reading. Avg growth is the fitted line's compound annual growth rate (CAGR) over its window.
Latest reading:
Growth rates —
i
Annual growth rate (% per year) implied by each selected regression. In the By start month view, each start month on the x-axis has two values taken from the same trend line:
- Blue: average over window. The trend line's compound annual growth rate (CAGR) from its start month to the latest reading. If you had bought at the trend value in that month, this is the yearly return the trend delivered through December 2025.
- Red: at latest. How steep the trend line is at its right-hand end, as % per year. This is the pace the trend was growing at in December 2025.
Red above blue means that trend has been speeding up. Red below blue means it has been slowing down.
The Over time view plots each line's growth rate across its whole window.
Exponential fits grow at a constant rate, so they show a single line. A Linear fit adds a fixed number of points per year, so its % rate falls as the index rises. Its average (CAGR) is shown only where the fitted line starts above zero.
i
Annual growth rate (% per year) implied by each selected regression. In the By start month view, each start month on the x-axis has two values taken from the same trend line:
- Blue: average over window. The trend line's compound annual growth rate (CAGR) from its start month to the latest reading. If you had bought at the trend value in that month, this is the yearly return the trend delivered through December 2025.
- Red: at latest. How steep the trend line is at its right-hand end, as % per year. This is the pace the trend was growing at in December 2025.
Red above blue means that trend has been speeding up. Red below blue means it has been slowing down.
The Over time view plots each line's growth rate across its whole window.
Exponential fits grow at a constant rate, so they show a single line. A Linear fit adds a fixed number of points per year, so its % rate falls as the index rises. Its average (CAGR) is shown only where the fitted line starts above zero.
Fit quality. RMS error is the root-mean-square percentage gap between each monthly close and its fitted value. It is measured the same way for every fit type, so it's the fairest comparison. R² is computed on the fitted scale (price for Linear, ln(price) for the log fits), so it isn't comparable across fit types.