В этом примере показано, как провести регрессионный тест на наборе запасов с помощью анализа транзакционных издержек исследовательской группы Kissell.
Анализ реализации инвестиционной стратегии в определенный день или область значений дат.
Оценить исторические затраты на влияние рынка и соответствующие долларовые значения для заданных исторических дат.
Анализируйте торговые издержки различных порядков в различные даты.
Для доступа к коду примера введите edit KRGBackTestingExample.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,datetime('today'),1,250);
Загрузите пример данных TradeDataBackTest
из файла KRGExampleData.mat
, который входит в комплект поставки Datafeed Toolbox™.
load KRGExampleData TradeDataBackTest
Описание примерных данных см. в разделе Наборы данных исследовательской группы Kissell.
Определите количество запасов numRecords
в портфолио.
numRecords = length(TradeDataBackTest.Symbol);
Предварительно выделите таблицу выходных данных o
.
o = table(TradeDataBackTest.Symbol,TradeDataBackTest.Side, ... TradeDataBackTest.Date,NaN(numRecords,1),NaN(numRecords,1), ... 'VariableNames',{'Symbol','Side','Date','MI','MIDollar'});
Убедитесь, что количество акций является положительным значением, используя abs
функция.
TradeDataBackTest.Shares = abs(TradeDataBackTest.Shares);
Преобразование торговой стратегии в процентах от стратегии объемной торговли.
TradeDataBackTest.TradeTime = TradeDataBackTest.TradeTime ... .* TradeDataBackTest.ADV; TradeDataBackTest.POV = krg.tradetime2pov(TradeDataBackTest.TradeTime, ... TradeDataBackTest.Shares);
Оцените исторические рыночные затраты для каждого запаса в портфеле в различные даты с помощью marketImpact
. Преобразуйте стоимость влияния на рынок из десятичных чисел в местные доллары. Получите получившиеся данные в таблице выходных данных o
.
for ii = 1:numRecords k.MiDate = TradeDataBackTest.Date(ii); k.MiCode = TradeDataBackTest.MICode(ii); o.MI(ii) = marketImpact(k,TradeDataBackTest(ii,:)); MIDollars = (TradeDataBackTest.Shares(ii) * TradeDataBackTest.Price(ii)) ... * o.MI(ii)/10000 * TradeDataBackTest.FXRate(ii); o.MIDollar(ii) = MIDollars; end
Отображение первых трех строк выхода данных.
o(1:3,:)
ans = Symbol Side Date MI MIDollar ______ ____ __________ ____ ________ 'A' 1.00 '5/1/2015' 1.04 103.91 'B' 1.00 '5/1/2015' 3.09 3864.44 'C' 1.00 '5/1/2015' 8.54 5335.03
Данные выходы содержат следующие переменные:
Символ штока
Сторона
Историческая торговая дата
Историческое влияние рынка на стоимость в базисных точках
Историческое влияние рынка на значение в местных долларах
[1] Кисселл, Роберт. Создание динамических моделей Pre-Trade: Beyond the Black Box (неопр.) (недоступная ссылка). Торговый журнал. Том 6, № 4, осень 2011, стр. 8-15.
[2] Кисселл, Роберт. «TCA в инвестиционном процессе: обзор». Журнал Индекса инвестиций. Том 2, № 1, лето 2011, с. 60-64.
[3] Кисселл, Роберт. Наука об алгоритмической торговле и управлении портфелем. Cambridge, MA: Elsevier/Academic Press, 2013.
[4] Чунг, Грейс и Роберт Кисселл. «Применение транзакционных издержек в процессе оптимизации портфеля». Торговый журнал. Том 11, номер 2, весна 2016, стр. 11-20.