Дмитрий Овчинников
Дмитрий Овчинников личный блог
04 февраля 2021, 16:58

Управление портфелем торговых систем. А как это делаете вы?

Ооож
75 Комментариев
  • Dmitriy
    04 февраля 2021, 17:00
    QuantAnalyzer4
      • Dmitriy
        04 февраля 2021, 19:24
        Дмитрий Овчинников, бесплатное с ограниченной функциональностью.
        • dip
          04 февраля 2021, 19:34
          Dmitriy, я хоть и не Дмитрий, но скажу спасибо! Возможно это поможет и мне (они обещают удобное сравнение бэктеста и реальных результатов). 
        • dip
          04 февраля 2021, 21:04
          Dmitriy, но надо сказать, бесплатная версия ниочем https://strategyquant.com/quantanalyzer/free/ 
          • Compare results: limited to the first 50 trades only
          • итд
            но за наводку спасибо! 
  • tashik
    04 февраля 2021, 17:04
    Софт с функцией портфельной оптимизации навскидку https://www.multicharts.com/features/portfolio-trading/#:~:text=Portfolio%20optimization%20lets%20you%20find,for%20both%20tasks%20with%20ease.

    Ресерчить тоже можно не в Excel ;)
      • tashik
        04 февраля 2021, 17:07
        Дмитрий Овчинников, да. В Вашем случае QuantAnalyzer лучше будет, там даже плагин есть к MT4
          • tashik
            04 февраля 2021, 21:51
            Дмитрий Овчинников, класс)
  • Paulmarko
    04 февраля 2021, 17:05
    1С и дописать все что нужно
  • SergeyJu
    04 февраля 2021, 17:07
    Переходите от сделок к эквити по дням. 70 эквити — 70 столбцов. Расчет портфеля на VBA займет секунды. Программа оптимизации — минуты. Не лень будет — напишете обработчик на питоне, который берет данные из того же экселя. Просто и компактно.
      • quant_trader
        04 февраля 2021, 17:51
        Дмитрий Овчинников,  «200 торговых дней*50 систем*6 лет=60 тыс строк»

        200*6=1200 строк. VBA за секунды будет считать и намного больший объем если не построчно работать а обращаться к range.

        На уровне портфеля подневная еквити по моему вполне достаточна.
        Есть классическое решение konkop, там вообще списки трейдов грузятся и собирается портфель.
          • quant_trader
            04 февраля 2021, 18:09
            Дмитрий Овчинников, нет, так не получится. Будет 70 строк — подневная по каждой из 70.

            Если брать подневные еквити то таблица будет 1200 дней * 70 столбцов (или строк) еквитей. Это смешной объем для VBA (при правильном подходе).

            PS кажется понимаю — Вы собираете таблицу потом сортируете, это не выглядит оптимально.

            Еще можно вообще при бектесте писать текстовую подневную еквити/или сделки в файл, потом в vba работать. Ексель мощная штука.
              • quant_trader
                04 февраля 2021, 18:31
                Дмитрий Овчинников, в подневных это так выглядит.

                Сделали 70 бектестов, получили 70 еквитей. Они не меняются. Загрузили все 70 в столбцы. Посчитали портфельную еквити (vba или формула). Покрутили коэфициенты (вручную или оптимизатором), опять посчитали.

                В последочных опять таки загрузили 70 списков трейдов. Отсортировали если надо (прямо в vba, не в таблице). Дальше этот список не меняется. Крутим коэфициенты, считаем.
              • quant_trader
                09 февраля 2021, 11:47
                Дмитрий Овчинников, это просто классическое решение для портфелей и Логунов ниже то же самое предложил.

                «Вопросы с использованием капитала это конечно не закроет,»

                Возможно и это решаемо. Если вместо столбцов еквити взять столбцы подневных % приращений еквити по каждой стратегии то там можно будет например не просто усреднять с весами а  например и суммировать приращения по пересекающимся стратегиям. Насколько я понимаю проблема в этом?
      • dip
        04 февраля 2021, 19:01
        Добавлю к тому, что написали уважаемые коллеги: логичным кажется уходить в другие решения, но что бы продолжать еще какое-то время жить с текущим подходом, нужна агрегация. Если не подходит агрегация по дням, то можно агрегировать с меньшим ТФ, втч _отдельно_ (как и пишет SergeyJu) считать аллокацию капитала, вероятно используя времена в позиции (и, сооответственно, считать их пересечения, а не тащить все сделки). Можно это сделать в несколько итераций, написав рассчет/аггрегацию для 10 элементов, и выстроить иерархию — агрегируете данные для 10 систем, потом для 10 портфолио по 10 систем итд.  (Написав это, я бы еще раз сказал: надо уходить в другие решения)
      • SergeyJu
        04 февраля 2021, 18:00
        Дмитрий Овчинников, Вы же на месяцы  портф собираете, не на полчаса. Поэтому подневная эквити — достаточно информативно для построения портфеля систем. 
        В экселе штатный  размер листа  миллион. Я обычно беру 12 лет, как минимум. Примерно 3000 — 3500 длина столбца. Если число столбцов несколько сот — вообще не напряжно для расчетов. 
          • quant_trader
            04 февраля 2021, 18:24
            Дмитрий Овчинников, а, кажется понял почему подневные не подходят.
            • SergeyJu
              04 февраля 2021, 18:51
              quant_trader, если быстрые системы торгуются с большими плечами, понятно, что возникают опасения, что совместные входы в одном направлении могут перегрузить ГО. 
              Но я лично думаю, что мухи — отдельно, а котлеты должны быть отдельно. То есть контроль лимитов, грубый, можно сделать независимо от решения портфельной задачи. 
              • quant_trader
                04 февраля 2021, 19:17
                SergeyJu, я думаю в другом причина.
  • vito333
    04 февраля 2021, 17:36
    расскажи потом, к чему пришёл
  • ves2010
    04 февраля 2021, 18:03
    а под волу нормируешь? типа если вола большая то и доха выше
    имхо можно обойти проблему
    просто разбив все на несколько групп

      • ves2010
        04 февраля 2021, 18:11
        Дмитрий Овчинников, а мне просто лень
        итак типа работает
    • SergeyJu
      04 февраля 2021, 18:52
      ves2010, нормировка на волу сильно ухудшает многие трендовые системы. 
      • ves2010
        04 февраля 2021, 19:38
        SergeyJu, нее… я имел ввиду результаты… эквити/волатильность_актива
  • Riskplayer
    04 февраля 2021, 18:10
    Возможно, Питон подойдет с пакетом Pandas.
  • wrmngr
    04 февраля 2021, 18:15
    Питон и пандас
  • dip
    04 февраля 2021, 18:33

    Пока хромаем с самодельным решением в самодельном тестере. Систем меньше чем у вас, и они все медленнее (Десятки тысяч сделок в бэктесте портфеля).

    Не могу порекомендовать этот путь, но с ним можно почти все :) 

  • NeHonduras
    04 февраля 2021, 18:55
    Можно еще сделки по каждому алгоритму перевести в простое эквити (только не по дням, а минутки) и потом работать с ними как с «виртуальными тикерами». А тут уже поле для оптимизации богатое. Тот же мультичартс.
  • smooth_operator20
    04 февраля 2021, 20:11
    Основной мой пойнт — переносить учёт трейдов и расчеты на sql-базу, а в экселе только анализ.
    хочется как-то попытаться в автоматическом режиме пооптимизировать итоговые результаты, двигая параметры всех систем.

    Это ведь классический curve fitting будет.

    Поделюсь своим опытом, ТС он не подойдет, но может какую-то идею дать.
    У меня (на данный момент) всего 8 ТС (было штук 15 максимум), торговля внутри дня. В натуре я могу переносить позиции на сл. день, но учитываю для анализа, что они закрыты.
    Трейды вбиваю в БД исключительно «теоретические», т.е. результаты без проскальзываний (как положительных, так и отрицательных).
    Каждая ТС имеет свой вес, в день могут быть открыты трейды по максимум 3 ТС — с наивысшим приоритетом.
    Анализ веду в экселе. Не реже раза в неделю смотрю теоретический иквити, рез-ты (теоретические) по каждой ТС и меняю приоритеты и %риска на ТС.
    Какие-то ТС периодически выпиливаются из эксплуатации, добавляются новые.

    Важно: эксель фактически использую как толстый клиент, т.е. на VBA там наговнякано изрядно.
      • smooth_operator20
        04 февраля 2021, 20:46
        Дмитрий Овчинников, ну похоже именно на это. Выделил жирным.
        хочется как-то попытаться в автоматическом режиме пооптимизировать итоговые результаты, двигая параметры всех систем.

        Выглядит именно так, что взять набор систем, набор параметров — и заоптимизировать их на истории по самое не могу.
          • smooth_operator20
            04 февраля 2021, 20:59
            Дмитрий Овчинников, ок, тогда просто посмотри в сторону решения, когда факты хранятся в sql-базе, а анализ или прогон можно, наверное, и в пандасе делать, раз уж это стильно и молодежно))
            Данные в экселе хранить, конечно, не вариант.
            Ты и сам понимаешь.
            С какими-нибудь знакомыми айтишниками в области обработки данных проконсультируйся.
            PS Мне кажется, у тебя в таблице фактов полей мало.
            Смотрел книжку «Статистика для трейдеров»? Там оч хорошая глава была, как трейды фиксить.
              • smooth_operator20
                05 февраля 2021, 19:29
                Дмитрий Овчинников, данные можно обогащать — это нормально))
                Посмотри главу 13 книжки Булашев. Статистика для трейдера.
                Особенно 13.8. Отчет о сделках. И 13.9 потом.
  • Replikant_mih
    04 февраля 2021, 20:30
    Соглашусь со стеком Python + pandas. То что векторизуется будет очень быстрым + с пандасом работать очень приятно, это как эксель на стероидах)). Ну а что не векторизуется — на голом питоне — даже в этом случае оно конечно мощнее, быстрее, чем эксель. Если питон с пандасом — сразу можно заценить Jupyter.
    • SergeyJu
      04 февраля 2021, 20:37
      Replikant_mih, Вы про эксель или про VBA? 
      Как-то мы пытались применить рэндом форест к ценовым рядам. Писал очень сильный парень, аспирант ВМК. Пока не применили оптимизацию вычислений и не переписали ядерные функции на Си, было ну очень тоскливо. Долго. До суток доходило. 

      • Replikant_mih
        04 февраля 2021, 20:45

        SergeyJu, Эмм, чёт я запутался). Про эксель — я про эксель без VBA. VBA, конечно, расширяет сильно возможности, но хз, мне кажется питон с пандасом и юпитером покруче будет).

         

        Про си, рэндом форест и крутого аспиранта вообще не понял) — это аргумент в пользу того, что питон плох? Или эксель? Если питон… — зачем там писать рэндом форест, в том числе на си) — там же все написано давно). Не пойму короч). Если есть готовые с си под капотом либы на питоне — надо их юзать — удобно и быстро, если нет — уже по ситуации. На готовых либах рэндом форест — ну зависит от гипер-параметров и объема данных, если я много данных заряжу — будет долго, сутки — столько ни разу не заряжал)).

        • SergeyJu
          05 февраля 2021, 10:22
          Replikant_mih, слов нет, питон круче. И библиотеки намного обширнее и современнее. Проблема в том, что «любой идиот» может присобачить библиотечку к импорту данных. А каменный-то цветок и не выходит. Отсюда возникают косые-кривые постановки задач, которые не ложатся на стандартные методы. И все, пиши сам на чем хошь. 
          Насчет Си в Питоне. Стандартный технический прием по ускорению счета тяжелых задач — переписать ядерные функции на более быстром языке. Чтобы те 5% кода, которые забирают 90% вычислений считались раз в 30 быстрее.
          • Replikant_mih
            05 февраля 2021, 10:28

            SergeyJu, Понял теперь.

            Ну, не знаю зачем что-то самому писать, в смысле из каких-то стандартных вещей — тот же случайный лес из примера. Его можно найти в нескольких реализациях сейчас — и sklearn и пайторчи-тензорфлоу тоже его реализовали, вроде, да и ещё наверняка много где — вроде даже есть реализации, задействующие возможности GPU)). Мы только на учебе в учебных целей для лучшего понимания писали на питоне реализации чего-то такого)).

             

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

            • Riskplayer
              05 февраля 2021, 14:33
              В питоне иногда я использовал пакеты для ускорения расчетов либо cython, либо numba. Вроде очень хорошо ускоряет.
  • Replikant_mih
    04 февраля 2021, 20:31
     Щас юзаю эксель все реже — не знаю, какую-то табличку завести, для расчетов — щас задумался — вообще не использую.

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

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