Reinforcement Learning в алготрейдинге: архитектура памяти состояний, Q-learning и стационарные признаки

3 минут чтения •


Большинство попыток применить классическое машинное обучение (Supervised Learning) к финансовым рынкам разбиваются об одну фундаментальную проблему — нестационарность временных рядов. Рыночный режим меняется, скользящие средние смещаются, а обученная на исторических ценах «монолитная» нейросеть начинает генерировать ложные сигналы.

Вместо монолитных «черных ящиков» в количественном трейдинге все чаще применяются иерархические системы обучения с подкреплением (Reinforcement Learning) на основе дискретной памяти состояний и стационарных признаков.

Разберем архитектуру такого контура: от квантования рыночного опыта в «нейроны памяти» до взвешенного ансамблевого голосования (Collective Mind).


1. Иерархическая архитектура: от нейрона к ансамблю

Вместо одной сложной модели строится трехуровневая модульная иерархия:

flowchart TD
    CM["🧠 Collective Mind (Совет агентов)<br/>Взвешенное динамическое голосование"]

    A1["📈 Агент 1: Trend Following<br/>(Свои веса & Q)"]
    A2["🔄 Агент 2: Mean Reversion<br/>(Свои веса & Q)"]
    A3["⚡ Агент 3: Volatility Breakout<br/>(Свои веса & Q)"]

    CM -->|Агрегация весов P_win| A1
    CM -->|Агрегация весов P_win| A2
    CM -->|Агрегация весов P_win| A3

    DB[("💾 База нейронов памяти (Q-Table)<br/>Квантованные инварианты опыта z_t")]

    A1 -->|Чтение / Запись опыта| DB
    A2 -->|Чтение / Запись опыта| DB
    A3 -->|Чтение / Запись опыта| DB
  1. Нейрон памяти (Memory Neuron): элементарная единица опыта. Хранит квантованный ключ рыночной ситуации, предпринятое действие ($a \in {\text{Buy}, \text{Sell}, \text{Hold}}$), текущую $Q$-оценку, счетчик посещений и возраст записи.
  2. Специализированный агент: независимый модуль логики со своим фокусом (краткосрочный импульс, спред, фильтр волатильности).
  3. Collective Mind (Коллективный разум): управляющий контур, объединяющий решения агентов через взвешенное голосование, где вес каждого агента динамически пропорционален его исторической точности ($P_{\text{win}}$).

2. Стационарные признаки: инвариантность к уровню цен

Сырые цены закрытия и абсолютные индикаторы нестационарны. Если обучить модель на Bitcoin по $30,000, при цене $90,000 ее веса потеряют физический смысл.

Решение — переход к стационарным z-score инвариантам:

$$z_t = \frac{p_t - \mu_{\text{SMA}(k)}}{\sigma_{\text{StdDev}(k)}}$$

Вектор состояния описывает не «где находится цена», а «форму и аномалию движения» относительно локальной волатильности. Далее непрерывные значения квантуются в дискретные интервалы (бины). Например:

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


3. Математика Q-Learning и балансировка редких классов

Обновление оценок ценности действия строится по уравнению Беллмана:

$$Q(s, a) \leftarrow Q(s, a) + \alpha \cdot \left[ r + \gamma \cdot \max_{a’} Q(s’, a’) - Q(s, a) \right]$$

где:

# Концептуальная логика обновления нейрона памяти
class MemoryNeuron:
    def __init__(self, state_key, action):
        self.state_key = state_key
        self.action = action
        self.q_value = 0.0
        self.visits = 0
        self.last_seen = 0

    def update(self, reward, next_max_q, alpha=0.1, gamma=0.95):
        # Балансировка: редкие состояния обновляются с повышенным весом
        effective_alpha = alpha / (1.0 + 0.01 * self.visits)
        td_target = reward + gamma * next_max_q
        self.q_value += effective_alpha * (td_target - self.q_value)
        self.visits += 1

Борьба с дисбалансом классов: на рынке 70%+ времени идет боковик. Без балансировки редкие ситуации разворота тренда просто не успеют набрать статистику. Взвешивание через счетчик посещений позволяет системе адекватно оценивать редкие критические режимы.


4. Pruning памяти и адаптивный Exploration

Чтобы база нейронов памяти не раздувалась, применяются два механизма:

  1. Pruning (Отсечение): нейроны с околонулевыми счетчиками посещений за длительный период или стабильно отрицательным $Q$ удаляются, освобождая память и очищая стратегию от устаревших аномалий.
  2. Эволюционный $\varepsilon$-Greedy: в спокойные периоды система эксплуатирует накопленный опыт ($\varepsilon \to 0$), а при резких скачках волатильности (режим сменился) уровень исследования повышается.

Ключевые выводы


Первоисточники и материалы