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.

Type: Package
Title: Clock of Regimes for Regime-Switching Fragility Analysis
Version: 0.1.0
Date: 2026-04-22
Description: Implements the Clock of Regimes (KRONX) framework for regime-switching fragility analysis of financial time series. The package fits Gaussian and Student-t Hidden Markov Models (HMMs) to return data, constructs a hazard-adjusted transition operator Q, derives the associated generator K = Q - I, and computes the fundamental matrix N = -K inverse to characterize expected residence times under structural fragility.
License: GPL (≥ 3)
Encoding: UTF-8
Depends: R (≥ 4.0.0)
Imports: stats, utils
Suggests: testthat (≥ 3.0.0), knitr, rmarkdown
VignetteBuilder: utils
Config/testthat/edition: 3
RoxygenNote: 7.3.3
NeedsCompilation: no
Packaged: 2026-04-22 21:02:59 UTC; olinaresmd
Author: Oscar Linares [aut, cre]
Maintainer: Oscar Linares <olinares@umich.edu>
Repository: CRAN
Date/Publication: 2026-04-24 20:20:27 UTC

Compute log returns from a close-price vector.

Description

Compute log returns from a close-price vector.

Usage

compute_log_returns(close)

Arguments

close

Numeric vector of close prices.

Value

Numeric vector of log returns (length = length(close) - 1).


Fit a Gaussian or Student-t HMM via EM with multiple random restarts.

Description

Fit a Gaussian or Student-t HMM via EM with multiple random restarts.

Usage

fit_hmm_em(
  x,
  K = 3L,
  model = c("gaussian", "student"),
  n_starts = 5L,
  max_iter = 200L,
  tol = 1e-06,
  nu_grid = c(3:30, 40, 60, 100),
  verbose = TRUE
)

Arguments

x

Numeric vector of observations (log returns).

K

Integer number of hidden states.

model

"gaussian" or "student".

n_starts

Number of random restarts.

max_iter

Maximum EM iterations per restart.

tol

Log-likelihood convergence tolerance.

nu_grid

Candidate degrees-of-freedom for Student-t grid search.

verbose

Logical; if TRUE print iteration progress.

Value

A list with components:

model

Model type string.

A

K x K transition matrix.

delta

Length-K initial state probability vector.

params

List with mu, sigma, and (Student-t) nu.

gamma

T x K posterior state probabilities.

xi

(T-1) x K x K posterior joint transition probabilities.

logLik

Scalar log-likelihood at convergence.

n

Number of observations.

K

Number of states.


Read a close-price series from a CSV file.

Description

The function is case-insensitive: it accepts close, Close, CLOSE, or any capitalisation. The first matching column is used.

Usage

read_close_series(file, close_col = "close")

Arguments

file

Path to the CSV file.

close_col

Name of the close-price column (default "close").

Value

A numeric vector of finite close prices (length >= 10).


Run the full Clock of Regimes (KRONX) analysis.

Description

Runs the KRONX pipeline on either a CSV file of prices or a numeric vector of returns supplied directly. When file is used, the function reads the CSV file, extracts the close-price column (case-insensitive match on "close" or "Close"), and computes log returns. When x is supplied, it is treated as a numeric return series and the file-ingestion step is skipped.

Usage

run_kronx(
  file = NULL,
  x = NULL,
  close_col = "close",
  K = 3L,
  n_starts = 5L,
  max_iter = 200L,
  tol = 1e-06,
  seed = 123L,
  epsilon_min = 0.01,
  c_hazard = 0.05,
  tail_alpha = 0.01,
  ruin_horizon = 250L,
  nu_grid = c(3:30, 40, 60, 100),
  verbose = TRUE,
  output_dir = "kronx_output"
)

Arguments

file

Path to a CSV file containing a close-price column. Ignored if x is supplied. Default: NULL.

x

Optional numeric vector of returns. If supplied, file is ignored and no CSV is read. This is intended in particular for small, self-contained examples and tests. Default: NULL.

close_col

Name of the close-price column. The function first tries the exact name, then a case-insensitive match, and finally falls back to any column whose name contains "close". Default: "close".

