Skip to content

Releases

1.0.5

Choose a tag to compare

@winedarksea winedarksea released this 09 Nov 05:17
6c6ca10

Thanks to AI, you actually get proper release notes this time:

1.0.5 🇺🇦 🇺🇦 🇺🇦

  • Saved-template compatibility: fixes and new defaults below can change forecasts when refitting templates from 1.0.4 or earlier.
  • Linear models: replaced inverse/Gram least-squares coefficient fits with direct solves and objective-preserving augmented least-squares fallback. BasicLinearModel now fits finite observations per series and computes normal observation intervals from the training fit, including short histories and trend damping. Cassandra skips redundant condition-number checks.
  • Feature detection and trend forecasting: Added joint detection of slope changes and level shifts; improved changepoint handling around missing data; added adaptive seasonality fitting, trend damping, slope shrinkage, and wider intervals for possible future trend changes.
  • TVA: Added forecast origin anchoring and a configurable internal fit_horizon for factor and torch-free modes. With fit_horizon=None, the internal horizon is now capped at max(28, T // 4), changing long forecasts in factor and 'none' modes. Expanded factor forecasting, covariance estimation, and reconciliation behavior.
  • Cassandra: Fixed ridge penalties to exempt the intercept instead of the first feature, changing explicit lambda and automatic regularization fits; x_scaler=True now fits an intercept. Revised level autoregression changes forecasts from 1.0.4 templates. Fixed autoregressive forecasting on detrended residuals. Fixed max_colinearity to use maximum absolute pairwise correlation instead of a triangular minimum that could never exceed a positive threshold. The filter now drops aliased Fourier columns when enabled (default 0.998; None disables it), changing refits of existing templates. Changed the separate max_multicolinearity eigenvalue filter default from 0.001 to None (off); 1.0.4 get_params omitted this key, so saved Cassandra templates without it now refit with the filter off. General template 45 explicitly retains 0.001.
  • Anomaly detection: Added calibrated Gaussian mixture anomaly scores and improved handling of univariate and multivariate anomaly outputs. (why do LLMs like calibration so much?) med_diff now scales by the median absolute difference rather than the median signed difference, changing scores. For nonparametric with output='univariate' across multiple input columns, corrected flattened-index mapping changes which rows are flagged; scores now report the fraction of anomalous columns (higher means more anomalous) instead of its complement, and return a one-column DataFrame instead of a Series.
  • Changepoints: CUSUM now uses a robust noise scale when normalized, changing threshold/drift semantics and detections (especially on trends); get_new_params still samples thresholds of 5–30, so existing settings may need retuning. PELT and L0 now honor min_segment_length. L1 applies a spacing filter in the batch path used by aggregate_method='individual', but the mean/median path only collapses adjacent detections and does not enforce minimum spacing; segment_length controls the scoring window in noise mode; bottom_up treats max_changepoints as a cap instead of a floor; ED-PELT removed its ×5 penalty calibration and can find fewer changepoints. L1/L0 trend extraction now uses offset ceil(order / 2) instead of order, reporting order 2+ changepoints floor(order / 2) steps earlier; adjacent detections collapse to their strongest position for all orders in the default 'relative' mode. EWMA now starts at lambda * x[0] instead of x[0], changing detections near the start of a series. half_yr_spacing now uses elapsed rather than calendar years, changing default spacing in BasicLinearModel and transformers.
  • Time-series utilities and transformations: fixed hourly Fourier features to include hours, changing hourly forecasts; FastICA now passes integer column labels (0..k-1) to subsequent transformers instead of series names. infer_frequency now returns None for fewer than two points; exactly two timestamps infer a frequency from their interval, preserving calendar month-start/month-end spacing for midnight pairs. Improved probabilistic outputs and short-history handling. Fixed the HistoricValues transformation key in the AlignLastValue + HistoricValues horizontal post-processor to match its parameters, changing its application. Halved FFTDecomposition's transformer search weight from 0.01 to 0.005.
  • PWA dependencies: Updated the Rust dependency lockfile.
  • LevelShiftMagic bug fixes that change outputs at the defaults: per-column selection (shift ids were shared across columns, a row-0 group stalled selection, one extra shift was kept), one flag per step (exact ties on integer data flagged both sides), detection windows need max(3, window_size // 3) points so series edges are no longer flagged and the last row can't leak an offset into forecasts, univariate mode combines per-series squared scores so opposite shifts no longer cancel and only individually significant series are corrected. Also: diff_overlap sizing (was ~0), remove_at_shift now sizes from raw data and fills only the removed points.
  • LevelShiftMagic: opt-in window_method="linear_gap" (detrended multiscale MOSUM with robust z, bump test spike rejection), plus scales (default [14, 30, 60]), deseasonalize, anomaly_window, tail_scan (default on, linear_gap only), alignment "median"/"linear_robust" and correction_mode="auto" (safe ratio for non-negative series). Its alpha is a robust z threshold (3-6), not the legacy std multiplier. alignment defaults per method (None: "average" legacy, "linear_robust" linear_gap); linear_gap accepts only "linear_robust", "median" or "gap" and raises otherwise. No slower than "overlap" at the defaults; benchmark in examples/level_shift_benchmark.py.
    • Also: tail_scan only fills free max_level_shifts slots; univariate shared scores average over series with a valid score at each date (missing series no longer dilute a shared shift).
  • TimeSeriesFeatureDetector (and so TVA): default level shift params changed to linear_gap (alpha 3.5, scales [14, 30, 60], linear_robust, tail_scan). The old default (window 364, alpha 1.8, rolling_diff) relied on the LevelShiftMagic bugs and gave ~2.1 validated false shifts per 2-year noise series once they were fixed; the new default measured recall 1.00 at 0.10-0.15.
  • TimeSeriesFeatureDetector: new prelim_level_shift (default 'auto' = on for linear_gap params) runs level shift detection before the final seasonality fit, which otherwise absorbs steps near year boundaries.
  • TimeSeriesFeatureDetector compatibility: older templates inherit trend_damping='auto', rather than undamped trends. New detector settings are not serialized into saved templates, so refits use their defaults. general_transformer_params={} now disables the transform instead of selecting the default. Explicit level_shift_validation relative_threshold and absolute_threshold values are now used as given; 1.0.4 capped them at per-series adaptive thresholds. Omitted or None thresholds retain adaptive behavior.
  • TimeSeriesFeatureDetector seasonality: adaptive_fourier now uses recurring rather than simple_3 date features. components['seasonality'] is now mean-zero, with its level/intercept moved into the residual for trend fitting, changing component attribution and downstream fits. seasonality_strength retains its existing formula but now uses seasonal fits that exclude a trend prior, with trend added back to the residual before scoring; values can fall on trending series. The score compares residual/seasonal variance with original-series variance and includes squared correlation with the original series, so it remains sensitive to trend share rather than measuring seasonality on detrended data.
  • Holiday attribution: corrected lunar calendar horizon/start-range dependence; added opt-in Easter rules (holiday_params={'use_easter_holidays': True}) and per-series suppression (global_holiday_anomaly_suppression=None) with annual holiday peers and an exceptional-outage escape hatch. True retains batch suppression; False disables it. Detector defaults (including those used by TVA) are unchanged: attribution improved, but forecast error and synthetic precision regressed in validation. See examples/holiday_attribution_report.md.
    • Fixed holiday name lookup keys dom_10_31 and dom_11_11 so Halloween and ArmisticeDay receive their intended names.
  • New get_new_params search options and their draw rates: BasicLinearModel linear_model='huber' (2%, not in fast; huber_iterations fixed at 50), ChangepointDetector l1_fused_lasso/l1_total_variation threshold_mode='noise' (20%) with threshold_multiplier, LevelShiftMagic window_method='linear_gap' (~13%), TVAModel origin_anchor (last_value 55%, deseasonalized 20%) and continuation_force='constant' (50%).
  • RadiusNeighbors regression: features are standardized and each query's radius is a multiple of its own nearest-neighbor distance (sampled 1.1-5, capped at 50 neighbors), so it is never empty and adapts to series of different scale. At 1.0.4 the absolute radius returned NaN for most predictions on load_daily/load_monthly (RollingRegression failed outright), and the RadiusNeighbors-specific pchip fills in Window/DatepartRegression are removed; the general non-finite guards in the recursive models stay. Saved templates change meaning: radius < 1 now means the single nearest row, and large radii (5, 10) reach the 50-neighbor cap.
  • DatepartRegression transformer search: corrected RadiusRegressor to RadiusNeighbors, enabling radius-specific parameter sampling for about 6.25% of draws in the default regressor pool (excluding fast/all/deep modes).
  • General templates 29 and 37: replaced sokalmichener with rogerstanimoto for SciPy compatibility (sokalmichener was deprecated in SciPy 1.15 and removed in 1.17; see the SciPy release notes).
  • TVA...
Read more

1.0.4

Choose a tag to compare

@winedarksea winedarksea released this 20 Aug 03:59
d35f318

1.0.4 🇺🇦 🇺🇦 🇺🇦

  • more tuning of MCP download install
  • TVA optimizations and new features
  • Synthetic data minor new options
  • Feature detector and associated transformer bug fixes

Sounds the same as 1.0.3! But actually is more work on the same lines

1.0.3

Choose a tag to compare

@winedarksea winedarksea released this 15 Apr 16:07
4915393

1.0.3 🇺🇦 🇺🇦 🇺🇦

  • more tuning of MCP download install
  • TVA optimizations
  • Synthetic data minor new options
  • Feature detector and associated transformer bug fixes

1.0.2

Choose a tag to compare

@winedarksea winedarksea released this 30 Mar 05:20
e481345

1.0.2 🇺🇦 🇺🇦 🇺🇦

  • more tuning of MCP download install
  • more optimization of MultivariateRegression
  • MLFlow logging function added (limited testing done)
  • MCP server breaking changes, async setup
  • MambaSSM enhanced (still slow and mediocre)
  • TVA model added
  • significant changes to optimizer for Feature Detection with synthetic, refactor of feature detector code

1.0.1

Choose a tag to compare

@winedarksea winedarksea released this 30 Jan 05:49
fa2fa7f

1.0.1 🇺🇦 🇺🇦 🇺🇦

  • fixed issue with how MCP server is loaded
  • fixed issue with python 3.9
  • tuning and optimization of MultivariateRegression
  • expanded ConvolutionFilter

1.0.0

Choose a tag to compare

@winedarksea winedarksea released this 30 Nov 21:57
6e2137a

1.0.0 🇺🇦 🇺🇦 🇺🇦

  • added ReconciliationTransformer
  • updated cointegration code, replaced Cointegration with CointegrationTransformer
  • added mocks for dependency fallbacks
  • added variational autoencoder anomaly detection method
  • some fixes for breaking changes in dependencies
  • adjustment to how custom_metric is scaled so it can work with negatives
  • improvements to the calendars, Hindu calendar should be working now
  • changes to HistoricValues which hopefully makes it more reliable
  • added pMLP and MambaSSM models (painfully slow)
  • deleted old models ComponentAnalysis, TFPRegression, TensorflowSTS, Greykite, NeuralProphet, UnivariateRegression
  • improvements to model_interrupt
  • synthetic data generation and feature extractor new, very much in beta
  • updated weather data to CDO v2 (requires API key)
  • added NASA solar data to load_live_daily
  • new methods to LevelShiftTransformer
  • created the seasonal_linear interpolation which is quite promisiing for seasonal data
  • added apply_adjustments
  • added G726Filter and G711Scaler
  • created an MCP server for AutoTS (tool naming and pattern still in beta)
  • many bug fixes, tweaks, reorganizations, and added unittests

0.6.21

Choose a tag to compare

@winedarksea winedarksea released this 05 Mar 22:34
7258a7a

0.6.21 🇺🇦 🇺🇦 🇺🇦

  • Prophet and Cassandra bug fixes

0.6.20

Choose a tag to compare

@winedarksea winedarksea released this 03 Mar 15:50
2735174

0.6.20 🇺🇦 🇺🇦 🇺🇦

  • transformer bug fixes
  • Prophet package adjustments
  • linear model singular matrix handling

0.6.19

Choose a tag to compare

@winedarksea winedarksea released this 11 Feb 22:17
1da01ee

0.6.19 🇺🇦 🇺🇦 🇺🇦

  • bug fix for transformer_list="all"

0.6.18

Choose a tag to compare

@winedarksea winedarksea released this 11 Feb 05:22
787d3e7

0.6.18 🇺🇦 🇺🇦 🇺🇦

  • minor tweaks and bug fixes
  • updated python version required to 3.9 to allow more typing options
  • validation_indexes can now be a list of tuples with mixed forecast lengths
  • "mixed_length" validation option, for limited testing of longer forecast lengths
  • kalman method for ensemble aggregation (ala sensor fusion)
  • UpscaleDownscaleTransformer added
  • PreprocessingExperts model added (experimental)