- MQL5 100%
| Include/CategoricalHMM | ||
| Scripts | ||
| Article-22745-Categorical-Hidden-Markov-Model-MQL5.mqproj | ||
| README.md | ||
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
- Article ID: 22745
- Author: Evgeniy Chernish
- Publication date: 2026.06.01 00:41
- Category: Library
- URL: https://www.mql5.com/ru/articles/22745
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_numStatesm_numEmissionsm_TRm_E- Priors / regularization:
m_pTRm_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
TRandE. -
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 forCCategoricalHMMInference.mq5— inference and synthetic sampling exampleLearning.mq5— Baum-Welch training exampleModelSelection.mq5— hidden-state-count selection with AIC/BICFilter.mq5— online filtering exampleMQL5.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.