投资组合优化的例子

下面的一系列示例突出了投资组合对象在金融工具箱™。具体而言,实施例使用投资组合目的介绍如何建立均值-方差投资组合优化问题,重点是两基金定理、交易成本和成交量约束的影响、如何获得最大化夏普比率的投资组合,以及如何建立两种流行的对冲基金策略-美元中性和130-30投资组合。

建立数据

每一个例子都适用于30只“蓝筹股”的月度总回报矩。虽然来自真实数据,但这些数据是为了说明目的,并不代表特定资产或市场表现。数据包含在文件中BlueChipStockMoments.mat与资产标识符在变量列表资产列表,平均和变量资产收益的协方差AssetMeanAssetCovar,平均值和中变量的现金和市场回报方差CashMeanCashVarMarketMeanMarketVar。由于大多数分析需要使用资产收益的标准差作为风险的代理,因此现金和市场方差被转换为标准差。

加载BlueChipStockMomentsMRET = MarketMean;MRSK = SQRT(MarketVar);CRET = CashMean;crsk = SQRT(CashVar);

创建一个投资组合对象

首先创建一个“标准”投资组合与对象投资组合将资产列表、无风险利率和资产返回时刻合并到对象中。

P =组合(“资产列表”,资产列表,'RiskFreeRate',CashMean);P = setAssetMoments(P,AssetMean,AssetCovar);

为了提供比较的基础上,建立的等重量组合,并使其成为初始组合在投资组合宾语。请记住,稍后构建的对冲投资组合将需要不同的初始投资组合。一旦创建了最初的投资组合中,estimatePortMoments函数估计等权重组合收益的均值和标准差。

p = setInitPort (p, 1 / p.NumAssets);[ersk, eret] = estimatePortMoments (p, p.InitPort);

一个专门的“助手”功能portfolioexamples_plot(见效用函数部分),使得它可以绘制在这里开发的所有结果。这第一个图显示了根据自己的手段和回报的标准偏差的个人资产的分配。此外,同等重量,市场和现金的投资组合标绘在同一张图上。注意,portfolioexamples_plot功能将每月的总收益为年化总回报。

