这个例子展示了如何分析股票投资组合的特征,然后将其与有效边界进行比较。这个例子试图回答这样一个问题:为了避免交易成本,只冒投资组合中一定比例的风险,你能离有效边界多近?
将当前投资组合的信息从Microsoft®Excel®电子表格加载到使用MATLAB®的表格中readtable
函数。
AssetHoldingData = readtable (“portfolio.xls”);%创建一个标准化的当前持有向量,以显示各自的投资占总资本的百分比:W = AssetHoldingData.Value /笔(AssetHoldingData.Value);
从Datafeed Toolbox™支持的数据源导入市场数据,该数据源包含投资组合中金宝app列出的股票的三年收盘价。
负载SharePrices
投资组合
对象的投资组合
类允许您使用导入的数据来创建投资组合
对象。的estimateAssetMoments
函数投资组合
对象使您能够设置一个只给出历史价格或回报序列的投资组合。的estimateAssetMoments
函数从数据中估计资产回报的均值和协方差,即使有缺失的数据。
P =组合(“名字”,“样本周转率约束组合”);P = estimateAssetMoments (P、数据“DataFormat”,“价格”);您可以为投资组合中的每个资产分配文本名称。P = setAssetList (P, AssetHoldingData.Symbol);%提供当前持有的股份。P = setInitPort (P、W);
的投资组合
对象可以在给定任意数量的约束条件下优化持股。这个示例演示了使用一个简单的默认约束,即只做多并100%投资于资产。
P = setDefaultConstraints (P);
想象一下这个有效的边界plotFrontier
函数。
plotFrontier (P)
由于交易成本,将持有的资产从当前的投资组合转移到沿着这条有效边界的投资组合可能是昂贵的。下面的自定义图显示,你必须交出50%到75%的财产才能到达这个边界。
TurnoverPlot (P)
如果只交易投资组合的一部分,你能多接近这个有效边界?假设你只想交易投资组合中的一定比例,以避免你持有的资产出现过多的周转。这个要求在问题上施加了一些非线性约束,并给出了一个具有多个局部极小值的问题。即便如此,投资组合
对象解决了这个问题,您可以使用setTurnover
函数。
P10 = setTurnover (P 0.10);plotFrontier (P10)
这个有效边界比没有周转率约束的初始有效边界更接近初始投资组合。要可视化这种差异,请使用自定义函数TurnoverConstraintPlot
可视化多个受约束的有效边界在不同的周转阈值。
失误= 0.05:0.05:0.25;TurnoverConstraintPlot (P,失误)
的投资组合
Object是执行各种投资组合分析任务的强大而有效的工具。除了周转率的限制,您还可以优化一个投资组合
对象为买卖组合资产的交易成本setcost
函数。
投资组合
|setBounds
|addGroups
|setAssetMoments
|estimateAssetMoments
|estimateBounds
|plotFrontier
|estimateFrontierLimits
|estimateFrontierByRisk
|estimatePortRisk