Здравствуйте друзья. Изучая вопрос портфельного инвестирования для долгосрочной перспективы наткнулся на работы Гарри Марковица. Изложенные им труды показались достаточно логичными и легкореализуемыми в условиях сегодняшней компьютеризации. Основные идеи Г. Марковица, которые были использованы для составления портфельной модели:
Перед тем как начать, дам определение некоторым понятиям, использованным в статье:
Целью данной работы являлось создание портфельной модели, критерием оценки которой является доходность.
Портфельная модель разрабатывается для отечественного фондового рынка. Торговые инструменты (акции) входящие в расчет взяты из индексов MICEX (Oil & Gas Indices; Consumer Goods & Retail Indices; Chemicals Indices; Metals & Mining Indices; Telecoms Indices; Electric Utilities Indices; Financials Index; Transport Index), в количестве 76 единиц. Расчетный период – один месяц.
Для начала обозначим все пункты параметры модели:
Перед составлением оптимального портфеля необходимо убедиться в том, что данная модель характеризуется положительной доходностью. Для этого были взяты данные месячных котировок в период с 01.01.2000 – 01.12.2018 гг., данные брались с торговой платформы Quik. Затем, используя IDE Visual Studio Community 2017, на языке C# запрограммированы все правила портфельной модели и запущены на истории котировок. Разработанная программа (рабочее название – Elegant Portfolio) служит исключительно для проверки параметров модели, на внешний вид внимание не обращайте – немножко бардак. В качестве механизма для поиска оптимального решения была использована библиотека Microsoft Solver Foundation 3.1. С кодом проекта можно ознакомится здесь: https://github.com/usenkov1988/ElegantPortfolio.

Рис. 1. Главное рабочее окно программы
После всевозможных результатов тестирования были получены следующие результаты (рис. 2 и 3):

Рис. 2. График накопительной доходности для портфеля в 70 000 руб.

Рис. 3. График накопительной доходности в относительных единицах
Пояснение к графикам. Изображенные три линии показывают доходность портфеля после моделирования: в первый (красная линия), на второй (оранжевая) и на третий (зеленая) месяцы.
На обоих графиках есть момент резкого падения, который приходится на кризис 2008 года. При попытках «подогнать» портфельную модель для нивелирования данной просадки, в целом, результаты оказались хуже. Тем не менее, характер линий плавно растущий.
Подведем промежуточный итог. Первая поставленная цель выполнена. Далее необходимо создать «калькулятор» для оценки текущего состояния рынка и подготовки оптимального портфеля в соответствии с моделью. Для решения этой задачи в качестве среды разработки послужил Microsoft Excel 2010 и его инструмент – «Поиск решения».
Рассмотрим состав и назначение основных вкладок «калькулятора»:

Рис. 4. Внешний вид вкладки «Data»
Детально остановимся на рассмотрении вкладки «Params» (рис. 5)

Рис. 5. Часть вкладки «Params» (ее полная ширина не вмещается на экран)
Все поля, отмеченные голубым цветом и белым шрифтом, служат для ввода данных пользователем:
После настройки запускаем поиск решения (Главное меню – Данные – Анализ – Поиск решения, рис. 6) и просим много уважаемый компьютер найти решение.

Рис. 6. Окошко поиска решений с параметрами портфельной модели
Повторяем операцию до тех пор, пока результат расчета не удовлетворит требования исследователя.
Скачать файл последней версии «калькулятора» и ознакомится с ним можно в группе vk – https://vk.com/family_trust, раздел «Документы».
Запуск системы на реальном счету начнется с января 2019 г. За результатами работы проекта можно также следить через сервис управления портфелем: https://portfolio.conomy.ru/portfolios/3223.
Спасибо за внимание.
За сколько периодов вы берёте данные и для скольких акций считаете ковариационный матрицу?
Ковариация определяет взаимодействие между парами, но пар для 76 акций 76*75 / 2 — несколько тысяч. Чтобы получить “достоверную” оценку такого количества парных ковариация нужно очень много данные за десятки тысяч периодов, а не за 18. Иначе вы получите просто случайный “мусор”. Более того, если периодов меньше количества Акции, то полученная матрица будет сингулярной (совсем бессмысленной).