Математическое моделирование в трейдинге применяется часто. Математика и статистика помогают найти закономерности и интерполировать их на будущее. Они не могут дать 100% результат, но эта же математика может помочь оценить вероятность исхода того или иного события в зависимости от влияющих факторов. Модель цепей Маркова – один из таких инструментов. Несмотря на сложное изложение сути, идею можно реализовать с помощью уже встроенных в аналитическое ПО библиотек. Или можно задать вводные данные для матрицы корреляции искусственному интеллекту.
Цепи Маркова можно объяснить на простом примере с погодой. Представьте, что вы живете в городе, где погода бывает только в двух состояниях: солнечно и дождливо. Каждый день погода зависит только от того, какая она была сегодня, а не от того, какая была вчера или позавчера.
Например, если сегодня солнечно, то по наблюдениям может оказаться, что завтра с вероятностью 80% снова будет солнечно и 20% – дождливо. А если сегодня идет дождь, то вероятность того, что завтра снова пойдет дождь, может составлять 60%, а солнечной погоды – 40%. Чтобы спрогнозировать погоду на завтра, достаточно знать, какая погода сегодня. Это и есть суть цепи Маркова: будущее зависит только от текущего состояния.
Если взять этот пример и записать его в виде таблицы (или матрицы переходов), где указаны вероятности перехода из одного состояния в другое, то получится простая модель, позволяющая оценивать, как часто в долгосрочной перспективе будет солнечно или дождливо.
Матрица Маркова для трейдинга
Модели переходных вероятностей (Марковские цепи) предполагают, что система (например, рынок) находится в одном из конечного числа состояний, и вероятность перехода в следующее состояние зависит только от текущего состояния (принцип «без памяти»).
Скрытые марковские модели (HMM) расширяют эту концепцию, предполагая, что реальные рыночные режимы (скрытые состояния) не наблюдаются напрямую, но их влияние проявляется через наблюдаемые данные (например, цены или их изменения). Таким образом, HMM позволяют «раскрыть» скрытые режимы, которые определяют динамику цен, и на основе этого принимать торговые решения.
Составляющие компоненты модели:
- Набор скрытых состояний (S). Это те режимы, в которых может находиться рынок. Например:
- s1: Бычий (растущий) рынок.
- s2: Медвежий (падающий) рынок.
- s3: Нейтральный (боковой) рынок.
2. Набор наблюдаемых переменных (O). Это данные, которые трейдер может определять сам (ценовые данные, технические индикаторы). Например, можно использовать дневные процентные изменения цены или отношения цен (например, Close/Open).
3. Матрица переходов (A). Каждый элемент a(i, j) обозначает вероятность перехода от скрытого состояния s(i) к s(j) за один временной шаг.

4. Матрица эмиссии (B). Эта матрица описывает, с какой вероятностью наблюдается то или иное значение (или распределение) наблюдаемой переменной, если рынок находится в определенном скрытом состоянии. Если наблюдения дискретны, то для каждого состояния s(i) задается распределение (формулу указывать не будем – она сложная). Если наблюдения непрерывны, предполагается, что они распределены по гауссовскому закону с параметрами (средним и дисперсией), зависящими от s(i).
5. Начальное распределение (π):
Вектор π = [π1, π2, π3] задает вероятность того, что в начальный момент рынок находится в каждом из состояний. ∑iπ(i) = 1
Формула стандартной скрытой марковской модели:

Принципы построения модели:
- Определение целей модели. Решите, что вы хотите прогнозировать – например, будущий тренд (рост, падение, флет) или конкретные значения цены.
- Выбор скрытых состояний. Определите, сколько режимов (состояний) имеет рынок. Это число часто выбирается эмпирически (например, 2 или 3 состояния).
- Выбор наблюдаемых переменных. Решите, какие именно данные (технические индикаторы, процентные изменения, объемы) будут вводными.
- Предположения о распределении. Если данные непрерывные, примите предположение (например, гауссовское распределение). Это означает, что для каждого скрытого состояния будут оценены среднее и стандартное отклонение наблюдаемой переменной.
- Оценка параметров. С помощью исторических данных проведите обучение модели. Наиболее распространенный метод – алгоритм Баума–Велша (вариант EM-алгоритма). Он позволяет оценить матрицу переходов AAA, матрицу эмиссий BBB и начальное распределение.
- Валидация и тестирование. Разделите данные на обучающую и тестовую выборки. После обучения проверьте, насколько модель правильно определяет скрытые состояния на данных, не участвовавших в обучении.
Пример:
- Скачиваете данные по S&P 500 за заданный период и вычисляете логарифмические значения вводных данных. Например, ln (Close(t)/Close(t-1)). Пример приведен, если в качестве наблюдаемых вводных данных выбраны цены закрытия.
- Обучаете модель Гауссового HMM с тремя скрытыми состояниями на основе наблюдений (выбранных вводных переменных).
- После обучения модель выдает для каждого дня наиболее вероятное скрытое состояние.
- Результат можно интерпретировать, сравнив среднюю доходность/убыток ценового движения для каждого состояния: состояние с наибольшим средним считается бычьим значением, с наименьшим – медвежьим.
- На основании этого простого правила генерируются торговые сигналы (1 – купить, -1 – продать, 0 – без сигнала).
- Дальнейший анализ (анализ бектеста, оптимизация) помогают оценить эффективность стратегии.
Этот пошаговый пример является отправной точкой для дальнейшей адаптации модели под индивидуальные потребности трейдера. По мере накопления опыта можно добавлять дополнительные признаки (например, объемы, технические индикаторы, данные из стакана цен) для повышения точности прогнозов.
Вывод. Общая идея: расчет вероятностей и прогноз составляется на основе того, что произошло на текущий момент. С каждым новым событием (новой свечой) прогноз пересчитывается. В качестве вводных данных (наблюдений) можно брать любые влияющие на прогноз факторы: данные индикаторов, статистические показатели, изменение торговых объемов. Чем их больше, тем точнее модель.
Дальше в ход идет математический аппарат. Обработка вводных данных с помощью логарифмических моделей, расчет дисперсии и т.д. На выходе получается корреляционная модель, показывающая вероятность роста цены, движения вниз или флета в зависимости от разных факторов. Сложно? Да. Подобные модели создавались профессиональными математиками годами. Но никто не составляет матрицу вручную. В аналитическое ПО вводите наблюдаемые данные – получаете матрицу. Но подобное ПО может оказаться платным.