主要内容

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

这个例子展示了如何使用来自Kissell研究集团的交易成本分析来确定买卖不平衡。不平衡是指根据当天的实际市场情况和特定的交易期间,买入和卖出的交易量之间的差异。正的不平衡表示股票的买入压力,负的不平衡表示卖出压力。成本指数帮助投资者了解交易成本环境如何影响市场中的订单流。该指数可以是反映市场动向和价值的基于业绩的指数,比如标准普尔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提交执行命令®为例。

此示例需要一个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 Research Group交易成本分析对象k.指定日期、市场影响代码和交易天数的初始设置。

k =库尔德斯坦地区政府(miData datetime (“今天”), 1250);

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

负载KRGExampleData.matTradeDataCurrentTradeData = TradeDataCurrent;numStocks =身高(TradeData);

有关示例数据的描述,请参见Kissell研究小组数据集

定义优化参数

为优化定义函数迭代的最大次数。集“MaxIterations”使优化可以多次迭代求解非线性方程组。

选择= optimoptions (“fsolve”“MaxIterations”, 4000);

使用成本指数估算交易成本

确定总成本和beta成本。计算出对市场产生初步影响的成本估算。确定初始体积x0

totalCost = TradeData。VWAP。/ TradeData。开放- 1;indexCost = TradeData。β。*...(TradeData。我ndexVWAP。/ TradeData。IndexOpen - 1);miCost = totalCost - indexCost;sideIndicator =符号(miCost);x0 = 0.5 *交易量;

创建一个存储所有输出数据的表。首先,添加以下变量:

  • 象征——股票代码

  • 日期——交易日期

  • 一边——边

  • 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和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 = marketImpact (k, TradeData(我,:))/ 10000;%不平衡是股票金额指定的买入或卖出% sideIndicator。不平衡= sideIndicator(i) * x;计算买卖数量。%知道:% Volume = buyVolume + sellVolume;%失衡= buyVolume - sellVolume;解决buyVolume和sellVolumebuyVolume = (TradeData.Volume(i) +失衡)/ 2;= (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(i,1) = mi * sideIndicator(i);costIndexTable.ExcessCost(i,1) = totalCost(i) - mi - indexCost(i);结束

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

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

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

以上计算方法请与Kissell Research Group联系。

参考文献

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

[2] Malamut,罗伯特。“交易调度的多周期优化技术”。2002年4月在QWAFAFEW纽约会议上的发言。

[3] Kissell, Robert和Morton Glantz。最优交易策略.纽约:AMACOM, Inc., 2003。

另请参阅

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

相关的话题