Майкл Брайант (Michael Bryant) имеет дипломы инженера-механика и специалиста по компьютерам. Он работал в аэрокосмической отрасли, занимаясь проектированием космических аппаратов, а затем занимался наукой в сфере офтальмологии и механики. Рынок был для него увлекательным способом отвлечься. Он тяготел к торговле фьючерсами. Учитывая его образование, неудивительно, что он начал разрабатывать торговые системы и программное обеспечение для трейдеров. Брайанту принадлежит компания Adaptrade Software, которая разрабатывает продукты, доступные как розничным, так и профессиональным трейдерам.
Майк, расскажите немного о себе и о том, как вы заинтересовались торговлей.
У меня техническое образование. Я получил степень PhD в области механики, вторая специальность - компьютерные науки. Прежде чем прийти к торговле, я сменил несколько работ. Я был аэрокосмическим инженером и разрабатывал космические корабли и ракетоносители. Затем я перешел в науку и работал профессором в медицинской школе, разрабатывая биомеханические технические модели глаза на кафедре офтальмологии. Примерно в то же время я заинтересовался фьючерсным рынком. Учитывая мой опыт, вполне естественно, что я тяготел к систематической торговле, поэтому я начал разрабатывать стратегии торговли. Позже я начал разрабатывать инструменты масштабирования позиций. В конечном итоге, я подумал, что некоторые из созданных мною для себя инструментов могут представлять интерес и для других трейдеров.
Так появился побочный бизнес - продажа этих инструментов. И когда я понял, что не хочу всю оставшуюся жизнь работать в академической науке, то начал задумываться о том, как перейти к индивидуальному предпринимательству. Окончательно оно стало моей основной работой в 2003 году. Я начинал с работы на своем торговом счете и с продажи ПО. В какой-то момент я понял, что анализировать рынок и разрабатывать новые методы торговли, в том числе программы, мне нравится даже больше, чем торговать. Так несколько лет назад фокус моих интересов полностью переместился на разработку и продажу программного обеспечения. Сейчас я занимаюсь исключительно программной стороной торговли.
Я продолжают работать над новыми методами торговли, но теперь не торгую по ним сам, а включаю их в свое ПО.
Расскажите о своих программах.
Моя компания называется Adaptrade Software. Для генерирования стратегий я использую программу Adaptrade Builder. Есть у меня еще один инструмент - Market System Analyzer. Он предназначен для масштабирования позиций и управления ими. Программу Builder я создал для генерирования кода для других платформ. Она генерирует EasyLanguage и другие языки программирования, которые используются в торговых платформах.
Многие трейдеры хотели бы разрабатывать собственные торговые системы, но не знают, с чего начать. Что может послужить для них хорошей отправной точкой?
Чтобы разрабатывать прибыльные стратегии торговли, нужно очень много знать. Это зависит от того, на какой стадии вы находитесь. Если вы уже являетесь трейдером, понимаете рынок и во всех подробностях разбираетесь в тех инструментах, которыми торгуете, то следующий этап - это стратегия и логика. То есть все зависит от того, есть ли у вас идея, которую вы хотите запрограммировать, или нужно сначала выработать такую идею. Когда у вас есть идея торговли, ее нужно перевести на язык стратегии, для чего потребуется скриптовый язык. Но большинство скриптовых языков привязаны к конкретной торговой платформе. Поэтому речь идет о выборе не только скриптового языка, но и торговой платформы.
Программу Builder я разработал для того, чтобы сократить людям этот процесс. В ней сочетаются генерирование стратегии и выбор логики; она пишет код и применяет правильные принципы разработки стратегии и строгие методы тестирования.
После того, как наша идея закодирована, как определить, будет ли такая система надежно работать? А если она работает, то в какой момент следует прекратить пользоваться ею?
Я считаю, что окончательным арбитром должно служить отслеживание жизнеспособности системы в реальном времени, и лишь после этого можно переходить к реальной торговле. Многим людям не удается пройти даже этап разработки, и до отслеживания в реальном времени дело не доходит. Для этого я применяю метод, состоящий из трех отрезков: отрезок обучения, отрезок тестирования и отрезок подтверждения. Отрезки обучения и тестирования обычно работают вместе. Поэтому, если вы еще не закончили разработку, и нужно внести изменения, их можно оценить на отрезке обучения и на основании полученных результатов решить, какие именно изменения вносить. Затем можно периодически проверять показатели работы на отрезке тестирования. Другими словами, следует убедиться, что на отрезке тестирования вы не ухудшаете систему, потому что обычно на отрезке обучения она всегда выглядит хорошо, ведь именно для этого вы ее и используете. Но зачастую на отрезке тестирования она поначалу выглядит хорошо, а после внесения дополнительных изменений, оптимизации входных параметров и т. п. результаты на отрезке тестирования начинают ухудшаться, что говорит о том, что имела место подгонка.
Есть и третий отрезок - подтверждение. Он используется только после того, когда вы прошли все предыдущие. Тогда можно сделать окончательное подтверждение путем проверки на этом отрезке. После этого можно применить отслеживание в реальном времени.
Что включает в себя отслеживание в реальном времени?
Большинство торговых платформ позволяют прогнать систему в реальном времени - в режиме симулятора. Нам нужно видеть, как она работает, чтобы быть уверенными, что она устоит при таком развитии событий. Для этого нужно регулярно смотреть на P/L.
Но когда вы торгуете в режиме симулятора, устраняется влияние эмоций. Когда же вы переключаетесь на живую торговлю, нужно учитывать эмоции. Как вы учитываете эмоции при торговле в реальном времени?
Эмоции в трейдинге - одна из главных трудностей. Они действительно имеют решающее значение. Как только вы начинаете торговать на живые деньги, включается фактор эмоций. Одна из вещей, которые мне нравятся в систематической торговле, - это то, что она помогает справиться с этим аспектом. Она не решает эту проблему полностью, но, по крайней мере, если вы используете торговую систему, то единственное решение, которое вам нужно принять, - это придерживаться ли своей системы. Таким образом, она в определенной степени упрощает этот процесс, но не устраняет эмоции полностью. А поскольку влияние эмоций сокращается, принимать торговые решения легче.
Это так, но убыточные сделки иногда случаются. При использовании торговой системы, как управлять позициями и рисками, когда получаешь убытки?
Одной из особенностей рынка, усложняющих работу на нем, является его переменчивость. Его статистические показатели со временем меняются. В этом, наверное, основная причина того, что торговые стратегии со временем перестают работать. Поэтому обязательно нужно следить за своей торговой стратегией, чтобы быть уверенным, что она продолжает работать в приемлемом диапазоне и по-прежнему оправдывает ваши ожидания. Если это не так, нужно либо доработать ее, либо заменить на лучшую.
Поэтому, строго следя за своей системой, можно определить, работает ли она. Свои первые стратегии вы начали разрабатывать еще в начале 1990-х. Заметили ли вы существенные изменения в поведении рынка, которые бы заставили вас изменить свой метод разработки систем?
Рынок со временем меняется, но он зависит от вашего таймфрейма. Он будет разным, когда вы торгуете, скажем, на минутном и на недельном графике. Задача состоит в том, чтобы выделить из шума сигнал и постараться найти такой торговый сигнал, который будет устойчив в течение периода времени, достаточного для получения прибыли в реальных условиях. Как долго будет оставаться устойчивым такой сигнал, зависит от вашего таймфрейма. Если вы торгуете на минутном графике, вам, возможно, придется разрабатывать новые стратегии каждые шесть месяцев. Чем короче таймфрейм, тем чаще придется разрабатывать новые стратегии. У меня есть стратегия, которую я создал примерно 17 лет назад. Время от времени она требует настройки значений некоторых параметров, но базовая идея продолжает работать. Но она предназначена для свинговой торговли. Таким образом, все зависит от того, какой сигнал вы нашли для совершения сделки, и как долго этот сигнал сохраняется.
Кроме того, системы дают разные результаты на разных инструментах. Например, одна система может лучше работать на акциях, а другая - на фьючерсах. Как вы это учитываете?
Всегда можно попытаться найти какой-то пригодный для торговли сигнал, который работает на нескольких инструментах и таймфреймах. Он может быть не настолько эффективен, как сигнал, созданный под конкретный рынок. Но он, вероятно, будет более надежным и просуществует дольше, чем сигнал, специфический для конкретного таймфрейма или инструмента.
Можете привести примеры определенных рыночных условий, которые хорошо работают на разных инструментах?
Мой подход строго математический. Я не пытаюсь анализировать рынки с точки зрения конкретных условий. Важно лишь то, продолжает ли стратегия работать в пределах тех показателей эффективности, под которые она создана. Если нет, значит, на рынке что-то изменилось, и система больше не актуальна. Трудно сказать, что такое актуальная система.
Когда вы проводите тестирование торговых систем на истории, какие именно параметры вы рассматриваете?
Думаю, что определенные показатели заслуживают большего внимания, чем другие. Многие стараются добиться максимума чистой прибыли, и тем ограничиваются. Но я считаю, что полезно иметь набор показателей, которые отражают, как я говорю, качество стратегии. К ним относятся, например, коэффициент прибыли, максимальное неблагоприятное отклонение, КПД входов и выходов, стабильность результатов и другие. Я обнаружил, что, стараясь добиться максимальных значений этих параметров, мне удается создавать более качественные стратегии, которые более надежны и дольше работают.
Системные трейдеры часто слишком увлекаются подгонкой результатов, о чем вы говорили выше. Это порождает проблемы. Почему так? И к каким проблемам это приводит?
Я считаю, что подгонка - это самая большая проблема, с которой сталкиваются системные трейдеры. Чрезмерно подогнанные системы при тестировании на истории выглядят великолепно, но не работают в реальной торговле. В большинстве случаев это - следствие чрезмерной оптимизации. Но такое иногда случается просто из-за недостатка данных, когда у вас слишком мало информации для оптимизации, или если ваша стратегия или модель содержит слишком много параметров. Применительно к торговым стратегиям, слишком мало данных означает слишком мало сделок.
Нужно иметь достаточно большую выборку сделок, чтобы быть уверенным, что вы не занимаетесь подгонкой шума. Хорошей новостью является то, что существует достаточно много методов, использование которых позволяет избежать чрезмерной подгонки или выявить ее. Например, это можно сделать, посмотрев, как изменятся результаты на другом сегменте данных. Один из выводов, которые я сделал, в течение более 10 лет наблюдая за прогрессом в сфере машинного обучения, заключается в том, что чрезмерная подгонка не должна быть критичным фактором. Если посмотреть на такие методы машинного обучения, как нейронные сети на основе глубокого обучения, то они зарекомендовали себя, как очень успешные. Это было бы невозможно, если бы они не научились справляться с чрезмерной подгонкой. В этой области многому можно поучиться. В частности, это: измерение сложности стратегии и умение избежать ее чрезмерного усложнения; построение стратегии на нескольких наборах данных, чтобы она не была привязана к лишь одному набору; ограничение суммарной оптимизации, что в теории машинного обучения называется обучением с остановкой; и введение случайности в различном виде, например учет случайных сочетаний или случайных изменений входных параметров, чтобы результаты не оказались чрезмерно зависимыми от одного конкретного набора входных параметров. Все эти вещи я включаю в свое ПО для разработки стратегий, чтобы решить проблему подгонки.
И еще одно: когда речь идет о разработке стратегий, многие трейдеры не утруждаются изучением программирования. Как им использовать системный метод в своей торговле?
Прежде всего, системная торговля не обязательно означает запрограммированную торговую стратегию. Если у вас есть набор правил, сформулированных достаточно хорошо для того, чтобы любой, кто их понимает, мог получить такие же результаты, значит, вы используете системный метод торговли, независимо от того, изложен он на листе бумаги или описан скриптовым языком. Но программирование стратегии имеет ряд преимуществ. Оно делает стратегию более объективной. Вы можете протестировать ее на истории, оценить ее и легко отслеживать. Но если вы не умеете программировать, то у вас, на самом деле, есть только три варианта для разработки и создания собственной стратегии торговли: вам нужно либо научиться программировать; либо заплатить тому, кто это для вас сделает; либо воспользоваться для генерирования кода каким-то инструментом. Очевидно, что я склоняюсь к последнему варианту. Но даже он требует определенного обучения. Все равно нужно понимать основные логические составляющие торговой стратегии; показатели, которые используются для их оценки; и процесс, посредством которого инструмент разрабатывает стратегию. Так что, нужно многому научиться. Но это - неотъемлемая часть процесса разработки стратегий, независимо от того, программируете вы сами или поручаете сделать это компьютеру.