Блог им. Artemunak

алго - протестил разный сайзинг позиций

В 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. Что-то ещё немного тоже тестил, уже не помню, но тоже не зашло.
А вообще хочется динамический сайзинг, может кто подскажет норм вариант?
  • обсудить на форуме:
  • TSLab
★13
51 комментарий
если нефть упала на 10% то логично изменить размер позиции на 10%
Не сказали в какую сторону. Полагаю, уменьшить?
Если так — не вижу в этом прямой логики.

П.2 логичный, но очень сложный. Тут вопрос КАК использовать. Это как работа с мувингами, на которых пересечение слишком запаздывающий сигнал, после которого для входа лучше дождаться отката к мувингу (или входить ДО пересечения на сильном расхождении мувингов).
С волой также — на максимальной увеличивать сайз уже поздно, на минимальной может быть идеально. Но для этого надо четко решить где для текущей ситуации Мах, а где Мин, т.к. они будут разными, в зависимости от «старшей» волатильности.
В общем, очень сложно. Поэтому если не получается — надо искать.
Я пока не нашел, но буду рыть пока есть силы )

Про МФЕ вообще не понял.
Этот показатель вряд ли можно использовать «в моменте».
avatar
Кое-где использую снижение лота когда выросла волатильность. Прирост эффективности минимальный, но вроде что-то есть.
avatar
Величина стопа от волатильности, соответственно и сайз меняется. Проще некуда
avatar
Сергеич, это называется «фиксированный риск» — самый простой из вариантов привязки к волатильности без учета конфигурации рынка — действительно проще некуда… Уверен, что автор такой способ не только знает, а уже и забыть успел )
Аналогичный вариант, который наоборот учитывает только конфиг рынка — стоп за экстремум и объём изменяется от размера стопа. Тоже «проще некуда», но мне показалось, что в посте о другом.

Кстати, Artemunak, неплохо бы уточнить — вы хотите менять сайз без изменения риска или увеличивать риск в определенных условиях?
avatar
1. Трендовые системы не любят низкую волу, а многие контртрендовые может вдребезги порвать на высокой. Поэтому нет универсального рецепта.
2. Проблема непосредственного использования волы для управления сайзом состоит в запаздывании оценки. 
3. Предпочитаю топорный метод (много раз писал). Сайз системы обратно пропорционален амплитудной оценке риска. 
4. Неплохо было бы при составлении портфеля (сайзинге) учитывать коррелированность результатов систем. Но тут есть сложности и я для себя эту задачу решенной не считаю.
5. Рядом стоит задача обнаружения слома систем. Чисто теоретически, есть математические методы обнаружения разладки (смены режима). Практически они не очень-то подходят для нас.
avatar
SergeyJu, а такой вариант — уменьшение сайза после серии успешных сделок и увеличение после серии неудачных. 
avatar
Мейстор Эймон, не практикую
avatar
SergeyJu, п. 4 решился? :)
avatar
bascomo, скорее да, чем нет. При явной оптимизации весов элементов портфеля (без всяких корреляций) учет взаимного влияния систем происходит автоматически. Другое дело, что такой подход почему-то не сделали священной коровой теории портфеля и да, риски все равно не убить, только понизить, на любую гайку природа найдет поц с болтом. 
avatar
SergeyJu, а в чём заключается оптимизация и на основании чего производится?
avatar
bascomo, я максимизирую отношение доходности эквити портфеля к риску. Задача слегка нелинейная и чуток неустойчивая, а так — все в порядке. Кстати, на этом сайте 2 или три раза писал об этом в своем блоге. 
avatar
С научной точки зрения, НИОКР на тему динамического сайзинга имеет смысл проводить, если выявлена зависимость результатов от волатильности или от цены актива.

В вашем случае такая зависимость выявлена?
avatar
А вообще хочется динамический сайзинг, может кто подскажет норм вариант?

