The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
CRAFT provides Conditional Regime Analog Forecasting with Trajectories tools for multivariate time series. It builds lag and lead trajectory embeddings, detects SVD-based changepoint regimes, estimates transition probabilities, samples plausible future-trajectory analogues, and fits smooth empirical forecast distributions.
After CRAN release:
install.packages("CRAFT")For local development from this folder:
install.packages(".", repos = NULL, type = "source")library(CRAFT)
set.seed(1)
series <- data.frame(
asset_a = cumprod(1 + rnorm(100, 0.001, 0.01)),
asset_b = cumprod(1 + rnorm(100, 0.0005, 0.012))
)
fit <- craft_fit(
series,
window = 5,
n_draws = 100,
n_factors = 1,
min_segment = 5,
max_regimes_per_factor = 3,
n_testing = 0,
verbose = FALSE
)
fit$valid_joint_acc
pred <- craft_predict(fit, n_draws = 25, seed = 1)
names(pred$return_dists)Lower-level functions are available for custom pipelines:
trajectory_embedding() builds aligned past and future
trajectory matrices.svd_changepoint_regimes() detects regimes in
transformed time-series data.regime_sampler() samples historical future-trajectory
rows from regime probabilities.trajectory_forecast() fits smooth empirical forecast
distributions.denoiser() selects informative numeric features before
regime detection.time_volume_weights() creates volume-derived
observation weights.craft_autotune() samples candidate settings and ranks
their internal backtest scores. Lower scores are better; direction
accuracy is negated for ranking.
tuned <- craft_autotune(
series, n_models = 2, top_k = 1, n_testing = 2,
search_space = list(transition_alpha = c(0.5, 1, 2)),
fixed_args = list(window = 5, horizon = 5, n_draws = 40,
n_factors = 1, min_segment = 5,
max_regimes_per_factor = 3),
seed = 123, verbose = FALSE
)
tuned$results
if (length(tuned$top_models)) {
best_fit <- tuned$top_models[[1]]$fit
prediction <- craft_predict(best_fit, n_draws = 25, seed = 7)
}Search specifications may be candidate vectors, scalar constants,
zero-argument sampler functions, or lists such as
list(type = "numeric", min = 0.1, max = 10, log = TRUE).
Sampled settings override fixed_args, which override
arguments in .... An empty
search_space = list() repeats the fixed settings with
different model seeds. Optional search_parallel = TRUE uses
two workers by default and disables nested backtest parallelism. Serial
backtests are also the default during serial search; pass
backtest_parallel = TRUE explicitly to enable them.
Keep horizon and backtest_min_train fixed
when comparing different windows or segment lengths so candidates are
evaluated on the same outcomes. Inspect tuned$failures
before using the selected fit. These backtests select parameters; use a
separate, later holdout period to assess the selected model’s
performance.
GPL-3
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.