Анализ результатов выполнения торгов

В этом примере показано, как провести постторговый анализ с помощью транзакционного анализа затрат от 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);

Создайте объект анализа затрат на транзакцию Kissell Research Group k.

k = krg(miData);

Загрузите пример данных PostTradeData из файла KRGExampleData.mat, который входит в комплект поставки Datafeed Toolbox™.

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);

Определите добавленное значение брокера и Z-счет

Определите добавленное значение брокера, используя стоимость прибытия и влияние на рынок.

PostTradeData.ValueAdd = (PostTradeData.Arrival_Cost-PostTradeData.miCost) * -1;

Определите Z-счет с помощью риска добавления значения брокера и определения времени.

PostTradeData.zScore = PostTradeData.ValueAdd./PostTradeData.tr;

Для получения дополнительной информации о предыдущих расчетах обратитесь в исследовательскую группу Kissell.

См. также

| |

Похожие темы