Теперь нужно отобрать лучших из всего того, что получилось.
В принципе, скатился опять до банального подхода, но просто чешутся руки запуститься в январе. Месяц холодный, особенно, в этом году, а холод — это стабильность. Но это так, немного чуши.
Итак, что делаю:
1.
Считаю за последний месяц, начиная с последних народившихся торговых систем (ТС), к более старым, прибыль по каждому инструменту. Инструментов 56, всё — акции, площадка MOEX TQBR. Видно, что есть ТС, которые за месяц показали доходность (пока опустим, какую — тут приведена к году) на 55 акциях из 56. Абсолютно один и тот же алгоритм показывает прибыль на 55 из 56.

Результаты предварительные, поскольку процесс не быстрый. Вот сколько рассчитано ТС, которые показались прибыльными, по каждому инструменту за сутки.

2.
Задаю нижнюю границу средней нормы доходности для ТС — 60% годовых. Таких ТС получается ~ 1,7М. Хотя обсчитаны далеко не все данные, с этим объёмом уже можно работать. Тут ТС, число инструментов, по которым она показала прибыль, и её среднее значение. Оставляю за скобками фьючерсы, так как там меньше тысяч годовых мало где есть.
Но видно, что число прибыльных инструментов существенно снизилось с таким фильтром для каждой ТС. Если верхняя граница до фильтра была 98%, то теперь стала 82%.

3.
Считаю прибыльность каждой ТС на каждом инструменте, который вошёл в эту выборку, но уже за целый последний год.
Получается примерно такой же набор данных, но уже по году, который отсеет ТС, которые, в целом, за год или были убыточны и/или не укладываются в норму прибыли.
Подход построен таким итеративным образом потому, что сразу считать всё за целый год (или даже больше) — слишком долго. Нужно быстро отобрать из огромного числа, потом — из большого и так далее.
4.
Финальный список всё равно получится очень большим, и его как-то тоже нужно будет порезать. Но тут два параметра: число инструментов, на которых ТС покажет профит, и, собственно, среднее его значение.
Первый — про стабильность, второй — про доходность. Ищем баланс.
И можно запускать по одному лоту на каждую ТС. Пускай упражняются на реальном рынке. Только, конечно, на дорогих инструментах вроде Норникеля или Транснефти эти эксперименты я ставить не буду. Лучше взять что-то дешёвое, вроде ВТБ и той же ценовой группы.
5.
Описание алгоритма ТС теперь завёрнуто в JSON и выглядит примерно так:
{
«M»: "u0131",
«B»: "u00B5u010Bu0152u0161u019Cu01AB",
«S»: «4ju0114u0121u012Eu0130u013Au0165u0176u017Cu0210»,
«Z»: [
{
«T»: 1,
«C»: 12,
«S»: 0.0028
},
{
«T»: 0,
«C»: 3,
«S»: 0.1
},
{
«T»: 2,
«C»: 5,
«S»: 0.0224
}
]
}
Где
- М — это набор управляющих параметров стратегии (реверсная, только лонг или только шорт),
- B — группа сигналов на Buy-приказ
- S — группа сигналов на Sell-приказ
- Z — группа стопов, которые использует ТС, (в этом примере их три) и в них
- T — один из типов стопа, о которых я писал в прошлом посте,
- C — смещение во времени от момента входа, когда стоп будет активирован и начнёт отслеживаться
- S — размер стопа в % от цены входа
Чтобы сжать хранимые описания стратегий и их место в оперативной памяти при процессинге, я закодировал каждый сигнал символами кодировки Unicode, содержащей символы всех языков мира. Выглядеть стало загадочно, зато памяти занимать — на порядки меньше, и иногда какой-то сигнал даже кодируется астрологическим знаком! Вот и пригодилась астрология в трейдинге! Таким образом, сигнал занимает в памяти всего пару байт.
На скриншоте видно, как выглядит строка описания стратегии в Unicode :)
Столбец US информирует, содержит ли ТС стоп. Как видно, находятся разные ТС.

6.
Изменился алгоритм поиска новых. Если раньше я генерировал ТС с нуля каждый раз, то теперь беру по кусочку топа последних найденных по всем инструментам, наследую их и мутирую для конкретного инструмента. Таким образом, я полагаю, будет осуществляться сведение алгоритмов различных торговых систем к небольшому количеству таких, которые будут работать на подавляющем большинстве, что, как мне кажется, должно повысить их стабильность. К доходности, конечно, вопрос, но хочешь доходности — бери плечи, иди во фьючерсы. На фьючерсах без плечей тоже доходность около 1% в день (это я имею ввиду криптовалютные, где высокая волатильность). А тут имеем то, что имеем.
На этом на сегодня всё.
Подробнее https://smart-lab....