Stylized Facts of Financial Returns › Linear Returns vs. Log Returns
Quantitative FinanceAll chapters Stylized Facts of Financial Returns › Linear Returns vs. Log ReturnsOne section · Sections in this chapter2 / 14 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
Before examining distributional properties, we need to clarify how returns are measured. Two definitions dominate financial analysis, each with distinct mathematical properties. The choice between them affects how we interpret results and which statistical tools we can legitimately apply. Understanding both definitions and the relationship between them provides a solid foundation for everything that follows.
Simple (arithmetic) returns measure the percentage change in price. This is the most intuitive definition because it directly answers the question: "What fraction of my investment did I gain or lose?" When you say a stock "went up 5%," you typically mean the simple return was 0.05.
where:
- : simple return at time
- : price of the asset at time
- : price of the asset at time
The numerator captures the dollar change in price, while dividing by the initial price normalizes this change to a percentage. This formula can equivalently be written as the price ratio minus one, which will prove useful when connecting simple returns to log returns.
Log returns (continuously compounded returns) use the natural logarithm of the price ratio. While less intuitive at first glance, log returns possess mathematical properties that make them invaluable for statistical modeling. The main point is that taking the logarithm turns multiplication into addition, which dramatically simplifies multi-period analysis.
where:
- : log return at time
- : natural logarithm function
- : price of the asset at time
- : price of the asset at time
The second form of this equation reveals an elegant interpretation: the log return equals the change in the logarithm of price. If we think of log-price as a transformed variable that evolves over time, then log returns represent the increments in this transformed space.
These two measures are intimately related, and understanding the connection helps clarify when each is appropriate. Since the simple return satisfies , we can derive the relationship by taking the natural logarithm of both sides. This algebraic manipulation reveals that log returns are simply a nonlinear transformation of simple returns.
where:
- : log return at time
- : price of the asset at time
- : price of the asset at time
- : simple return at time
- : natural logarithm function
For small returns (typical of daily data), they are approximately equal since when is close to zero. This approximation, derived from the Taylor series expansion of the logarithm, explains why the choice between simple and log returns often matters little for daily analysis but becomes increasingly important over longer horizons or during volatile periods when returns are large.
Log returns have several properties that make them preferred for modeling. Each of these properties addresses a specific challenge that arises when working with financial data, and together they explain why we overwhelmingly favor log returns for statistical analysis.
-
Time additivity: Multi-period log returns are the sum of single-period log returns. If are daily log returns, the total return over days is simply . Simple returns require compounding: . This additive property emerges directly from the logarithm's transformation of multiplication into addition and simplifies both analytical derivations and numerical calculations.
-
Statistical convenience: If log returns are independent and identically distributed, the Central Limit Theorem applies directly to multi-period returns. Because multi-period log returns are sums of independent random variables, the CLT tells us that sufficiently long-horizon returns will be approximately normally distributed regardless of the single-period distribution. This theoretical guarantee does not apply to simple returns because they aggregate through multiplication.
-
Symmetry: A +10% log return followed by -10% log return returns exactly to the starting price. With simple returns, +10% followed by -10% leaves you with a net loss. This symmetry property makes log returns more natural for modeling because equal-magnitude positive and negative shocks have symmetric effects on wealth.
-
No lower bound violation: Log returns can range from to , avoiding the awkward lower bound of -100% that simple returns face. Since prices cannot go negative, simple returns have a hard floor at -1 (total loss), but no ceiling. Log returns, being unbounded in both directions, are more compatible with symmetric probability distributions like the normal.
Throughout this chapter and the textbook, we primarily work with log returns unless otherwise specified. Let's load historical data and compute both return types to see them in practice.
import warnings
import numpy as np
import pandas as pd
warnings.filterwarnings("ignore")
# Generate synthetic data with realistic properties
np.random.seed(42)
dates = pd.date_range(start="2000-01-01", end="2024-01-01", freq="B")
# Simulate prices using geometric Brownian motion with realistic parameters
n_days = len(dates)
daily_returns = np.random.normal(
0.0003, 0.012, n_days
) # ~7.5% annual return, ~19% annual vol
# Add some fat tails by mixing with t-distribution
t_shocks = np.random.standard_t(df=4, size=n_days) * 0.008
mixed_returns = 0.7 * daily_returns + 0.3 * t_shocks
price_path = 1000 * np.exp(np.cumsum(mixed_returns))
prices = pd.Series(price_path, index=dates, name="Adj Close")
# Calculate both types of returns
simple_returns = prices.pct_change().dropna()
log_returns = np.log(prices / prices.shift(1)).dropna()
# Calculate summary statistics for display
n_obs = len(prices)
start_date = prices.index[0].strftime("%Y-%m-%d")
end_date = prices.index[-1].strftime("%Y-%m-%d")
mean_simple = simple_returns.mean()
std_simple = simple_returns.std()
mean_log = log_returns.mean()
std_log = log_returns.std()
corr_simple_log = np.corrcoef(simple_returns, log_returns)[0, 1]S&P 500 Data: 6261 daily observations Period: 2000-01-03 to 2024-01-01 Simple Returns - Mean: 0.000227, Std: 0.009006 Log Returns - Mean: 0.000186, Std: 0.009002 Correlation between simple and log returns: 0.999978
The correlation between simple and log returns is essentially 1.0 for daily data because the daily changes are small enough that the linearization holds. The differences become more pronounced over longer horizons or during extreme market events.


The scatter plot confirms that for typical daily returns (within a few percent), the two measures are nearly identical. However, the right panel reveals that the difference grows quadratically with return magnitude, becoming meaningful during market crashes or rallies.