No description
Find a file
2026-06-02 10:38:36 +00:00
Include/CategoricalHMM new files added 2026-06-02 13:36:51 +03:00
Scripts new files added 2026-06-02 13:36:51 +03:00
Article-22745-Categorical-Hidden-Markov-Model-MQL5.mqproj new files added 2026-06-02 13:36:51 +03:00
README.md Обновить README.md 2026-06-02 10:38:36 +00:00

Article-22745-Categorical-Hidden-Markov-Model-MQL5

This repository is an article-derived reference project based on the original MQL5 article. It does not claim to reproduce the full original source code unless files are explicitly attached.

Overview

Reference repository for an MQL5 implementation of a categorical Hidden Markov Model (HMM) as a discrete-state, discrete-observation state space model. The article describes a CCategoricalHMM class and example scripts covering posterior inference, Baum-Welch training, synthetic sampling, model selection via AIC/BIC, and online filtering.

Original Article

Repository Purpose

This repository is intended as a technical reference/reconstruction of the article’s MQL5 material on categorical HMMs.

Its purpose is to preserve the described class interface, workflow, and example scenarios:

  • hidden state inference with Forward-Backward
  • parameter estimation with EM / Baum-Welch
  • synthetic sequence generation
  • hidden-state-count selection using AIC/BIC
  • real-time recursive filtering

Key Concepts

  • State Space Models (SSM)
  • Hidden Markov Models (HMM)
  • Discrete latent states
  • Categorical emissions
  • Transition matrix TR
  • Emission matrix E
  • Forward-Backward inference
  • Filtering vs smoothing
  • EM / Baum-Welch training
  • Dirichlet-based random initialization
  • Bayesian regularization with pseudo-counts
  • AIC / BIC model selection
  • Online Bayesian filtering

Algorithm / Architecture Summary

The article presents a class CCategoricalHMM with the following documented members and methods:

  • Core parameters:
  • m_numStates
  • m_numEmissions
  • m_TR
  • m_E
  • Priors / regularization:
  • m_pTR
  • m_pE
  • Training history:
  • m_logliks

Main methods described in the article:

  • Fit(...)

  • Trains transition and emission matrices with the Baum-Welch EM algorithm.

  • Uses scaled inference internally.

  • Supports tolerance-based convergence checks.

  • Can use pseudo-count priors to avoid zero-probability degeneration.

  • Inference(...)

  • Implements scaled Forward-Backward inference.

  • Produces:

  • smoothing distribution

  • filtering distribution

  • backward conditional likelihood terms

  • log-likelihood

  • scaling coefficients

  • Sample(...)

  • Generates hidden-state and observation sequences from supplied TR and E.

  • Uses cumulative distributions for categorical sampling.

  • Filter(...)

  • Performs one-step online Bayesian update from previous state probabilities and a new observation.

  • AIC(...), BIC(...), GetParams()

  • Support model selection by balancing fit quality and model complexity.

The article also discusses random row initialization with Dirichlet distributions through helper methods:

  • RandomDirichlet(...)
  • RandomizeMatrix(...)

Mentioned or Attached Files

Explicitly attached files

No attached source files were available in the processed input.

Files mentioned in the article text

  • CategoricalHMM.mqh — class declaration and implementation outline for CCategoricalHMM
  • Inference.mq5 — inference and synthetic sampling example
  • Learning.mq5 — Baum-Welch training example
  • ModelSelection.mq5 — hidden-state-count selection with AIC/BIC
  • Filter.mq5 — online filtering example
  • MQL5.zip — archive said to contain the article files

Statistics

  • Language: MQL5
  • Main model type: categorical Hidden Markov Model
  • Hidden states in examples: 2 and 3
  • Emission symbols in examples: 6
  • Example inference sample size: 300
  • Example model-selection sample size: 5000
  • Multi-start fits in model selection example: 10
  • Training iterations shown:
  • up to 100 in Learning.mq5
  • 20 in ModelSelection.mq5

Tags

mql5, hmm, hidden-markov-model, state-space-model, categorical-distribution, baum-welch, forward-backward, bayesian-filtering, aic, bic

Difficulty

Intermediate to Advanced

Limitations

  • The full original repository content was not attached in the processed input.
  • Article metadata is incomplete: article ID, publication date, category, and URL were not provided.
  • This README is based on the article text and code excerpts only.
  • Some implementation details may remain unavailable outside the quoted snippets.
  • No claim is made that this repository exactly matches the author’s original archive unless the referenced files are explicitly added.

Reference

Based on the original MQL5 article by Evgeniy Chernish describing the CCategoricalHMM class, its mathematical background, and example scripts for inference, training, model selection, and online filtering.