主要内容

利用成本指数确定买卖不平衡

这个例子展示了如何使用Kissell Research Group的交易成本分析来确定买卖不平衡。不平衡是指在给定当天和指定交易期间的实际市场条件下,买方发起的成交量和卖方发起的成交量之间的差额。正的不平衡表示买入压力,负的不平衡表示卖出压力。成本指数帮助投资者了解交易成本环境如何影响市场上的订单流。该指数可以是一个基于表现的指数,比如标准普尔500指数,它显示了市场的走势和价值,也可以是一个显示市场不确定性的波动率指数。

不平衡份额数量为的值x这样

0 | C o 年代 t | 10000 x ) ,

在哪里

x ) b 1 x V o l u e ) 一个 4 + 1 b 1 ) 一个 1 x 一个 D V ) 一个 2 σ 一个 3. P r c e 一个 5

心肌梗死是股票交易的市场影响成本。估计交易成本代表股票相对于基础指数价格变动的增量价格变动。体积是一篮子股票的实际日成交量。阿德是一篮子股票的平均日成交量。价格是一篮子股票的价格。方程中的其他变量为:

  • σ -价格波动。

  • 一个 1 -对订单流量的价格敏感性。

  • 一个 2 -订购尺寸形状。

  • 一个 3. -波动率形状。

  • 一个 4 -体积率形状百分比。

  • 一个 5 -价格形态。

  • 1 b 1 -永久市场影响的百分比。永久影响是指由于交易的信息量而产生的不可避免的影响成本。

  • b 1 -暂时市场影响的百分比。临时影响取决于交易策略。临时影响的发生是因为投资者的流动性需求。

  • C o 年代 t T o t 一个 l C o 年代 t B e t 一个 n d e x C o 年代 t , 地点:

    • TotalCost-成交量加权平均价格相对于股票开盘价的变动。

    • β-β。

    • IndexCost-成交量加权平均价格相对于指数开盘价的变动。指数成本使用基础指数和贝塔来调整市场变动的价格。

在本例中,您可以使用当前或历史数据运行此代码。当前数据包括从开盘时间到当前时间的价格。历史数据使用全天的价格。历史成本使用特定地区和日期的市场影响参数。因此,历史成本会随着记录的不同而变化。

对于当前开销索引,加载示例表TradeDataCurrent从文件中KRGExampleData.mat.对于历史成本索引,加载示例表TradeDataHistorical从文件中KRGExampleData.mat.这个例子计算了一个当前成本指数。

要访问示例代码,请输入编辑KRGCostIndexExample.m在命令行。

运行此代码后,您可以使用Bloomberg提交执行订单®例如。

此示例需要一个优化工具箱™许可证。有关背景信息,请参见优化理论概述(优化工具箱)

检索市场影响参数和负载数据

从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”);close(f) miData = readtable(“MI_Encrypted_Parameters.csv”,“分隔符”,”、“,“ReadRowNames”假的,“ReadVariableNames”,真正的);

创建Kissell Research Group交易成本分析对象k.指定日期、市场影响代码和交易天数的初始设置。

k = krg(miData,datetime(“今天”), 1250);

加载示例数据TradeDataCurrent,它包含在Datafeed Toolbox™中。计算投资组合中股票的数量。

负载KRGExampleData.matTradeDataCurrentTradeData = tradedatcurrent;numStocks = height(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 = table;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-超额成本

i = 1:numStocks为每个库存设置对象的MiCode和MiDatek.MiCode = TradeData.MICode(i);k.MiDate = TradeData.Date(i);为目标市场的每只股票求解股票。%影响成本。在本例中,x是导致的股份(不平衡)数量MI影响成本,导致一个市场的股票数量。% MI的影响成本。这里使用自市场影响以来的abs(MI)% cost总是正的。如果市场影响成本为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(i)),0);基于x重新计算体积和份额的百分比。TradeData.POV(i) = x/TradeData.Volume(i);TradeData.Shares(i) = x;以十进制值计算新的成本。mi = marketImpact(k,TradeData(i,:))/10000;%不平衡是指买卖时指定的股份数量% sideIndicator。指示器(i) * x;计算买卖交易量。知道:%% Volume = buyVolume + sellVolume;%失衡= buyVolume - sellVolume;%求解buyVolume和sellVolumebuyVolume = (TradeData.Volume(i) +失衡)/ 2;sellVolume = (TradeData.Volume(i) -失衡)/ 2;填充输出表cost indextable .失衡(i,1) =失衡;costIndexTable.ImbalancePctADV(i,1) =失衡/TradeData.ADV(i);costIndexTable.ImbalancePctDayVolume(i,1) =失衡/TradeData.Volume(i);costIndexTable.BuyVolume(i,1) = buyVolume;costIndexTable.SellVolume(i,1) = sellVolume;costIndexTable.MI(i,1) = mi * sideIndicator(i);costIndexTable.ExcessCost(i,1) = totalCost(i) - mi - indexCost(i);结束

显示输出数据中第一个库存的不平衡量。

costIndexTable.Imbalance (1)
Ans = -8.7894e+04

负的不平衡金额表明有抛售压力。决定是否在投资组合中购买、持有或出售该股票。

有关上述计算的详细信息,请联系Kissell Research Group。

参考文献

罗伯特,基塞尔。算法交易和投资组合管理的科学.马萨诸塞州剑桥:爱思唯尔/学术出版社,2013年。

马拉玛特,罗伯托。交易调度的多周期优化技术2002年4月,在QWAFAFEW纽约会议上的演讲。

基塞尔,罗伯特和莫顿·格兰茨。最优交易策略.纽约,纽约州:AMACOM, Inc., 2003。

另请参阅

||(优化工具箱)|(优化工具箱)

相关的话题