这个例子展示了如何使用Kissell研究小组的交易成本分析来确定买卖不平衡。不平衡是指根据当日和指定交易期间的实际市场情况,买入和卖出交易量之间的差异。正不平衡表示股票的买入压力,负不平衡表示股票的卖出压力。成本指数有助于投资者了解交易成本环境如何影响市场中的订单流。该指数可以是基于表现的指数,如标准普尔500指数,显示市场走势和价值,也可以是显示市场不确定性的波动性指数。
不平衡份额的值为x这样
在哪里
医疗保险是股票交易的市场影响成本。估计交易成本代表股票相对于基础指数价格变动的增量价格变动。体积指篮子中股票的实际日交易量。阿德指篮子中股票的平均日交易量。价格是篮子中股票的价格。方程式中的其他变量为:
——价格波动。
-价格对订单流量的敏感性。
-订购大小形状。
——波动性的形状。
-体积率形状的百分比。
-价格形态。
-对市场产生永久性影响的百分比。永久性影响是由于交易的信息内容所产生的不可避免的影响成本。
-临时市场影响的百分比。临时影响取决于交易策略。由于投资者的流动性需求,会产生暂时性影响。
地点:
TotalCost-股票的成交量加权平均价格相对于开盘价的变化。
β-β。
IndexCost-成交量加权平均价格相对于指数开盘价的变化。指数成本使用基础指数和贝塔值根据市场运动调整价格。
在本例中,您可以使用当前或历史数据运行此代码。当前数据包括从开放时间到当前时间的价格。历史数据使用全天的价格。历史成本使用指定区域和日期的市场影响参数。因此,历史成本会因记录而异。
对于当前成本指数,加载示例表贸易数据流
从档案中KRGExampleData.mat
.对于历史成本索引,需要加载示例表TradeDataHistorical
从档案中KRGExampleData.mat
.这个例子计算当前的成本指数。
要访问示例代码,输入编辑KRGCostIndexExample.m
在命令行。
运行此代码后,您可以使用Bloomberg提交执行订单®为例。
此示例需要一个Optimization Toolbox™许可证。有关背景信息,请参见优化理论综述(优化工具箱).
从Kissell Research Group FTP站点检索市场影响数据。使用连接到FTP站点ftp
具有用户名和密码的函数。导航到MI_Parameters
的文件夹并检索市场影响数据MI_Encrypted_Parameters.csv
文件。miData
包含加密的市场影响日期、代码和参数。
f = ftp (“ftp.kissellresearch.com”,“用户名”,“pwd”);mget (f,“MI_Encrypted_Parameters.csv”);miData = readtable(“MI_Encrypted_Parameters.csv”,“分隔符”,...”、“,“ReadRowNames”错误的“ReadVariableNames”,真正的);
创建Kissell研究组交易成本分析对象k
.指定日期、市场影响代码和交易天数的初始设置。
k =库尔德斯坦地区政府(miData datetime (“今天”),1,250);
加载示例数据贸易数据流
,它包含在dataffeed工具箱™中。计算投资组合中的股票数量。
负载KRGExampleData.mat贸易数据流TradeData = TradeDataCurrent;numStocks =身高(TradeData);
有关示例数据的描述,请参见基塞尔研究小组数据集.
为优化定义函数迭代的最大次数。集“MaxIterations”
使优化可以多次迭代求解非线性方程组。
选项=最佳选项(“fsolve”,“MaxIterations”, 4000);
确定总成本和测试成本。计算初始市场影响成本估算的侧面。确定初始体积x0
.
totalCost = TradeData。VWAP。/ TradeData。开放- 1;indexCost = TradeData。β。*...(TradeData。我ndexVWAP。/ TradeData。IndexOpen - 1);miCost = totalCost - indexCost;sideIndicator =符号(miCost);x0 = 0.5 *交易量;
创建一个存储所有输出数据的表。首先,添加以下变量:
象征
——股票代码
日期
——交易日期
一边
-侧面
总体积
-交易量
TotalCost
-交易总成本
IndexCost
——成本指数
costIndexTable =表;costIndexTable。象征=Tr一个deD一个t一个.象征; costIndexTable.Date = TradeData.Date; costIndexTable.Side = sideIndicator; costIndexTable.TotalVolume = TradeData.Volume; costIndexTable.TotalCost = totalCost; costIndexTable.IndexCost = indexCost;
使用为
-循环计算投资组合中每个股票的成本指数。每种股票可能有不同的市场影响代码和日期。使用costIndexExampleEq
包含待解非线性方程的函数。来访问代码costIndexExampleEq
函数,输入编辑KRGCostIndexExample.m
.
将这些变量添加到输出表中:
不平衡
-不平衡
不平衡
-不平衡量占每日平均量的百分比
日容积不平衡
-不平衡量占每日量的百分比
BuyVolume
——购买体积
SellVolume
-销售量
医疗保险
-市场影响成本
ExcessCost
——多余的成本
为我= 1:numStocks为每个股票设置对象的MiCode和MiDatek.MiCode = TradeData.MICode(我);k.MiDate = TradeData.Date(我);%解决目标市场中每种股票的股份问题%影响成本。在本例中,x是导致的股份(不平衡)数量%MI影响成本,即产生市场的股票数量%影响MI成本。此处使用abs(MI),因为市场影响%成本总是正的。如果市场影响成本为0.0050,则% fsolve试图找出股票x的数量,以便市场%冲击公式返回0.0050。请注意,fsolve使用的是基点成本。x = fsolve(@(x) costIndexExampleEq(x,miCost(i),TradeData(i,:),k),...x0 (i)、选择);不平衡必须在0和实际交易量之间。x = max (min (x, TradeData.Volume(我)),0);根据x重新计算成交量和股份的百分比。TradeData.POV (i) = x / TradeData.Volume(我);TradeData.Shares (i) = x;以十进制值计算新的成本。mi=市场影响(k,贸易数据(i,:)/10000;%不平衡是指股东指定为买入或卖出的股份金额% sideIndicator。不平衡= sideIndicator(i) * x;计算买卖数量。%知道:%%交易量=买入量+卖出量;%失衡= buyVolume - sellVolume;%解决buyVolume和sellVolume购买量=(贸易数据.交易量(i)+不平衡)/2;成交量=(贸易数据.成交量(i)-不平衡)/2;填写输出表costIndexTable.Imbalance(我,1)=不平衡;costIndexTable.ImbalancePctADV(我,1)=不平衡/ TradeData.ADV(我);costIndexTable.ImbalancePctDayVolume(我,1)=不平衡/ TradeData.Volume(我);costIndexTable.BuyVolume(我,1)= buyVolume;costIndexTable.SellVolume(我,1)= sellVolume;costIndexTable.MI(i,1) = mi * sideIndicator(i);costIndexTable.ExcessCost(i,1) = totalCost(i) - mi - indexCost(i);结束
在输出数据中显示第一个库存的不平衡量。
成本指数不平衡(1)
ans=-8.7894e+04
负不平衡量表示销售压力。决定是否购买、持有或出售投资组合中该股票的股份。
以上计算方法请与Kissell Research Group联系。
[1] 基塞尔,罗伯特。算法交易和投资组合管理的科学.马萨诸塞州剑桥:爱思唯尔/学术出版社,2013。
[2] 罗伯托,马拉穆特。“贸易安排的多阶段优化技术”,2002年4月在纽约QWAFAFEW会议上的介绍。
[3] Kissell, Robert和Morton Glantz。最优交易策略. 纽约州纽约:AMACOM公司,2003年。
库尔德斯坦地区政府
|市场影响
|optimoptions
(优化工具箱)|数值解
(优化工具箱)