uralpro
uralpro личный блог
12 мая 2015, 14:35

Модель скрытых состояний Маркова. Часть 1

hidden-markov-model-1024x412

В данном цикле статей начинаем рассматривать модель Маркова, которая находит применение в задачах классификации состояния рынка и используется во многих биржевых роботах. Статьи основаны на постах, опубликованных в блоге Gekko Quant. Также будет рассмотрены практические алгоритмы на финансовых рынках. Код в цикле приведен на языке R. Вначале будет много теории, ее надо хотя бы попробовать понять, затем разберем практические примеры.

Рабочая среда распознавания основных паттернов.

Рассмотрим набор признаков O, полученный из набора данных d и класс w, обозначающий наиболее подходящий класс для O:

\hat{w}=\arg\max_w P(w|O)

Так как P(w|O) неизвестен, применяем правило Байеса:

\hat{w}=\arg\max_w\frac{P(O|w)P(w)}{P(O)}=\arg\max_w P(O|w)P(w)

Максимизация не зависит от P(O), поэтому мы можем игнорировать эту вероятность. P(O|w),P(w) означают вероятность того, что данные O принадлежат классу w и вероятность существования класса w соответственно.P(O|w) определяется моделью скрытых состояний Маркова.

Формулировка задачи.

Сначала нам нужно сгенерировать набор признаков О из рыночных данных d. Пока пропустим этот шаг, потому что он будет различаться для разных применений модели Маркова, например для финансов d может быть представлен ценами разных активов и О можно обозначить набор технических индикаторов, применяемых к d. Модель Маркова также популярна в задачах распознавания речи, где О обычно является вектором, описывающим характеристики частотного спектра речи.

Затем необходимо вектор О ассоциировать с классом модели Маркова. Это можно сделать путем применения метода максимального правдоподобия, где модель Маркова определяет класс, который с наибольшей вероятностью генерирует набор параметров, соответствующий набору параметров О.

Спецификация модели Маркова.

Рассмотрим рисунок в заглавии поста. На нем приведены следующие обозначения:

N — число состояний модели (на рисунке равно 5),

ai,j- вероятности перехода из состояния i в состояние j,

bj(O)- вероятность получения вектора параметров О при состоянии j ( j не является входным и выходным состоянием),

вектор параметров модели Маркова λ определим как \lambda=[N,a_{i,j},b_j],

O=[o_1,o_2,...,o_T] — вектор параметров наблюдений,

X=[x_1,x_2,..,x_T] — найденный вектор последовательности состояний.

Совместная вероятность соответствия вектора О последовательности состояний X при параметрах модели λ равна вероятности перехода  из текущего состояния в следующее, умноженное на вектор параметров, сгенерированный в этом состоянии:

p(O,X|\lambda)=a_{x_0,x_1}\prod_{t=1}^T b_{x_t}(o_t)a_{x_t,x_{t+1}}

где x0,xT+1- входное состояние 1 и выходное соcтояние N соответственно.

Вычисление вероятности.

В рассмотренной выше совместной вероятности мы определили последовательность состояний X. Так как эта последовательность является скрытой переменной ( вот почему модель Маркова называется моделью скрытых состояний), мы ее не знаем. Однако, если мы суммируем вероятности по всем возможным состояниям, то получим:

p(O|\lambda)=\sum_X p(O,X|\lambda)

Это может быть проблематичным из-за большого числа состояний модели (особенно в приложениях реального времени), но существуют эффективные алгоритмы для такого вычисления, без нахождения каждого отдельного состояния. Подобным алгоритмом является форвардный алгоритм.

Что представляет из себя bj(o)?

Это полученное распределение вероятностей при состоянии j модели. Это распределение может быть любым, но оно должно соответствовать распределению данных при состоянии j, и должно быть математически определяемым. Обычным выбором на этой стадии является предположение, что вектор O может описываться набором гауссовских распределений — мультивариантным нормальным распределением. В качестве предупреждения отметим, что если составляющие вектора параметров сильно коррелированы между собой, тогда Σ- ковариационная матрица — будет иметь много вычисляемых значений. В этом случае нужно подбирать вектор парметров так, чтобы Σ представляла собой диагональную матрицу, другими словами, параметры не должны быть кореллированы между собой:

b_j(o)\sim N(o;\mu_j,\Sigma_j), где μ,Σ- параметры мультивариантного гауссовского распределения.

Как получить bj(o)? Определение параметров методом Витерби.

Мы знаем, что для описания нормального распределения достаточно методом максимального правдоподобия вычислить среднее распределения μ и ковариацию Σ вектора параметров. Значит мы должны получить только среднее и ковариацию вектора параметров для состояния j нашей модели, используя так называемую сегментацию Витерби. Она подразумевает нахождения жесткого соответствия между вектором параметров и последовательностью состояний, которое его генерировало. Существует также и альтернативный метод Баума-Вельша, который ассоциирует вектор параметров с несколькими последовательностями состояний с определенной вероятностью.

Состояние j генерирует наблюдения, начиная с tj:

\hat{\mu}_j=\frac{1}{t_{j+1}-t_j}\sum_{t=t_j}^{t_{j+1}-1}o_t

