Skip to main content

NotesGetting the numbers right

Annualisation is an inference

Turning a daily number into an annual one means guessing how many periods a year has. Libraries guess silently.

What I was looking for

Whether annualised Sharpe and volatility match a hand calculation on real trading calendars.

What I found

Sharpe, volatility and CAGR all need the number of periods in a year. Libraries usually infer it from the dates, and when the inference fails they fall back to a default without saying so. The number stays plausible, so nobody notices.

In ffn the inference failed on any trading calendar with holidays and fell back to one period, so calc_sharpe with annualize=True returned a daily Sharpe: 0.074 for AAPL instead of 1.17. Four fixes in that area were merged and credited in ffn v1.3.0.

The move

When a statistic is annualised, I find out where the periods-per-year came from before I compare it with anything.