Обсуждение статьи "Машинное обучение в условиях ограничений (Часть 1): Настраиваемый набор правил для расчета размера позиции в проп-фирмах"

Опубликована статья Машинное обучение в условиях ограничений (Часть 1): Настраиваемый набор правил для расчета размера позиции в проп-фирмах:

Жестко заданные в коде правила проп-фирмы привязывают модуль расчета размера позиции к одной программе проп-фирмы. В этой статье правила выделяются в PropFirmRuleSet, а PropFirmAccountState и модификаторы размера позиции перерабатываются для его использования, в том числе для учета различий между динамическим и фиксированным дневными лимитами и снижения доли засчитываемой прибыли в новостном окне. Проверка: соответствие поведения исходной реализации для FundedNext проверяется на смоделированной траектории средств счета, поэтому расчет размера позиции можно адаптировать к другой программе через конфигурацию, не переписывая код.

Размер позиции на счете проп-фирмы рассчитывается иначе, чем на обычном счете. Для каждой позиции необходимо ответить на два вопроса вместо одного: каким должен быть размер сделки с учетом уверенности модели и каким он может быть с учетом того, какая часть сегодняшнего бюджета допустимого убытка или общего допустимого объема просадки счета уже исчерпана. Если неверно ответить на второй вопрос, первый уже не будет иметь значения: счет дисквалифицируют раньше, чем торговое преимущество успеет проявиться.

Часть 11 серии «Архитектура машинного обучения в MetaTrader 5» дала ответ на второй вопрос с помощью PropFirmAwareSizer — модуля расчета размера позиции, который автоматически уменьшает позиции по мере исчерпания бюджета допустимого убытка, не требуя ручного задания логики пороговых условий. Это хорошо работает. При этом круг решаемых им задач уже, чем можно предположить по названию: каждое реализованное в нем правило — целевые значения прибыли по этапам, дневной лимит убытка и возможность его увеличения за счет внутридневной прибыли, нижняя граница стоимости счета, снижение доли засчитываемой прибыли в новостном окне — задано константой, взятой из одной программы проп-фирмы: Stellar 2-Step Challenge от FundedNext. Класс называется PropFirmAwareSizer, а не FundedNextAwareSizer, но до появления этой статьи он мог правильно рассчитывать размер позиций только для той проп-фирмы, для которой был написан. В этой статье предполагается, что читатель знаком с механикой испытаний проп-фирм — этапами, дневными и общими лимитами убытка, статусом финансируемого счета, — но не с конкретным кодом из части 11; везде, где рефакторинг напрямую затрагивает этот код, приводятся соответствующие фрагменты «до» и «после», так что помнить его наизусть не требуется.

Этот пробел не бросается в глаза, если читать Часть 11 отдельно. Это становится очевидным, когда читатель, участвующий в другой программе проп-фирмы — с фиксированным дневным лимитом, который не увеличивается за счет прибыли, с иной долей засчитываемой прибыли или иной структурой этапов, — пытается повторно использовать код и обнаруживает, что правила жестко заданы в коде классов, а не передаются в качестве аргументов. Чтобы сделать модуль расчета размера позиции универсальным, в таком случае приходится напрямую редактировать файл bet_sizing/prop_firm_sizer.py, а не просто задавать конфигурацию. Если точно проследить, какие константы затрагивает такое обобщение, обнаруживается и то, чего не выявили тесты самой части 11: три из семи констант правил были объявлены, но ни один метод вообще не считывал их значения; эта находка подробно рассмотрена в разделе 8.

Эта статья открывает новую серию «Машинное обучение в условиях ограничений», а не продолжает серию «Архитектура машинного обучения в MetaTrader 5». Статья рассчитана на более узкую аудиторию: тех, кто уже участвует в программе проп-фирмы для получения финансируемого счета и для кого дневной бюджет допустимого убытка служит основным ограничением при расчете размера позиции, а не дополнительным инструментом управления риском, применяемым по желанию. В этой серии статей торговля в проп-фирме рассматривается как то, чем она по своей структуре является для такого читателя: задача оптимизации с ограничениями и выпуклой функцией выплат, а не обычная задача расчета размера позиции с дополнительным учетом. Эта статья закладывает основу, на которой строится вся остальная серия. В ней жестко заданные в коде правила из части 11 выделяются в явный набор PropFirmRuleSet, класс PropFirmAccountState и модификаторы размера позиции перерабатываются для использования этого набора, а результат рефакторинга проверяется на соответствие исходной реализации с жестко заданными в коде правилами на смоделированной траектории средств счета. В последующих частях каждый модификатор вновь рассматривается по очереди: цепочка калибровки параметра w, коэффициент снижения риска в зависимости от прогресса достижения цели этапа, снижение доли засчитываемой прибыли в новостном окне и верхняя граница стоп-лосса в рамках поиска оптимального торгового правила из части 15.


Автор: Patrick Murimi Njoroge