Skip to content

Add GETS indicator saturation (SIS/IIS/MIS/TIS) with example notebook#8

Open
mortentabor wants to merge 3 commits intomainfrom
feature/gets-indicator-saturation
Open

Add GETS indicator saturation (SIS/IIS/MIS/TIS) with example notebook#8
mortentabor wants to merge 3 commits intomainfrom
feature/gets-indicator-saturation

Conversation

@mortentabor
Copy link
Contributor

Summary

  • Implements Autometrics/GETS model selection (gets_search) with bounded iterative search, multi-path exploration, and encompassing tests
  • Adds indicator saturation (isat) with SIS (level shifts), IIS (outliers), MIS (coefficient shifts), TIS (broken trends), and user-supplied indicators
  • Split-half block procedure for large indicator sets that exceed n/2 candidates
  • Dual representation: shifts ↔ regime levels with SE propagation via the delta method
  • 3 visualization functions: plot_sis_coefficients, plot_mis_coefficients, plot_regime_levels
  • .isat() convenience methods on OLS, AR, ADL models
  • Example notebook 05 demonstrating all features including AR(1) with dual breaks at different dates, comparison with Bai-Perron and Markov switching, and end-to-end workflow

Test plan

  • 166 new GETS tests pass (1069 total)
  • ruff check and ruff format --check clean
  • Example notebook 05 executes all cells without errors
  • Notebook covers SIS, IIS, MIS, TIS, combined, AR/ADL integration, tuning, comparison, workflow

🤖 Generated with Claude Code

@mortentabor mortentabor force-pushed the feature/gets-indicator-saturation branch from 7ee87d5 to 6f9da85 Compare February 20, 2026 16:48
Implements the Autometrics/GETS algorithm for detecting structural breaks
via general-to-specific model selection with indicator saturation.

New features:
- gets_search(): bounded iterative GETS reduction with multi-path search
- isat(): indicator saturation with SIS (level shifts), IIS (outliers),
  MIS (coefficient shifts), TIS (broken trends), and user indicators
- Split-half block procedure for large indicator sets
- Dual representation: shifts <-> regime levels with SE propagation
  via the delta method
- 3 visualization functions: plot_sis_coefficients, plot_mis_coefficients,
  plot_regime_levels
- .isat() convenience methods on OLS, AR, ADL models
- Example notebook 05 demonstrating all features including comparison
  with Bai-Perron and Markov switching

166 new tests (1069 total), lint clean.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@mortentabor mortentabor force-pushed the feature/gets-indicator-saturation branch from 6f9da85 to 9f59565 Compare February 20, 2026 17:00
Morten Tabor and others added 2 commits February 20, 2026 20:24
Type-narrowing and type-conversion fixes across 4 files — no logic changes:
- saturation.py: assert exog_names after exog null check, remove unused type: ignore
- selection.py: remove unused type: ignore on ic_map.get()
- ar.py: convert _exog_orig to ndarray before passing to isat()
- adl.py: flip isinstance check for proper int narrowing, convert _exog_orig to ndarray

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant