В этом примере показано, как проанализировать характеристики портфеля акций, а затем сравнить их с эффективной границей. В этом примере делается попытка ответить на вопрос о том, насколько приблизиться к эффективной границе можно, только рискуя определенным процентом портфеля, чтобы избежать операционных издержек.
Загрузка информации о текущих портфелях из электронной таблицы Microsoft ® Excel ® в таблицу с помощью MATLAB ®readtable функция.
AssetHoldingData = readtable('portfolio.xls'); % Create a normalized current holdings vector that shows the respective % investments as a percentage of total capital: W = AssetHoldingData.Value/sum(AssetHoldingData.Value);
Импортируйте рыночные данные из источника данных, поддерживаемого Toolbox™ Datafeed, который составляет три года закрытия цен на акции, перечисленные в портфеле.
load SharePricesPortfolio Объект Portfolio позволяет использовать импортированные данные для создания Portfolio объект. estimateAssetMoments для функции Portfolio позволяет настроить портфель только с исторической ценой или серией возвратов. estimateAssetMoments функция оценивает среднее значение и ковариацию доходности активов из данных, даже если данные отсутствуют.
P = Portfolio('Name', 'Sample Turnover Constraint Portfolio'); P = estimateAssetMoments(P,data,'DataFormat','Prices'); % You can assign text names to each asset in the portfolio. P = setAssetList(P,AssetHoldingData.Symbol); % Provide the current holdings. P = setInitPort(P,W);
Portfolio объект может оптимизировать хранилища при любом количестве ограничений. В этом примере показано использование простого ограничения по умолчанию, то есть только длинных позиций и 100% инвестиций в активы.
P = setDefaultConstraints(P);
Визуализация этой эффективной границы с помощью plotFrontier функция.
plotFrontier(P)

Из-за операционных издержек переход от текущего портфеля к портфелю по этой эффективной границе может быть дорогостоящим. Следующий пользовательский график показывает, что вы должны перевернуть от 50% до 75% холдингов, чтобы добраться до этой границы.
TurnoverPlot(P)

Насколько близко вы можете добраться до этой эффективной границы, торгуя только некоторыми из портфеля? Предположим, что вы хотите торговать только определенным процентом портфеля, чтобы избежать слишком большого оборота в ваших холдингах. Это требование накладывает некоторые нелинейные ограничения на проблему и создает проблему с несколькими локальными минимумами. Тем не менее, Portfolio объект решает проблему и определяет ограничение оборачиваемости с помощью setTurnover функция.
P10 = setTurnover(P,0.10); plotFrontier(P10)

Этот эффективный рубеж гораздо ближе к первоначальному портфелю, чем начальный эффективный рубеж без ограничений по обороту. Чтобы визуализировать это различие, используйте пользовательскую функцию TurnoverConstraintPlot визуализация нескольких ограниченных эффективных границ при различных порогах оборота.
turnovers = 0.05:0.05:0.25; TurnoverConstraintPlot(P,turnovers)

Portfolio объект является мощным и эффективным инструментом для выполнения различных задач анализа портфеля. В дополнение к ограничениям оборота, можно также оптимизировать Portfolio объект для операционных затрат на покупку и продажу портфельных активов с использованием setCosts функция.
addGroups | estimateAssetMoments | estimateBounds | estimateFrontierByRisk | estimateFrontierLimits | estimatePortRisk | plotFrontier | Portfolio | setAssetMoments | setBounds