经纪人业绩

这个例子展示了如何使用Kissell Research Group的交易成本分析来确定各个交易中表现最好的代理。你根据经纪人增值和到达成本对经纪人进行排名,然后确定哪些经纪人在哪种市场条件和交易特征下表现最好。正的增加值表明,在实际市场条件和交易特征下,经纪人的业绩超出预期,从而节省资金。负的增加值表明经纪人没有达到预期的业绩,这将导致基金的增量成本。

在本例中,通过比较到达成本和估计交易成本,您可以发现哪些经纪人表现好,哪些经纪人表现差。一个到达成本低于估计交易成本的经纪人表现优异,这使得基金节省资金。如果经纪人的到达成本大于估计的交易成本,则其表现不佳,这将导致基金产生增量成本。

本例还展示了如何根据经纪人估算成本,这需要为每个经纪人定制市场影响参数。

您可以使用类似于本例中的步骤对交易场所和算法进行排名。

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

在执行本例中的代码之后,您可以使用Bloomberg提交执行订单®例如。

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

从Kissell Research Group FTP站点检索市场影响数据。连接到FTP站点ftp函数使用用户名和密码。导航到MI_Parameters文件夹中带有经纪人代码的市场影响数据并检索MI_Broker.csv文件。miData包含加密的市场影响日期、代码和参数。

F = ftp(“ftp.kissellresearch.com”“用户名”“pwd”);mget (f,“MI_Broker.csv”);close(f) miData = readtable(“MI_Broker.csv”“分隔符””、“...“ReadRowNames”假的,“ReadVariableNames”,真正的);

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

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

加载示例数据TradeData篮子,BrokerNames,这是包括在交易工具箱™。

负载KRGExampleData.matTradeData篮子BrokerNames

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

计算每个经纪人的成本

选择贸易类别。计算每个经纪人的平均到达成本、市场影响成本和经纪人增值。

TradeData。TradeSize = TradeData。Shares ./ TradeData.ADV;TradeData。ArrivalCost =贸易数据。SideIndicator。*...(TradeData。AvgExecPrice ./ tradedata . arrivalprice . 1) * 10000;TradeData。MI = marketImpact(k,TradeData);TradeData。ValueAdd = TradeData。MI - TradeData.ArrivalCost;

检索代理名称和代理数量。预分配输出数据变量。

uniqueBrokers = unique(TradeData.Broker);numBrokers = length(uniqueBrokers);avgCost = NaN(numBrokers,1);avgMI = NaN(numBrokers,1);avgValueAdd = NaN(numBrokers,1);

按平均经纪人增值排名经纪人

计算经纪人排名使用交易规模在平均每日交易量(ADV)的5%至10%之间。计算平均到货成本、平均市场影响成本和平均经纪人增值。

indBroker =(贸易数据。TradeSize >= 0.05) &(贸易数据。TradeSize <= 0.10);如果any(indBroker) TD = TradeData(indBroker,:);i = 1:numBrokers j = strcmp(TD.Broker,uniqueBrokers(i));如果any(j) avgCost(i) = mean(TD.ArrivalCost(j));avgMI(i) = mean(TD.MI(j));avgValueAdd(i) = mean(TD.ValueAdd(j));结束结束结束获得有效的平均成本值(非NaN)indAvgCost = ~isnan(avgCost);

创建一个表来存储代理排名。按平均成本排序。

BrokerRankings = table(uniqueBrokers(indAvgCost),(1:sum(indAvgCost))',...avgCost (indAvgCost) avgMI (indAvgCost) avgValueAdd (indAvgCost),...“VariableNames”, {“代理”“排名”“AvgArrivalCost”“AvgMI”“AvgValueAdd”});BrokerRankings = sortrows(BrokerRankings,-5);BrokerRankings。Rank = (1:sum(indAvgCost))';重置等级

使用柱状图比较平均经纪人增值基点。

栏(BrokerRankings.AvgValueAdd)集(gca,“XTickLabel”BrokerRankings.Broker) ylabel (平均增加值(bp))标题(“经纪人平均增值”网格)

代理Broker2over-performs而Broker3跨事务执行不佳。决定使用Broker2用于将来的交易。

估算交易清单的交易成本

使用指定的订单或交易列表估计每个经纪人的交易成本。

从交易列表表中获取订单数numOrders = size(Basket.Symbols,1);为每个经纪人计算每个订单的交易前成本BrokerPreTrade =零(numOrders,numBrokers);i = 1:numBrokers经纪人的市场影响码对应于市场中的miccode%的影响数据,例如Broker1 = 1。k.MiCode = i;计算每个经纪人的市场影响成本。BrokerPreTrade(:,i) = marketImpact(k,Basket);结束将输出转换为使用作为行名的符号的表。BrokerPreTrade = array2table(BrokerPreTrade,“VariableNames”...BrokerNames。经纪人,“RowNames”, Basket.Symbols);

比较经纪人的市场影响成本

一种股票美国广播公司,用柱状图比较每家经纪商的市场影响成本(以基点为单位)。

为给定股票绘制最佳经纪人:栏(table2array (BrokerPreTrade(1)))集(gca,“XTickLabel”BrokerNames.Broker) ylabel (“市场影响成本(bp)”)标题(“股票经纪人的市场影响成本”...BrokerPreTrade.Properties.RowNames{1}])网格

代理Broker8具有最高的市场影响成本和Broker1有最低的一个。决定使用Broker1使用股票执行交易美国广播公司

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

参考文献

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

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

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

另请参阅

|

相关的话题