DEVELOPMENT AND APPROBATION OF A SOFTWARE SOLUTION FOR THE INVESTMENT PORTFOLIOS FORMATION USING FRACTAL ANALYSIS AND PREDICTIVE MODELS

Abstract


This paper describes the development and approbation of the software solution, which implements the methodology of forming recommendations for the composition of investment portfolios using fractal analysis and long memory predictive models, which is the result of research conducted over several years at the Department of Information Systems and Mathematical Methods in Economics of PSU. The general algorithm of the program includes four main steps: 1) obtaining and preparing data; 2) sorting assets by the fractal dimension of their price series; 3) forecasting asset returns; 4) forming portfolios (determining asset shares). The described algorithm stages correspond to the structure of the program solution, expressed by the set of its subsystems. The features of the developed program are as follows: possibility to load data of share prices from the FINAM website; calculation of the fractal dimension of asset price series by the DFA and minimum coverage methods; asset returns forecasting using the ARFIMA and ARFIMA-GARCH models; selection of portfolio structures based both on the forecasted and historical data; possibility of multiple generation of portfolios based on random-selected assets with characteristics averaging; evaluation of portfolio characteristics using test data (if any); support for multi-core processors for multiple acceleration of calculations; windowed graphical interface. The results of program approbation on the Russian stock market data under crisis economic conditions are given. On the whole, these results are in line with those obtained earlier on the developed US market data. The developed program can be used by portfolio investors, carrying out investment activities in the international financial markets. Scientific application of the program is important: its users can be scientists, students and other researchers of innovative methods of investment portfolios formation.

Full Text

