П М
П М личный блог
19 июля 2017, 12:19

Управление бюджетом и просадкой нескольких роботов на одном счёте

Для начала загадка: предположим есть у вас 3 робота, с просадками 30%, 50% и 70%, ну естественно они прибыльные и profit factor что-то там порядка 1.7. При этом эти данные для полного рефинанса и на интервале в 2 года. И надо вам получить
а) максимальное использование средств портфеля
б) максимальное рефинансирование
в) суммарную просадку не более 13%

загадка в том, как это правильно сделать?

Я назвал это загадкой, а не вопросом, потому что я наконец-то понял как, спустя несколько лет. До этого я пытался выжать из роботов максимум, и использовал как мне казалось передовую технологию: отдавал роботам ~90% от доступного бюджета, таким образом чтобы роботы имели возможность выбирать весь бюджет (0.9 + 0.09 + 0.009 — типа того), с целью, естественно — максимального возможного разгона депозита. получалось кто первый встал, того и тапки. Для двух роботов всё просто, а когда их было штук 7, то уже были всякие сложности.

Иногда у меня неплохо получалось, в 2014м я довольно мощно разогнал робота со 184 тыс до 1300 тыс с января по сентябрь. Потом ещё немного заработал. А потом получаться уже перестало. И дальше я занимался решением разного рода «философских» проблем, типа почему на истории миллиарды, а в реале просадка, и почему роботы пилятся быстрее, чем зарабатывают.

В итоге только несколько дней назад меня наконец-то «озарило», какой-то нейрон наконец пробурил свой дендрит куда надо. Как обычно для «озарений», логика оказалась простейшая. Просто чтобы понять почему она такая и не иначе, понадобилось много времени.