clf;portfolioexamples_plot(“资产的风险和回报”...{'分散',MRSK,MRET,{'市场'}},...{'分散', crsk, cret, {'现金'}},...{'分散',ersk,ERET,{'等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

建立一个投资组合优化问题

成立了“标准”或默认的均值 - 方差组合优化问题的setDefaultConstraints功能要求全面投资只做多头的投资组合(非负的权重必须要总结1)。鉴于这种最初的问题,估计与功能的有效边界estimateFrontierestimatePortMoments,在那里estimateFrontier估计高效组合,estimatePortMoments估计投资组合的风险和回报。下图覆盖上一地块的有效边界。

p = setDefaultConstraints (p);pwgt = estimateFrontier (p, 20);[prsk,现成的]= estimatePortMoments (p, pwgt);%绘制有效边界clf;portfolioexamples_plot(“有效前沿”...{'线',prsk,PRET},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

说明有效边界的切线

托宾共同基金定理(Tobin’s mutual fund theorem, Tobin 1958)认为,投资组合配置问题可以看作是在无风险资产和高风险投资组合之间进行配置的决策。在均值-方差框架中,现金可以作为无风险资产的代理,有效边界上的有效投资组合可以作为风险投资组合,使现金与该投资组合之间的任何配置在有效边界上支配所有其他投资组合。这个投资组合叫做a购买切线投资组合因为它位于在有效前沿上的点的切线,在无风险资产起源倒是有效边界。

鉴于投资组合对象已有的无风险利率,通过创建的副本获得的切线投资组合对象,该对象具有预算约束,允许以0%到100%的现金分配。自投资组合对象是值对象,很容易通过指定其中一个的输出来创建副本投资组合或“设置”功能的一个新实例投资组合宾语。该图显示与形成切线有效边界托宾分配的有效边界。

Q = setBudget(P,0,1);qwgt = estimateFrontier (q, 20);[qrsk,qret] = estimatePortMoments(Q,qwgt);%剧情有效前沿与切线(0-1现金)clf;portfolioexamples_plot(“有效前沿的切线”...{'线',prsk,PRET},...{'线',qrsk,qret,[],[],1},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

注意,现金实际上有一个小的风险,所以切线不通过现金资产。

获取风险和收益的范围

为了得到任何风险或回报的目标值有效投资组合,就必须获得有效边界的所有投资组合中的风险和报酬的范围。这与实现estimateFrontierLimits功能。

[RSK,RET = estimatePortMoments(P,estimateFrontierLimits(P));显示的(RSK);
RSK =2×10.0348 - 0.0903
显示器(ret);
RET =2×10.0094 0.0179

月度投资组合回报的范围是0.9%和1.8%,对投资组合风险为3.5%和9.0%之间的范围之间。在年率方面,组合收益的范围为11.2%至21.5%和的组合风险的范围为12.1%至31.3%。

查找投资组合与预期收益和目标风险

考虑到风险和回报的范围内,可以找到在有效前沿上有目标值使用功能,收益和风险的具体投资组合estimateFrontierByReturnestimateFrontierByRisk

TargetReturn = 0.20;%输入目标年化收益和风险在这里TargetRisk = 0.15;%获得与预期收益和风险组合awgt = estimateFrontierByReturn(P,TargetReturn / 12);[ARSK,ARET] = estimatePortMoments(P,awgt);bwgt = estimateFrontierByRisk(P,TargetRisk / SQRT(12));[BRSK,BRET] = estimatePortMoments(P,bwgt);%绘制有效前沿有针对性的投资组合clf;portfolioexamples_plot(“目标投资组合的有效前沿”...{'线',prsk,PRET},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',ARSK,ARET,{sprintf的(% % % g返回的,100 * TargetReturn)}},...{'分散',BRSK,BRET,{sprintf的(“%克%%风险”100 * TargetRisk)}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

要查看这些目标投资组合的外观,请使用数据集对象来设置包含投资组合权重和资产的名称(其从所获得的“吸墨纸”投资组合宾语)。

aBlotter =数据集({100 * awgt(awgt> 0),'重量'},“obsnames”,p。AssetList (awgt > 0));displayPortfolio(sprintf的(“目标收益率为%g%%的投资组合”,100 * TargetReturn),aBlotter,FALSE);
投资组合与20%的目标回报重量CAT 1.1445 INTC 0.17452 MO 9.6521 MSFT 0.85862 UTX 56.918 WMT 31.253
bBlotter =数据集({100 * bwgt(bwgt> 0),'重量'},“obsnames”,p.AssetList(bwgt> 0));displayPortfolio(sprintf的(图集填充%g %%目标风险',100 * TargetRisk),bBlotter,FALSE);
投资组合与15%目标的风险权重BA 3.1996e-22℃1.8304e-22 DIS 1.6394e-20 GE 4.2564e-21高清3.9772e-21 INTC 2.2585 JNJ 9.2162 JPM 2.2817e-21 KO 1.6585e-21 MMM 16.603 MO 15.388MSFT 4.4467 PG 4.086 UTX 10.281 WMT 25.031 XOM 12.69

交易成本

投资组合对象能够考虑交易成本的最优化问题的一部分。尽管单独的成本可以为每个资产被设定,可使用的标量扩展功能投资组合对象的功能设置跨所有资产统一的交易成本和毛利率与净投资组合的回报比较有效前沿。

BuyCost = 0.0020;SellCost = 0.0020;Q = setCosts(P,BuyCost,SellCost);qwgt = estimateFrontier (q, 20);[qrsk,qret] = estimatePortMoments(Q,qwgt);%绘制有效前沿与毛利率和净回报clf;portfolioexamples_plot(“有效前沿的和没有交易费用”...{'线',prsk,PRET,{'毛'},':B'},...{'线',qrsk,qret,{'净'}},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

营业额约束

除了交易成本时,投资组合对象可以处理周转约束。以下实施例表明,一个周转约束在可能限制交易的初始投资组合的附近产生一个有效边界。此外,引入了周转约束常常意味着多个交易可能需要从初始组合转到不受约束的有效边界。因此,周转约束引入时间多样化的形式,可以分布在多个时间段内交易出去。在这个例子中,注意从采购和销售的总和estimateFrontier该成交约束已经满足功能确认。

BuyCost = 0.0020;SellCost = 0.0020;营业额= 0.2;Q = setCosts(P,BuyCost,SellCost);Q = setTurnover(Q,周转);[qwgt,qbuy,qsell] = estimateFrontier(Q,20);[qrsk, qret] = estimatePortMoments (q, qwgt);%绘制有效边界成交约束clf;portfolioexamples_plot(“有效前沿的营业额约束”...{'线',prsk,PRET,{“无约束”},':B'},...{'线',qrsk,qret,{sprintf的(“%克%%周转”,100 *流转)}},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

displaySumOfTransactions(成交额,qbuy,qsell)
沿着有效前沿(最大营业额的20%)的投资组合购买的金额20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000沿着组合销售总额有效前沿(最大营业额的20%)20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000

跟踪误差约束

投资组合对象可以处理跟踪错误约束,其中跟踪错误是一个投资组合相对于跟踪投资组合的相对风险。在本例中,9项资产的子集合形成了一个等权重的跟踪投资组合。目标是找到有效的投资组合,跟踪误差在这个跟踪投资组合的5%以内。

II = [15,16,20,21,23,25,27,29,30];资产的百分比指标的跟踪组合,包括TrackingError = 0.05 /√(12);TrackingPort = 0 (30, 1);TrackingPort (ii) = 1;TrackingPort =(1 /笔(TrackingPort)) * TrackingPort;q = setTrackingError (p TrackingError TrackingPort);qwgt = estimateFrontier (q, 20);[qrsk, qret] = estimatePortMoments (q, qwgt);[trsk,TRET] = estimatePortMoments(Q,TrackingPort);%绘制有效边界跟踪误差约束clf;portfolioexamples_plot(“有效前沿的5%跟踪误差约束”...{'线',prsk,PRET,{“无约束”},':B'},...{'线',qrsk,qret,{“跟踪”}},...{'分散', [mrsk, crsk], [mret, cret], {'市场''现金'}},...{'分散', trsk, tret, {“跟踪”},'R'});

总的营业额和跟踪误差限制

此示例示出了可以与合并约束发生的相互作用。在这种情况下,相对于初始的等重量组合和跟踪误差相对于跟踪组合中的一个约束两者周转约束必须满足。周转约束具有最大30%的营业额和跟踪误差约束具有最大5%的跟踪误差的。注意,营业额从初始组合,以跟踪组合得到的是70%,这样一个上限的30%营业额装置,其有效边界将位于某处的初始组合和跟踪组合之间。

营业额= 0.3;InitPort =(1 / q.NumAssets)*酮(q.NumAssets,1);II = [15,16,20,21,23,25,27,29,30];资产的百分比指标的跟踪组合,包括TrackingError = 0.05 /√(12);TrackingPort = 0 (30, 1);TrackingPort (ii) = 1;TrackingPort =(1 /笔(TrackingPort)) * TrackingPort;Q = setTurnover(Q,周转,InitPort);qwgt = estimateFrontier (q, 20);[qrsk, qret] = estimatePortMoments (q, qwgt);[trsk,TRET] = estimatePortMoments(Q,TrackingPort);[ersk,ERET] = estimatePortMoments(Q,InitPort);%剧情有效前沿具有组合周转和跟踪误差约束clf;portfolioexamples_plot(“有效前沿的营业额和跟踪误差约束”...{'线',prsk,PRET,{“无约束”},':B'},...{'线',qrsk,qret,{“营业额和跟踪”}},...{'分散', [mrsk, crsk], [mret, cret], {'市场''现金'}},...{'分散', trsk, tret, {“跟踪”},'R'},...{'分散',ersk,ERET,{'初始'},'B'});

最大化夏普比率

夏普比率(夏普1966)是回归到风险的措施,起到投资组合分析中的重要作用。具体而言,最大化夏普比率组合也是从共同基金定理有效边界相切的投资组合。最大Sharpe比率组合位于与该功能有效前沿estimateMaxSharpeRatio数据集对象是用来列出资产在这个投资组合。

P = setInitPort(P,0);swgt = estimateMaxSharpeRatio(P);[srsk,SRET] = estimatePortMoments(P,swgt);%剧情有效边界与组合能够达成最大夏普比率clf;portfolioexamples_plot(“有效前沿的最大夏普比率投资组合”...{'线',prsk,PRET},...{'分散', srsk, sret, {“夏普”}},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

%设置包含最大化夏普比率组合的数据集对象吸墨纸=数据集({100 * swgt(swgt> 0),'重量'},“obsnames”,资源列表(swgt> 0));displayPortfolio(图集以最大夏普比率“、记事簿、虚假);
组合与最大夏普比率重量AA 1.9766e-15 1.9146e AIG-15 AXP 1.0611e-15 5.6229e BA-16℃2.0142e-15 2.9838e CAT-15 DD 3.1459e-16 5.9796e DIS-16 GE 5.6384e-15 GM 7.3545e-16 2.0404e HD-11 HON 3.322e-16 HPQ 2.0397e-15 IBM 8.9075e-15 INTC 2.6638 JNJ 9.0044 JPM 5.4252e-16 KO 2.4688e-16 MCD 8.782e-16 MMM 15.502 MO 13.996 MRK3.235e-16 MSFT 4.4777 PFE 7.3698e-16 PG 7.4588 SBC 3.8468e-16 UTX 6.0056 VZ 3.9213e-16 WMT 22.051 XOM 18.841

确认最大夏普比率是一个最大

下面的情节表明,这个投资组合(这是位于该地块点)确实最大化的有效边界的所有投资组合间的夏普比率。

psratio =(pret的 -  p.RiskFreeRate)./ prsk;ssratio =(SRET  -  p.RiskFreeRate)/ srsk;clf;副区(2,1,1);图(prsk,PRET,“线宽”,2);保持散射(srsk爆炸回流,‘g’'填充');标题('\ bfEfficient前沿');xlabel(“投资组合风险”);ylabel(“投资组合回报”);保持副区(2,1,2);图(prsk,psratio,“线宽”,2);保持散射(srsk,ssratio,‘g’'填充');标题(“\ bfSharpe比率”);xlabel(“投资组合风险”);ylabel(“夏普比率”);保持

表明夏普的切线投资组合

下一个图显示,使夏普比率最大化的投资组合也是一个切线投资组合(在本例中,预算限制为允许0%到100%的现金)。

Q = setBudget(P,0,1);qwgt = estimateFrontier (q, 20);[qrsk,qret] = estimatePortMoments(Q,qwgt);%剧情该节目夏普比率组合是相切组合clf;portfolioexamples_plot(“有效前沿的最大夏普比率投资组合”...{'线',prsk,PRET},...{'线',qrsk,qret,[],[],1},...{'分散', srsk, sret, {“夏普”}},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

Dollar-Neutral对冲基金结构

为了说明如何使用对冲基金管理的投资组合优化工具,与美元中性和130-30组合两种流行的策略研究。美元中性策略在多头和空头头寸同样投资,使得证券投资的净位置0。这样的组合被认为是“美元中性”。

要建立一个美元中性的投资组合,开始与“标准​​”的组合问题,并设置在多头和空头头寸的最大曝光的变量接触。对单项资产的权重范围是正负接触。由于净头寸必须是美元中立,预算约束0与最初的投资组合必须是0。最后,单向成交金额的限制提供必要的长期和短期限制,以防止多头和空头头寸的“重复计算”。吸墨纸示出了组合权重最大化夏普比率美元中性组合。在多头和空头头寸从相对于初始投资组合的买进和卖出的交易而获得。

曝光= 1;Q =的setBounds(P, - 曝光,曝光);Q = setBudget(Q,0,0);Q = setOneWayTurnover(Q,曝光,曝光,0);[qwgt,qlong,qshort] = estimateFrontier(Q,20);[qrsk, qret] = estimatePortMoments (q, qwgt);[qswgt,qslong,qsshort] = estimateMaxSharpeRatio(Q);[qsrsk,qsret] = estimatePortMoments(Q,qswgt);%绘制效率前沿一块钱中性基金结构投资组合切clf;portfolioexamples_plot(“有效前沿的美元兑中性投资组合”...{'线',prsk,PRET,{'标准'},'B:'},...{'线',qrsk,qret,{“美元兑中性”},'B'},...{'分散',qsrsk,qsret,{“夏普”}},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

%设置包含最大化夏普比率组合的数据集对象吸墨纸=数据集({100 * qswgt(ABS(qswgt)> 1.0E-4),'重量'},...{100 * qslong (abs (qswgt) > 1.0)的军医,'长'},...{100 * qsshort (abs (qswgt) > 1.0)的军医,'短'},...“obsnames”,资源列表(ABS(qswgt)> 1.0E-4));displayPortfolio(“美元中性的投资组合最大的夏普比率”,记事簿,真实,“美元兑中性”);
美元兑中性的投资组合最大的夏普比率重量长短AA 0.5088 0.5088 0 AIG 3.0394 3.0394 0 AXP 0.92797 0.92797 0 BA -3.4952 0 3.4952Ç14.003 14.003 0 CAT 3.7261 3.7261 0 DD -18.063 0 18.063 DIS -4.8236 0 4.8236 GE -3.6178 03.6178 GM -3.7211 0 3.7211 1.101 HD 1.101 0 HON -1.4349 0 1.4349 HPQ 0.09909 0.09909 0 IBM -8.0585 0 8.0585 INTC 1.7693 1.7693 0 JNJ 1.3696 1.3696 0 JPM -2.5271 0 2.5271 KO -14.205 0 14.205 MCD 3.91 3.91 0 MMM 7.5995 7.5995 0MO 4.0856 4.0856 0 MRK 3.747 3.747 0 MSFT 4.0769 4.0769 0 PFE -9.096 0 9.096 PG 1.6493 1.6493 0 SBC -5.2547 0 5.2547 UTX 5.7454 5.7454 0 VZ -2.438 0 2.438 WMT 0.84844 0.84844 0 XOM 18.529 18.529 0确认元中性组合(净,长,短)0.0000 76.7350 76.7350

130/30基金结构

最后,周转约束可被用来设置一个130-30组合的结构,其为具有净长位置的结构,但允许杠杆作用以长和短位置到杠杆的最大量。在130-30组合的情况下,杠杆率是30%。

要设置130-30组合,开始与“标准​​”的组合问题,并为杠杆的最大值在变量杠杆作用。对于单个资产的权重的边界之间的范围内-Leverage1 +杠杆。由于净头寸一定要长,预算约束1初始投资组合是0。最后,单向成交金额的限制提供必要的长期和短期限制,以防止多头和空头头寸的“重复计算”。吸墨纸显示了投资组合权重为130-30组合最大化夏普比率。在多头和空头头寸从相对于初始投资组合的买进和卖出的交易而获得。

杠杆= 0.3;Q =的setBounds(P,-Leverage,1个+杠杆);Q = setBudget(Q,1,1);Q = setOneWayTurnover(Q,1 +杠杆,杠杆);[qwgt,qbuy,qsell] = estimateFrontier(Q,20);[qrsk, qret] = estimatePortMoments (q, qwgt);[qswgt,qslong,qsshort] = estimateMaxSharpeRatio(Q);[qsrsk,qsret] = estimatePortMoments(Q,qswgt);%绘制效率前沿为130-30基金结构投资组合切clf;portfolioexamples_plot (sprintf (“有效前沿的%G-%克​​组合”...100 *(1 +杠杆),100 *杠杆),...{'线',prsk,PRET,{'标准'},'B:'},...{'线',qrsk,qret,{'130-30'},'B'},...{'分散',qsrsk,qsret,{“夏普”}},...{'分散'[MRSK,crsk,ersk],[MRET,CRET,ERET],{'市场''现金''等于'}},...{'分散',SQRT(DIAG(p.AssetCovar)),p.AssetMean,p.AssetList,'.R'});

%设置包含最大化夏普比率组合的数据集对象吸墨纸=数据集({100 * qswgt(ABS(qswgt)> 1.0E-4),'重量'},...{100 * qslong (abs (qswgt) > 1.0)的军医,'长'},...{100 * qsshort (abs (qswgt) > 1.0)的军医,'短'},...“obsnames”,资源列表(ABS(qswgt)> 1.0E-4));displayPortfolio(sprintf的(“%G-%克​​组合与最大夏普比率”,100 *(1倍+杠杆),100 *杠杆),吸墨纸,真实,sprintf的('%G-%G',100 *(1倍+杠杆),100 *杠杆));
130 - 30的投资组合以最大的夏普比率体重长短DD -9.5565 0 9.5565鸿-6.0244 0 6.0244 intel 4.0335 - 4.0335 0 JNJ 7.1234 - 7.1234 0摩根大通-0.44583 0 0.44583 KO -13.646 0 13.646嗯20.908 - 20.908 0莫14.433 - 14.433 0 microsoft PG 17.243 - 17.243 4.5592 - 4.5592 0 0 SBC -0.32712 0 0.32712属下5.3584 - 5.3584 0京东商城21.018 - 21.018 0 XOM 35.323 - 35.323 0确认130 - 30组合(净,长,短)100.0000 130.0000 30.0000

参考

  1. R. C. Grinold和R. N.卡恩。积极的投资组合管理。第二版,2000。

  2. H. M.马科维茨。“投资组合选择。”财经杂志。卷。1,第1号,第77-91,1952年。

  3. J.林特纳。“风险资产的估值和股票投资组合和资本预算风险投资的选择。”回顾经济和统计。第47卷,第1期,第13-37页,1965年。

  4. H. M.马科维茨。投资组合选择:投资的有效多样化。John Wiley和Sons公司,1959年。

  5. W. F.夏普。“投资基金业绩。”商业杂志》上。卷。39,第1期,第2部分,第119-138,1966。

  6. 托宾。“流动性偏好的行为对风险的。”回顾经济研究。卷。25,第1期,第65-86,1958年。

  7. J. L.特雷诺和F.黑。“如何使用安全性分析,以提高投资组合的选择。”商业杂志》上。卷。46,第1号,第68-86,1973。

效用函数

功能displaySumOfTransactions(成交额,qbuy,qsell)fprintf中(“购买的萨姆通过组合沿有效前沿(最大周转%克%%)\ N”...100 *流转);fprintf中('%.4f'100 * (qbuy)总和),sprintf ('\ n \ n');fprintf中('\ n')fprintf中(有效边界沿线投资组合的销售额(最大值)。营业额% g % %) \ n '...100 *流转);fprintf中('%.4f',100 *总和(qsell));结束功能displayPortfolio(描述,吸墨纸,LongShortFlag,portfolioType)fprintf中('%S \ N',说明);DISP(吸墨纸);如果(LongShortFlag)fprintf中('确认%s的组合\ n',portfolioType);fprintf中('(净,长,短)\ n');fprintf中('%.4f'[总和(Blotter.Weight),总和(Blotter.Long),总和(Blotter.Short)]);结束结束