Блог им. 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
★8
если нефть упала на 10% то логично изменить размер позиции на 10%
Не сказали в какую сторону. Полагаю, уменьшить?
Если так — не вижу в этом прямой логики.

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

Про МФЕ вообще не понял.
Этот показатель вряд ли можно использовать «в моменте».
avatar

VladMih

Кое-где использую снижение лота когда выросла волатильность. Прирост эффективности минимальный, но вроде что-то есть.
avatar

Laukar

Величина стопа от волатильности, соответственно и сайз меняется. Проще некуда
avatar

Сергеич

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

Кстати, Artemunak, неплохо бы уточнить — вы хотите менять сайз без изменения риска или увеличивать риск в определенных условиях?
avatar

VladMih

1. Трендовые системы не любят низкую волу, а многие контртрендовые может вдребезги порвать на высокой. Поэтому нет универсального рецепта.
2. Проблема непосредственного использования волы для управления сайзом состоит в запаздывании оценки. 
3. Предпочитаю топорный метод (много раз писал). Сайз системы обратно пропорционален амплитудной оценке риска. 
4. Неплохо было бы при составлении портфеля (сайзинге) учитывать коррелированность результатов систем. Но тут есть сложности и я для себя эту задачу решенной не считаю.
5. Рядом стоит задача обнаружения слома систем. Чисто теоретически, есть математические методы обнаружения разладки (смены режима). Практически они не очень-то подходят для нас.
avatar

SergeyJu

SergeyJu, а такой вариант — уменьшение сайза после серии успешных сделок и увеличение после серии неудачных. 
Мейстор Эймон, не практикую
avatar

SergeyJu

С научной точки зрения, НИОКР на тему динамического сайзинга имеет смысл проводить, если выявлена зависимость результатов от волатильности или от цены актива.

В вашем случае такая зависимость выявлена?
avatar

$100

А вообще хочется динамический сайзинг, может кто подскажет норм вариант?

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

wrmngr

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

UPD. геометрически увеличивается/уменьшается не сам сайз, а процент на который мы уменьшаем или увеличиваем сайз.
avatar

Serj90

Serj90, сайзинг по эквити. Протестировал почти сразу как тслаб освоил, хотя и интуитивно понимал что толку нет. Позже более опытные товарищи подтвердили мои мысли.
avatar

Artemunak

Artemunak, понял, спасибо.
avatar

Serj90

Artemunak, на самом деле, если для каждой системы использовать подход типа Р.Джонса или Л.Вильямса, все будет не так уж и плохо. 
avatar

SergeyJu

smart-lab.ru/blog/631499.php
Пятно параметров торгует эффективнее. Мини-отчет за второй квартал 2020 года
Так сайзинг очень плавно изменяется, если 1000-2000 систем виртуальной торгуется
avatar

robot_bsk

robot_bsk, пятно параметров как правило очень сильно скоррелировано с каждым своим членом. Для повышения емкости и даже устойчивости пятно — это хорошо. Поставленную задачу не решает. Потому что замена N систем на N пятен оставляет нас перед тем же вопросом, как делить объем на N долей. 
avatar

SergeyJu

SergeyJu, для этого делается корреляционная матрица и задаются веса системам в зависимости от корреляции
avatar

robot_bsk

robot_bsk, что такое ковариационная  матрица я знаю уже лет 40 примерно. Напишите что-то более содержательное, а то Вы даже до Марковица, похоже, не добрались в познании мира.
avatar

SergeyJu

SergeyJu, зачем усложнять? Корреляция со временем при форвардном тестировании почти не изменяется 
avatar

robot_bsk

SergeyJu, смотреть с 38:17 
Как я задаю веса системам
avatar

robot_bsk

robot_bsk, спасибо.
Просканировал до Луа. Выделил два пункта, фильтр и взвешивание. И то и другое обозначено, но не раскрыто. Фильтрами я тоже порядочно занимался. Что касается весов. Вы учитываете только коэф-ты корреляции или что-то еще. Например, доходности или оценки рисков?
Работает ли Ваша формула в случае очень неоднородных систем, допустим, трендовой и контртрендовой.
avatar

SergeyJu

SergeyJu, По поводу весов: я использую оценку рисков. Все системы, что есть привожу к одинаковому максдровдауну на истории. Мне нравиться цифра -35%. Когда все системы одновременно тестирую, то на истории получается — 20%. При этом доходность — средняя по всем системам, т.е. MAR и sharp порядочно растут.
По поводу неоднородных стратегий: можно тоже применять корреляционную матрицу, в случае незначительного изменения корреляции во времени при форвардном прогоне.
Все четко по формуле Анатолия Уткина https://russian-trader.com/content/205/?page=2
avatar

robot_bsk

robot_bsk, а почему именно макДД — оценка риска? 
avatar