А самый простейший не рассматриваете? — сайз в зависимости от риска в сделке? Типа рискуем 0,5-2% от капитала в одной сделке)
Проще разбить одну стратегию на ансамбль подстратегий с разными параметрами и чуть различающимися входами выходами. Такая декомпозиция даст больше понимания. А непрерывное изменение загрузки это уже ближе к опционной математике дельтахеджа для некого профиля ПнЛ
avatar
Я конечно дилетант в алготрейдинге, только первые шаги делаю на этом поприще, но вдруг автор что-то полезное из такого подхода почерпнет. Рассматривался ли вариант сайзинга по статистике последних сделок каждым ботом в отдельности? Еще лучше на мой взгляд использовать комбинацию с процентом убытков/прироста относительно портфеля. Условно, если бот начинает пилить маржу, то оценка размеров след сделок делается с поправкой на некий процент в меньшую сторону, если и эта сделка провальная, то след сделка снижается уже не линейно, а в геометрической прогрессии. Аналогичный алгоритм и выхода из пилы, когда каждая последующая сделка выходит в плюс, то сайз растет не линейно, а также в геометрической прогрессии. При этом геометрическая прогрессия включается только между сделками А+1 и А+2, а между сделками А (последняя закрытая) и А+1 изменение размера входа осуществляется линейно. При этом мы имеем гибкость в вопросе момента включения геометрической прогрессии, на пример после очередной убыточной сделки А+4. Таким образом можно гораздо плавнее подходить к пороговому убытку по портфелю (например 2%) при котором (если так заложено) бот останавливается вовсе. А может я и чушь написал, и у автора гораздо глубже проблема((

UPD. геометрически увеличивается/уменьшается не сам сайз, а процент на который мы уменьшаем или увеличиваем сайз.
avatar
Serj90, сайзинг по эквити. Протестировал почти сразу как тслаб освоил, хотя и интуитивно понимал что толку нет. Позже более опытные товарищи подтвердили мои мысли.
avatar
Artemunak, понял, спасибо.
avatar
Artemunak, на самом деле, если для каждой системы использовать подход типа Р.Джонса или Л.Вильямса, все будет не так уж и плохо. 
avatar
smart-lab.ru/blog/631499.php
Пятно параметров торгует эффективнее. Мини-отчет за второй квартал 2020 года
Так сайзинг очень плавно изменяется, если 1000-2000 систем виртуальной торгуется
avatar
robot_bsk, пятно параметров как правило очень сильно скоррелировано с каждым своим членом. Для повышения емкости и даже устойчивости пятно — это хорошо. Поставленную задачу не решает. Потому что замена N систем на N пятен оставляет нас перед тем же вопросом, как делить объем на N долей. 
avatar
SergeyJu, для этого делается корреляционная матрица и задаются веса системам в зависимости от корреляции
avatar
robot_bsk, что такое ковариационная  матрица я знаю уже лет 40 примерно. Напишите что-то более содержательное, а то Вы даже до Марковица, похоже, не добрались в познании мира.
avatar
SergeyJu, зачем усложнять? Корреляция со временем при форвардном тестировании почти не изменяется 
avatar
SergeyJu, смотреть с 38:17 
Как я задаю веса системам
avatar
robot_bsk, спасибо.
Просканировал до Луа. Выделил два пункта, фильтр и взвешивание. И то и другое обозначено, но не раскрыто. Фильтрами я тоже порядочно занимался. Что касается весов. Вы учитываете только коэф-ты корреляции или что-то еще. Например, доходности или оценки рисков?
Работает ли Ваша формула в случае очень неоднородных систем, допустим, трендовой и контртрендовой.
avatar
SergeyJu, По поводу весов: я использую оценку рисков. Все системы, что есть привожу к одинаковому максдровдауну на истории. Мне нравиться цифра -35%. Когда все системы одновременно тестирую, то на истории получается — 20%. При этом доходность — средняя по всем системам, т.е. MAR и sharp порядочно растут.
По поводу неоднородных стратегий: можно тоже применять корреляционную матрицу, в случае незначительного изменения корреляции во времени при форвардном прогоне.
Все четко по формуле Анатолия Уткина https://russian-trader.com/content/205/?page=2
avatar
robot_bsk, а почему именно макДД — оценка риска? 
avatar
SergeyJu, Ну в каждой системе у меня манименеджмент — риск на сделку в %. Это в принципе тоже параметр, прогоняю на истории этот параметр и делаю его константой — максдравдаун -35%. Понятно, что некоторые системы из 2000 этот дравдаун по ходу торгов пробивают и могут дойти и до -60%, а следить за 2000 систем — нереально. Но на этот случай я сделал степенное уменьшение сайза на основе комментариев того же Анатолия Уткина в статье Управление капиталом портфеля алгоритмических стратегий. https://smart-lab.ru/blog/419603.php

В
от как это выглядит



avatar
robot_bsk, получается прямо-таки иерархическая система управления рисками. 
avatar
SergeyJu, Ага, для меня риск важнее, чем прибыль.
avatar
Зачем искать профит там, где его нет? Управление сайзом — это прежде всего управление соотношением риск/доходность. Что является мерой риска? — волатильность. Все логично и очевидно. Поэтому многие и выбирают 2 вариант. Нет смысла заново изобретать велосипед.
avatar
Reznor, волатильность чего именно является мерой риска, как Вы полагаете? 
avatar
SergeyJu, волатильность цены торгуемого инструмента является мерой риска, оно же — стандартное среднеквадратическое отклонение.
avatar
Reznor, ничего подобного. Для распределений с «тяжелым» «правым хвостом» и «легким» «левым» СКО мерой риска совсем не является. А у трендовых систем распределение доходностей за период, как правило такое. А в конце концов при системной торговле нас интересует риск системы и связь его с СКО цен далеко не предопределена.
avatar
А. Г., а это уже смотря какую систему торговать и на каких временных интервалах. Впрочем это всё нюансы. Как измерять волатильность и риск, каждый решает сам.
avatar
А. Г., а что для них является мерой риска, если не СКО?
avatar
Kot_Begemot, ну вариантов много, но это должны быть характеристики отрицательных результатов. Например, риск по Сортино (корень из среднего квадратов отрицательных значений с заменой положительных на нуль), VAR или СVAR, среднее нескольких просадок (максДД в силу единичности не подходит) и т. п. вещи.
avatar
А. Г., странно, но у меня на бектестах (рынок) и моделях (случайный независимый сильноскошенный шум) разницы, тем более явно положительной, нет. 
avatar
Kot_Begemot, вот гистограмма 21-дневных доходностей одной моей системы на Газпроме с октября 1998 (слайд из лекции учебного курса, посвященной тестированию торговых алгоритмов)


 На базе этого слайда я объясняю почему СКО показателем риска для такого распределения не является. 

PS. Это эквити, построенная по сделкам системы плюс проскальзывание по чистому out of sample, оптимизации нет.
avatar
Долгое время торговал с реинвестированием, т. е. объем позиции, открываемой по i-й системе «сегодня» равен округлению вниз до целого

СЧА на конец предыдущего дня*долю i-й системы/цена лота(контракта) по закрытию предыдущего дня.

Объемы в открытых ранее позициях запоминались в Excel для стоп-лимитов «сегодня».

Но когда писал своего робота, чтобы не перегружать программу, стал торговать постоянным число лотов (контрактов) до изменения цен закрытия на 10%+ с момента предыдущего расчета, который делался по указанному правилу. Новый расчет также делается по указанному правилу для реинвестирования.

В тестах по прежнему использую старое правило, но особой разницы между реальной торговлей и тестовой с навешенным проскальзыванием+комиссия не вижу.

А реинвестирование для систем считаю правильным: с ростом счета оно увеличивает прибыль, а с уменьшением — уменьшает просадки. Так как «в деньгах» в первом случае новая позиция растет, во втором — падает. 

Другими правилами изменения объемов никогда не пользовался. Использовать волатильность для трендовых систем бессмысленно, так как на высокой волатильности больше прибыль и риски при торговле с реинвестированием, а при низкой — наоборот. Но риски я априори выбираю по всей истории и потому самые высокие учтены. По хорошему при низкой волатильности доли систем для вышеуказанного расчета надо бы увеличить, но у меня нет прогноза волатильности лучше, чем волатильность «вчера»= волатильность «завтра» и скачок волатильности будет нести в себе неконтролируемые риски.

А, как я уже сказал, реинвестирование при изменении СЧА счета само по себе «выправляет» объем позиции «в деньгах».
avatar
Artemunak, какая конечная цель тестирования вараинтов управления размером позиции.

Например, цель привести портфель к заданому риску/волатильности. Каждый метод может быть лучше только под конкретные задачи.
avatar
Больше половины моих ботов работают со 2-м вариантом управления позицией. Доходности это совсем не прибавляет, но эквити выравнивает неплохо, я во всяком случае доволен. Сплю гораздо спокойнее :)
Eugene Logunov, я предпочитаю меру риска, учитывающую глубину и длительность просадок, а не просто статистику отрицательных приращений. Придумал сам, а потом оказалось, что изобрел велосипед. 
https://en.wikipedia.org/wiki/Ulcer_index


avatar
SergeyJu, это для каких систем?
avatar
Kot_Begemot, контртрендовых у меня в эксплуатации нет. Но вообще-то, имхо, для любых.
avatar
SergeyJu, а глубину по длительности нормируете? 
avatar
Eugene Logunov, то есть, грубо говоря — Сортино.

Согласен, в этом есть некоторый смысл. Но в чем беда — по предельной теореме Т.В. сумма N толсто-тонко хвостых распределений стремится к Гауссу, так что уже на Month ТФ и 30-дневной улыбке волатильности никаких серьёзных отклонений от БШ-Гауссианы не наблюдается (улыбки нет).

И если мы теперь промоделируем любую СВ с толстым и тонким хвостом, то увидим, что её интегральные характеристики, скажем, большие просадки уже соответствуют таковым у аналогичной по МОЖ, СКО случайной величины распределенной по Гауссу. В этом смысле, разве правильно ли пользоваться некоторой иной мерой риска (за исключением SPAN и предельных убытков), кроме как СКО?


avatar
Eugene Logunov, 

Только что посмотрел опционы на XLF (финсектор США) с 544 днями до экспирации. 16ый страйк вола 37, 32ой страйк вола 22.

Ммм… да, там могут возникать дополнительные эффекты. Но в целом, тенденция к сплющиванию улыбок должна прослеживаться.


RTSI, ближняя (красная) и дальняя (синяя) улыбки.

разве что с точностью до умножения на константу в случае IID returns?  

Да, естественно IID, для не-IID, там если умножением на константу удастся отделаться — уже хорошо)

Я много вариантов перебрал в разных типах систем и в целом остановился на стандартной СКО и Гауссе. Что-то не срослось у меня с LPM и прочими, более сложными методами, которые в разумных пределах (доходность/скос) с хорошей точностью сводятся к Гауссу. 
avatar
По 2. Это работает, но только в том случае, если при этом «угадали» направление тренда. То есть нужен другой критерий кроме волатильности.
И в моей системе я считаю её так, что запаздывание не играет отрицательной роли.  Даже чуть ещё выждать лучше для результатов. Выясняю почему.
avatar

теги блога Artemunak

....все тэги



UPDONW
Новый дизайн