Введение Для поддержки принятия инвестиционных решений портфельных инвесторов разработан разнообразный инструментарий экономико-математических моделей и методов управления финансовым портфелем, основанный на классических результатах Г. Марковица [1]. Основная идея этих результатов состоит в том, что инвестор принимает инвестиционное решение, оценивая математическое ожидание и стандартное отклонение доходности финансового портфеля. На данных принципах основана современная портфельная теория (MPT), заложенная Марковицем и развитая Шарпом, Тобином и др. [2]. Условием применимости классической теории и методологии портфельного инвестирования является наличие развитого и эффективного фондового рынка. Согласно гипотезе эффективного рынка (EMH), вся значимая информация немедленно и в полной мере отражается в ценах, они являются практически непредсказуемыми, а их динамика описывается моделью случайного блуждания [3]. Современными исследованиями показано, что EMH входит в противоречие с практикой [4; 5]. Существует альтернативная по отношению к EMH гипотеза фрактального рынка (FMH), предложенная Б. Мандельбротом и Э. Петерсом [6]. Согласно ей, финансовые рынки обладают не случайной, а хаотической, и, следовательно, предсказуемой динамикой развития, при этом показатели финансовых активов обладают распределениями с толстыми хвостами, а ценовые ряды характеризуются наличием фрактальных свойств, что выражается в их свойстве персистентности - долговременной корреляционной зависимости (длинной памяти). Нами выдвинуто следующее предположение: модификация классического подхода к формированию инвестиционных портфелей с применением методов фрактального анализа позволит улучшить показатели получаемых портфелей и добиться превосходства над «рыночным портфелем». Исследования в данном направлении велись в течение нескольких лет; их результаты, представленные, например, в трудах [7-10], позволили разработать методику формирования портфелей на основе методов фрактального анализа и прогнозных моделей с длинной памятью, которая была апробирована на развитом рынке США и продемонстрировала свою эффективность [11]. Идея данной методики состоит в следующем: на первом этапе формируется исходный пул активов с достаточно длинной предысторией котировок для включения в портфель, для каждого из которых вычисляется фрактальная размерность его ценового ряда, после чего активы упорядочиваются по величине размерности и отбираются первые n (желаемое количество активов в портфеле) из них; на втором этапе выполняется прогнозирование рядов доходностей выбранных активов с помощью моделей с длинной памятью, и оптимизация структуры портфеля осуществляется не по историческим, а по прогнозным рядам доходностей. Результатом является вектор долей активов в портфеле, при которых максимизируется (минимизируется) целевая функция (ожидаемые величины доходности, риска, коэффициента Шарпа). Этот вектор можно рассматривать как рекомендацию инвестору относительно пропорций, в которых следует включать активы в портфель. Применение описанных техник (различных методов оценивания фрактальной размерности временных рядов, эконометрических моделей с длинной памятью) и разработанной на их базе методики формирования инвестиционных портфелей является сложным с практической точки зрения процессом. Если некоторые методы выборочно реализованы в существующих и доступных пользователю программных инструментах (например, построение модели ARFIMA входит в функционал прикладного статистического пакета EViews), то другие (метод минимального покрытия) не имеют программной реализации в массовых прикладных решениях вовсе. Существуют пользовательские имплементации методов на различных языках программирования (MATLAB, MQL, Python, R), в том числе опубликованные в сети Интернет и доступные для загрузки, однако их использование в контексте решения задачи конструирования портфелей осложнено следующими факторами: - от пользователя требуются навыки программирования достаточно высокого уровня, причем на нескольких языках; - консолидированное применение разных методов в рамках единой методики является сложной задачей со множеством технических нюансов; - некоторые использованные методы (модель портфеля на базе прогнозных доходностей) являются оригинальными разработками и не имеют программной реализации ни в каком виде. Таким образом, можно констатировать, что для практического применения разработанной методики в экономических или исследовательских целях пользователь должен иметь существенный опыт программирования, а также математическую подготовку, что значительно сужает потенциальный круг пользователей нашей разработки. Этим обусловлена необходимость создания программного комплекса для формирования рекомендаций по составу инвестиционного портфеля с применением фрактального анализа и прогнозных моделей, который бы позволил неподготовленному пользователю выполнять все этапы предложенной методики в едином программном продукте. Описание алгоритма и структуры программы Общий алгоритм формирования рекомендаций по составу портфеля в соответствии с описанной в [11] методикой должен включать четыре основных этапа: 1) получение и подготовка данных; 2) сортировка активов по величине фрактальной размерности их ценовых рядов; 3) прогнозирование доходностей активов; 4) формирование портфелей (определение долей активов). Описанным этапам алгоритма должна соответствовать структура программного комплекса, выраженная набором его подсистем. Каждая подсистема реализует те или иные алгоритмы сообразно своему функционалу и характеризуется собственным набором входных и выходных данных. Ниже приведена характеристика подсистем, для лаконичности названных блоками. Блок получения и подготовки данных. Предназначен для загрузки из внешнего источника исторических данных о ценовых рядах активов, являющихся базой для формирования портфеля, и их подготовки к следующим этапам алгоритма. Источники данных о котировках тех или иных финансовых инструментов (акций, облигаций, фьючерсов, валютных пар и т.д.) могут быть разнообразны: сайты бирж, инвестиционных компаний, различные сервисы, предоставляющие программный интерфейс (API) для автоматизированной загрузки данных (как на бесплатной, так и на платной основе). Нами решено реализовать в программе работу с одним источником - сервером компании «ФИНАМ» [12], который позволяет в свободном режиме скачивать данные о котировках активов, торгуемых на российских биржах. При этом сведения об активах, для которых необходимо скачать данные, задаются пользователем вручную в заранее подготовленном файле формата JSON (рис. 1), а границы временного диапазона истории котировок - в графическом интерфейсе программы. Рис. 1. Структура JSON-файла с данными об эмитентах ценных бумаг, включающими тикер ценной бумаги, ее тип, наименование эмитента и числовой идентификатор в базе «ФИНАМ» (пример) Полученные таким образом данные сохраняются в текстовом файле формата CSV - универсального формата для хранения данных в табличном виде, средствами работы с которым обладают многие популярные программные продукты, включая табличный процессор Microsoft Excel и его аналоги. Описание структуры файла приведено в табл. 1 (n - общее количество активов в таблице). Таблица 1 Структура CSV-файла* с историческими ценовыми данными активов <DATE> Тикер 1 Тикер 2 … Тикер n Дата** Ценовые данные на дату - левую границу рассматриваемого периода Дата Цена*** Цена … Цена … … Дата Ценовые данные на дату - правую границу рассматриваемого периода Примечание:* - разделитель столбцов - точка с запятой (;); ** - формат даты - текстовый, соответствует шаблону ГГГГММДД (пример: 20220201); *** - формат цен - числовой вещественный, разделитель целой и дробной частей - точка (пример: 315.0). CSV-файл с котировками может быть сформирован пользователем самостоятельно, что позволяет использовать в программе ценовые данные, полученные из любого доступного источника. Исходный анализируемый набор активов соответствует данным в файле. Следует отметить, что разрабатываемая программа предназначена для работы с месячными данными (цены активов на первое число каждого месяца). После загрузки ценовых данных из файла требуется их обработка - подготовка к дальнейшему использованию, включающая несколько этапов. 1. Избавление от пропусков в ценовых рядах. Пустые строки (с отсутствующими ценовыми данными по всем активам) удаляются. Одиночные пропуски заполняются средним двух соседних значений. Двойные пропуски заполняются по формуле где X0, X1, X2, X3 - левое значение ряда, два пропуска и правое значение ряда соответственно. Такой подход к решению задачи избавления от пропусков позволяет более толерантно, нежели обычное удаление, отнестись к активам с пропусками в данных - сразу не исключать их из рассмотрения, ведь они могут оказаться инвестиционно перспективными. Ряды, полученные в результате предыдущих действий, зануляются с начала до первого значения, после которого пропуски уже не встречаются. 2. Вычисление месячных нетто-доходностей и анализ рядов на наличие аномалий. Доходности активов вычисляются по формуле , где - цена в период t. В рядах доходностей производится поиск значений за пределами диапазона [-0,67; 2], что свидетельствует о падении или росте цен более чем в 3 раза. Мы исходим из предпосылки о том, что такой скачок цен в течение месяца сигнализирует о событии дробления или объединения акций, что приводит к корректировке их биржевых цен путем умножения или деления на некоторый коэффициент (принятые возможные значения: 5, 10, 50, 100, 500, 1000, 5000, 10 000, 50 000, 100 000, 500 000, 1 000 000). Подобные скачки являются техническими, не означающими кризисных ситуаций, поэтому следует их устранять, чтобы не вносить погрешностей при оценке фрактальной размерности и прогнозировании рядов. Устранение достигается путем деления или умножения всей предыстории цен до момента, предшествующего скачку, включительно на соответствующий коэффициент. При этом пользователь сам принимает решение о применении данной меры. После корректировки доходности активов вычисляются заново. Цикл повторяется до тех пор, пока либо в рядах доходностей не останется скачков, либо пользователь не примет решения не выполнять корректировку. 3. Определение границ обучающей и тестовой выборок. Пользователем задаются длины обучающей и тестовой выборок в месяцах, а также дата - значение «текущего момента» (момента, от которого назад отчитывается обучающий период и вперед - тестовый). 4. Пересчет месячных доходностей в доходности за период, используемый при вычислении характеристик портфелей (например, если инвестора при формировании портфеля интересуют его годовые доходность и риск, то длина периода составляет 12 месяцев). Назовем эту величину периодом портфеля. 5. Окончательный отбор активов на этапе подготовки данных. Исключаются из рассмотрения активы, не имеющие предыстории достаточной длины (длины обучающей выборки), а также активы с неположительной среднемесячной доходностью. Выходными данными первого блока программы являются: месячные цены активов, месячные доходности, доходности за период портфеля, даты тестовой и обучающей выборок (месячных и за период) и перечень активов, прошедших первоначальный отбор. Блок сортировки активов по величине фрактальной размерности. Предназначен для вычисления фрактальных размерностей ценовых рядов активов и упорядочения активов по возрастанию размерности. Входными данными этого блока, помимо цен активов, являются сведения о выбранном пользователем методе оценки размерности (в соответствии с ранее полученными результатами - см., например, [8] - на выбор предлагаются методы ДФА и минимального покрытия), а также двоичный признак использования для оценки размерности всей доступной предыстории цен (если нет, тогда используется только обучающая выборка). Стоит подчеркнуть, что размерность оценивается по рядам цен, а не доходностей, что обосновано нестационарностью первых. Выходными данными являются: оценки размерностей каждого актива; упорядоченный по возрастанию размерности перечень активов. Блок прогнозирования доходностей активов. Предназначен для построения моделей выбранного пользователем типа (в соответствии с предыдущими результатами - см. [9; 10] - на выбор предлагаются модели с длинной памятью ARFIMA и ARFIMA-GARCH) и прогнозирования с их помощью доходностей рассматриваемых активов. Для моделирования каждого актива из ряда его месячных доходностей формируется обучающая выборка модели. Аналогично этапу оценки размерности в зависимости от выбора пользователя при обучении модели используется либо вся доступная предыстория доходностей, либо только ее фрагмент, соответствующий заданной на начальном этапе алгоритма длине обучающей выборки. Также пользователем задается ряд параметров моделирования, к которым относятся: 1) минимальная длина обучающей выборки модели (минимально допустимое количество значений ряда для построения модели, по умолчанию нами принята величина 30); 2) максимальные порядки авторегрессии (AR, p) и скользящего среднего (MA, q) (установка этого параметра связана с применяемым нами способом определения порядков p, q: строится несколько моделей разных порядков, и из них выбирается модель с наименьшей величиной критерия BIC; по умолчанию ); 3) p-значение, используемое в тестах модели на адекватность, к которым относятся проверка отсутствия автокорреляции в остатках и проверка распределения остатков по нормальному закону (по умолчанию 0,05). Если на обучающей выборке не удалось построить модель, успешно прошедшую все проверки на адекватность при установленной величине p-значения, левая граница ряда сдвигается на один шаг вперед, и процесс обучения модели повторяется. Это происходит до тех пор, пока либо не будет получена адекватная модель, либо не будет достигнута минимальная длина обучающей выборки, при которой также не удастся построить адекватную модель. В последнем случае данный актив будет исключен из дальнейшего рассмотрения по причине невозможности получения прогнозов его доходностей выбранным методом при заданном p-значении. При получении адекватной модели строится прогноз ряда доходностей на заданное число (длина тестовой выборки) шагов вперед. По окончанию генерации рядов месячных прогнозных доходностей активов выполняется их пересчет в прогнозные доходности за период портфеля (годовые, квартальные и т.д.). Выходными данными третьего блока программы являются: прогнозные доходности активов (месячные и за период портфеля); упорядоченный по величине размерности перечень активов, для которых удалось построить модели и спрогнозировать доходности. Блок формирования портфелей. Предназначен для подбора долей активов в портфелях путем решения оптимизационной задачи. Активы для включения в портфель выбираются пользователем из перечня, являющегося результатом работы предыдущего блока программы. Данная подсистема выполняет две функции: основную, к которой относится формирование рекомендаций по структуре портфелей на основе разработанной методики, и дополнительную - обеспечение возможности сравнения полученных портфелей с портфелями из активов, выбранных случайным образом (эффективность такой техники описана, например, в [13; 14]). При реализации основной функции осуществляется формирование нескольких портфелей, отличающихся как целевой функцией, так и способом ее вычисления. 1. «Прогнозные» портфели. Целевая функция вычисляется с использованием рядов прогнозных доходностей. 2. «Исторические» портфели. Целевая функция вычисляется только по историческим данным без использования прогнозных значений. Оптимизация портфелей каждого вида выполняется по трем критериям: максимизация ожидаемой доходности (с ограничением сверху по риску); минимизация ожидаемого риска (с ограничением снизу по доходности); максимизация коэффициента Шарпа (отношения доходность/риск). Ограничения по доходности и риску, а также минимальная доля актива в портфеле задаются пользователем с помощью графического интерфейса программы. В случае, если за тестовый период имеются данные о доходностях выбранных активов, программа вычисляет и выводит характеристики полученных портфелей на фактических данных, тем самым позволяя оценить качество работы алгоритмов и, соответственно, примененной методики. В этом же случае становится возможным использование дополнительной функции программы - сравнения характеристик портфелей с таковыми, сформированными из случайного набора активов. Для этого пользователем задается число генераций «случайного» портфеля и количество входящих в него активов. «Случайные» портфели оптимизируются по историческим доходностям, результаты усредняются. Выходные данные четвертого блока являются итоговым результатом работы программы: к ним относятся полученные в результате оптимизации портфелей разными способами вектора долей активов, которые можно рассматривать как рекомендации инвестору по формированию инвестиционного портфеля из выбранных активов при заданных параметрах. При использовании вспомогательного функционала блока выходными данными являются усредненные характеристики «случайных» портфелей. Реализация программного комплекса Разработка описанного концептуально программного комплекса осуществлена на языке программирования высокого уровня Python версии 3.9 с использованием вставок кода на языке R версии 4.2. Язык Python за счет своей простоты и поддержки большого количества библиотек готовых функций является самым популярным универсальным языком программирования в мире (по версии IEEE Spectrum на 2021 г. [15]). Существуют интерпретаторы Python для всех распространенных операционных систем, включая различные версии GNU/Linux, в том числе российские дистрибутивы (такие как ALT, Astra и т.д.). Язык R широко применяется при инженерных расчетах, решении задач анализа данных и машинного обучения, для которых он, в отличие от универсального Python, и создавался, чем обусловлено существование для этого языка готовых библиотек с уникальными реализациями некоторых методов и алгоритмов, на текущий момент отсутствующими в Python. Каждый блок программы (подсистема) получил свое воплощение в виде программного модуля - текстового файла с расширением «.py.» Также необходим еще один модуль - управляющий, который не содержит основной логики алгоритма, реализующего методику, но выполняет технические функции: является точкой входа в программу, точкой обмена данными между модулями, запускает и управляет вызовом функций модулей, реализует графический пользовательский интерфейс. На рис. 2 представлена структурограмма программного комплекса как системы взаимодействующих между собой программных модулей. Помимо указанных на схеме объектов данных модули принимают на вход и некоторые другие, в явном виде не указанные. Так, ряды месячных доходностей являются исходными данными для всех основных блоков программы, за исключением первого, в котором они формируются. Следует отметить, что ввиду достаточно высокой вычислительной трудоемкости использованных методикой алгоритмов на их исполнение требуется много времени (в зависимости от производительности ЭВМ это могут быть часы и даже дни). Поэтому было решено результаты работы алгоритмов модулей сохранять в виде двоичных файлов, содержащих сериализованные структуры данных, сконструированные в этих модулях. Именно в таком виде выходные данные модулей передаются в управляющий модуль. Это позволяет не рассматривать последовательность шагов общего алгоритма, реализованного программным комплексом, как неделимую транзакцию с единой точкой инициализации в начале. Ввиду сохранения промежуточных результатов работы программы в файлы становится возможным использовать ранее полученные результаты и не начинать каждый раз всю последовательность шагов заново. Рис. 2. Структурограмма разработанного программного комплекса с указанием потоков данных и используемых сторонних программных библиотек Это придает программе гибкость в использовании, однако создает и трудности, связанные с тем, что программа имеет большой набор входных управляющих параметров, и возможны ситуации, когда результаты, полученные на разных этапах, не согласованы по этим параметрам (например, в блоке подготовки данных вычислены доходности для одного «текущего момента», а в блоке прогнозирования получены прогнозы для другого). Для решения этой проблемы в файлы с промежуточными результатами сохраняются все данные, которыми оперирует программа (как входные параметры, так и выходные результаты), и перед переходом к следующему модулю состояние программы, определяемое набором этих данных, восстанавливается из файла, сформированного предыдущим модулем. При этом на форме отображаются текущие параметры программы и источник их загрузки. Дадим некоторые комментарии относительно примененных при разработке сторонних библиотек функций. Библиотеки pandas и numpy нужны для хранения рядов данных и осуществления векторизованных вычислений над ними. Модуль tkinter использован для реализации оконного графического интерфейса. Модуль multitasking позволяет запускать функции, реализующие логику программы, в отдельных потоках, что необходимо для борьбы с «зависанием» оконного интерфейса. Модуль python_console является свободно распространяемой разработкой с опубликованными исходными кодами [16], позволяющей внедрять на форму Tkinter консоль вывода Python в виде элемента управления (виджета). Библиотека requests позволяет отправлять GET- и POST-запросы к веб-серверам (нужно для скачивания котировочных данных с ФИНАМ). Библиотека nolds содержит реализацию метода ДФА (в свою очередь алгоритм метода минимального покрытия оценивания фрактальной размерности временного ряда нами имплементирован самостоятельно). Модуль multiprocessing необходим для реализации в программе параллелизма на уровне процессов, что позволило задействовать мощности многоядерных процессоров и кратно сократить время на множественное обучение прогнозных моделей относительно применения линейного алгоритма [17]. Модуль ARFIMA нами разработан самостоятельно и содержит реализацию данной модели. Библиотека rpy2 необходима для обращения из Python-программы к среде исполнения кода на языке R (в частности, используется R-реализация модели ARFIMA-GARCH). Наконец, библиотека scipy содержит алгоритмы, позволяющие решать задачи оптимизации для определения долей активов в портфеле. Пользовательский оконный интерфейс разработанной программы состоит из одной формы и представлен на рис. 3. Как можно заметить, элементы управления, позволяющие задавать входные параметры и выводить промежуточные результаты, относящиеся к определенному блоку программы, объединены в отдельные группы, которые пронумерованы в соответствии с порядком шагов общего алгоритма («1. Загрузка данных» - «2. Отбор активов по размерности» - «3. Прогнозирование доходностей» - «4. Формирование портфелей»). Рис. 3. Скриншот главного окна разработанной программы Режимы формирования портфелей «С применением разработанной методики» и «Случайный отбор активов» меняются пользователем с помощью соответствующего переключателя на форме. При использовании методики перечень активов, включаемых в формируемые портфели, располагается в разделе «3. Прогнозирование доходностей» и доступен пользователю для редактирования. В случае формирования «случайных» портфелей (этот режим доступен только при наличии данных о доходностях в тестовом периоде) перечень активов, из которого случайно выбираются активы для включения в портфель, располагается в разделе «1. Загрузка данных». Таким образом, к особенностям разработанного программного комплекса можно отнести следующие: - возможность загружать данные о котировках акций с сайта «ФИНАМ»; - вычисление фрактальной размерности ценовых рядов активов методами ДФА и минимального покрытия; - прогнозирование доходности активов с помощью моделей ARFIMA и ARFIMA-GARCH; - подбор структуры портфелей как на базе прогнозных, так и на базе исторических доходностей; - возможность множественной генерации портфелей из случайных активов с последующим усреднением их характеристик; - оценка характеристик портфелей на тестовых данных (при их наличии); - поддержка многоядерных процессоров для кратного ускорения вычислений; - оконный графический интерфейс. Системные требования программы определяются минимальными требованиями к аппаратной и программной составляющей ПК интерпретаторов языков Python и R актуальных версий (Python 3.5+, R 4+). Разработка, тестирование и отладка велись на компьютере следующей конфигурации: процессор Intel Core i7-9700KF 3,6 ГГц; ОЗУ 64 ГБ; ОС Windows 10 Pro. Апробация программы Приведем результаты апробации разработанной программы на данных российского фондового рынка. Входными данными исследования были приняты следующие: «текущий момент» - февраль 2021 г., обучающий период - с марта 2011 г. по февраль 2021 г. (120 месяцев), тестовый период - с марта 2021 г. по февраль 2022 г. (12 месяцев), период портфеля - год (12 месяцев), количество активов в портфеле - 5 (в соответствии с рекомендациями, сформулированными в работе [11]), методы оценки размерности - ДФА и минимального покрытия, методы прогнозирования - ARFIMA и ARFIMA-GARCH, в качестве значений всех прочих параметров приняты значения, предложенные программой по умолчанию (см. рис. 3). В предыдущих исследованиях мы намеренно не затрагивали период пандемии (с начала 2020 г.), чтобы апробировать гипотезы и исследовать закономерности финансовых рынков в относительно спокойные периоды экономики. При апробации программы было решено нарушить это правило и проверить действенность предложенной нами методики (хотя бы в первом приближении) в кризисных условиях. Проверяемая гипотеза: портфели из лучших по размерности активов, оптимизированные по историческим данным, превосходят по характеристикам усредненный портфель из случайно выбранных активов; в свою очередь портфели, оптимизированные по прогнозным данным, оказываются лучше портфелей первого типа («исторических»). Также для сравнения взяты показатели «рыночного портфеля», в качестве которого принят индекс МосБиржи. Критериями сравнения портфелей взяты их характеристики (доходность , риск коэффициент Шарпа ), вычисленные на тестовых данных при долях активов wi, полученных при максимизации показателя Набор активов, из которых формировались «исторические» портфели, определялся активами, для которых удалось построить адекватные модели, хотя напрямую прогнозные доходности при оптимизации этих портфелей не использовались. Результаты множественных расчетов представлены в табл. 2. Приведем также характеристики бенчмарков. «Случайный портфель» (отбор по 5 случайных активов из набора [AFKS, AFLT, CHMF, FEES, GAZP, GMKN, IRAO, LKOH, MAGN, MGNT, MTSS, NLMK, NVTK, PIKK, PLZL, ROSN, SBER, SBERP, SNGS, SNGSP, TATN, TATNP, TRNFP], 5000 генераций с усреднением): доходность - 29,46 %, риск 19,3 %, коэффициент Шарпа -1,62. Индекс МосБиржи: доходность - 26,06 %, риск 16,03 %, коэффициент Шарпа -1,63. Отметим, что в загруженных с сайта «ФИНАМ» месячных значениях индекса отсутствовали данные за март - май 2016 г., из-за чего не удалось вычислить годовую доходность индекса на февраль 2017 г.; этот пропуск в ряду годовых доходностей был восстановлен методом усреднения двух соседних значений. На основании данных таблицы можно сказать следующее. Прежде всего, следует отметить, что проведенный эксперимент имеет сугубо академическую, а не практическую направленность: говорить о рекомендациях по инвестированию в активы российского рынка в рассмотренном периоде ввиду его падения и отрицательной (до -30 %) доходности индекса МосБиржи как индикатора его состояния не приходится. Тем не менее проверке выдвинутой гипотезы это не мешает. Как и по результатам, полученным на рынке США [11], характеристики усредненного «случайного» портфеля и индекса оказались в целом сопоставимы. Индекс оказался лучше по доходности (на +3,4 п.п.) и риску (на -3 п.п.); одной из причин этого служит то, что база индекса включает в том числе активы с относительно короткой ценовой предысторией, недостаточной для применения нашей методики (например, акции компаний «Яндекс», «Озон», «Фикс Прайс»), эти активы могут быть инвестиционно перспективными, но предварительный отбор (первый этап общего алгоритма, реализуемого программой) они не прошли. Таблица 2 Характеристики сформированных портфелей Метод оценки размерности Отобранные активы Исторические/ прогнозные доходности % , % , % w1 w2 w3 w4 w5 ДФА ROSN, TRNFP, FEES, GAZP, TATN Исторические -27,23 13,64 -2,00 0,51 0,25 0,01 0,11 0,11 Прогнозные (ARFIMA) -21,04 20,93 -1,01 0,01 0,58 0,09 0,01 0,31 ROSN, FEES, GAZP, TATN, CHMF Исторические -37,97 17,77 -2,14 0,68 0,01 0,01 0,29 0,01 Прогнозные (ARFIMA-GARCH) -17,97 22,46 -0,80 0,01 0,04 0,24 0,49 0,22 Минимального покрытия MGNT, TRNFP, NVTK, PIKK, TATN Исторические -19,75 16,72 -1,18 0,12 0,19 0,41 0,01 0,27 Прогнозные (ARFIMA) -26,59 24,08 -1,10 0,13 0,02 0,31 0,26 0,27 MGNT, NVTK, TATN, SNGSP, FEES Исторические -28,13 16,77 -1,68 0,24 0,31 0,37 0,01 0,07 Прогнозные (ARFIMA-GARCH) -27,50 16,65 -1,65 0,25 0,33 0,34 0,01 0,07 «Исторические» портфели в трех из четырех случаев оказались лучше по доходности и во всех четырех случаях лучше по риску, чем усредненный «случайный» портфель. Таким образом, можно говорить о подтверждении гипотезы о преимуществах портфелей из активов, отобранных по размерности, перед портфелем из случайных активов. В случае сравнения «прогнозных» портфелей с «историческими» результаты не столь однозначны. При отборе активов методом ДФА ARFIMA-портфель оказался по доходности лучше на +22,7 %, по риску хуже на +53,4 %, что можно трактовать как ухудшение результатов; ARFIMA-GARCH-портфель по доходности лучше на +52,7 %, по риску хуже только на +26,4 %, что является улучшением. При использовании метода минимального покрытия ARFIMA-портфель оказался хуже «исторического» и по доходности (на -34,6 %), и по риску (на +44 %), а ARFIMA-GARCH-портфель вновь смог улучшить показатели: доходность на +2,2%, риск на -0,7 %. В результате проведенного мини-исследования можно сделать следующие выводы о применимости разработанной методики на российском рынке в нестабильный период экономики. Гипотеза о превосходстве портфелей из активов, отобранных по размерности, перед «случайным» портфелем не отвергается, что согласуется с результатами, описанными в работах [8; 11]. В то же время прогнозные портфели позволили осуществить дальнейшее улучшение характеристик только в случае применения модели класса ARFIMA-GARCH, что не согласуется с гипотезой о безусловном превосходстве «прогнозных» портфелей перед «историческими», но соответствует результатам, гласящим о преимуществах модели с условной гетероскедастичностью перед ARFIMA при решении задачи формирования портфелей [10]. Что касается выводов о предпочтительности того или иного метода оценки фрактальной размерности ценовых рядов (методы ДФА, минимального покрытия), то полученных результатов для их формулирования недостаточно, необходимы дальнейшие исследования. К ограничениям методики проведенного исследования, в какой-то мере препятствующим их сопоставлению с полученными ранее результатами, можно отнести следующие: использовано только одно число активов в портфеле (5); статистическая надежность результатов не обеспечена применением техники скользящего окна, как в работе [11], что несколько снижает их ценность. Другими факторами, ограничивающими возможность формулирования выводов, являются меньшая развитость российского финансового рынка (в сравнении с рынком США, располагающим в разы большим многообразием финансовых инструментов и их более богатой ценовой предысторией) и общее кризисное состояние экономики, связанное с пандемией COVID-19. Тем не менее даже в таких условиях предложенная методика формирования портфелей продемонстрировала эффективность. При этом апробацию разработанного программного комплекса можно признать успешной. Программа предоставляет удобный инструментарий для применения нашей методики конструирования инвестиционных портфелей и в очень значительной степени облегчает и ускоряет как процесс формирования рекомендаций по составу портфелей, так и научные исследования этой методики. Важную роль при этом играет примененная параллелизация вычислений, позволяющая многократно их ускорять на современных компьютерах с многоядерными процессорами. Такая программа, будь она разработана ранее, сильно облегчила бы выполнение множества вычислительных экспериментов в рамках проводимых исследований, но чтобы ее создать, понадобились все они и несколько лет работы, поэтому данное программное решение является логичным результатом этих исследований. Заключение Программный комплекс «Конструктор инвестиционных портфелей с применением фрактального анализа и прогнозных моделей» обеспечивает исполнение всех основных этапов разработанной методики формирования инвестиционных портфелей в рамках единого программного продукта и реализует автоматическое формирование рекомендаций по составу портфеля на основе заданных параметров. Его использование не требует от пользователя навыков программирования. Оно может обеспечить повышение скорости выполнения расчетных операций и минимизирует влияние «человеческого фактора» - ошибок, возникающих при выполнении сложных математических расчетов. Разработанная программа может быть использована портфельными инвесторами любого типа - как частными лицами, так и организациями всех организационно-правовых форм, осуществляющими инвестиционную деятельность на международных финансовых рынках. Также пользователями программы могут быть научные работники, студенты и другие исследователи инновационных методов формирования инвестиционных портфелей. Стоит отметить, что научное применение программы (как удобного инструмента для исследователя) представляется нам более важным, потому что предлагаемая реализация методики является первой попыткой создания программного инструмента на ее основе, которая может не учитывать (и не учитывает) множества технических нюансов, сопровождающих процесс портфельного инвестирования на реальных рынках. Нами предложена идея формирования портфелей таким способом, который ранее не применялся. До массового эффективного его использования может пройти время, сама методика может быть модернизирована в процессе будущих исследований (см. например, предложение в [9] о динамической корректировке структуры портфеля по мере поступления новых ценовых данных), избавлена от ряда «детских болезней», может получить более качественную и удобную для конечного пользователя программную реализацию.

