Обсуждение статьи "Нейросети в трейдинге: Habi — быстрое принятие решений без сложного планирования (вероятностное представление)"

Опубликована статья Нейросети в трейдинге: Habi — быстрое принятие решений без сложного планирования (вероятностное представление):

Рассматриваем реализацию вероятностных компонентов Habi на MQL5 и OpenCL: обработку рыночных наблюдений, преобразование параметров нормального распределения и пакетное семплирование латентных векторов. На примере CNeuronHabiObservationOCL, CNeuronHabiGaussianOCL и CNeuronHabiVAEOCL разбираем архитектуру, инициализацию, прямой и обратный проходы. Показываем согласование Prior и Posterior через условную KL-дивергенцию и накопление градиентов от нескольких выборок. Полученные компоненты создают основу для последующей генерации торговых действий.

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

В предыдущей статье мы рассмотрели фреймворк Habi. Он переносит опыт сложного планировщика в компактную генеративную политику. В нашей адаптации эталонные действия предоставляет Oracul, использующий известную по истории траекторию цен. При принятии торгового решения будущие котировки модели недоступны. Поэтому по текущему наблюдению она формирует несколько предложений, которые затем оценивает Critic.

Практическую часть первой статьи мы посвятили расширению OpenCL-кернелов VAE_FeedForward и VAE_CalcHiddenGradient. Они позволяют получать несколько латентных векторов из одного нормального распределения и собирать их градиенты при обратном проходе. Параметры распределения остаются общими для всего пакета.

В этой части мы создадим объекты подготовки наблюдений и вероятностных представлений. Prior получает только текущее наблюдение, а Posterior при обучении дополнительно использует эталонное действие. Согласование их распределений помогает затем формировать предложения без эталона. Пакетный вариационный слой получит из одного распределения несколько латентных векторов — внутренних числовых представлений для будущих действий.

Автор: Dmitriy Gizlyk