В этом примере показано, как проводить послеторговый анализ с использованием анализа операционных затрат Исследовательской группы Kissell. Постторговый анализ включает дефицит внедрения, альфа-захват, эталонные затраты, добавленную стоимость брокера и Z-Score. Дополнительные сведения об этих метриках см. в разделе Определения метрик послеторгового анализа. Постторговый анализ можно использовать для оценки доходности портфеля и прибыли. Можно измерить производительность брокеров и алгоритмов.
Для вызова кода примера введите edit KRGPostTradeAnalysisExample.m в командной строке.
Извлеките данные о влиянии на рынок с FTP-сайта Kissell Research Group. Подключитесь к FTP-сайту с помощью ftp с именем пользователя и паролем. Перейдите к MI_Parameters и получить данные о влиянии на рынок в MI_Encrypted_Parameters.csv файл. miData содержит зашифрованную дату влияния на рынок, код и параметры.
f = ftp('ftp.kissellresearch.com','username','pwd'); mget(f,'MI_Encrypted_Parameters.csv'); close(f) miData = readtable('MI_Encrypted_Parameters.csv','delimiter', ... ',','ReadRowNames',false,'ReadVariableNames',true);
Создание объекта анализа затрат транзакции Kissell Research Group k.
k = krg(miData);
Загрузка данных примера PostTradeData из файла KRGExampleData.mat, который входит в состав Toolbox™ Datafeed.
load KRGExampleData.mat PostTradeData
Описание данных примера см. в разделе Наборы данных исследовательской группы Kissell.
Определите компоненты затрат на дефицит внедрения в базисных точках. Компоненты:
Фиксированная стоимость ISFixed
Стоимость задержки ISDelayCost
Стоимость исполнения ISExecutionCost
Возможная стоимость ISOpportunityCost
Дополнительные сведения о компонентах затрат см. в разделе Определения метрик послеторгового анализа.
PostTradeData.ISDollars = ... PostTradeData.OrderShares .* PostTradeData.ISDecisionPrice; PostTradeData.ISFixed = ... PostTradeData.ISFixedDollars ./ PostTradeData.ISDollars*10000; PostTradeData.ISDelayCost = ... PostTradeData.OrderShares .* ... (PostTradeData.ISArrivalPrice-PostTradeData.ISDecisionPrice).* ... PostTradeData.SideIndicator ./ PostTradeData.ISDollars*1000; PostTradeData.ISExecutionCost = ... PostTradeData.TradedShares .* ... (PostTradeData.AvgExecPrice-PostTradeData.ISArrivalPrice).* ... PostTradeData.SideIndicator ./ PostTradeData.ISDollars*1000; PostTradeData.ISOpportunityCost = ... (PostTradeData.OrderShares-PostTradeData.TradedShares).* ... (PostTradeData.ISEndPrice-PostTradeData.ISArrivalPrice).* ... PostTradeData.SideIndicator ./ PostTradeData.ISDollars*1000;
Определение общих затрат на внедрение ISCost.
PostTradeData.ISCost = PostTradeData.ISFixed + ... PostTradeData.ISDelayCost + PostTradeData.ISExecutionCost + ... PostTradeData.ISOpportunityCost;
Определение альфа-захвата Alpha_CapturePct. Разделить реализованную прибыль Alpha_Realized по потенциальной прибыли Alpha_TotalPeriod.
PostTradeData.Alpha_Realized = ... (PostTradeData.ISEndPrice-PostTradeData.AvgExecPrice).* ... PostTradeData.TradedShares .* PostTradeData.SideIndicator ./ ... (PostTradeData.TradedShares .* PostTradeData.ISArrivalPrice)*10000; PostTradeData.Alpha_TotalPeriod = ... (PostTradeData.ISEndPrice-PostTradeData.ISArrivalPrice).* ... PostTradeData.TradedShares .* PostTradeData.SideIndicator ./ ... (PostTradeData.TradedShares .* PostTradeData.ISArrivalPrice)*10000; lenAlpha_Realized = length(PostTradeData.Alpha_Realized); PostTradeData.Alpha_CapturePct = zeros(lenAlpha_Realized,1); for ii = 1:lenAlpha_Realized if PostTradeData.Alpha_TotalPeriod(ii) > 0 PostTradeData.Alpha_CapturePct(ii) = ... PostTradeData.Alpha_Realized(ii) ./ ... PostTradeData.Alpha_TotalPeriod(ii); else PostTradeData.Alpha_CapturePct(ii) = ... -(PostTradeData.Alpha_Realized(ii) - ... PostTradeData.Alpha_TotalPeriod(ii)) ./ ... PostTradeData.Alpha_TotalPeriod(ii); end end
Определение эталонных затрат в базисных пунктах. Здесь эталонные цены:
Цена закрытия предыдущего дня PrevClose_Cost
Открытая цена Open_Cost
Цена закрытия Close_Cost
Стоимость прибытия Arrival_Cost
Период VWAP PeriodVWAP_Cost
PostTradeData.PrevClose_Cost = ... (PostTradeData.AvgExecPrice-PostTradeData.PrevClose).* ... PostTradeData.SideIndicator ./ PostTradeData.PrevClose*10000; PostTradeData.Open_Cost = ... (PostTradeData.AvgExecPrice-PostTradeData.Open).* ... PostTradeData.SideIndicator ./ PostTradeData.Open*10000; PostTradeData.Close_Cost = (PostTradeData.AvgExecPrice-PostTradeData.Close).* ... PostTradeData.SideIndicator ./ PostTradeData.Close*10000; PostTradeData.Arrival_Cost = (PostTradeData.AvgExecPrice- ... PostTradeData.ArrivalPrice).* ... PostTradeData.SideIndicator ./ PostTradeData.ArrivalPrice*10000; PostTradeData.PeriodVWAP_Cost = (PostTradeData.AvgExecPrice- ... PostTradeData.PeriodVWAP).* ... PostTradeData.SideIndicator ./ PostTradeData.PeriodVWAP*10000;
Оценка влияния на рынок miCost и риск, связанный со сроками tr затраты.
PostTradeData.Size = PostTradeData.TradedShares ./ PostTradeData.ADV; PostTradeData.Price = PostTradeData.ArrivalPrice; PostTradeData.miCost = marketImpact(k,PostTradeData); PostTradeData.tr = timingRisk(k,PostTradeData);
Определите добавленную стоимость брокера, используя стоимость поступления и влияние на рынок.
PostTradeData.ValueAdd = (PostTradeData.Arrival_Cost-PostTradeData.miCost) * -1;
Определите Z-Score, используя риск добавления стоимости и синхронизации брокера.
PostTradeData.zScore = PostTradeData.ValueAdd./PostTradeData.tr;
За подробной информацией о предыдущих расчетах обращайтесь в исследовательскую группу Kissell.
krg | marketImpact | timingRisk