Анализ портфеля с ограничениями оборота

В этом примере показано, как проанализировать характеристики портфеля акций, а затем сравнить их с эффективной границей. Этот пример призван ответить на вопрос о том, насколько близко вы можете добраться до эффективной границы, только рискуя определенным процентом портфеля, чтобы избежать транзакционных издержек.

Импорт данных для портфельных холдингов

Загрузите информацию о текущих портфельных активах из электронной таблицы 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);

Импортируйте рыночные данные для цен на акции

Импорт рыночных данных из источника данных, поддерживаемого Datafeed Toolbox™, который составляет три года закрытия цен на акции, перечисленные в портфеле.

load SharePrices

Создайте Portfolio Объект

Portfolio позволяет использовать импортированные данные для создания Portfolio объект. estimateAssetMoments функция для Portfolio позволяет вам настроить портфолио, задав только историческую цену или ряд возвратов. The estimateAssetMoments function оценивает среднее и ковариацию возвратов активов из данных, даже если отсутствуют данные.

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);

Выполните оптимизацию портфеля без ограничений по обороту

The 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)

The Portfolio объект является мощным и эффективным инструментом для выполнения различных задач портфельного анализа. В дополнение к ограничениям оборота можно также оптимизировать Portfolio объект для транзакционных затрат на покупку и продажу портфельных активов с помощью setCosts функция.

См. также

| | | | | | | | |

Похожие примеры

Подробнее о

Внешние веб-сайты