Блог им. uralpro

Алгоритмический подход к созданию стратегий.Часть 3

    • 24 апреля 2016, 11:47
    • |
    • uralpro
  • Еще

Interview-with-a-Quant-Part-3-980x423

Начало здесь

Это третья часть интервью со старшим менеджером алгоритмических стратегий большого хедж-фонда. В первой части мы обсуждали теоретическую стадию создания алгоритмической стратегии. Во второй части говорили о передаче стратегии «в производство». Это интервью вызвало много вопросов у наших читателей, ответы на которые были выделены в отдельный пост. 

1.Как вы отслеживаете и управляете вашими моделями в боевых условиях? Какие дополнительные проверки и процедуры используются?

Я верю в ручное отслеживание прибыли/убытков в качестве инструмента диагностики. Мне нужно знать, каждый  день, точный источник моих прибылей/убытков. Что подорожало, что подешевело, насколько и почему. Это дает мне уверенность, что модель работает, как должна, и это действует как система предупреждения плохих новостей.

Далее: на моем компьютере я использую «дружественную» систему, в которой любой из других трейдеров может узнать все о моей модели и текущей позиции. Он также отслеживает мои сделки каждый день, таким образом это дополнительная, независимая пара глаз.

В итоге: я стараюсь не перекалибровывать мои модели слишком часто. Это скользкий путь в направлении подгонки. Но я стараюсь постоянно иметь второе мнение по этому вопросу: советоваться о моих предположениях, разговаривать с людьми с противоположной точкой зрения и так далее.

(Ничто выше сказанное не должно применяться в качестве замены для отличной и независимой команды риск менеджмента).

2. Устанавливаете ли вы предварительные правила или внешние выключатели, которые автоматически прекращают торговлю вашей модели? Если да, то как они сделаны, какие индикаторы вы используете в них?

Я несколько старомоден — не верю, что выключатели реально работают. Если быть более точным, портфели с программными выключателями менее доходны, чем портфели без них, на долгосрочном периоде. Причина в том, что выключатели останавливают хорошие сделки во время небольших потерь слишком часто, так что такие потери перевешивают редкие случаи, когда выключатель предохраняет вас от больших неприятностей.

(Если вы сможете как-то откалибровать ваш выключатель для выхода только в момент катастрофы, вы построите эффективный «индикатор максимального отклонения». Так же как и вечный двигатель, это невозможно.)

Отмечу, что я говорю о классических алгоритмических портфелях, не об HFT. В этом случае, я прекрасно понимаю, почему вы хотите применять множество предохранителей и выключателей — здесь происходит все слишком быстро. Но это не моя экспертная область.

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

С другой стороны, если торговля отклоняется от нормы и это расхождение усиливается, это начинает подталкивать меня к капитуляции. В этих случаях я удерживаю свою позицию и даже добавляюсь, если есть возможность.

Можно сделать парадоксальный вывод, чем быстрее модель теряет деньги, тем больше вероятность, что она еще работает. Кроме случаев, когда причиной было внешнее макроэкономическое событие. В этом случае вы должны ждать больших потерь и отсутствие быстрого восстановления, и должны остановить торговлю.

Будет неплохо, если вы сможете запрограммировать выключатель на такой вид событий.

На самом деле это малая часть большой проблемы. Ситуации, где выключатель мог бы помочь, достаточно трудно заранее определить.

3. Как вы узнаете, что модель «умерла» или просто переживает плохой период? Знаете ли вы какой-либо полезный предсказывающий смену режимов фильтр?

Это один из наиболее часто задаваемых вопросов. Я боюсь многих разочаровать: я не знаю ответов на этот вопрос. Но хотел бы знать!

Я использую набор эмпирических правил. Статистические тесты  для проверки мета — характеристик модели должны проводиться постоянно. Свидетельства захода и выхода капитала из рынка. Позиции других трейдеров и их отношение к текущей цене. Приращение цены: дерганое и порывистое, или спокойное и непрерывное. И так далее.

Я пока не нашел разумный, универсальный предсказывающий индикатор смены режима/смерти модели. Плохо, но так и есть.

4.Продолжаете ли вы следить за «умершими» моделями и возвращаете их в торговлю после восстановления?

Обязательно, это важный момент. Модели возвращаются после смерти. Спред между американскими фьючерсами на облигации и самими облигациями  - классический пример: он проходил периоды от «легких денег», через " полностью исчезнувшую возможность" до " взрыва доходности" три раза за мою карьеру. Одна и та же основа в каждом случае: изменение аппетита к рыночному риску. Так что я никогда не говорю «до свидания» модели навсегда: у меня есть большой список идей, которые могут вернуться со временем.

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

Да, это интересная идея. Я видел эксперимент с «дарвиновскими» технологиями размещения рисков, где больше денег выделяется успешным стратегиям и меньше тем, которые теряют деньги. В любом случае, каждый хороший менеджер по управлению капитала делает это, некоторые более тщательно, чем другие. Как минимум один большой фонд, насколько я знаю, однозначно так делает.

