📈 Returns & Growth Rates
This page covers the mathematical foundations of investment returns — how to measure, compare, and annualize growth rates. These concepts are used throughout LibreFolio's measurement tools and portfolio analytics.
📊 Simple (Discrete) Return
The simple return over a period is the percentage change:
Example
If EUR/USD moves from 1.10 to 1.14:
📊 Properties
- Intuitive: directly represents "how much you gained/lost"
- Not additive: you cannot simply sum simple returns across periods to get total return
- Compounding: multi-period returns must be multiplied, not added
📐 Logarithmic (Continuous) Return
The log return is the natural logarithm of the price ratio:
📊 Properties
- Additive across time: total log return = sum of sub-period log returns
- Symmetric: a +5% move followed by a −5% move returns exactly to the starting point
- Approximately equal to simple return for small values: \(r_{log} \approx R_{simple}\) when \(R_{simple}\) is small
🔄 Conversion
📅 Annualized Return
To compare returns across different time periods, we annualize them — projecting the observed growth rate to a full year.
📈 Compound Annual Growth Rate (CAGR)
The most common annualization method. Given a total return over \(d\) calendar days:
This is what LibreFolio's Measures tool displays.
Example
EUR/USD moves from 1.10 to 1.14 over 90 days:
📐 Annualized Log Return
For log returns, annualization is simply scaling:
This linearity is one of the key advantages of log returns in quantitative finance.
🔄 Relationship Between Simple and Log Returns
| Property | Simple Return \(R\) | Log Return \(r\) |
|---|---|---|
| Compounding | Multiplicative: \((1+R_1)(1+R_2)\) | Additive: \(r_1 + r_2\) |
| Symmetry | Asymmetric: +10% then −10% ≠ 0 | Symmetric: +10% then −10% = 0 |
| Annualization | \((1+R)^{365/d} - 1\) | \(r \times 365/d\) |
| Portfolio returns | Weighted sum works ✅ | Weighted sum doesn't work ❌ |
| Time series | Not additive ❌ | Additive ✅ |
| Interpretation | "I gained 5%" | "Log growth rate was 0.0488" |
When to use which?
- Simple returns for reporting to users and computing portfolio-level returns
- Log returns for statistical analysis, volatility estimation, and time-series models
📏 Day Count Conventions
The number of days \(d\) can be computed differently depending on the convention:
- Actual/365: Calendar days (what LibreFolio uses)
- Actual/360: Calendar days over a 360-day year (common in money markets)
- 30/360: Assumes 30-day months and 360-day year
For more details, see Day Count Conventions.
💰 Portfolio Return Methods
When a portfolio has cash flows (deposits, withdrawals), a single return formula is not enough, because capital injections or withdrawals would dilute or artificially inflate the percentage return.
To solve this, advanced performance metrics are used: - TWRR (Time-Weighted Rate of Return): Isolates the performance of the assets, ignoring the investor's cash flow timing. - MWRR (Money-Weighted Rate of Return): Measures the investor's personal performance, taking cash flow timing into account.
For a deep dive into how these metrics work, why they differ, and how LibreFolio uses them, see the dedicated Performance Metrics chapter.
⚠️ Pitfalls
- Very short periods: Annualizing a 3-day return can produce misleading figures (e.g., a 0.1% 3-day move → 12.5% annualized)
- Negative prices: Log returns are undefined for negative values — not an issue for FX rates
- Compounding frequency: CAGR assumes continuous compounding; real-world instruments may compound daily, monthly, or quarterly