| name | time-series-forecaster |
| description | Time series forecasting with ARIMA, Prophet, LSTM, and statistical methods. Activates for "time series", "forecasting", "predict future", "trend analysis", "seasonality", "ARIMA", "Prophet", "sales forecast", "demand prediction", "stock prediction". Handles trend decomposition, seasonality detection, multivariate forecasting, and confidence intervals with SpecWeave increment integration.
|
Time Series Forecaster
Overview
Specialized forecasting pipelines for time-dependent data. Handles trend analysis, seasonality detection, and future predictions using statistical methods, machine learning, and deep learning approaches—all integrated with SpecWeave's increment workflow.
Why Time Series is Different
Standard ML assumptions violated:
- ❌ Data is NOT independent (temporal correlation)
- ❌ Data is NOT identically distributed (trends, seasonality)
- ❌ Random train/test split is WRONG (breaks temporal order)
Time series requirements:
- ✅ Temporal order preserved
- ✅ No data leakage from future
- ✅ Stationarity checks
- ✅ Autocorrelation analysis
- ✅ Seasonality decomposition
Forecasting Methods
1. Statistical Methods (Baseline)
ARIMA (AutoRegressive Integrated Moving Average):
from specweave import TimeSeriesForecaster
forecaster = TimeSeriesForecaster(
method="arima",
increment="0042"
)
forecaster.fit(train_data)
forecast = forecaster.predict(horizon=30)
Seasonal Decomposition:
decomposition = forecaster.decompose(
data=sales_data,
model='multiplicative',
period=12
)
2. Prophet (Facebook)
Best for: Business time series (sales, website traffic, user growth)
from specweave import ProphetForecaster
forecaster = ProphetForecaster(increment="0042")
forecaster.fit(
data=sales_data,
holidays=us_holidays,
seasonality_mode='multiplicative'
)
forecast = forecaster.predict(horizon=90)
Prophet with Custom Regressors:
forecaster.add_regressor("marketing_spend")
forecaster.add_regressor("temperature")
3. Deep Learning (LSTM/GRU)
Best for: Complex patterns, multivariate forecasting, non-linear relationships
from specweave import LSTMForecaster
forecaster = LSTMForecaster(
lookback_window=30,
horizon=7,
increment="0042"
)
forecaster.fit(
data=sensor_data,
epochs=100,
batch_size=32
)
forecast = forecaster.predict(horizon=7)
4. Multivariate Forecasting
VAR (Vector AutoRegression) - Multiple related time series:
from specweave import VARForecaster
forecaster = VARForecaster(increment="0042")
forecaster.fit(data={
'store_1_sales': store1_data,
'store_2_sales': store2_data,
'store_3_sales': store3_data
})
forecast = forecaster.predict(horizon=30)
Time Series Best Practices
1. Temporal Train/Test Split
X_train, X_test = train_test_split(data, test_size=0.2)
split_date = "2024-01-01"
train = data[data.index < split_date]
test = data[data.index >= split_date]
train = data[:-30]
test = data[-30:]
2. Stationarity Testing
from specweave import TimeSeriesAnalyzer
analyzer = TimeSeriesAnalyzer(increment="0042")
stationarity = analyzer.check_stationarity(data)
if not stationarity['is_stationary']:
data_diff = analyzer.difference(data, order=1)
data_detrended = analyzer.detrend(data)
Stationarity Report:
# Stationarity Analysis
## ADF Test (Augmented Dickey-Fuller)
- Test Statistic: -2.15
- P-value: 0.23
- Critical Value (5%): -2.89
- Result: ❌ NON-STATIONARY (p > 0.05)
## Recommendation
Apply differencing (order=1) to remove trend.
After differencing:
- ADF Test Statistic: -5.42
- P-value: 0.0001
- Result: ✅ STATIONARY
3. Seasonality Detection
seasonality = analyzer.detect_seasonality(data)
4. Cross-Validation for Time Series
cv_results = forecaster.cross_validate(
data=data,
horizon=30,
n_splits=5,
metric='mape'
)
5. Handling Missing Data
forecaster.handle_missing(
method='interpolate',
limit=3
)
forecaster.handle_missing(
method='seasonal_interpolate',
period=12
)
Common Time Series Patterns
Pattern 1: Sales Forecasting
from specweave import SalesForecastPipeline
pipeline = SalesForecastPipeline(increment="0042")
pipeline.fit(
sales_data=daily_sales,
holidays=us_holidays,
regressors={
'marketing_spend': marketing_data,
'competitor_price': competitor_data
}
)
forecast = pipeline.predict(horizon=90)
Pattern 2: Demand Forecasting
from specweave import DemandForecastPipeline
pipeline = DemandForecastPipeline(
aggregation='daily',
increment="0042"
)
forecasts = pipeline.fit_predict(
products=['product_A', 'product_B', 'product_C'],
horizon=30
)
Pattern 3: Stock Price Prediction
from specweave import FinancialForecastPipeline
pipeline = FinancialForecastPipeline(increment="0042")
pipeline.fit(
price_data=stock_prices,
features=['volume', 'volatility', 'RSI', 'MACD']
)
forecast = pipeline.predict(horizon=7)
Pattern 4: Sensor Data / IoT
from specweave import SensorForecastPipeline
pipeline = SensorForecastPipeline(
method='lstm',
increment="0042"
)
pipeline.fit(
sensors={
'temperature': temp_data,
'humidity': humidity_data,
'pressure': pressure_data
}
)
forecast = pipeline.predict(horizon=24)
Evaluation Metrics
Time series-specific metrics:
from specweave import TimeSeriesEvaluator
evaluator = TimeSeriesEvaluator(increment="0042")
metrics = evaluator.evaluate(
y_true=test_data,
y_pred=forecast
)
Evaluation Report:
# Time Series Forecast Evaluation
## Point Metrics
- MAPE: 8.2% (target: <10%) ✅
- RMSE: 124.5
- MAE: 98.3
- MASE: 0.85 (< 1 = better than naive forecast) ✅
## Directional Accuracy
- Correct direction: 73% (up/down predictions)
## Forecast Bias
- Mean Error: -5.2 (slight under-forecasting)
- Bias: -2.1%
## Confidence Intervals
- 80% interval coverage: 79.2% ✅
- 95% interval coverage: 94.1% ✅
## Recommendation
✅ DEPLOY: Model meets accuracy targets and is well-calibrated.
Integration with SpecWeave
Increment Structure
.specweave/increments/0042-sales-forecast/
├── spec.md (forecasting requirements, accuracy targets)
├── plan.md (forecasting strategy, method selection)
├── tasks.md
├── data/
│ ├── train_data.csv
│ ├── test_data.csv
│ └── schema.yaml
├── experiments/
│ ├── arima-baseline/
│ ├── prophet-holidays/
│ └── lstm-multivariate/
├── models/
│ ├── prophet_model.pkl
│ └── lstm_model.h5
├── forecasts/
│ ├── forecast_2024-01.csv
│ ├── forecast_2024-02.csv
│ └── forecast_with_intervals.csv
└── analysis/
├── stationarity_test.md
├── seasonality_decomposition.png
└── forecast_evaluation.md
Living Docs Integration
/sw:sync-docs update
Updates:
<!-- .specweave/docs/internal/architecture/time-series-forecasting.md -->
## Sales Forecasting Model (Increment 0042)
### Method Selected: Prophet
- Reason: Handles multiple seasonality + holidays well
- Alternatives tried: ARIMA (MAPE 12%), LSTM (MAPE 10%)
- Prophet: MAPE 8.2% ✅ BEST
### Seasonality Detected
- Weekly: Strong (7-day cycle)
- Monthly: Moderate (30-day cycle)
- Yearly: Weak
### Holiday Effects
- Black Friday: +180% sales (strongest)
- Christmas: +120% sales
- Thanksgiving: +80% sales
### Forecast Horizon
- 90 days ahead
- Confidence intervals: 80%, 95%
- Update frequency: Weekly retraining
### Model Performance
- MAPE: 8.2% (target: <10%)
- Directional accuracy: 73%
- Deployed: 2024-01-15
Commands
/ml:forecast --horizon 30 --method prophet
/ml:evaluate-forecast 0042
/ml:decompose-timeseries 0042
Advanced Features
1. Ensemble Forecasting
ensemble = EnsembleForecast(increment="0042")
ensemble.add_forecaster("arima", weight=0.3)
ensemble.add_forecaster("prophet", weight=0.5)
ensemble.add_forecaster("lstm", weight=0.2)
forecast = ensemble.predict(horizon=30)
2. Forecast Reconciliation
reconciler = ForecastReconciler(increment="0042")
reconciled = reconciler.reconcile(
forecasts={
'total': total_forecast,
'store1': store1_forecast,
'store2': store2_forecast,
'store3': store3_forecast
},
method='bottom_up'
)
3. Forecast Monitoring
monitor = ForecastMonitor(increment="0042")
monitor.track_performance(
forecasts=past_forecasts,
actuals=actual_values
)
if monitor.accuracy_degraded():
print("⚠️ Forecast accuracy dropped 15% - retrain model!")
Summary
Time series forecasting requires specialized techniques:
- ✅ Temporal validation (no random split)
- ✅ Stationarity testing
- ✅ Seasonality detection
- ✅ Trend decomposition
- ✅ Cross-validation (expanding window)
- ✅ Confidence intervals
- ✅ Forecast monitoring
This skill handles all time series complexity within SpecWeave's increment workflow, ensuring forecasts are reproducible, documented, and production-ready.