Backtesting guide

Calmar Ratio: Calculate Return Against Historical Drawdown

The Calmar ratio compares annualized return with the largest percentage drawdown observed over the same period. This guide uses compound annual growth rate (CAGR) divided by positive maximum drawdown. A 12% CAGR and 20% maximum drawdown produce 0.60. That drawdown describes the measured history; it is not a limit on future losses.

Read the practical guide

Key Takeaways

  • Use the same start date, end date, equity series, and cost assumptions for return and drawdown.
  • CAGR measures compounded growth. Average annual returns and total return give different numerators.
  • A negative CAGR produces a negative Calmar ratio when drawdown is positive. Zero drawdown leaves the mathematical ratio undefined.
  • Closed-trade equity, daily marked-to-market equity, and intrabar equity can produce different maximum drawdowns.

Calmar ratio formula and measurement rules

For a positive starting balance with no external deposits or withdrawals, calculate CAGR from the beginning and ending equity. Scan the entire sampled path for maximum percentage drawdown. Express both values as decimals or both as percentages; the resulting ratio has no percentage unit.

  • CAGR = (ending equity / starting equity)^(1 / years) - 1. Record the calendar dates and the day-count convention used for fractional years.
  • Running peak at time t = highest equity observed from the start of the window through t, including the starting balance.
  • Drawdown at time t = (running peak - current equity) / running peak. Maximum drawdown is the largest of these values.
  • Calmar = CAGR / maximum drawdown. Do not substitute dollar drawdown or drawdown divided by initial capital for percentage decline from the running peak.
  • If deposits or withdrawals occur, use a cash-flow-adjusted return index and calculate its drawdown. A raw ending-balance ratio would count cash contributions as investment gains.

Worked example: the same equity path, three different numerators

Consider an illustrative three-year account with no external cash flows and all costs already deducted. Its sampled balances are 100,000 at inception, 120,000 after year one, 108,000 after year two, and 135,000 after year three. Assume these are the only observations available. The calculation describes this sparse sample and cannot rule out deeper losses between observations.

  • Yearly returns: 20%, -10%, and 25%. The running peaks are 100,000, 120,000, 120,000, and 135,000.
  • Sampled drawdowns: 0%, 0%, 10%, and 0%. Maximum drawdown = (120,000 - 108,000) / 120,000 = 10%.
  • CAGR = (135,000 / 100,000)^(1/3) - 1 = 10.5209%. Calmar = 10.5209% / 10% = 1.0521, rounded to 1.05.
  • Arithmetic average annual return = (20% - 10% + 25%) / 3 = 11.6667%. Dividing that by 10% gives 1.1667, which uses a different return convention.
  • Total return = 35%. Dividing 35% by 10% gives 3.50, which is not the CAGR-based Calmar ratio because the numerator covers three years without annualization.
  • If an additional observation showed equity at 96,000 after the 120,000 peak, maximum drawdown would be 20% and Calmar would fall to 0.5260, with the same endpoints and CAGR.

Choose the return window before comparing ratios

PerformanceAnalytics documents a traditional three-year input series, while allowing other lengths. State whether your result uses rolling 36 months or a specified full backtest. Three years does not guarantee a bear market or adequate stress coverage. Recalculate both CAGR and drawdown inside each chosen window, including its opening equity.

  • Use matching dates across strategies. A six-month rising market and a ten-year test answer different questions even after annualization.
  • For a rolling window, reset the running peak to the equity at the window start. Carrying a peak from before that date changes the denominator definition.
  • Label numerator conventions. The research paper by Molyboga and L'Ahelec hosted by CME uses annualized excess return; this page uses CAGR without subtracting a risk-free rate.
  • Keep sampling frequency, leverage, fees, slippage, cash-flow treatment, and open-position valuation consistent. Report the actual return and drawdown beside their ratio.

Negative returns, zero drawdown, and short samples

A ratio needs valid inputs before it can support a comparison. Check capital, elapsed time, and the equity observations first. Numerical output alone does not establish that the input history is useful.

  • Negative CAGR: -8% CAGR / 20% maximum drawdown = -0.40. Do not take the absolute value of the numerator.
  • Zero CAGR with positive drawdown: 0% / 20% = 0. The account ended flat despite suffering losses along the way.
  • Zero drawdown: division by zero is undefined, including 0/0. Report N/A with the reason instead of interpreting a cap or infinity as proven performance.
  • Nonpositive starting capital or zero elapsed time invalidates this CAGR calculation. An equity path that reaches zero or becomes negative needs separate loss and solvency analysis; do not rank it with ordinary positive-equity ratios.
  • Short samples: annualization can magnify a brief gain while the observed drawdown remains small. Inspect longer and out-of-sample periods before treating a high result as repeatable.

Reconcile TradingView and Backtest Deep Report

TradingView distinguishes close-to-close and intrabar drawdowns, and separately reports drawdown as a percentage of initial capital. Its Return of max drawdown metric compares profit with drawdown and should not be assumed to be an annualized Calmar ratio. Reconcile the underlying inputs before expecting two reports to agree.

  • Export the TradingView List of Trades CSV and retain the strategy settings, test dates, initial capital, commissions, and slippage assumptions.
  • Backtest Deep Report builds an equity series from closed-trade net P&L. That file does not provide a complete marked-to-market path during open positions, so the reconstructed drawdown can miss floating losses.
  • The current report annualizes from the first trade entry to the latest trade exit using 365.25 days per year. Idle periods outside those dates are excluded, so a calendar-window calculation can differ.
  • The current parser orders trades by entry time. For overlapping positions that exit in a different order, independently reconcile a chronological realized-equity series before relying on its drawdown.
  • The current report displays 100 when CAGR is positive and maximum drawdown is zero. This is a software fallback, not a mathematically defined Calmar value. Fewer than two trades return zero metrics; treat that as insufficient input.
  • Compare starting and ending equity, elapsed years, the peak and trough, sampling basis, and denominator units. Keep unresolved differences visible in the report notes.

What is a good Calmar ratio?

There is no universal pass mark. A value of 1 means annualized return numerically equals the observed maximum drawdown under the stated convention. A value of 2 means twice that annualized return per unit of historical drawdown. Neither establishes that a strategy is safe or that the result will persist.

  • Compare like-for-like strategies over the same dates and with the same equity valuation. Check absolute drawdown against your own loss constraint.
  • Calmar retains only the largest drawdown depth. It does not tell you how frequently losses occurred or how long recovery took; inspect the equity and underwater curves separately.
  • For negative returns, a larger drawdown can make the ratio less negative. For example, -8% / 40% = -0.20 versus -8% / 20% = -0.40. A mechanically higher score here does not mean less risk.
  • Sharpe uses excess return relative to return variability; Sortino uses downside deviation relative to a target. Calmar uses historical maximum drawdown, so the metrics answer different risk questions.

Direct Pineify workflow

Review Calmar inputs in Backtest Deep Report

Upload a TradingView List of Trades CSV to inspect closed-trade equity, CAGR, maximum drawdown, and the reported Calmar ratio. Use the reconciliation steps above to explain differences from your chosen calendar-window or marked-to-market calculation.

Backtest Deep Report

Review your TradingView trade CSV with its return window and drawdown assumptions.

Review backtest metrics

Boundary: The report uses trade records and the current calculation conventions described above. It cannot recover the full floating-equity path from a trade CSV. Zero-drawdown fallback values do not establish investment quality.

This page is educational and does not provide investment advice. Backtests are hypothetical, depend on their data and assumptions, and do not guarantee future results. Trading can result in substantial loss.

Frequently Asked Questions