清算价值的投资组合
这个例子展示了如何清算的美元价值组合同时最小化市场影响成本从Kissell研究小组利用交易成本分析。这个例子总是结果在投资组合中,收缩大小。市场影响成本最小化表示为
在哪里心肌梗死交易的股票和市场影响成本吗x表示每个股票的最终权重。
这个示例需要一个优化工具箱™许可证。背景信息,请参阅最优化理论概述(优化工具箱)。
优化找到当地的最低成本的市场影响清算的美元价值的投资组合。办法寻找全球最低,明白了本地和全球最适条件(优化工具箱)。
访问示例代码,回车编辑KRGLiquidityOptimizationExample.m
在命令行中。
检索市场影响参数和加载数据
获取市场影响Kissell研究小组FTP站点的数据。连接到FTP站点使用ftp
函数与一个用户名和密码。导航到MI_Parameters
文件夹和检索数据的市场影响MI_Encrypted_Parameters.csv
文件。miData
包含加密的市场影响日期、代码和参数。
f = ftp (“ftp.kissellresearch.com”,“用户名”,“pwd”);mget (f,“MI_Encrypted_Parameters.csv”);关闭(f) miData = readtable (“MI_Encrypted_Parameters.csv”,“分隔符”,…”、“,“ReadRowNames”假的,“ReadVariableNames”,真正的);
创建一个Kissell研究集团交易成本分析对象k
。指定初始设置的日期、市场影响代码,数量的交易日。
k =库尔德斯坦地区政府(miData datetime (“今天”),1250);
加载示例数据TradeDataPortOpt
和协方差数据CovarianceData
从文件KRGExampleData.mat
这是包含在数据处理工具箱™。限制数据集前10行。
负载KRGExampleData.matTradeDataPortOptCovarianceDatan = 10;TradeDataPortOpt = TradeDataPortOpt (1: n:);CovarianceData = CovarianceData (1: n, 1: n);C = table2array (CovarianceData);
示例数据的描述,请参阅Kissell研究小组的数据集。
定义优化参数
设置组合清算价值100000000美元。投资组合风险边界在90%和110%之间。设置最大市场影响总成本为50个基点。确定投资组合中股票数量。检索的上界约束最大清算在每个股票市场影响成本。
PortLiquidationValue = 100000000;PortRiskBounds = (0.9 - 1.10);maxTotalMI = 0.005;numPortStocks =长度(TradeDataPortOpt.Symbol);maxMI = TradeDataPortOpt.UB_MaxMI;
确定目标投资组合价值PortfolioTargetValue
投资组合的清算价值减去总投资组合的价值。
PortfolioValue =总和(TradeDataPortOpt.Value);absPortValue = abs (TradeDataPortOpt.Value);PortfolioAbsValue =总和(absPortValue);PortfolioTargetValue = PortfolioValue-PortLiquidationValue;
确定当前的投资组合的重量w
基于投资组合中的每个股票的价值。
w =符号(TradeDataPortOpt.Shares)。* absPortValue / PortfolioAbsValue;
指定的约束Aeq
和说真的
表明权重总和必须为1。初始化线性不等式约束一个
和b
。
Aeq = 1 (1、numPortStocks);说真的= 1;一个= [];b = [];
检索的上下界限最终组合重量TradeDataPortOpt
。
磅= TradeDataPortOpt.LB_Wt;乌兰巴托= TradeDataPortOpt.UB_Wt;
确定数量的股票的上下界限在最后的组合使用其他可选的约束在示例数据集。
(TradeDataPortOpt.LB_MinShares lbShares = max (,…TradeDataPortOpt.LB_MinValue. / TradeDataPortOpt.Price,…TradeDataPortOpt.LB_MinPctADV。* TradeDataPortOpt.ADV], [], 2);(TradeDataPortOpt.UB_MaxShares ubShares = min (,…TradeDataPortOpt.UB_MaxValue. / TradeDataPortOpt.Price,…TradeDataPortOpt.UB_MaxPctADV。* TradeDataPortOpt.ADV], [], 2);
指定初始投资组合权重。
x0 = TradeDataPortOpt.Value. /笔(TradeDataPortOpt.Value);x = x0;
定义优化选项。集序贯二次规划的优化算法。设置终止函数值和公差x
。设置公差约束违反。设置在PCG迭代终止宽容。设置的最大数量评估函数“MaxFunEvals”
和迭代“麦克斯特”
。的选项“MaxFunEvals”
和“麦克斯特”
将大的值,以便优化迭代多次找到一个局部最小值。设置最低有限差分的变量的变化。
选择= optimoptions (“fmincon”,“算法”,“sqp”,…“TolFun”,10 e-8,“TolX”,10 e-16,“TolCon”,10 e-8,“TolPCG”,10 e-8,…“MaxFunEvals”,50000,“麦克斯特”,50000,“DiffMinChange”10 e-8);
市场影响成本组合最小化清算
定义的函数处理objectivefun
对目标函数示例krgLiquidityFunction
。要访问这个函数的代码,回车编辑krgLiquidityFunction.m
。定义的函数处理constraintsfun
样本函数krgLiquidityConstraint
集附加约束。要访问这个函数的代码,回车编辑krgLiquidityConstraint.m
。
objectivefun = @ (x) krgLiquidityFunction (x, TradeDataPortOpt…PortfolioTargetValue k);constraintsfun = @ (x) krgLiquidityConstraint (x, w, C, TradeDataPortOpt,…PortfolioTargetValue、PortRiskBounds lbShares、ubShares maxMI, maxTotalMI, k);
减少投资组合的市场影响成本清算。fmincon
找到最优值为每个股票的投资组合权重的基础上降低和上界值。它通过发现市场影响的当地最低成本。
[x, ~, exitflag] = fmincon (Aeq objectivefun x0, A, b,说真的,磅,乌兰巴托,…constraintsfun选项);
检查是否fmincon
发现一个局部最小值,显示函数停止的原因。
exitflag
exitflag = 1.00
fmincon
返回1
当它发现一个局部最小值。有关详细信息,请参见exitflag
(优化工具箱)。
确定优化的重量值x1
每只股票的投资组合以十进制格式。
x1 = x。* PortfolioTargetValue / PortfolioValue;
确定优化的投资组合的价值目标TargetValue
和数量的股票SharesToTrade
每只股票的投资组合。
TargetShares = x * PortfolioTargetValue. / TradeDataPortOpt.Price;SharesToTrade = TradeDataPortOpt.Shares-TargetShares;TargetValue = x * PortfolioTargetValue;TradeDataPortOpt。股票= abs (SharesToTrade);
确定体积的比例优化策略。
TradeDataPortOpt。TradeTime = TradeDataPortOpt.TradeTime…* TradeDataPortOpt.ADV;TradeDataPortOpt。观点= krg.tradetime2pov (TradeDataPortOpt.TradeTime,…TradeDataPortOpt.Shares);
估计市场影响成本心肌梗死
对股票清算的数量。
MI = marketImpact (k, TradeDataPortOpt) / 10000;
在十进制格式查看市场影响成本,指定显示格式。显示前三个股票市场影响成本的组合。
格式MI (1:3)
ans = 1.0 * 0.1477 0.1405 0.1405 e 03
查看股票的目标数与两位小数,指定显示格式。显示前三的目标数量的股票的股票投资组合。
格式银行TargetShares (1:3)
ans = -23640.11 -154656.73 -61193.04
负值表示出售股票的投资组合。
显示前三个股票的交易价值的投资组合。
TargetValue (1:3)
ans = -968062.45 -1521760.41 -2448131.64
模拟交易目标数量的股票历史日期范围,您现在可以进行压力测试的优化组合。进行压力测试的细节,请参阅进行压力测试的投资组合。
引用
[1]Kissell,罗伯特。“创建动态模型无异:除了黑盒”。杂志上的交易。第四卷。6日,2011年秋季,地位页。
[2]Kissell,罗伯特。“柠檬酸在投资过程中:概述”。指数投资期刊》。2卷,1号,2011年夏天,60 - 64页。
[3]Kissell,罗伯特。算法交易和投资组合管理的科学。剑桥,麻州:爱思唯尔/学术出版社,2013年。
[4]涌、恩典和罗伯特Kissell。“应用程序投资组合优化过程中的交易成本。”杂志上的交易。2号卷。11日,2016年的春天,页11日至20日。
另请参阅
库尔德斯坦地区政府
|marketImpact
|fmincon
(优化工具箱)|optimoptions
(优化工具箱)