В этом примере показано, как оптимизировать стратегию для одной акции путем минимизации торговых затрат с помощью анализа операционных затрат от Исследовательской группы Kissell. Оптимизация сводит к минимуму затраты на торговлю, связанные с процентом стратегии торговли объемом и указанным параметром неприятия риска Lambda. Минимизация торговых затрат выражается как
+Lambda⋅TR],
где торговыми издержками являются влияние на рынок MI, повышение цен PA и временной риск TR. Для получения более подробной информации см. marketImpact, priceAppreciation, и timingRisk. В этом примере найдено локальное минимальное значение для этого выражения. Дополнительные сведения о поиске глобального минимума см. в разделе Устранение неполадок и советы по оптимизации.
Здесь можно оптимизировать процентное соотношение стратегии торговли объемом. Чтобы оптимизировать стратегии торгового времени и торгового графика, см. раздел Оптимизация торговой стратегии торгового времени и оптимизация торговой стратегии торгового графика.
Для вызова кода примера введите edit KRGSingleStockOptimizationExample.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);
Структура tradeData содержит данные для отдельного запаса. Для определения этих данных используйте структуру или таблицу. Поля:
Количество акций
Среднесуточный объем
Изменчивость
Цена акций
Первоначальная процентная доля от общего объема торговой стратегии
Альфа-оценка
tradeData.Shares = 100000; tradeData.ADV = 1000000; tradeData.Volatility = 0.25; tradeData.Price = 35; tradeData.POV = 0.5; tradeData.Alpha_bp = 50;
Определение уровня неприятия рисков Lambda. Набор Lambda от 0 до Inf.
Lambda = 1;
Определить ниже LB и верхний UB границы ввода стратегии для оптимизации.
LB = 0; UB = 1;
Определение дескриптора функции fun для целевой функции. Для доступа к коду этой функции введите edit krgSingleStockOptimizer.m.
fun = @(pov)krgSingleStockOptimizer(pov,k,tradeData,Lambda);
Сведение к минимуму затрат на торговлю в процентах от общего объема торговой стратегии. fminbnd находит оптимальное значение для процента стратегии торговли объемом на основе значений нижней и верхней границы. fminbnd находит локальный минимум для выражения минимизации торговых затрат.
[tradeData.POV,totalcost] = fminbnd(fun,LB,UB);
Просмотр оптимизированной торговой стратегии tradeData.POV.
tradeData.POV
ans =
0.35Оценка торговых затрат povCosts использование оптимизированной торговой стратегии.
mi = marketImpact(k,tradeData); pa = priceAppreciation(k,tradeData); tr = timingRisk(k,tradeData); povCosts = [totalcost mi pa tr];
Отображение затрат на торговлю.
povCosts
100.04 56.15 4.63 39.27
Торговые затраты:
Общая стоимость
Влияние на рынок
Повышение цены
Риск таймирования
За подробной информацией о предыдущих расчетах обращайтесь в исследовательскую группу Kissell.
[1] Кисселл, Роберт. «Алгоритмические торговые стратегии». Доктор философии. Дипломная работа. Фордемский университет, май 2006 года.
[2] Кисселл, Роберт. Наука алгоритмической торговли и управления портфелем. Кембридж, Массачусетс: Elsevier/Академическая пресса, 2013.
[3] Гланц, Мортон и Роберт Кисселл. Моделирование рисков для нескольких активов. Кембридж, Массачусетс: Elsevier/Академическая пресса, 2013.
[4] Кисселл, Роберт и Мортон Гланц. Оптимальные торговые стратегии. Нью-Йорк, Нью-Йорк: AMACOM, Inc., 2003.
fminbnd | krg | marketImpact | priceAppreciation | timingRisk