В этом примере показано, как провести анализ после торгов с помощью анализа операционных издержек от Kissell Research Group. Анализ после торгов включает недостаток реализации, альфа-получение, затраты сравнительного теста, значение брокера добавляет, и Z-счет. Для получения дополнительной информации об этих метриках, см. Аналитические Метрические Определения После торгов. Можно использовать анализ после торгов, чтобы оценить портфель, возвращается и прибыль. Можно измерить уровень брокеров и алгоритмов.
Чтобы получить доступ к примеру кода, введите 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);
Создайте аналитический объект k
операционных издержек Kissell Research Group.
k = krg(miData);
Загрузите данные в качестве примера PostTradeData
из файла KRGExampleData.mat
, который включен с Datafeed Toolbox™.
load KRGExampleData.mat PostTradeData
Для описания данных в качестве примера смотрите Наборы данных Kissell Research Group.
Определите компоненты затрат недостатка реализации в пунктах. Компоненты:
Фиксированные затраты 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-счет с помощью значения брокера добавляет и синхронизирующий риск.
PostTradeData.zScore = PostTradeData.ValueAdd./PostTradeData.tr;
Для получения дополнительной информации о предыдущих вычислениях, свяжитесь с Kissell Research Group.
krg
| marketImpact
| timingRisk