SergeyJu

SergeyJu, Ну в каждой системе у меня манименеджмент — риск на сделку в %. Это в принципе тоже параметр, прогоняю на истории этот параметр и делаю его константой — максдравдаун -35%. Понятно, что некоторые системы из 2000 этот дравдаун по ходу торгов пробивают и могут дойти и до -60%, а следить за 2000 систем — нереально. Но на этот случай я сделал степенное уменьшение сайза на основе комментариев того же Анатолия Уткина в статье Управление капиталом портфеля алгоритмических стратегий. https://smart-lab.ru/blog/419603.php

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



avatar

robot_bsk

robot_bsk, получается прямо-таки иерархическая система управления рисками. 
avatar

SergeyJu

SergeyJu, Ага, для меня риск важнее, чем прибыль.
avatar

robot_bsk

Зачем искать профит там, где его нет? Управление сайзом — это прежде всего управление соотношением риск/доходность. Что является мерой риска? — волатильность. Все логично и очевидно. Поэтому многие и выбирают 2 вариант. Нет смысла заново изобретать велосипед.
avatar

Reznor

Reznor, волатильность чего именно является мерой риска, как Вы полагаете? 
avatar

SergeyJu

SergeyJu, волатильность цены торгуемого инструмента является мерой риска, оно же — стандартное среднеквадратическое отклонение.
avatar

Reznor

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

А. Г.

А. Г., а это уже смотря какую систему торговать и на каких временных интервалах. Впрочем это всё нюансы. Как измерять волатильность и риск, каждый решает сам.
avatar

Reznor

А. Г., а что для них является мерой риска, если не СКО?
avatar

Kot_Begemot

Kot_Begemot, lower partial moments
avatar

Eugene Logunov

Eugene Logunov, я предпочитаю меру риска, учитывающую глубину и длительность просадок, а не просто статистику отрицательных приращений. Придумал сам, а потом оказалось, что изобрел велосипед. 
https://en.wikipedia.org/wiki/Ulcer_index


avatar

SergeyJu

SergeyJu, это для каких систем?
avatar

Kot_Begemot

Kot_Begemot, контртрендовых у меня в эксплуатации нет. Но вообще-то, имхо, для любых.
avatar

SergeyJu

SergeyJu, а глубину по длительности нормируете? 
avatar

Kot_Begemot

Eugene Logunov, то есть, грубо говоря — Сортино.

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

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


avatar

Kot_Begemot

Kot_Begemot, 
30-дневной улыбке волатильности никаких серьёзных отклонений от БШ-Гауссианы не наблюдается (улыбки нет).
Только что посмотрел опционы на XLF (финсектор США) с 544 днями до экспирации. 16ый страйк вола 37, 32ой страйк вола 22.
её интегральные характеристики, скажем, большие просадки уже соответствуют таковым у аналогичной по МОЖ, СКО случайной величины распределенной по Гауссу
Хоть я и неплохо владею оператором очевидности, но в данном случае я затрудняюсь сделать какие-либо выводы о соответствии (разве что с точностью до умножения на константу в случае IID returns?)
avatar

Eugene Logunov

Eugene Logunov, 

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

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


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

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

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

Я много вариантов перебрал в разных типах систем и в целом остановился на стандартной СКО и Гауссе. Что-то не срослось у меня с LPM и прочими, более сложными методами, которые в разумных пределах (доходность/скос) с хорошей точностью сводятся к Гауссу. 
avatar

Kot_Begemot

Kot_Begemot, ну вариантов много, но это должны быть характеристики отрицательных результатов. Например, риск по Сортино (корень из среднего квадратов отрицательных значений с заменой положительных на нуль), VAR или СVAR, среднее нескольких просадок (максДД в силу единичности не подходит) и т. п. вещи.
avatar

А. Г.

А. Г., странно, но у меня на бектестах (рынок) и моделях (случайный независимый сильноскошенный шум) разницы, тем более явно положительной, нет. 
avatar

Kot_Begemot

Kot_Begemot, вот гистограмма 21-дневных доходностей одной моей системы на Газпроме с октября 1998 (слайд из лекции учебного курса, посвященной тестированию торговых алгоритмов)


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

PS. Это эквити, построенная по сделкам системы плюс проскальзывание по чистому out of sample, оптимизации нет.
avatar

А. Г.

Долгое время торговал с реинвестированием, т. е. объем позиции, открываемой по i-й системе «сегодня» равен округлению вниз до целого

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

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

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

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

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

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

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

А. Г.

Artemunak, какая конечная цель тестирования вараинтов управления размером позиции.

Например, цель привести портфель к заданому риску/волатильности. Каждый метод может быть лучше только под конкретные задачи.
avatar

Lagamail

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

MS


теги блога Artemunak

....все тэги



2010-2020
UPDONW