2.3 KiB
2.3 KiB
LTM (Last Twelve Months) Methodology Rules
⭐ RECOMMENDED: Use analysis_utils.py
Prefer utility functions:
from analysis_utils import get_ltm_period_config, get_annual_data, calculate_annual_metrics
from config import get_ltm_period, get_ltm_label
ltm_start, ltm_end = get_ltm_period_config()
year_data, year_label = get_annual_data(df, 2025, ltm_start, ltm_end)
What is LTM?
LTM (Last Twelve Months) = Rolling 12-month period for the most recent partial year
- Purpose: Apples-to-apples comparison with full calendar years
- Example: If latest data is through September 2025, use Oct 2024 - Sep 2025 (12 months)
When to Use LTM
- Full calendar years (2021-2024): Use complete year data
- Most recent partial year (2025): Use LTM if you only have partial year data
- Complete years only: Disable LTM in config if all years are complete
Configuration
Configure in config.py:
LTM_ENABLED = True # Set to False if all years are complete
LTM_START_MONTH = 10 # Month number (1-12)
LTM_START_YEAR = 2024
LTM_END_MONTH = 9
LTM_END_YEAR = 2025
Implementation Pattern
from analysis_utils import get_ltm_period_config, get_annual_data
ltm_start, ltm_end = get_ltm_period_config()
for year in sorted(df['Year'].unique()):
year_data, year_label = get_annual_data(df, year, ltm_start, ltm_end)
# year_label will be "2025 (LTM 9/2025)" for LTM year, or "2025" for regular year
Labeling Requirements
ALWAYS label LTM year with notation in:
- Chart titles
- Chart x-axis labels
- Table headers
- Print statements
- Report text
Example:
from config import get_ltm_label
ltm_label = get_ltm_label() # Returns "2025 (LTM 9/2025)" or None
if ltm_label:
title = f'Annual Revenue Trend\n({ltm_label})'
Common Mistakes
❌ WRONG:
year_2025_data = df[df['Year'] == 2025] # Uses partial year (not comparable)
✅ CORRECT:
from analysis_utils import get_annual_data
ltm_start, ltm_end = get_ltm_period_config()
year_2025_data, year_label = get_annual_data(df, 2025, ltm_start, ltm_end)
Disabling LTM
If all years in your analysis are complete calendar years:
# In config.py:
LTM_ENABLED = False
Then all years will be treated as full calendar years.