使用成本指数确定Buy-Sell失衡
这个例子展示了如何确定buy-sell失衡Kissell研究小组利用交易成本分析。不平衡的区别是buy-initiated和sell-initiated卷实际市场状况,指定交易期间。积极的不平衡表明购买股票和消极不平衡的压力表明抛售压力。成本指数可以帮助投资者了解交易成本环境影响市场的订单。索引可以是一个绩效指标,如标准普尔500指数,显示市场运动和价值或波动性指数显示市场的不确定性。
不平衡量的值是分享x这样
在哪里
心肌梗死股票交易的市场影响成本。估计股票的交易成本代表增量价格波动与底层指数价格波动。体积股票的实际成交量在篮子里。阿德的日均成交量是股票篮子里。价格筐里是一个股票的价格。其他变量的方程是:
——价格波动。
——价格敏感性顺序流。
——订单大小形状。
——波动性的形状。
——体积率的百分比的形状。
——价格的形状。
——比例的永久的市场影响。永久性的影响是不可避免的影响成本,是因为信息内容的贸易。
——临时市场影响的百分比。暂时的影响依赖于交易策略。临时发生的影响,因为投资者的流动性需求。
地点:
TotalCost成交量加权平均价,变化而股票的公开价格。
β-β。
IndexCost——的变化相比,成交量加权平均价的公开价格指数。指数成本调整价格为市场运动使用一个潜在的索引和β。
在本例中,您可以使用当前或历史数据运行这段代码。当前的数据包括价格从开放时间在当前时间。历史数据使用价格在整个一天。历史成本使用市场影响参数为指定的地区和日期。因此,历史成本变化从记录到记录。
当前成本指数,你加载示例表TradeDataCurrent
从文件KRGExampleData.mat
。历史成本指数,你加载示例表TradeDataHistorical
从文件KRGExampleData.mat
。这个例子计算现行费用指数。
访问示例代码,回车编辑KRGCostIndexExample.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);
加载示例数据TradeDataCurrent
这是包含在数据处理工具箱™。计算投资组合的股票数量。
负载KRGExampleData.matTradeDataCurrentTradeData = TradeDataCurrent;numStocks =身高(TradeData);
示例数据的描述,请参阅Kissell研究小组的数据集。
定义优化参数
定义函数迭代优化的最大数量。集“MaxIterations”
一个较大的值,以便优化可以多次迭代来解决系统的非线性方程。
选择= optimoptions (“fsolve”,“MaxIterations”,4000);
使用成本指数估计交易成本
确定成本和β总成本。计算的初始市场影响成本估算。确定初始体积x0
。
totalCost = TradeData。VWAP。/ TradeData。开放- 1;indexCost = TradeData。β。*…(TradeData。我ndexVWAP。/ TradeData。IndexOpen - 1);miCost = totalCost - indexCost;sideIndicator =符号(miCost);x0 = 0.5 * TradeData.Volume;
创建一个表存储所有输出数据。首先,添加这些变量:
象征
——股票代码日期
——交易日期一边
——边TotalVolume
——交易量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
。
这些变量添加到输出表:
不平衡
——不平衡ImbalancePctADV
——日均交易量的比例失衡ImbalancePctDayVolume
——不平衡是成交量的百分比BuyVolume
——购买体积SellVolume
——销售数量心肌梗死
——市场影响成本ExcessCost
——多余的成本
为我= 1:numStocks%设置MiCode和MiDate对象的每个股票k。米我Code=Tr一个deD一个t一个。米我Code(i); k.MiDate = TradeData.Date(i);%求出每个股票,结果在目标市场%影响成本。%在这个例子中,x是股票的数量(不平衡)的原因%的MI影响成本,导致市场的数量的股票%影响MI成本。这里用abs (MI)因为市场影响%的成本总是正的。如果市场影响成本是0.0050% fsolve试图找到x数量的股票市场%的影响公式返回0.0050。%注意fsolve是使用成本的基点。x = fsolve (@ (x) costIndexExampleEq (x, miCost(我),TradeData(我:),k),…x0 (i)、选择);% 0之间的失衡必须和实际交易的体积。x = max (min (x, TradeData.Volume(我)),0);%重新计算体积的百分比和股票基于x。TradeData.POV (i) = x / TradeData.Volume(我);TradeData.Shares (i) = x;%计算新的成本作为一个十进制值。mi = marketImpact (k, TradeData(我,:))/ 10000;%不平衡是分享指定购买或出售的数量% sideIndicator。不平衡= sideIndicator (i) * x;%计算买卖卷。%知道:%% = buyVolume + sellVolume体积;% = buyVolume - sellVolume失衡;%%求buyVolume sellVolumebuyVolume = (TradeData.Volume(我)+失衡)/ 2;sellVolume = (TradeData.Volume (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(我,1)= mi * sideIndicator(我);costIndexTable.ExcessCost (1) = totalCost (i) - mi - indexCost(我);结束
第一的股票数量显示不平衡输出数据。
costIndexTable.Imbalance (1)
ans = -8.7894 e + 04
消极不平衡量表明抛售压力。决定是否购买、持有或出售股票的投资组合的股票。
关于前面的计算,详情请联系Kissell研究小组。
引用
[1]Kissell,罗伯特。算法交易和投资组合管理的科学。剑桥,麻州:爱思唯尔/学术出版社,2013年。
[2]Malamut,罗伯特。“多阶段优化技术贸易调度。“在QWAFAFEW纽约会议上表示,2002年4月。
[3]Kissell,罗伯特,和莫顿Glantz。最优交易策略。纽约,纽约州:AMACOM, Inc ., 2003。
另请参阅
库尔德斯坦地区政府
|marketImpact
|optimoptions
(优化工具箱)|fsolve
(优化工具箱)