๐ Net Annualized Return
๐ก Purpose
LibreFolio reports annualized return only when the observed window is long enough to make compounding meaningful. The shared conversion is:
where \(d\) is calendar days. It is the inverse of:
The implementation returns None when:
- \(r_{\mathrm{cum}} \leq -1\)
- \(d < 30\)
- the computation overflows
Thirty-day guard
A one-week return annualized to 365 days can explode into meaningless percentages. LibreFolio therefore suppresses annualization below 30 days and displays an empty value instead of a mathematically correct but misleading CAGR.
๐งพ Holdings View
For an open holding in โYour positionsโ / portfolio summary:
where:
Annualization window:
Lot-affecting transaction types are:
This includes in-kind successions, broker transfers, and adjustment-seeded positions. Old BUY/SELL-only discovery would miss those holdings.
๐ช Period View
For per-asset period contribution:
The displayed period percentage remains:
when StartValue is non-zero. Annualization can fall back to end cost basis for assets opened mid-period:
Window start is clamped to the oldest FIFO lot still open at period end:
Then:
๐งฌ FIFO Lots
FIFO lot annualized return is net of allocated income, fees, and taxes:
The annualized value uses net_total_return, not gross total_return:
where \(t_{\mathrm{lot\ end}}\) is the closing date for fully closed lots, otherwise the analysis end date.
๐ Related
- ๐งญ Price Resolution โ source of market and trade-origin valuations
- ๐ Simple ROI โ headline and position-level return context
- ๐ Period PnL โ period decomposition
- ๐ฌ FIFO Lot Analysis โ per-lot net metrics
- โ๏ธ Portfolio Engine โ full mathematical model