About the authors

R. V Garafutdinov

Реrm State University

References

  1. Markowitz H. Portfolio Selection // Journal of Finance. - 1952. - No. 7. - P. 77-91.
  2. Fabozzi F., Gupta F., Markowitz H. The Legacy of Modern Portfolio Theory // The Journal of Investing. - 2002. - No. 11 (3). - P. 7-22. - doi: 10.3905/joi.2002.319510
  3. Cornell B. What Is the Alternative Hypothesis to Market Efficiency? // The Journal of Portfolio Management. - 2018. - No. 44 (7). - P. 3-6. - DOI: https://doi.org/10.3905/jpm.2018.44.7.003
  4. Vatrushkin S. Assessment of time effects in BRICS markets // Finance and Credit. - 2018. - No. 24 (4). - P. 913-928. - doi: 10.24891/df.23.3.350
  5. Lamouchi R. Long memory and stock market efficiency: Case of Saudi Arabia // International Journal of Economics and Financial Issues. - 2020. - No. 10 (3). - P. 29-34. doi: 10.32479/ijefi.9568
  6. Blackledge J., Lamphiere M. A Review of the Fractal Market Hypothesis for Trading and Market Price Prediction // Mathematics. - 2022. - No. 10 (117). - doi: 10.3390/math10010117
  7. Гарафутдинов Р.В. Моделирование и прогнозирование на финансовых рынках с применением фрактального анализа: монография [Электронный ресурс]. - URL: http://www.psu.ru/files/docs/science/books/mono/Garafutdinov-Modelirovanie-I-Prognozirovanie-Na-Finansovyh-Rynkah-S-Primeneniem-Fraktalnogo-Analiza.pdf (дата обращения: 16.07.2022).
  8. Гарафутдинов Р.В., Гурова Е.П. Об одном подходе к формированию инвестиционного портфеля Марковица с применением фрактального анализа // Финансы и бизнес. - 2021. - № 1. - С. 77-93. - doi: 10.31085/1814-4802-2021-17-1-77-93
  9. Гарафутдинов Р.В. Применение моделей с длинной памятью для прогнозирования доходности при формировании инвестиционных портфелей // Прикладная математика и вопросы управления. - 2021. - № 2. - С. 163-183. - doi: 10.15593/2499-9873/2021.2.10
  10. Garafutdinov R.V. Formation of Investment Portfolios of Two Assets Based on Forecast Returns Using the ARFIMA-GARCH Model // Вестник Волгоградского государственного университета. Экономика. - 2021. - Т. 23. - № 2. - С. 130-136. - doi: 10.15688/ek.jvolsu.2021.2.11
  11. Garafutdinov R. An Optimal Investment Portfolio Constructed with Fractal Analysis and Long Memory Models // Lecture Notes in Networks and Systems. - 2022. - Vol. 342. - doi: 10.1007/978-3-030-89477-1_99
  12. Финам.ru - Экспорт котировок [Электронный ресурс]. - URL: https://www.finam.ru/profile/moex-akcii/gazprom/export (дата обращения: 16.07.2022).
  13. Malkiel B. A Random Walk Down Wall Street. - W.W. Norton & Company, USA, 2019. - 480 p.
  14. Making Monkeys Out of the Sohn Investing Gurus - WSJ [Электронный ресурс]. - URL: https://www.wsj.com/articles/making-monkeys-out-of-the-sohn-investing-gurus-11557115260 (дата обращения: 16.07.2022).
  15. Top Programming Languages - IEEE Spectrum [Электронный ресурс]. - URL: https://spectrum.ieee.org/top-programming-languages (дата обращения: 16.07.2022).
  16. Python interpreter console tkinter widget - GitHub [Электронный ресурс]. URL: https://gist.github.com/olisolomons/e90d53191d162d48ac534bf7c02a50cd (дата обращения: 16.07.2022).
  17. Palach J. Parallel Programming with Python. - Packt, UK, 2014. - 124 p.

Statistics

Views

Abstract - 127

PDF (Russian) - 103

Refbacks

  • There are currently no refbacks.

This website uses cookies

You consent to our cookies if you continue to use our website.

About Cookies