В комментах попозже расскажу, какое же я придумал наконец решение этой проблемы. Заодно провалидирую, если вдруг ещё чего не учёл.
30 Комментариев
  • tores
    19 июля 2017, 12:25
    и… интересно…
  • CloseToAlgoTrading
    19 июля 2017, 12:45
    ну и где ответ?
      • CloseToAlgoTrading
        19 июля 2017, 12:52
        ПBМ, ну подождем ;) может кто попытается…
  • SergeyJu
    19 июля 2017, 13:00
    Самый простой портфельный подход. даем каждому роботу по одинаковой доле риска. Если верим в наличие некоторой расфазировки убытков примерно по 5%, если не верим, по 13/3=4,3%. Неважно, считаем далее для 5%.
    Первому роботу даем 5/30=16,7% от счета, второму 5/50=10% от счета, третьему 5/70=7,1% от счета.
    Итого, грубо, 35%. На остальное покупаем облигации. При каждом новом максимуме счета восстанавливаем соотношение путем новой покупки облигаций.
    Все более сложные методы требуют исследования совместного распределения эквити роботов. 
  • tores
    19 июля 2017, 13:59
    если запустить их вместе, на 90% депозита, они просадят баланс в худшем случае на 20 + 20 = 40%! 

    так не получается комфортная просадка 20%
  • tores
    19 июля 2017, 14:01
     а почему нельзя посчитать допустим дневные доходы каждого робота, потом посчитать суммарную эквити (весь портфель роботов) и потом оптимизировать (макс. коэф. восстановления) количество торгуемых контрактов у каждого робота. 
  • tores
    19 июля 2017, 14:21
    можно оптимизировать по максимальной доходности при заданной просадке портфеля, но нужно что бы были роботы с просадкой меньше чем заданная для оптимизации. Возможна ситуация что некоторые роботы останутся не у дел. 
    • SergeyJu
      19 июля 2017, 19:42
      Max, я много раз принимался за решению портфельной задачи, как раздать веса на N систем так, чтобы получить в каком-то смысле наилучшую эквити. Можно искать максимум доходности при фиксированной максимальной просадке, можно, наоборот, зафиксировать доходность и минимизировать просадку. Можно пользоваться квадратичными мерами риска. Монте-карло — и ни в чем себе не отказывай. Потом можно наблюдать за результатом портфеля. Вывод следующий. Все эти подходы дают неустойчивые решения. Одновременная оптимизация и доходности на максимум и риска на минимум получается, не очень понимаю почему, оверфиттингом. И самый простой метод, некогерентное выравнивания риска по системам, дает наиболее устойчивый результат. Единственное, что к этому стоит добавить, что все мои системы зарабатывают на трендах. Пусть на разных инструментах и в разных таймфреймах. Возможно, для более разнообразной выборке из систем результаты были бы иными.
      • tores
        19 июля 2017, 20:18
        SergeyJu, спасибо за полезные заметки!
  • tores
    19 июля 2017, 14:32
    вроде формула рабочая. только в такой модели вы закладываете риск что максимальные просадки по роботам реализуются в один момент. На деле же они реализуются в разные моменты времени, т.е. есть некая диверсификация. 

    И у вас есть желание использовать именно всех роботов, но возможно оптимальнее использовать только некоторые с точки зрения минимизации просадок. Ну это так.
      • tores
        19 июля 2017, 14:50
        ПBМ, рад что удалось решить задачу, успехов вам, коллега!
  • kvazar
    19 июля 2017, 22:47
    управление капиталом прочитать не?
  • SenSoR
    20 июля 2017, 02:16
    Что ты  делаешь, когда робот достигает своей макс. просадки? (Любая торговая система, по мере своей жизни, обновляет макс. просадку несколько раз, перед тем как окончательно сдохнуть. Это так… на подумать=))
      • SenSoR
        20 июля 2017, 12:02

        ПBМ, мораль такова, что три бота с просадками 30%, 50% и 70% на тестах, в реале обязательно обновят свои макс просадки. Пусть не все три сразу, а по отдельности. Может так статься что они все могут выровняться, показав 70-70-70. Поэтому я считаю, что лучше всем ботам давать одинаковый бюджет, потому что тесты — это одно, а реал — уже совсем другое) (я, например, отталкиваюсь от макс просадки и свожу всех ботов под одну макс просадку, т.е. что бы у всех она была одинакова. Ну а сколько заработают — столько заработают)

        А выключать бота, когда он дошел до 50% своей макс просадки, да даже если обновил её — это хороший способ сгубить хорошую систему) Важна не столько макс просадка системы, сколько её рекавери фактор!

        Ну и, для пущей диверсификации, системы должны быть разные: 
        1. Трендовые.
        2. Импульсные.
        3. Контр-трендовые.

          • SenSoR
            20 июля 2017, 13:14
            ПBМ, Угадай, почему эта страта у меня всё еще в боевом строю?)



              • SenSoR
                22 июля 2017, 14:26
                ПBМ, У моих роботов всегда разный объем входа в сделку ( в зависимости от многих факторов). И да, торгуют в основном без реинвестирования, т.к. инвесторам важна линейность результата, и плавность эквити и просадок. Такие «заезды» далеко за макс. зону просадки бывают у некоторых, и это не повод думать, что система сломалась. Просто на рынке появляется какой-то форс-мажор, к которому бот может быть не готов и начинает терять больше обычного. Как правило, такие моменты редки, после чего эквити у нормальной тс начинает резко выравниваться, а у сломавшейся тс начинается период «плато» или, что хуже, планомерное пикирование вниз))
  • Maximus
    01 сентября 2017, 17:03

    Добрый день. Разрешите встрять, как говорится… )
    У меня принципиальный вопрос. А почему тестирование обычно ведется с полным рефинансированием?

    В реале же так не происходит. Часть прибыли мы выводим. Иначе в для чего в обще этим заниматься?!

    Тогда зачем тестировать с полным реф.?

  • Maximus
    04 сентября 2017, 09:40

    Да. С этой точки зрения я еще не смотрел. Согласен, при полном реинвестировании все экстремумы станут более явными.

    Но все равно, тестирование с одинаковым количеством контрактов в каждой сделке мне кажется более близким к реальным событиям. Думаю, такой подход тоже не стоит исключать?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн