В этом примере показано, как оптимизировать стратегию одного запаса путем минимизации торговых издержек с помощью анализа операционных издержек от Kissell Research Group. Оптимизация минимизирует торговые издержки, сопоставленные с процентом торговой стратегии объема и заданного параметра нерасположенности к риску Lambda. Минимизация торговых издержек описывается как
где торговые издержки являются влиянием на рынок 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);
Создайте аналитический объект k
операционных издержек Kissell Research Group.
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 Research Group.
[1] Kissell, Роберт. “Алгоритмические торговые стратегии”. Ph.D. Тезис. Фордхемский университет, май 2006.
[2] Kissell, Роберт. Наука об алгоритмической торговле и управлении портфелем. Кембридж, MA: нажатие Elsevier/Academic, 2013.
[3] Glantz, Мортон и Роберт Кисселл. Моделирование риска мультиактива. Кембридж, MA: нажатие Elsevier/Academic, 2013.
[4] Kissell, Роберт и Мортон Глэнц. Оптимальные торговые стратегии. Нью-Йорк, Нью-Йорк: AMACOM, Inc., 2003.
fminbnd
| krg
| marketImpact
| priceAppreciation
| timingRisk