Skip to contents

This function sets and checks the specification of controls for the fHMM package.

Usage

set_controls(controls = NULL)

Arguments

controls

A list of controls. Either none, all, or selected parameters can be specified. Unspecified parameters are set to default values (the values in brackets). If hierarchy = TRUE, parameters with a (*) must be a vector of length 2, where the first entry corresponds to the coarse-scale and the second entry to the fine-scale layer.

  • hierarchy (FALSE): A boolean, set to TRUE for an hierarchical HMM.

  • states (*) (2): The number of states of the underlying Markov chain.

  • sdds (*) ("t(df = Inf)"): Specifying the state-dependent distribution, one of the "t" (the t-distribution) or "gamma" (the gamma distribution). To fix one or more parameter values, write e.g. "t(df = Inf)" or "gamma(mu = 0, sigma = 1)", respectively. To fix different values of one parameter for different states, separate by "|", e.g. "t(mu = -1|1)".

  • horizon (*) (100): A numeric, specifying the length of the time horizon. The first entry of horizon is ignored if data is specified.

  • period ("m"): Only relevant if hierarchy = TRUE and horizon[2] = NA. In this case, it specifies a flexible, periodic fine-scale time horizon and can be one of

    • "w" for a week,

    • "m" for a month,

    • "q" for a quarter,

    • "y" for a year.

  • data (NA): A list of controls specifying the data. If data = NA, data gets simulated. Otherwise:

    • file (*): A character, the path to a .csv-file with financial data, which must have a column named date_column (with dates) and data_column (with financial data).

    • date_column (*) ("Date"): A character, the name of the column in file with dates. Can be NA in which case consecutive integers are used as time points.

    • data_column (*) ("Close"): A character, the name of the column in file with financial data.

    • from (NA): A character of the format "YYYY-MM-DD", setting a lower data limit. No lower limit if from = NA. Ignored if controls$data$date_column is NA.

    • to (NA): A character of the format "YYYY-MM-DD", setting an upper data limit. No upper limit if from = NA. Ignored if controls$data$date_column is NA.

    • logreturns (*) (FALSE): A boolean, if TRUE the data is transformed to log-returns.

    • merge (function(x) mean(x)): Only relevant if hierarchy = TRUE. In this case, a function, which merges a numeric vector of fine-scale data x into one coarse-scale observation. For example,

      • merge = function(x) mean(x) defines the mean of the fine-scale data as the coarse-scale observation,

      • merge = function(x) mean(abs(x)) for the mean of the absolute values,

      • merge = function(x) (abs(x)) for the sum of of the absolute values,

      • merge = function(x) (tail(x,1)-head(x,1))/head(x,1) for the relative change of the first to the last fine-scale observation.

  • fit: A list of controls specifying the model fitting:

    • runs (100): An integer, setting the number of optimization runs.

    • origin (FALSE): A boolean, if TRUE the optimization is initialized at the true parameter values. Only for simulated data. If origin = TRUE, this sets run = 1 and accept = 1:5.

    • accept (1:3): An integer (vector), specifying which optimization runs are accepted based on the output code of nlm.

    • gradtol (1e-6): A positive numeric value, passed on to nlm.

    • iterlim (200): A positive integer, passed on to nlm.

    • print.level (0): One of 0, 1, and 2, passed on to nlm.

    • steptol (1e-6): A positive numeric value, passed on to nlm.

Value

An object of class fHMM_controls.

Details

See the vignettes for more information on how to specify controls.

Examples

### HMM controls
controls <- list(
  states  = 2,
  sdds    = "t(mu = 0, sigma = 1, df = 1)",
  horizon = 400,
  fit     = list("runs" = 50)
)
set_controls(controls)
#> fHMM controls:
#> * hierarchy: FALSE 
#> * data type: simulated 
#> * number of states: 2 
#> * sdds: t(mu = 0, sigma = 1, df = 1) 
#> * number of runs: 50  

### HHMM controls
controls <- list(
  hierarchy = TRUE
)
set_controls(controls)
#> fHMM controls:
#> * hierarchy: TRUE 
#> * data type: simulated 
#> * number of states: 2 2 
#> * sdds: t() t() 
#> * number of runs: 100