В 2020 перешёл на тслаб 2.0, в котором наконец реализовано плавное изменение размера позиции без костылей. В связи с чем более плотно потестил разные варианты и в итоге всё оставил как есть, самый простой вариант. Но в последнее время мне кажется что я туповат и что-то упустил, так что пишу чтобы разобраться.
1. Вариант с изменением сайзинга в зависимости от цены, например если нефть упала на 10% то логично изменить размер позиции на 10%.
В принципе использовать можно, особенно если большие плечи и там где инструменты в разы скачут, но у меня такого нет, а нефть скачет раз в 5 лет так что мало данных для норм выводов. Никакой подгонки тут нет, но и профита тут нет.
2. Вариант с изменением сайзинга в зависимости от волы. Вот вроде многие так делают, но я не заметил преимуществ, хз почему. Для некоторых систем есть небольшой профит, но минус в том что это даёт ещё одну степень подгонки и подгонкой чего-то другого также можно увидеть виртуальный профит.
3. Сайзинг позиций по MFE — Maximum Favorable Excursion/ MAE
Идея в том чтобы быть больше в позиции в моменты где выше mfe и сокращать там где ниже чтобы освободившиеся средства отдать другим системам. Был очень позитивно настроен на этот метод, специально написал макрос в эксель чтобы посчитать mfe всех ботов. Но видимо где-то ошибся в расчётах. Тслаб не умеет показывать графики mfe\mae что довольно странно, так как почти во всём другом софте они есть, а было бы интересно глянуть их и сравнить со своими.
Получилась такая картинка для всех ботов без учёта комиссии. По оси Х время удержания, по У прибыль. Лонг-шорт цветным отдельно и верхняя линия это их сумма.
По картинке видно что теоретически профит максимален около входа и далее постепенно падает, что вполне логично.
Но блин, видимо я недооценил комиссию\проскальзывание, и когда уже протестил в тслабе постепенное закрытие позиции со временем то не обнаружил почти никакого улучшения на десятке разных ботов. Фиаско.
4. Сайзинг в зависимости от итоговой позиции всех ботов.
Тоже многого ждал от этого способа, и даже уже зафигачил его в тслабе и торговал им, но в итоге оказалось что я накосячил в расчётах и пользы от него около нуля, в районе погрешности. Изначально была чуть другая картинка и выводы, но тут выкладываю финальную.
Сверху сильные шорты, в центре нулевая позиция, внизу сильные лонги. Столбики:
1. Суммарная прибыль в зависимости от количества ботов которые одновременно в позиции.
2. Сколько раз такая позиция была по сравнению с другими.
3. Прибыльность на один контракт поделить на 2 столбик.
4. Прибыльность на один контракт суммарная.
Интересным моментом является то что когда все боты сильно в позициях то эффективность\прибыльность таких ситуаций большая и казалось бы выгодно быть сильно в позициях (см столбик 3). Но количество таких случаев по сравнению с тем когда боты мало в позициях заметно меньше (см столбик 2) и получается что вклад в прибыль случаев когда позиции небольшие примерно такой-же (см последний столбик) и если увеличить им сайз то то на то и выходит.
5. Что-то ещё немного тоже тестил, уже не помню, но тоже не зашло.
А вообще хочется динамический сайзинг, может кто подскажет норм вариант?
Если так — не вижу в этом прямой логики.
П.2 логичный, но очень сложный. Тут вопрос КАК использовать. Это как работа с мувингами, на которых пересечение слишком запаздывающий сигнал, после которого для входа лучше дождаться отката к мувингу (или входить ДО пересечения на сильном расхождении мувингов).
С волой также — на максимальной увеличивать сайз уже поздно, на минимальной может быть идеально. Но для этого надо четко решить где для текущей ситуации Мах, а где Мин, т.к. они будут разными, в зависимости от «старшей» волатильности.
В общем, очень сложно. Поэтому если не получается — надо искать.
Я пока не нашел, но буду рыть пока есть силы )
Про МФЕ вообще не понял.
Этот показатель вряд ли можно использовать «в моменте».
Аналогичный вариант, который наоборот учитывает только конфиг рынка — стоп за экстремум и объём изменяется от размера стопа. Тоже «проще некуда», но мне показалось, что в посте о другом.
Кстати, Artemunak, неплохо бы уточнить — вы хотите менять сайз без изменения риска или увеличивать риск в определенных условиях?
2. Проблема непосредственного использования волы для управления сайзом состоит в запаздывании оценки.
3. Предпочитаю топорный метод (много раз писал). Сайз системы обратно пропорционален амплитудной оценке риска.
4. Неплохо было бы при составлении портфеля (сайзинге) учитывать коррелированность результатов систем. Но тут есть сложности и я для себя эту задачу решенной не считаю.
5. Рядом стоит задача обнаружения слома систем. Чисто теоретически, есть математические методы обнаружения разладки (смены режима). Практически они не очень-то подходят для нас.
В вашем случае такая зависимость выявлена?
А самый простейший не рассматриваете? — сайз в зависимости от риска в сделке? Типа рискуем 0,5-2% от капитала в одной сделке)
UPD. геометрически увеличивается/уменьшается не сам сайз, а процент на который мы уменьшаем или увеличиваем сайз.
Пятно параметров торгует эффективнее. Мини-отчет за второй квартал 2020 года
Так сайзинг очень плавно изменяется, если 1000-2000 систем виртуальной торгуется
Как я задаю веса системам
Просканировал до Луа. Выделил два пункта, фильтр и взвешивание. И то и другое обозначено, но не раскрыто. Фильтрами я тоже порядочно занимался. Что касается весов. Вы учитываете только коэф-ты корреляции или что-то еще. Например, доходности или оценки рисков?
Работает ли Ваша формула в случае очень неоднородных систем, допустим, трендовой и контртрендовой.
По поводу неоднородных стратегий: можно тоже применять корреляционную матрицу, в случае незначительного изменения корреляции во времени при форвардном прогоне.
Все четко по формуле Анатолия Уткина https://russian-trader.com/content/205/?page=2
Вот как это выглядит
На базе этого слайда я объясняю почему СКО показателем риска для такого распределения не является.
PS. Это эквити, построенная по сделкам системы плюс проскальзывание по чистому out of sample, оптимизации нет.
СЧА на конец предыдущего дня*долю i-й системы/цена лота(контракта) по закрытию предыдущего дня.
Объемы в открытых ранее позициях запоминались в Excel для стоп-лимитов «сегодня».
Но когда писал своего робота, чтобы не перегружать программу, стал торговать постоянным число лотов (контрактов) до изменения цен закрытия на 10%+ с момента предыдущего расчета, который делался по указанному правилу. Новый расчет также делается по указанному правилу для реинвестирования.
В тестах по прежнему использую старое правило, но особой разницы между реальной торговлей и тестовой с навешенным проскальзыванием+комиссия не вижу.
А реинвестирование для систем считаю правильным: с ростом счета оно увеличивает прибыль, а с уменьшением — уменьшает просадки. Так как «в деньгах» в первом случае новая позиция растет, во втором — падает.
Другими правилами изменения объемов никогда не пользовался. Использовать волатильность для трендовых систем бессмысленно, так как на высокой волатильности больше прибыль и риски при торговле с реинвестированием, а при низкой — наоборот. Но риски я априори выбираю по всей истории и потому самые высокие учтены. По хорошему при низкой волатильности доли систем для вышеуказанного расчета надо бы увеличить, но у меня нет прогноза волатильности лучше, чем волатильность «вчера»= волатильность «завтра» и скачок волатильности будет нести в себе неконтролируемые риски.
А, как я уже сказал, реинвестирование при изменении СЧА счета само по себе «выправляет» объем позиции «в деньгах».
Например, цель привести портфель к заданому риску/волатильности. Каждый метод может быть лучше только под конкретные задачи.
И в моей системе я считаю её так, что запаздывание не играет отрицательной роли. Даже чуть ещё выждать лучше для результатов. Выясняю почему.