How to process financial data in fHMM?

Lennart Oelschläger


The package fHMM can model empirical and simulated data.

Empirical data

You have to options to provide fHMM with empirical data:

  1. You can save your data in a csv-file in a folder named data under the path path, where path needs to correspond to path specified in controls.

  2. You can download daily prices of your preferred stock from via

download_data(name, symbol, from, to, path)


For example, the call

download_data(name = "dax", symbol = "^GDAXI", from = "2000-01-01", to = Sys.Date(), path = ".")

downloads the 21st century daily data of the Deutscher Aktienindex into the folder data in the current working directory (because path = ".").

Historical events

Historical events can be highlighted in the visualization of the decoded, empirical time series by passing a named list events with elements dates (a vector of dates) and names (a vector of names for the events) to fit_hmm.

For example, passing

events = list(
  dates = c("2001-09-11","2008-09-15","2020-01-27"),
  names = c("9/11 terrorist attack","Bankruptcy of Lehman Brothers","First COVID-19 case in Germany")

to fit_hmm highlights three important historical events in the decoded time series.

Simulated data

If you do not have empirical data at hand or simply want to conduct a simulation experiment, fHMM can simulate data from a hidden Markov model for you. If you do not specify the data parameter in the model’s controls, data gets simulated for you.

You can specify the model coefficients by passing the list sim_par in thetaList format (see the vignette model parameters) to fit_hmm. Otherwise, the parameters are randomly drawn from -1 to 1. Setting scale_par(x,y) in controls scales these values by x and y on the coarse scale and on the fine scale, respectively.