anofox-forecast-edalisted
Install: claude install-skill DataZooDE/anofox-forecast
# Anofox Forecast — EDA & Data Quality Cheat Sheet
**Extension:** `anofox_forecast` v0.15.3 | **DuckDB:** v1.4.5 LTS / v1.5.4+ | **Dual naming:** `ts_*` and `anofox_fcst_ts_*`
Understand your data before modelling it: per-series statistics, data-quality scores, feature vectors for ML.
## Statistics
### `ts_stats` (table function) — 34 metrics per series
```sql
ts_stats(source VARCHAR, group_col COLUMN, date_col COLUMN, value_col COLUMN,
frequency VARCHAR) → TABLE
```
Returns 34 columns: `length`, `n_nulls`, `n_nan`, `n_zeros`, `n_positive`, `n_negative`, `n_unique_values`, `is_constant`, `n_zeros_start`, `n_zeros_end`, `plateau_size`, `plateau_size_nonzero`, `mean`, `median`, `std_dev`, `variance`, `min`, `max`, `range`, `sum`, `skewness`, `kurtosis`, `tail_index`, `bimodality_coef`, `trimmed_mean`, `coef_variation`, `q1`, `q3`, `iqr`, `autocorr_lag1`, `trend_strength`, `seasonality_strength`, `entropy`, `stability`, plus date-derived `expected_length` and `n_gaps`.
```sql
-- Every stat for every series
SELECT * FROM ts_stats('sales', product_id, ds, y, '1d');
-- Quick sanity check
SELECT product_id, length, n_nulls, n_gaps, trend_strength, seasonality_strength
FROM ts_stats('sales', product_id, ds, y, '1d')
WHERE length < 30 OR n_gaps > 0
ORDER BY n_gaps DESC;
```
### `ts_stats_agg` (aggregate)
For custom `GROUP BY` shapes. Takes `(date, value)` — DO NOT wrap in `LIST(...)`.
```sql
ts_stats_agg(date_col TIMESTAMP, value_col DOUBLE)
→ STRUCT(length UBI