Для начала загадка: предположим есть у вас 3 робота, с просадками 30%, 50% и 70%, ну естественно они прибыльные и profit factor что-то там порядка 1.7. При этом эти данные для полного рефинанса и на интервале в 2 года. И надо вам получить
а) максимальное использование средств портфеля
б) максимальное рефинансирование
в) суммарную просадку не более 13%
загадка в том, как это правильно сделать?
Я назвал это загадкой, а не вопросом, потому что я наконец-то понял как, спустя несколько лет. До этого я пытался выжать из роботов максимум, и использовал как мне казалось передовую технологию: отдавал роботам ~90% от доступного бюджета, таким образом чтобы роботы имели возможность выбирать весь бюджет (0.9 + 0.09 + 0.009 — типа того), с целью, естественно — максимального возможного разгона депозита. получалось кто первый встал, того и тапки. Для двух роботов всё просто, а когда их было штук 7, то уже были всякие сложности.
Иногда у меня неплохо получалось, в 2014м я довольно мощно разогнал робота со 184 тыс до 1300 тыс с января по сентябрь. Потом ещё немного заработал. А потом получаться уже перестало. И дальше я занимался решением разного рода «философских» проблем, типа почему на истории миллиарды, а в реале просадка, и почему роботы пилятся быстрее, чем зарабатывают.
В итоге только несколько дней назад меня наконец-то «озарило», какой-то нейрон наконец пробурил свой дендрит куда надо. Как обычно для «озарений», логика оказалась простейшая. Просто чтобы понять почему она такая и не иначе, понадобилось много времени.
В комментах попозже расскажу, какое же я придумал наконец решение этой проблемы. Заодно провалидирую, если вдруг ещё чего не учёл.
Первому роботу даем 5/30=16,7% от счета, второму 5/50=10% от счета, третьему 5/70=7,1% от счета.
Итого, грубо, 35%. На остальное покупаем облигации. При каждом новом максимуме счета восстанавливаем соотношение путем новой покупки облигаций.
Все более сложные методы требуют исследования совместного распределения эквити роботов.
откуда росли ноги — когда на счету стало больше одного робота, естественно надо было как-то делить бюджет. поровну казалось глупо, т.к. все роботы не всегда в позициях, часть бюджета пропадала.
весь бюджет хотелось использовать естественно для быстрого разгона депозита.
вопросы просадки, да, изучались, но казалось что просадка в 30% — это мелочи, по сравнению с теми возможными профитами, которе будут у роботов.
но в реале просадки доходили до 70% (с восстановлением). и каждый раз возникала мысль — ну почему же мои роботы так сильно пилятся?
к тому же было совершенно непонятно, как правильно рефинансировать бюджеты, с учётом того что роботов несколько и просадки разные.
несколько вариантов пробовал наобум.
в итоге для начала посчитал сколько есть денег сейчас. какая максимальная просадка может быть на истории. и выделил каждому роботу фиксированное количество контрактов.
это было неплохо, но хотелось формулу. к тому же это решение не использовало рефинансирования, т.е. группа роботов получала просадку где-то в начале, затем зарабатывала, увеличивала бюджет сильно больше выделенного и без реинвестирования доходила до конца с полученной вначале просадкой. хорошо, но не автоматически.
ключевая точка была — когда я нашел ГЛАВНУЮ ошибку.
мне казалось, что если два робота просаживаются на 70% каждый, то дать каждому по 1/2 бюджета, значит уменьшить суммарную просадку напополам. я даже не проверял, казалось верным. но не тут-то было.
на самом деле если 1 робот просаживает полный бюджет на 70%
и второй робот просаживает полный бюджет на 70%, то вместе, просадив свои пол бюджета на 70% они просадят полный бюджет на теже 70%.
отсюда вывод сразу — что перехлёсты бюджета, когда одному роботы даётся более чем 1/N бюджета — не правильно! это повышает риск выше, чем его максимальная просадка, пропорционально разнице между его бюджетом и 1/N
ок, дальше проще. если максимум для одного робота это 1/N
то чтобы получить просадку в 13%, надо взять максимальную историческую в 70% и выдать роботу бюджет в
13/70, вуаля.
как рефинансировать? путём несложных вычислений получаем, что надо брать крышку для бюджета, т.е. максимальный исторический бюджет для группы роботов, он всегда известен в принципе и не падает при просадке. таким образом, при просадке мы и не увеличиваем и не уменьшаем бюджет. используем абсолютно одинаковый, как и до неё.
бюджет роботов повышается только на новых хаях группы.
итого бюджет робота должен быть
МИБ* МДП / (МИП * N)
где
— МИБ — максимальный бюджет на истории, считается для суммы роботов в динамике, просто некий X
— МДП — максимально допустимая просадка для общего бюджета
— МИП — максимальная историческая просадка для этого робота
— N — количество ваших роботов
из этого кстати есть интересные выводы:
если у вас 1 робот даёт просадку в 40% и ваша комфортная просадка в 20%, бюджет робота 1/2 = 50% депозита
если есть другой робот, менее успешный, с просадкой 50%
то его бюджет (одного) должен быть 2/5 = 40%
если запустить их вместе, на 90% депозита, они просадят баланс в худшем случае на 20 + 20 = 40%!
бюджеты когда они запущены вместе должен быть 25% + 20% = 45%, против 50% загрузки бюджета для одного робота.
глубоко я пока над этим не думал, но видимо в команду стоит брать робота с бОльшей просадкой, только если он даёт бОльший профит, иначе он зря лопает кусок бюджета.
зачем всё это надо? теперь, имея формулу, я могу добавлять и убавлять роботов в «коллектив» и видеть как они работают в толпе при полном рефинансировании _по_честному_, с любой начальной суммы бюджета и на любом куске истории.
так не получается комфортная просадка 20%
И у вас есть желание использовать именно всех роботов, но возможно оптимальнее использовать только некоторые с точки зрения минимизации просадок. Ну это так.
у меня действительно сейчас все роботы примерно в одно время просаживаются, это худший случай с максимальной просадкой, которую я и пытаюсь ограничить.
Насчёт всех роботов да, согласен, как раз этот инструмент позволяет посмотреть, каких роботов добавлять не стоит.
т.е. для случая когда первый проседает на 40, второй на 50
средняя просадка будет 45%
соответственно первому надо дать не
25%, а
25 * 45 / 40 = 28.125%
а второму не
20%, а
20 * 45 / 50 = 18%
тогда бюджет будет загружен на
46.125% вместо 45% без доп. взвешивания.
а просадка, насколько я могу судить, станет хуже на 0.25%
28.125 * 40 + 18 * 50 = 20.25%
обычно примерно на 50% просадке я робота выключаю.
некоторые потом восстанавливаются.
как раз вчера лазил по архивам, нашел, что эта эпопея с роботами (а она была второй и удачной) началась у меня 4 года назад в июле. так вот, есть один робот от апреля 2014, который просел где-то на 56%, но потом восстановился и сейчас просадка у него 0%
но это я по истории смотрю, в реале я его использовал месяца три, не больше. сейчас у меня более прибыльные варианты, как мне кажется.
если ты про формулу, то можно обновить в ней коэфф. при увеличении макс просадки, но я всё-таки за то чтобы такого робота выключить.
вообще у меня опять же в отличие от тебя счёт болтается куда сильнее, примерно как у тебя в начале, просадка реально достигает 70%, поэтому он стоит на месте последние три года, исправно кормя брокера комиссом.
и только большая работа кипит и надежда теплится :)
получается моя проблема была в выкрученном по максимуму риске.
после применения формулы появилась уверенность в просадке, надо посмотреть месяца два, и можно пробовать досыпать немножко денег.
ПBМ, мораль такова, что три бота с просадками 30%, 50% и 70% на тестах, в реале обязательно обновят свои макс просадки. Пусть не все три сразу, а по отдельности. Может так статься что они все могут выровняться, показав 70-70-70. Поэтому я считаю, что лучше всем ботам давать одинаковый бюджет, потому что тесты — это одно, а реал — уже совсем другое) (я, например, отталкиваюсь от макс просадки и свожу всех ботов под одну макс просадку, т.е. что бы у всех она была одинакова. Ну а сколько заработают — столько заработают)
А выключать бота, когда он дошел до 50% своей макс просадки, да даже если обновил её — это хороший способ сгубить хорошую систему) Важна не столько макс просадка системы, сколько её рекавери фактор!
Ну и, для пущей диверсификации, системы должны быть разные:
1. Трендовые.
2. Импульсные.
3. Контр-трендовые.
помнишь был «разговор», как определить что робот «сломался»? ведь надо понимать, где разница между «обновил свою просадку» и «что-то пошло совсем не так»
а мысль(и) твою понял, спасибо!
тогда наверное твой подход правильный по выбору максимальной просадки. а я свои тестирую со 100% рефинансом, и получается до 45% просадка на последних 2.5 года, 75% на последних 5.5 лет. глубже пока бросил тестировать, но там наверное ещё побольше, хотя заканчивают всё равно с плюсом.
может я неправильно делаю, что определяю просадку с рефинансом, хз.
а так, 30% просадка это вообще мелочи, наверное ты её не бросаешь, потому что у остальных такие просадки были ещё раньше на графике? интересен твой ответ!
у меня есть вот такой робот, но он уже не в строю. отлично зарабатывал почти год, до этой весны
и вот он же, без рефинанса
тоже порядка 34% просадка
но график конечно хуже твоего… видимо всё-таки сломался, так?
цифры слева — это прибыль в %, на первом графике — тоже :)
т.е. порядка 400% он даёт при бюджете в 7 контрактов, т.е. около 35 тыс (зависит от ГО)
временной ряд — 2.5 года
Добрый день. Разрешите встрять, как говорится… )
У меня принципиальный вопрос. А почему тестирование обычно ведется с полным рефинансированием?
В реале же так не происходит. Часть прибыли мы выводим. Иначе в для чего в обще этим заниматься?!
Тогда зачем тестировать с полным реф.?
Да. С этой точки зрения я еще не смотрел. Согласен, при полном реинвестировании все экстремумы станут более явными.
Но все равно, тестирование с одинаковым количеством контрактов в каждой сделке мне кажется более близким к реальным событиям. Думаю, такой подход тоже не стоит исключать?