6. Что вы думаете о таком управление капиталом, как размер оптимальной ставки?

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

7. Есть ли такие алгоритмические стратегии, которые дают устойчивую  прибыль? Полагаетесь ли вы на одну систему, или меняете их постоянно?  

Вы должны развиваться вместе с рынком. Ни одна система или стратегия не работает вечно.

8. Я отметил, что вы используете Matlab, Python и Excel (а также предпочитаете C#/C++/Java) в производстве. Не является ли процесс переключения между этими языками слишком громоздким?

Нет, он не громоздкий. Я нахожу наиболее утомительной частью процесса проверку консистентности потоков данных между различными приложениями или языками. Синтаксис переходов легок — перевод текста, не более того.

9.Что вы делаете на Matlab, того что не можете сделать на Python и наоборот?

В настоящее время, вы правы, не так много есть того, что нельзя сделать на Python. И я нахожу, что использую этот язык все больше и больше. Но так было не всегда: множество открытых финансовых библиотек на Python это явление последнего времени.

10. Относительно Excel, не находите ли вы, что, хотя его визуализация полезна, он несет в себе некоторые операционные риски (формулы не переносятся правильно, страницы не обновляются вовремя и т.д.)?

Я абсолютно согласен. Excel очень хрупкий во многих аспектах. И очень легко допустить ошибки, он труден для проверок, не слишком производительный, и это отбирает очень много времени. И вы должны быть очень осторожны в том, где и как вы используете Excel. Тем не менее, я нахожу некоторые преимущества, которые перевешивают эти недостатки.

11. Сколько времени занимает кодирование на С или Python ваших стратегий? В том числе первый релиз, затем исправления и улучшения?

Зависит от самой стратегии. Я бы сказал в среднем 4-5 недель до первого релиза, и где-то 2-3 недели для исправлений и улучшений. Некоторые стратегии проще и могут быть сделаны за несколько дней. С другой стороны, я помню одну стратегию, разработка которой заняла несколько месяцев. Она казалась супер прибыльной, и в этом случае это стоило того, но в общем все происходит  гораздо быстрее.

Но не допустите ошибку: когда вы обнаружили некое преимущество, отсчет начался. Вы вступаете в гонку за прибылью, чтобы получить ее как можно больше, пока это преимущество не исчезнет.

12. Я нахожу интересным следующий комментарий:" Например, я калибрую модель на месячных данных, но тестирую ее на дневных". Я предполагаю, что это зависит от того, что вы имеете в виду под «калибровкой», но в общем звучит для меня странно. Давайте упростим, и предположим, что я пытаюсь поймать медленный тренд, используя пересечение скользящих средних. Я тестирую это на месячных данных, пока все не начнет работать. Для перехода на дневные данные я должен умножить некоторые параметры на 20 ( например, период скользящих средних), потому что около 20 рабочих дней в месяце, а другие параметры на квадратный корень из 20 (различные масштабируемые параметры, которые не будем здесь обсуждать). Но модель ведет себя точно так же. Оборот, например не увеличивается после перехода на дни.

С другой стороны, если я оставляю параметры теми же, то, вместо, скажем, шестимесячного тренда, я получу шестидневный. Но смысл в следовании тренду в большинстве активов лежит в более продолжительных периодах, так что это не выглядит хорошей идеей. Также мой оборот станет намного больше, что и следовало ожидать. Другими словами, я не уверен, что все аспекты рыночного поведения настолько «фрактальны», что я бы мог просто применить точно такую же модель на разных временных шкалах. 

Фрактальны ли рынки? Хороший вопрос, по которому у нас было много вечерних дебатов. 

Лично я думаю, что нет, так как определенные внешние события действуют как функции силы: дневные маржин-коллы с бирж, месячные отчеты хедж-фондов, квартальные финансовые отчеты для публичных компаний. Эти события являются причиной чего-то (неважно чего), что происходит с этой частотой. Так что не все временные шкалы эквивалентны, и иногда ускорение/замедление отсчета времени не является «нейтральным» подходом.

Так что я очень осторожен с такими стратегиями, которые чувствительны к сдвигу времени.

Есть стратегии, где может работать сдвиг по времени. Возьмите два фьючерсных контракта на один и тот же актив — например зимний и весенний на пшеницу. Рассмотрим случай, где один из них в бэквордации, а второй - в контанго. Покупайте ближний контракт по низкой цене, продавайте дальний по высокой, продавайте ближний по высокой цене, по низкой покупайте дальний. Это очень простая, почти механическая стратегия, но для множества фьючерсных пар она обычно хорошо работает.

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

(Замечание: бид-аск спред является усложняющим фактором — выбранный временной интервал должен быть достаточно большим, чтобы движения цены превышали его. Спред между бидом и аском является серьезной проблемой для алгоритмистов всегда.)

Но я никогда не буду применять такой же тест для, скажем, стратегии следования за трендом. Это ставит целый ряд философских вопросов. Что означает для стратегии иметь лучший результат, скажем на шкале в 9 дней, или 200 дней, или любой другой? Оптимизируя под этот диапазон, не делаете ли вы подгонку? Или тот факт, что почти все используют девятидневную и двухсотдневную временную шкалу, создает самоисполняющееся предсказание, и таким образом эти числа представляют структурную особенность рынка? Я слышал убедительные аргументы по обоим предположениям. Что, если вы возьмете данные на интервале Х, а затем наложите на них 9Х и 200Х скользящие средние — будет это работать? Интересный вопрос. Я не уверен, что имею ответ на него.

Другие замечания: я согласен, что выбор слова «калибровка» был достаточно спорным в моем предложении. «Поиск идеи» был бы лучше. Если вы калибруете, вы уже предполагаете больше структурности, чем может предложить сдвиг временной шкалы.

13. Можете ли вы рассказать более подробно об использовании Монте Карло для поиска начальных параметров?

Для большинства оптимизаций, мне нужен вектор начальных предположений о параметрах — стартовая точка для моего n-мерного градиентного поиска. Проблема в том, что нелинейные системы стремятся к локальному минимуму, который может быть не оптимальным. Вы можете использовать «случайные прыжки» (simulated annealing), чтобы избежать этого, но я нашел более надежный метод — перезапуск оптимизации много раз, но с различными начальными точками. Я использую выборку Монте Карло для получения этих стартовых точек: коротко, беру случайные значения для каждого параметра ( согласно статистическому распределению этого параметра).

14. Как вы масштабируете вашу торговую стратегию? Сколько прибыли на транзакцию должно быть у хорошей модели? И на какой временной шкале вы торгуете? Какой диапазон временных шкал используется? Сколько денег может быть влито в успешную схему, эти ограничения зависят от того, сколько выделяет ваш фонд, или от самой торговой стратегии?

У меня есть несколько правил, которым я стараюсь следовать.

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

Для более медленных стратегий, я выбираю размер капитала на основе показателей максимальной просадки и прибыли за год. Бид-аск спред и баланс менее значимы здесь: основной фактор — сколько я могу допустить потерь, и как долго готов удерживать позицию. Очевидно, я учитываю очень толстые хвосты в моих прогнозах.

Между прочим, оптимальная временная шкала меняется со временем. Я знаю некоторых коллег, которые раньше делали много пунктов на арбитраже по облигациям на промежутке в несколько недель. Десять лет позже, та же торговля дает всего несколько тиков: 30-кратное сжатие возможностей. Я должен опасаться этого и адаптироваться к структурным изменениям рынка.

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

15. Как понять ваши слова: «Мой партнер торгует те же инструменты и стратегии, что и я, но удерживает их от нескольких часов до нескольких дней в основном». Правильно ли предположить, что вы запускаете автоматические стратегии, но исполнение/удержание/ребалансировка делается на дискретной основе? Или вы имеете в виду, что ваш коллега калибрует эти модели с более близкими тейк профитами и стопами вокруг справедливой величины?

Всего понемногу. Мое исполнение, позиционирование, балансировка в большинстве дискретны — кроме тех, что сформированы путем многих исследований, калибровок и накладывания ограничений. Их исполнение более механистично: они запрограммированы на определенный набор правил и просто следуют им.

Также, мы используем похожие «ответвления» моделей, которые немного отличаются от основной. Мой партнер делает больше мелких сделок для быстрых возможностей с более узкими стопами. И он рекалибрует «справедливое значение» чаще, чем я. В некоторых областях он почти маркет-мейкер. Я же нет: я в основном активно вхожу в сделку.

16. Есть ли у вас совет для тех, кто только начинает работу алготрейдера в хеджевом фонде? Как стать успешным в этой области? В чем разница между теми кто стал успешным, и кто нет?

Вкратце: интеллектуальная дисциплина. Я имею в виду комбинацию процедурной строгости, отсутствия самообмана и сдержанности.

Алгоритмисты должны быть «влюблены» в свои модели и дорабатывать их любой ценой. Испытывать интеллектуальное удовлетворение от хорошей модели или технологии очень привлекательно. Даже хуже, если модель получилась успешной, вы должны бороться с гордыней. Однажды все может разрушиться.

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

Другие публикации по стратегиям алготрейдинга можно найти на моем сайте — www.quantalgos.ru

★21
3 комментария
Спасибо.
Но количество ошибок слишком велико.

avatar
Да, серьёзно у вас все. Не хотелось бы против вас играть :)
Хорошее интервью, все три части. Снимает иллюзии относительно алготрейдинга и говорит правильные вещи.
avatar

теги блога uralpro

....все тэги



UPDONW
Новый дизайн