\hat{\Sigma}_j=\frac{1}{t_{j+1}-t_j}\sum_{t=t_j}^{t_{j+1}-1}[(o_t-\hat{\mu}_j)(o_t-\hat{\mu}_j)^{`}]

Наперед неизвестно, какая последовательность какой вектор наблюдений генерирует, но существует алгоритм Витерби, позволяющий решить эту проблему с некоторым приближением:

hmm-training-outline-1024x889

Подробно алгоритм Витерби, а также форвардный алгоритм для эффективного вычисления p(O|λ) рассмотрим в следующей части.

Другие стратегии, применяемые в алгоритмической торговле и биржевых роботах смотрите в моем блоге и на сайте.

34 Комментария
  • Алексей 888
    12 мая 2015, 14:47
    Спасибо. Интересно
  • Мимо проходил
    12 мая 2015, 14:56
    Я восхищен! Наверное вы очень богаты :)
  • SergeyJu
    12 мая 2015, 14:58
    Какой содержательный смысл можно, на Ваш взгляд, вложить в различные состояния, включая состояние EXIT?
      • SergeyJu
        12 мая 2015, 15:50
        uralpro, при такой логике должна быть полная матрица переходов между тремя состояниями, а вход и выход — лишены смысла.
  • Кан Делябр
    12 мая 2015, 15:17
    Генерация набора признаков всегда будет отставать от рыночных данных. Ценность такой модели сомнительна. Всегда будете бить по хвостам.
      • Кан Делябр
        12 мая 2015, 15:31
        uralpro, вы же сами указали, что признаки — это индикаторы, а они всегда отстают от потока рыночных данных, поэтому отставание здесь принципиально присутствет.
          • Кан Делябр
            12 мая 2015, 15:48
            uralpro, да, такие модели есть, они очень сложны, о них знают некоторые трейдеры-кванты нового поколения.
            • V.V.
              13 мая 2015, 08:16
              Кан Делябр, эти кванты нового поколения миллиардеры? Если нет, то почему? Вопрос не преследует цель поддёвки.
  • снегурка
    12 мая 2015, 15:53
    божечьки божечки...
    оказываецца как все просто то и тривиально...
    — мои щи сложнее намного
  • Гончар
    12 мая 2015, 18:00
    если коротко то хххххрень. при большом количестве совмещении вероятности получите вектор который не имеет реального воплощения в жизни. его погрешность будет больше целевого значения… как-то так
  • Владимир Фокс
    12 мая 2015, 22:55
    ахх… у… е… т… ьььььь))) за что вы так с нами!?=80
  • Александр (avg660018)
    13 мая 2015, 06:58
    Извините, а только я ничего не понял или еще кто-то?
  • dmitry sergeev
    13 мая 2015, 12:32
    Типичный пример, когда очень умные очкарико-ботаники начинают развертывать на рынке научно-исследовательскую деятельность, вместо того, чтобы «растет-покупай», «падает-продавай» и «дай прибыли течь, а убытки обрезай» )))
    Сука, я не понял ни одного предложения, как такая ебанина с формулами может иметь что-то общее с заколачиванием бабла на рынке?))))
    • Lomov Tom
      13 мая 2015, 13:21
      Дмитрий Сергеев,
      Абсолютно никакой. Рынок одна из тех сфер, в которых чистая математика даёт полностью оторванные от реальности результаты. Ценой на рынке движет ценообразование, что есть непрерывный процес оценки стоимости актива участниками. В один момент оценка одна, в другой момент-другая. Оценка может меняться мгновенно. Именно оценка стоимости определяет то, за сколько продавцы желают продать и насколько с этим согласны покупатели. Единственным индикатором оценки стоимости актива является её цена, а динамикой изменения оценки актива является
      динамика изменения цены. И тут не нужно ничего сложнее стандатных всем известных индикаторов, основанных на анализе цены. Объёмы тоже не играют никакой роли в ценообразовании, так как показывают только то, что в какой-то момент в прошлом сошлись такое-то количество покупающих и продающих, и этот факт на динамику ценообразования в будущем никак не влияет, цена может бегать не только без объёмов, но и вообще без котировок, если изменится оценка цены участниками. Крупные игроки используют алгоритмы в торговле, но ни в коем случае не для того, чтоб предсказать рынок, это невозможно. Алгоритмы используются, например, для продажи большого объёма без изменения цены вниз, или скупка без роста цен. Именно эти алгоритмы создают краткосрочные тренды (несколько дней), в которых крупные игроки занимают позиции, например на нисходящем краткосрочном тренде, крупняк закупается.
  • Олег\_TkilA_/
    13 мая 2015, 13:40
    В итоге все-равно Грааль в самой модели? а не в способе подсчета и упрощения этих подсчетов (как я понял подставляется уже посчитанное алгоритмом суррогатом).
      • Олег\_TkilA_/
        13 мая 2015, 15:45
        uralpro, кто-то кого-то не понял, на примере физического робота можно много сил и средств вложить в изменение материала супер легкие металлы и прочее, думая что он не ходит из-за веса, а на самом деле мы просто не научили его ходить или сделали ошибку. Пускай лучше неповоротливый и хромой, но не отвлекались от основной задачи (навешивая датчики и светящееся прибамбасы).

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн