Этот пример показывает, как оптимизировать стратегию для одной акции путем минимизации торговых издержек с помощью анализа транзакционных издержек от 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);
Создайте объект анализа затрат на транзакцию 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] Кисселл, Роберт. Наука об алгоритмической торговле и управлении портфелем. Cambridge, MA: Elsevier/Academic Press, 2013.
[3] Гланц, Мортон и Роберт Кисселл. Моделирование рисков для нескольких активов. Cambridge, MA: Elsevier/Academic Press, 2013.
[4] Кисселл, Роберт и Мортон Гланц. Оптимальные торговые стратегии. Нью-Йорк, Нью-Йорк: AMACOM, Inc., 2003.
fminbnd
| krg
| marketImpact
| priceAppreciation
| timingRisk