Статьи

Привлечение программистов для создания скриптов в алгоритмическом трейдинге. Требования к помощнику-кодеру со стороны заказчика-трейдера. Адаптированный перевод[1] статьи “Hiring a Software Developer to Code Up a Trading Strategy” ресурса Quantstart.

 

Содержание:

 

Предисловие переводчика

Текст продолжает серию публикаций переводов-рерайтов по различным аспектам алготрейдинга от сайта Quantstart.

В этом цикле смотрите:

Первые два материала дают некоторый взгляд на процесс глазами алготрейдера или того, кто хочет им стать. Данная статья посвящена, в известном смысле, противоположной точке зрения. А именно, какими чертами должен быть наделен оптимальный сторонний разработчик софта для алгоритмических стратегий. 

Изложение от первого лица.

 

Введение

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

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

<Вставка переводчика>[2]

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

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

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

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

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

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

 

Начальные соображения. Три фактора

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

  1. Стратегии с высокой частотой (HFT, High-Frequency Trading) требуют более продвинутую программную и аппаратную инфраструктуру, чем стратегии с частотой пониже. Стоимость внедрения внутридневного высокочастотного кода выше, чем у низкочастотного кода. Когда стратегия торгуется ежедневно или реже, затраты сравнительно невелики. Однако, если стратегия применяется несколько раз в день, хлопот будет поболее. 
  2. Классы активов и торгуемые инструменты предполагают развязку конкретных операционных вопросов. Так, корректная работа с акциями требует учета корпоративных действий. Для фьючерсных контрактов пригодится автоматическая прокрутка (automated rolling). Стратегия, покрывающая несколько активов и инструментов, потребует больше усилий и денег на разработку и отладку. 
  3. Полная автоматизация однозначно “упрется” в брокера, поддерживающего API-подключение. API позволит закодированному программному обеспечению взаимодействовать с брокером без графического интерфейса пользователя (GUI). Любые сгенерированные приказы и запрошенные рыночные данные смогут обрабатываться автоматически, а не вручную. Примеры брокеров с API - Interactive Brokers, OANDA, IG.

 

Спецификация

Как это обычно бывает в IT, создание программного обеспечения будет тем успешнее, чем подробнее расписан конечный результат. Должно быть максимально ясно, что система принимает на входе (актуальная рыночная информация, текущий портфель), и выкладывает на выходе (набор <торговых> ордеров).

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

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

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

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

 

Интеллектуальная собственность

Важной проблемой, связанной с наймом программиста или IT-фирмы, является сохранность конфиденциальных данных трейдера. Кража интеллектуальной собственности всегда, мягко говоря, неприятна <как и любая иная кража>. Один из способов разрешения - составить и подписать  соглашение о неразглашении информации (Non-Disclosure Agreement, NDA[3]) до того момента, когда конкретика  стратегии будут раскрыты разработчику ПО.

Для юрлиц конфиденциальные материалы дело привычное и вероятность отказа от подписания NDA невелика. Но физлицо-кодер может заупрямиться.

Однако, львиная доля программистов, незнакомых с систематической торговой практикой, не способны извлечь выгоду от банального копи-паста стратегии <увы, есть не один обратный пример>. Скорее, они будут озабочены получением гонорара.

 

Поддержка и сопровождение

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

Программистам под силу сделать так, чтобы при дальнейшей разработке код сохранял старые функции по мере добавления новых. Обсудите с кодером, как это работает. Стандартный путь - использование ПО для контроля версий (Version control[4]). Популярные продукты Version control - GitHub , GitLab и BitBucket. Требования к инфраструктуре определяются и закладываются в бюджет.

Со временем программное обеспечение может устаревать. Появляются новые версии языков программирования с библиотеками кода. Брокерские компании постоянно обновляют свои API и могут менять механизмы подключения. Нужно периодически актуализировать функциональность скрипта и/или кодовой базы для их эффективности. Опять же, такой сервис заранее отображается в бюджете проекта.

 

Где искать кодеров

Как обычно, качество продукта в значительной степени коррелируется с ее стоимостью. Попытка закодировать торговую стратегию “недорого” наверняка приведет к проблемам в будущем. Следует учитывать как первоначальную разработку, так и неожиданные нюансы, а также поддержку и обслуживание. Создание торгового ПО - непрерывное партнерство.

Если бюджет на написание софта невелик, помогут такие маркетплейсы, как Upwork и Freelancer. Учитывайте опыт кодера и отзывы клиентов. Свяжитесь с претендентом, поймите, насколько быстро он реагирует, это важно для последующего сотрудничества. Спросите, какие условия труда он предпочитает. Поскольку на фрилансбиржах, как правило, фигурирует почасовая оплата, необходимо заранее оценить бюджет проекта. Помните, перерасход средств - привычное явление, предусматриваемое в бюджете.

Альтернатива - обращение к крупной профильной IT-фирме. 

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

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

Фирму просто найти по запросам в поисковой системе или в вашей соцсети.

 

Заключение

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

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

Качество проекта зависит от бюджета. Услуги IT-фирмы стоят недешево, но качество продукта, скорее всего, будет выше, а подход профессиональнее, чем у кодера-одиночки. 

<Хотя, безусловно, могут быть варианты. Жизнь полна сюрпризов и процедура найма кодера для алготрейдинга отнюдь не исключение>.

 

<От переводчика. О пользе программистов>

Мой совет - пусть каждый занимается своим делом. Трейдер торгует, кодер кодирует. Что легко одним, другим не очень. В сети[5] наткнулся на анекдот, неплохо иллюстрирующий эту нехитрую мысль. 

В поезде едут 3 юзера и 3 программиста. У юзеров 3 билета, у программистов 1. Заходит контролер. Юзеры показывают билеты, программисты прячутся в туалет. Контролер стучится в туалет, оттуда высовывается рука с билетом. Программисты едут дальше.

На обратном пути. У юзеров 1 билет, у программистов ни одного. Заходит контролер.

Юзеры прячутся в туалет. Один из программистов стучит, из туалета высовывается рука с билетом. Программисты забирают билет и прячутся в соседний туалет. Юзеров ссаживают с поезда.

Вывод - не всякий алгоритм, доступный программисту, доступен юзеру.

Любите программистов. Программист - друг человека и трейдера.

 

перевод, обработка, комментарии и примечания

Владимир Наливайский

 

В основе изложения статья “Hiring a Software Developer to Code Up a Trading Strategy”, опубликованная на сайте (03)Quantstart.

Источник изображения на заставке - Zen.yandex.ru

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

Примечания:

  1. Под адаптированным переводом понимается достаточно точное следование исходному материалу, с возможными отступлениями и пояснениями.  Конкретные вещи - формулы, скрипты, графики и пр. (а также авторские комментарии к ним) изложены максимально близко к оригиналу (часто скопированы). Ответственность за их корректность и ясность интерпретации несет автор исходника.
  2. Записью <курсив> обозначены вставки и комментарии переводчика.
  3. Смотрите источник 1.
  4. Смотрите источник 2.
  5. Смотрите источник 3.

Список источников (Википедия/Wikipedia, если не оговорено иное):

  1. “Non-disclosure agreement”.
  2. “Version control”.
  3. Anekdoty.ru

Используемые сокращения:

API – Application Programming Interface, программный интерфейс подключения приложений. Программное обеспечение для алгоритмической/роботизированной торговли

NDA - Non-Disclosure Agreement, соглашение о неразглашении информации

ПО - программное обеспечение