Блог им. 3Qu
Работающие стратегии обсуждать неинтересно. Работает себе и работает, и говорить не о чем. С неработающими дело обстоит гораздо лучше. Каждый может сказать свое мнение о том, почему не работает, как нужно и не нужно было делать, и вообще, с таким подходом, изначально ясно, что это работать никак не может.
Но, давайте о самой стратегии.
Пусть текущее состояние инструмента в каждый момент времени описывается вектором X(t)={x1(t),x2(t),...,xi(t),...,xn(t)}, где x(t) — могут быть значениями индикаторов, какими либо значениями, вычисляемыми по неким формулам, значениями, типа, да/нет, фазами Луны, если вы считаете, что Луна как-то связана с поведением инструмента. В общем, значениями чего угодно, что по вашему как-то характеризует состояние инструмента в текущий момент, и может как-то быть связанным с его поведением в будущем. На отрезке истории вектор X(t) будет принимать большое количество различных значений и образует множество состояний или пространство состояний инструмента.
Чтобы как-то получить с инструмента прибыль мы должны предположить, что в пространстве состояний имеются некоторые устойчивые области, при нахождении в которых вектора X(t) мы сравнительно безопасно можем войти в сделку, и даже получить некоторую прибыль. Наша задача в том, чтобы попытаться обнаружить такие области в пространстве состояний. Задача, в общем, не тривиальная, но решаемая методами мат. статистики. Если такие области не будут обнаружены, то, либо они отсутствуют, либо выбранные вами компоненты вектора X(t) не описывают состояний инструмента, и вам следует попробовать другой набор параметров x(t) в векторе X(t).
Если же вам удалось найти такие области, то можно попробовать сократить размерность вектора X(t), выбросив из него малозначимые параметры x(t). После этого нам надо проверить нашу модель на других отрезках истории, и если модель продолжает оставаться работоспособной, то можно переносить ее в торговую систему и готовить к работе на рынке. Если мы не занимаемся пипсовкой, то истории на ТФ 1 мин для таких прогонов вполне хватает.
Именно такой стратегией для фьючерсов Сбербанка я занимался прошлым летом, и получил вот такой результат.
На рисунке работа идет с одним фьючерсом SBRF-6.19 на интервале последних 3 месяцев до даты исполнения. По оси Х — номер сделки, по У — накопленная прибыль в п.п. фьючерса.
Класс, да?! Однако, за делами, леностью, но с чувством хорошо сделанной работы, стратегия была заброшена. Вообще, иногда даже полезно, чтобы стратегия некоторое время полежала и дала сок.
Вернулся я к ней только сейчас. Проверил ее на старых данных, сохранил картинку, которую вы видели выше, чтобы было с чем потом сравнивать, и запустил модель на последних 3-х месяцах фьючерса SBRF-12.19.
От стратегии ничего не осталось, абсолютно ничего — ноль. На фьючерсе SBRF-12.19 стратегия абсолютно несостоятельна. Почему это так — не знаю. Возможно, за это время изменился рынок, и движения инструмента перестали коррелировать с найденными факторами. Не знаю.
Такое уже случалось. Несколько лет назад попробовал воскресить стратегию, которая когда-то реально работала на рынке. Из этой затеи ничего не вышло. Ее стало невозможно настроить даже на минимальную прибыль.
По сути Вы изложили стартовую точку для тех, кто пытается применить NN к рынку. И, почти всегда, такой подход не срабатывает. Почему? Ответ тривиальный и хорошо известный, избыточное число степеней свободы при сильно зашумленных ограниченных данных плодит фальшивые закономерности.
Вообще-то, при правильном применении, такой подход почти всегда срабатывает. Есть еще примерно аналогичная стратегия с другим составом вектора Х. Она тоже не реализована в ТС, но модель работает и сейчас.
PS не ответил про размерность, N=15.
15 — это, на самом деле, оч не много. В обычных стратегиях обычно используется и больше. В одной из моих «обычных» стратегий использовались 30 для лонга, и 30 идентичных для шорта.
Всего один индикатор уже дает 3-4 параметра для оценки своего состояния.
Все это нормировано к некоторому диапазону.
А Вы как делите область значений, с помощью линейной функции, SVM (метод опорных векторов по русски) или что-то позаковыристее?
Вопрос чего-то не понял. Что подразумевается под областью значений?
В самой системе, при проектировании, ищется компактная область. Критерий отбора не прибыль, а близость к центру области. Маловероятные сделки с выпадающими параметрами независимо от их прибыльности исключаются.