exponenta event banner

Машинное обучение для статистического арбитража III: обучение, настройка и прогнозирование

Этот пример использует байесовскую оптимизацию для настройки гиперпараметров в алгоритмической торговой модели, контролируемой доходностью на конец дня. Она является частью серии связанных примеров машинного обучения для статистического арбитража (см. Приложения машинного обучения).

Груз LOBVars.matпредварительно обработанный набор данных LOB системы безопасности NASDAQ INTC.

load LOBVars

Набор данных содержит следующую информацию для каждого заказа: время поступления t (секунды с полуночи), уровень 1 запрашивающая цена MOAsk, цена торгов уровня 1 MOBid, средняя цена Sи индекс дисбаланса I.

Этот пример включает несколько вспомогательных функций, которые хранятся в matlabroot/examples/finance/data/LOBSupportingFiles. Чтобы просмотреть их, измените рабочую папку.

cd(fullfile(matlabroot,'examples','finance','data','LOBSupportingFiles'));

Торговая стратегия

Торговая матрица Q содержит вероятности будущих изменений цен, учитывая текущее и предыдущее состояния rho индекса дисбаланса журнала предельных заказов (LOB) I и последнее наблюдаемое направление цен DS.

Просмотр вспомогательной функции tradeOnQ.m, которая реализует простую торговую стратегию, основанную на модели в Q.

function cash = tradeOnQ(Data,Q,n,N)

% Reference: Machine Learning for Statistical Arbitrage
%            Part II: Feature Engineering and Model Development
   
% Data

t = Data.t;
MOBid = Data.MOBid;
MOAsk = Data.MOAsk;

% States

[rho,DS] = getStates(Data,n,N);

% Start of trading

cash = 0;
assets = 0;

% Active trading

T = length(t);

for tt = 2:T-N  % Trading ticks

    % Get Q row, column indices of current state
    
    row = rho(tt-1)+n*(DS(tt-1)+1);
    downColumn = rho(tt);
    upColumn = rho(tt) + 2*n;

    % If predicting downward price move
    
    if Q(row,downColumn) > 0.5

        cash = cash + MOBid(tt); % Sell
        assets = assets - 1;
            
    % If predicting upward price move

    elseif Q(row,upColumn) > 0.5

        cash = cash - MOAsk(tt); % Buy
        assets = assets + 1; 

    end

end

% End of trading (liquidate position)

if assets > 0

    cash = cash + assets*MOBid(T); % Sell off

elseif assets < 0

    cash = cash + assets*MOAsk(T); % Buy back

end

Алгоритм использует прогнозы от Q чтобы принимать решения о торговле у каждого клеща. Он иллюстрирует общий механизм любого оптимизированного алгоритма машинного обучения.

Эта стратегия направлена на получение прибыли от ожидаемых изменений цен с использованием рыночных заказов (лучшее предложение на ощупь) одной акции при каждом галочке, если возникает возможность арбитража. Стратегия может быть расширена до более крупных объемов торговли. Использование условных вероятностей, полученных из Q, tradeOnQ функция выполняет одно из следующих действий:

  • Осуществляет покупку, если вероятность изменения форвардной цены выше 0,5.

  • Выполняет продажу, если вероятность изменения цены в сторону понижения выше 0,5.

В конце торгового дня функция ликвидирует позицию на ощупь.

Стратегия требует Data со временем засечки t и соответствующий рыночный заказ цены предложения и запроса MOBid и MOAskсоответственно. В режиме реального времени данные предоставляются биржей. В этом примере оценивается стратегия путем разделения исторической выборки на учебные (калибровочные) и проверочные подвыборы. Проверочная подгруппа служит в качестве прокси для торговых данных в реальном времени. Стратегия зависит от Q, саму торговую матрицу, которую вы оцениваете после того, как делаете ряд вариантов гиперпараметров. Исходные данные n и N гиперпараметры, настраиваемые при оптимизации стратегии.

Гиперпараметры

Модель Маркова с непрерывным временем и итоговая торговая матрица Q зависят от значений четырех гиперпараметров:

  • lambda - весовой параметр, используемый для вычисления индекса дисбаланса; I

  • dI - Количество обратных засечек, используемых для усреднения I во время сглаживания

  • numBins - Количество ячеек, используемых для сглаживания секционирования I для дискретизации

  • dS - Количество форвардных галочек, используемых для преобразования цен S к дискретному DS

В общем случае все четыре гиперпараметра настраиваются. Однако, чтобы облегчить визуализацию, пример уменьшает количество размеров, настраивая только numBins и N. Пример:

  • Фиксирует lambda

  • Листья numBins = n, где n может свободно изменяться

  • Выравнивание длин окон dI = dS = N, где N может свободно изменяться

Ограничения существенно не влияют на результаты оптимизации. Алгоритм оптимизации выполняет поиск по пространству двумерных параметров (n,N) для конфигурации, дающей максимальную доходность на торгах.

Данные обучения и проверки

Для машинного обучения требуется подмножество для оценки Q и еще один подпример, на котором следует оценить выбор гиперпараметров.

Укажите точку останова для разделения данных на учебные и проверочные подприборы. Точка останова влияет на оценку целевой функции и, по существу, является другим гиперпараметром. Однако, поскольку точка останова не настроена, она является внешней для процесса оптимизации.

bp = round((0.80)*length(t)); % Use 80% of data for training

Сбор данных в расписании для передачи tradeOnQ.

Data = timetable(t,S,I,MOBid,MOAsk);
TData = Data(1:bp,:);       % Training data
VData = Data(bp+1:end,:);   % Validation data

Перекрестная проверка

Перекрестная проверка описывает различные методы оценки того, как результаты обучения (здесь, вычисление Q) обобщить с прогностической достоверностью независимые данные проверки (здесь прибыльная торговля). Цель перекрестной проверки состоит в том, чтобы отметить проблемы в результатах обучения, такие как предвзятость и переоборудование. В контексте торговой стратегии переоборудование относится к временной зависимости или нестационарности Q. Как Q изменения со временем, он становится менее эффективным в прогнозировании будущих изменений цен. Ключевой диагностической проблемой является степень, в которой Q изменения, и по какой ставке, на ограниченном торговом горизонте.

При наличии данных обучения и проверки укажите гиперпараметры и сравните Q в двух подвыборах. Вспомогательная функция makeQ.m обеспечивает этапы для выполнения Q.

% Set specific hyperparameters

n = 3;  % Number of bins for I
N = 20; % Window lengths

% Compare Qs

QT = makeQ(TData,n,N);
QV = makeQ(VData,n,N);
QTVDiff = QT - QV
QTVDiff = 9×9

    0.0070    0.0182    0.1198   -0.0103   -0.0175   -0.0348    0.0034   -0.0007   -0.0851
   -0.0009    0.0176    0.2535   -0.0010   -0.0233   -0.2430    0.0019    0.0058   -0.0106
    0.0184    0.0948    0.0835   -0.0195   -0.1021   -0.1004    0.0011    0.0073    0.0168
    0.0462    0.0180    0.0254   -0.0512   -0.0172    0.0417    0.0050   -0.0009   -0.0671
    0.0543    0.0089    0.0219   -0.0556   -0.0169   -0.0331    0.0013    0.0080    0.0112
    0.1037    0.0221    0.0184   -0.1043   -0.0401   -0.0479    0.0006    0.0180    0.0295
    0.0266    0.0066    0.0054   -0.0821   -0.0143   -0.0116    0.0555    0.0077    0.0062
    0.0615    0.0050    0.0060   -0.0189   -0.0207   -0.0262   -0.0426    0.0157    0.0203
    0.0735    0.0103    0.0090   -0.0788   -0.1216   -0.0453    0.0053    0.1113    0.0362

Различия между QT и QV кажутся незначительными, хотя они различаются в зависимости от их положения в матрице. Выявить неэффективность торговли, которая является результатом индексов (рыночных состояний), где одна матрица дает торговый сигнал (значение вероятности > 0,5), а другая нет.