K

Number of hidden states. Default: 3L.

n_starts

Number of EM random restarts. Default: 5L.

max_iter

Maximum EM iterations per restart. Default: 200L.

tol

Log-likelihood convergence tolerance. Default: 1e-6.

seed

Random seed for reproducibility. Default: 123L.

epsilon_min

Minimum baseline Talebian hazard. Default: 0.01.

c_hazard

Hazard sensitivity to tail thickness. Default: 0.05.

tail_alpha

Left-tail probability used for the empirical loss threshold. Default: 0.01.

ruin_horizon

Horizon, in observations, used in the risk bound. Default: 250L.

nu_grid

Candidate degrees-of-freedom values for Student-t fitting. Default: c(3:30, 40, 60, 100).

verbose

Logical; if TRUE, print progress and a summary. Default: TRUE.

output_dir

Directory for output files. Created if it does not exist. Pass NULL to suppress file output. Default: "kronx_output".

Details

The function then fits Gaussian and Student-t Hidden Markov Models (HMMs), builds the KRONX operator chain Q \rightarrow K \rightarrow N, and computes a residence-weighted upper bound on extreme downside risk. Results are returned as a named list and, optionally, written to output_dir.

Value

A named list containing:

close_px

Numeric vector of raw close prices, or NULL when x is supplied directly.

ret

Numeric vector of log returns or supplied returns.

K

Number of hidden states.

gauss_fit

Fitted Gaussian HMM object.

t_fit

Fitted Student-t HMM object.

A_gauss

Gaussian transition matrix.

A_t

Student-t transition matrix.

epsilon

Per-state Talebian hazard vector.

Q

Hazard-adjusted operator.

K_mat

KRONX generator matrix.

N_mat

Fundamental matrix.

pi_qs

Quasi-stationary distribution.

pi_res

Residence-weight vector.

loss_threshold

Empirical left-tail return threshold.

q_state

Per-state tail probability.

bar_q

Residence-weighted tail probability.

bar_lambda

Residence-weighted hazard.

ruin_bound

Upper bound over ruin_horizon.

tail_alpha

The tail_alpha value used.

ruin_horizon

The ruin_horizon value used.

state_summary

A data.frame summarising per-state quantities.

vpath_t

Integer vector of Viterbi-decoded Student-t state labels.

output_files

Character vector of paths to written output files, or NULL if output_dir is NULL.

input_source

A short label describing the data source used.

Examples

# Small self-contained example suitable for automatic checking
set.seed(123)
x <- rnorm(120, mean = 0, sd = 0.01)
res <- run_kronx(
  x = x,
  K = 2L,
  n_starts = 1L,
  max_iter = 10L,
  tol = 1e-4,
  tail_alpha = 0.05,
  ruin_horizon = 25L,
  verbose = FALSE,
  output_dir = NULL
)
res$ruin_bound
dim(res$A_t)
# Self-contained file-based example
tmp <- tempfile(fileext = ".csv")
dat <- data.frame(
  date = sprintf("2026-01-%02d", 1:20),
  close = c(
    100.0, 100.2, 100.1, 100.5, 100.4,
    100.8, 101.0, 100.9, 101.3, 101.1,
    101.6, 101.5, 101.9, 102.0, 101.8,
    102.2, 102.4, 102.3, 102.7, 102.9
  )
)
utils::write.csv(dat, tmp, row.names = FALSE)
res_file <- run_kronx(
  file = tmp,
  close_col = "close",
  K = 2L,
  n_starts = 1L,
  max_iter = 8L,
  tol = 1e-4,
  tail_alpha = 0.10,
  ruin_horizon = 10L,
  verbose = FALSE,
  output_dir = NULL
)
res_file$ruin_bound

Decode the most likely hidden-state path via the Viterbi algorithm.

Description

Decode the most likely hidden-state path via the Viterbi algorithm.

Usage

viterbi_decode(x, fit)

Arguments

x

Numeric vector of observations (log returns).

fit

A fitted HMM object returned by fit_hmm_em.

Value

An integer vector of length length(x) with state labels (1-indexed).

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.