
Когда мы имеем больше одной стратегии, в которых уверены, возникает вопрос каким количеством лотов торговать. На данный вопрос еще в 50-60х годах попробовал ответить Гарри Марковиц, за что в 1992 году получил нобелевскую премию. Однако, в отличие от мастодонтов портфельной теории, сейчас мы управляем портфелем стратегий, и зачастую мы оцениваем лишь финансовые потоки которые они генерируют и нам не важно на каком конкретно инструменте торгует наша стратегия, на акциях на фьючерсах, либо опционах .
Оптимизация портфеля — процесс относительно несложный если использовать специальные программные средства такие как матлаб, или R. В обоих языках в свободном доступе можно скачать оптимизаторы инвестиционных портфелей, в R, их несколько. Мне как не профессиональному программисту довольно сложно перекидываться с одного языка на другой, не освоив толком C# и S#(до сих пор приходится пересматривать курсы). Поэтому, реализация простого механизма подбора оптимального портфеля была выполнена именно на C#.
Для меня, основная идея оптимизации портфеля — это нахождение таких весов каждой из стратегий, чтобы соотношение риска и доходности было на приемлемом уровне. Для оценки того, насколько хороша наша стратегия я использовал показатель -отношение среднедневного ретурна портфеля к его стандартному отклонению. В меру природной скромности, называть его в свою честь не стал. ;) Но ближе к делу:
Вот код оптимизатора (проект можно будет скачать, он внизу статьи):

Данный оптимизатор принимает на вход Ecxel файл, сохраненный, как csv. В данный файл должны быть загружены ретурны стратегий, из которых нужно собрать портфель (Формат ретурнов, как на картинке). Для тех, кто знаком в концепцией оптимального F, там все аналогично, за исключением того, что вместо ретурнов подставляются HPR.
Обязательно в файле нудно указать дату, формат даты можно изменить в коде.

После того, как все возможные варианты просчитались они сохраняются в ту же папку, под тем же именем файла, однако к нему добавляется .result.csv
И о чудо, открывая этот файл, мы найдем 30 лучших вариантов портфеля отсортированные от максимума к минимуму по показателю отношение среднедневного ретурна портфеля к его стандартному отклонению.

Показатель, как видно на рисунке записывается в графу value — так как теоретически можно использовать любой показатель. Предложенный мной показатель можно заменить в коде, на тот, какой вам нравится больше, как вариант Sharp Ratio, либо Sortino.
Количество лучших результатов можно изменить в строчке 54.

Формат даты в строчке 24.

Самый простой способ воспользоваться обретенными знаниями:
*Синхронизацию, можно выполнить в excel с помощью сводной таблицы. (Вставка=>Сводная таблица=>Ок)

Для того, чтобы проверить адекватно ли работает мой оптимизатор, я использовал Combination Strategy, один из инструментов WealthLab.
Наилучший портфель:

2-ой портфель по ранжированию оптимизатора:

3-ий портфель:

Помимо того, что Wealth-lab Score подтверждает адекватность работы оптимизатора, также доходность как правило получается выше, однако доходность не учитывает риск, поэтому ее для сравнения я брать не стал.
Если кто-нить захочет написать похожим образом генетический оптимизатор, по мотивам моей статьи — буду рад такому подарку на новый год. ;)

После того, как найдены веса оптимального портфеля, нужно прописать расчет количества контрактов в самой стратегию. Обращаясь к количеству денег на счете метод управления капиталом должен рассчитывать количество контрактов.
Для S# стратегий данную функцию можно прописать одной строчкой: Кол контрактов = (Сумма на счете*Вес в портфеле)/Гарантийное обеспечение

В результате, торговля начинает приобретать абсолютно другое качество — данный подход не только избавляет трейдера от головной боли, думая каким кол контрактом заходить, в каждой отдельной сделке. Торговля портфелем обоснованно упорядочивает торговый процесс, становится философией. Портфель сам адаптируется к изменению количества денег на счете. Мы же высвобождаем время на создание новых стратетий и реализацию новых идей.
Спасибо всем, кто дочитал до конца! Учитесь программировать, тестируйет свои идеи, получайте прибыль и узнавайте много всего нового!
И как вы помните, я сам начал изучать программирование сравнительно недавно — поэтому получится и у Вас. Главное не стесняться обращаться к профессионалам, в этом хорошо помогают курсы да и просто общение с программистами - http://stocksharp.com/lesson/stocksharp/
Буду рад, если моя программа улучшит качество вашего трейдинга! Николай Флеров наш ученик!
Kommentare (0)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Noch keine Kommentare. Seien Sie der Erste!