Inhomogeneity = (QT > 0.5 & QV < 0.5 ) | (QT < 0.5 & QV > 0.5 )
Inhomogeneity = 9x9 logical array

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0

В данных с заданными настройками гиперпараметра отсутствуют существенные неоднородности.

Тяжесть перехода к предположению однородности априори неизвестна и может возникнуть только в результате более полного обратного тестирования. Статистические тесты доступны, например, как описано в [4] и [5]. Во время торговли в реальном времени скользящее вычисление Q по сравнению с задними обучающими данными подходящего размера могут обеспечивать наиболее надежные сигналы. Такой подход признает присущую рынку нестационарность.

Машинное обучение

Машинное обучение относится к общему подходу эффективного выполнения задачи (например, торговля) автоматизированным способом путем обнаружения шаблонов (например, вычисления Q) и делать выводы на основе имеющихся данных. Часто данные динамичны и достаточно велики, чтобы требовать специализированных вычислительных методов. Процесс оценки - настройка гиперпараметров для описания данных и непосредственного выполнения задачи - продолжается.

В дополнение к проблемам работы с большими данными, процесс оценки сложных, иногда «черных ящиков», объективных функций также является сложным. Объективные функции контролируют оценку гиперпараметров. Торговая стратегия оценивает настройки гиперпараметров с помощью первых вычислений Q на учебной подгруппе, а затем торговля во время оценки (в реальном времени). Цель состоит в том, чтобы максимизировать прибыль или минимизировать отрицательный возврат денежных средств по пространству соответствующих ограниченных конфигураций (n,N). Эта цель является прототипной «дорогой» целевой функцией. Байесовская оптимизация - это тип машинного обучения, подходящий для таких объективных функций. Одним из его принципиальных преимуществ является отсутствие дорогостоящих оценок производных. Для реализации байесовской оптимизации используйте функцию Toolbox™ статистики и машинного обучения bayesopt.

Вспомогательная функция optimizeTrading.m использование bayesopt для оптимизации торговой стратегии в tradeOnQ.

function results = optimizeTrading(TData,VData)

% Optimization variables

n = optimizableVariable('numBins',[1 10],'Type','integer');
N = optimizableVariable('numTicks',[1 50],'Type','integer');

% Objective function handle

f = @(x)negativeCash(x,TData,VData);

% Optimize

results = bayesopt(f,[n,N],...
                   'IsObjectiveDeterministic',true,...
                   'AcquisitionFunctionName','expected-improvement-plus',...
                   'MaxObjectiveEvaluations',25,...
                   'ExplorationRatio',2,...
                   'Verbose',0);

end % optimizeTrading

% Objective (local)
function loss = negativeCash(x,TData,VData)

n = x.numBins;
N = x.numTicks;

% Make trading matrix Q

Q = makeQ(TData,n,N);

% Trade on Q

cash = tradeOnQ(VData,Q,n,N);

% Objective value

loss = -cash;

end % negativeCash

Оптимизация торговой стратегии путем передачи данных обучения и проверки в optimizeTrading.

rng(0) % For reproducibility
results = optimizeTrading(TData,VData); 

Figure contains an axes. The axes with title Objective function model contains 5 objects of type line, surface, contour. These objects represent Observed points, Model mean, Next point, Model minimum feasible.

Figure contains an axes. The axes with title Min objective vs. Number of function evaluations contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

Оценочная минимальная цель совпадает с минимальной наблюдаемой целью (поиск монотонный). В отличие от алгоритмов на основе производных, bayesopt не сходится. Пытаясь найти глобальный минимум, bayesopt продолжает исследовать, пока не достигнет заданного количества итераций (25).

Получите наилучшую конфигурацию, передав results кому bestPoint.

[Calibration,negReturn] = bestPoint(results,'Criterion','min-observed')
Calibration=1×2 table
    numBins    numTicks
    _______    ________

       3          24   

negReturn = -7100

Торговля одной акцией на галочку, в соответствии с Q, оптимальная стратегия с использованием (n,N) = (3,24) возвращает $0,71 за последние 20% торгового дня. Изменение объема торгов приводит к масштабированию прибыли.

Еще один оптимизатор, предназначенный для решения дорогостоящих задач surrogateopt(Панель инструментов глобальной оптимизации). Он использует другую стратегию поиска и может быстрее найти оптимум в зависимости от цели. Вспомогательная функция optimizeTrading2.m использование surrogateopt вместо bayesopt для оптимизации торговой стратегии в tradeOnQ.

rng(0) % For reproducibility
results2 = optimizeTrading2(TData,VData)

Figure Optimization Plot Function contains an axes. The axes with title Best: -7100 Incumbent: -7100 Current: -4400 contains 4 objects of type line. These objects represent Best, Incumbent, Random Samples, Adaptive Samples.

results2 = 1×2

     3    24

Результаты, полученные с помощью surrogateopt являются такими же, как bayesopt результаты. График содержит информацию о ходе поиска, относящуюся к surrogateopt алгоритм.

Вычислить Q передав оптимальные гиперпараметры и весь набор данных в makeQ.

bestQ = makeQ(Data,3,24)
bestQ = 9×9

    0.3933    0.1868    0.1268    0.5887    0.7722    0.6665    0.0180    0.0410    0.2068
    0.5430    0.3490    0.2716    0.4447    0.6379    0.6518    0.0123    0.0131    0.0766
    0.6197    0.3897    0.3090    0.3705    0.5954    0.6363    0.0098    0.0150    0.0547
    0.1509    0.0440    0.0261    0.8217    0.8960    0.6908    0.0273    0.0601    0.2831
    0.1900    0.0328    0.0280    0.7862    0.9415    0.8316    0.0238    0.0257    0.1404
    0.2370    0.0441    0.0329    0.7391    0.9221    0.8745    0.0239    0.0338    0.0925
    0.1306    0.0234    0.0101    0.7861    0.6566    0.4168    0.0833    0.3200    0.5731
    0.1276    0.0169    0.0118    0.7242    0.6505    0.4712    0.1482    0.3326    0.5171
    0.1766    0.0282    0.0186    0.7216    0.7696    0.6185    0.1018    0.2023    0.3629

Торговая матрица bestQ может использоваться в качестве отправной точки для следующего торгового дня.

Резюме

Этот пример реализует оптимизированную торговую стратегию, разработанную в первых двух связанных примерах. Доступные данные разделяются на учебные и проверочные подприборы и используются, соответственно, для вычисления торговой матрицы Q и выполнить результирующий алгоритм торговли. Процесс повторяется в пространстве параметров гиперпараметра с помощью глобальных оптимизаторов bayesopt и surrogateopt, оба из которых определяют оптимальную стратегию, дающую положительную отдачу. Этот подход имеет множество вариантов дальнейшей настройки.

Ссылки

[1] Булл, Адам Д. «Скорости конвергенции эффективных алгоритмов глобальной оптимизации». Журнал исследований машинного обучения 12, (ноябрь 2011): 2879-904.

[2] Рубисов, Антон Д. «Статистический арбитраж с использованием дисбаланса книги лимитов». Магистерская диссертация, Университет Торонто, 2015 год.

[3] Снук, Джаспер, Уго Ларошель и Райан П. Адамс. «Практическая байесовская оптимизация алгоритмов машинного обучения». In Advances in Neural Information Processing Systems 25, F. Pereira et al. al. редакторы, 2012.

[4] Тан, Барыш и Камиль Йылмаз. «Тест цепи Маркова на зависимость от времени и однородность: аналитическая и эмпирическая оценка». Европейский журнал оперативных исследований 137, № 3 (март 2002 года): 524-43. https://doi.org/10.1016/S0377-2217 (01) 00081-9.

[5] Вайсбах, Рафаэль и Ронья Вальтер. «Тест отношения правдоподобия для статичности переходов рейтинга». Журнал эконометрики 155, № 2 (апрель 2010 года): 188-94. https://doi.org/10.1016/j.jeconom.2009.10.016.

Связанные темы