qs.stats.information_ratio() uses arithmetic mean instead of geometric
Author: atharvajoshi01Created Apr 15, 2026Updated Apr 15, 2026
The information_ratio function computes excess return using arithmetic mean:
active_return = returns.mean() - benchmark.mean()For longer backtests this overstates the ratio compared to using geometric (compounded) returns. The geometric version would be:
active_return = (1 + returns).prod() ** (1/len(returns)) - (1 + benchmark).prod() ** (1/len(benchmark))This matters for crypto strategies where daily returns can be large enough that the arithmetic/geometric gap is meaningful over multi-year backtests.
Would a compounded flag similar to the one added for calmar() and rar() in #512 be welcome here?
Source: ranaroussi/quantstats