# codez

`codez` fits a seq2seq encoder-decoder model for time-feature forecasting. Version
2.0 moves the neural backend from TensorFlow/Keras to `torch`, keeps the original
`codez()` entry point, and adds a more R-native workflow through `fit_codez()`.

## Install backend

`torch` is used at fit time:

```r
install.packages("torch")
torch::install_torch()
```

## Basic use

```r
library(codez)

model <- fit_codez(
  amzn_aapl_fb[, -1],
  dates = as.Date(amzn_aapl_fb$Date),
  seq_len = 20,
  n_samp = 3,
  n_windows = 5,
  control = codez_control(epochs = 50, batch_size = 32, n_sim = 1000)
)

forecast <- predict(model)
summary(model)
plot(model)
```

## What changed in 2.0

* Torch backend for the autoencoder and latent forward network.
* `fit_codez()` returns a `codez_model` with tidy forecasts, baseline backtests,
  and S3 methods.
* Convenience dependencies were replaced with local support functions; model
  fitting now only needs `torch` at runtime.
* `codez()` still returns the legacy list shape: `history`, `best_model`, and
  `time_log`.
* Mixed numeric/categorical data is rejected explicitly. Pass all numeric or all
  factor/character columns.
* Numeric fits include rolling naive and average baseline comparisons.

## Output shape

`predict(model)` returns one row per feature and horizon, with forecast summary
columns such as `min`, interval quantiles, `50%`, `mean`, `sd`, and `pred_scores`.

The legacy result is still available at:

```r
model$result
```
