Сентябрь 3rd, 2014

Древо знаний трейдера и алготрейдера 2.0

, Must-read, by Алексей Ван.

Древо знаний трейдера и алготрейдера. Версия 2.0

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

Это пост является органичным развитием и эволюцией  идей описанных в этой(http://smart-lab.ru/blog/155908.php) и этой(http://smart-lab.ru/blog/159151.php) статьях, хоть и несёт в себе законченную мысль.

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

Структура статьи:

1. Изменения к предыдущему дереву

2. Введение

3. Дерево знаний

4. Трейдинг

4.1 Технологии торговли

4.2 Финансы и кредит

4.3 СистемоСтроение

4.3.1 Физ Мат

4.3.2 Стратегии

4.3.3 Методологии исследования рынка

5 Роботостроение

5.1 Языки встроенные в торговые платформы

5.2 Визуальные редакторы

5.3 Программирование

6 Итого

Profit…

Паника

Рис. 1 Паника

    Пойдём от общего к частному, сначала рассмотрев дерево целиком, а затем отдельные его ветви.

1 Изменения к предыдущему дереву

 

Это не первая и вероятно не последняя моя попытка систематизировать знания необходимые трейдеру и алготрейдеру.  Время идёт, взгляд на проблему меняется. Поэтому для тех, кто читал предыдущий (http://smart-lab.ru/blog/159151.php) топик, сначала список изменений.

Предложенные изменения пользователями SmartLab во время обсуждения:

http://smart-lab.ru/profile/Schetprofits/ — предложил добавить Теорию Вероятности в дерево. Сделано.

http://smart-lab.ru/profile/flipper/ — предложил добавить ЕЩЁ БОЛЬШЕ ВЫСШИХ ОБРАЗОВАНИЙ и прекратить путать ежа со слоном. Я попытался…

http://smart-lab.ru/profile/bocha/ — предложил добавить блок «Оценка устойчивости» в «Системостроение». Не стал, к сожалению этого делать. Посчитал, что это умение складывается из других составляющих дерева. Оценить устойчивость стратегии можно трейдеру, применяющему программные методы исследования рынка, знакомому со статистикой, теор вером и торгующим от года системные вещи.

http://smart-lab.ru/profile/Lukasus/ — предложил взглянуть на проблему с точки зрения quant. Чем заставил меня здорово призадуматься. Добавил рассуждения на тему в главе «Трейдинг»

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

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

Из трейдинга раздел ТА был вынесен в Системостроение и изменён на более широкое понятие «Стратегии», не обязательно технические.

В общем и целом концепт  упростился. Надеюсь так будет лучше.

 

2 Вместо введения

 

Мотиватор алготрейдеру:

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

Это мечта… Мечта каждого настоящего лентяя. Играть в Диаблу и чтоб в это время твоя программа зарабатывала деньги. Насос по выкачиванию денег из рынка. Философский камень…

Это синица… Со временем у более менее публичного (Вроде меня http://smart-lab.ru/profile/Tyam/) алготрейдера появляется возможность делать роботов на заказ. Это довольно не плохо оплачивается, и позволяет вести исследования в поисках алго-грааля ничем, кроме программирования не занимаясь.

 

Демотиватор:

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

3 Древо знаний

 

Чтобы не заблудиться, сначала коротко:

 

Концепт

Рис.2 Концепт

 

 

Блоки знаний в красных рамках относятся исключительно к алгоритмической торговле.

Развёрнуто:

Дерево

Рис.3 Древо знаний трейдера и алготрейдера

4 Трейдинг

 

ТРЕЙДИНГ — междисциплинарная наука извлечения прибыли из изменения стоимости ценных бумаг, основанная на математическом, эмпирическом, экономическом, статистическом, количественном анализе финансовых систем, отдельных её частей (компаний, правительств, инсайдеров, трейдеров, МТС) и движений ценных бумаг с целью выявления не эффективностей и закономерностей.

Трейдинг Общее

Рис.4 Составляющие трейдинга

    Трейдинг, как область знаний, состоит из трёх составляющих:

  1. Технологии торговли — умению нажимать на кнопки;
  2. СистемоСтраение — умению знать или чувствовать когда надо на эти кнопки нажимать;
  3. Финансы и кредит — представлений об устройстве финансовой системы.

 

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

 

Отмечу, что для большинства трейдеров, знания о трейдинге заканчиваются на изучении Quik/Metatrader и прочтению одной-двух книг, в которых даётся несколько стратегий торговли не первой свежести. Такое печальное положение вещей обусловлено маркетинговыми двигателями брокеров, которые утверждают, что трейдинг это просто и быстро. Что, конечно же, не является правдой. А также укоренившимся в конце 19 начале 20 века пониманию трейдинга как процесса, а не науки.

 

Так, например в википедии ТРЕЙДИНГ — анализ текущей ситуации на рынке и заключение торговых сделок. А ТРЕЙДЕР — торговец, спекулянт, действующий по собственной инициативе и стремящийся извлечь прибыль непосредственно из процесса торговли. Поскольку природа трейдинга за последнюю сотню лет стала пугающе сложна, сути определения изогнуты в сторону процесса и не скоро изменяться. Это как написать что ХИРУРГИЯ — процесс разрезания и сшивания людей с целью извлечения профита (З\П, благодарностей, Коньяка). Последнее явно вызовет смех, т.к. всем известно, что чтобы стать хирургом надо 5-7 лет учиться и практиковаться этой огромной науке, тогда как с трейдингом подобное определение смеха не вызывает. А вдруг у меня за 10 часов получиться научиться? Какая же это наука!? Тем, кто так считает, подумайте вот о чём: за 10 часов теоретически можно и операцию на сердце человека научить делать. Вот только как сложиться карьера такого врача уже заранее известно.

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

 

Кванты (википедия eng: quant) — специалист, применяющий количественные методы в сфере финансов, в частности, биржевой трейдер, торгующий на основе математических вычислительных моделей.

Иными словами Квант — это трейдер, который торгует системно, на основании математики и смежных дисциплин, и не основывается на всяческой антинаучной херне.

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

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

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

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

Во-вторых, мне охота чтобы Ты знал с кем Тебе придётся иметь дело в стакане, жертва Ты кухонной пропаганды! Это команды профессионалов, или сумасшедшие одиночки (Квантов или Трейдеров, кому как удобнее) с несколькими профильными высшими образованиями, для которых, ещё раз повторюсь:

 

ТРЕЙДИНГ — междисциплинарная наука извлечения прибыли из изменения стоимости ценных бумаг, основанная на математическом, эмпирическом, экономическом, статистическом, количественном анализе финансовых систем, отдельных её частей (компаний, правительств, инсайдеров, трейдеров, МТС) и движений ценных бумаг с целью выявления не эффективностей и закономерностей.

 

Трейдинг Частное

Рис.5 Древо знаний трейдера

4.1 Технологии торговли

 

Базовые знания, необходимые для того, чтобы начать совершать сделки.

Технологии торговли

                                                                           Рис.6 Технологии торговли

 

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

 

4.2 Финансы и кредит

 

Знания эквивалентные высшему экономическому образованию. Как пример Финансы и Кредит, но не обязательно.

 

как минимум:

1) Улучшают понимание трейдинга и своего места в финансовом мире.

2) Делают трейдера невосприимчивым к подавляющему большинству околорыночных разводов. Как пример: пирамиды и связные инструменты, бинарные опционы, звонки от инсайдеров/продажников из РоялМаксБрокерс (См. х\ф «Бойлерная»), беспроигрышные инвестиции в Золото/Пифы/Недвижимость и т.д.

3) Позволяют использовать «Фундаментальные» стратегии торговли.

 

как максимум:

Делают из трейдера — «Александра Шадрина» (http://smart-lab.ru/tag/Разумный%20инвестор)

Фик

Рис.7 Финансы и кредит

    Можно долго спорить о необходимости и глубине знаний во всех этих областях для трейдера и алготрейдера, но вот лично по себе знаю. Следя за новостями и читая Смарт-лаб на протяжении нескольких лет, хочешь или нет, но собственная тупость и непонимание некоторых событий и слов заставляют лезть в Фин. Словарь, Вики, Лурку и врагу не пожелаешь: Modern Many and Banking. Т.ч. со временем узнать это придётся, даже если не хочется.

 

4.3 СистемоСтроение

 

Самая обширная и времязатратная ветвь трейдинга.

Знания, необходимые для того чтобы стать экспертом в области системной торговли.

СистемоСтроение

Рис.8 СистемоСтроение

1) «Стратегии» — Знание множества стандартных известных стратегий.

2) «Физ Мат» — Знания  математики и смежных дисциплин, чтобы можно было анализировать прибыльность и перспективность стратегий по бэк-тестам. + подобные базовые знания дают огромное преимущество при алгоритмической торговле и особенно в создании самообучающихся алгоритмов (об этом ниже).

3) «Методологии исследования рынка» — способы исследования прибыльности стратегий.

СистемоСтроение2

Рис.9 СистемоСтроение развёрнуто

4.3.1 Физ Мат

 

Знания эквивалентные высшему математическому образованию.

 

как минимум:

1) Улучшают понимание трейдинга и своего места в финансовом мире;

2) Убирают из работы эмоции и завышенные ожидания от трейдинга;

3) Позволяют оценивать прибыльность стратегии.

 

как максимум:

1) Позволяют создавать быстрые и совершенные самообучающиеся алгоритмы;

2) Позволяют создавать торговые системы и алгоритмы, работающие с производными на рыночные данные.

 

По последнему приведу небольшой пример из жизни:

Около полу года штурмую область машинного обучения и не так давно столкнулся с проблемой представления данных внутри минуты. Интуитивно привыкший к свечкам, сначала решил просто схлопывать по ходу торгов тиковые данные в свечи с таймфреймом 3 — 5 — 10 сек. Что оказалось весьма не удобно. Процесс конвертации оказался очень тяжёлый и не поворотливый.

Помощь пришла в момент обсуждения вот этой статьи: http://smart-lab.ru/blog/183985.php Вот от этого пользователя СмартЛаба http://smart-lab.ru/profile/Marco/ (поставьте ему плюсов в профиль!).

Оригинальное сообщение:

1. Берете ряд цен, преобразуете его в ряд разностей логарифмов.

2. По желанию дополняете его объемами, ценами на коррелированные и коинтегрированные активы, фазами Луны, да чем угодно (все в виде приращений логарифмов).

3. Генерируете на основе полученного ряда скользящим окошком обучающую выборку.

4. Натравливаете на нее алгоритм типа SVM или нейронную сеть, добиваетесь нормального качества обучения, делаете перекрестные проверки и тестируете out-of-sample.

5. PROFIT

 

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

4.3.2 Стратегии

 

Чтобы начать писать книги, нужно много читать.

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

Чтобы начать импровизировать со стратегиями для МТС необходимо изучить и протестировать множество стратегий придуманных до тебя.

Стратегии

Рис.10 Общеизвестные стратегии

4.3.3 Методологии исследования рынка

 

Арсенал ГраалеИскателя. Способы, с помощью которых трейдер проверяет эффективность стратегий.

Исследование рынка

    Рис.11 Исследование рынка

 

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

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

Исследование рынка2

    Рис.12 Методологии исследования рынка от простого (снизу) к сложному

 

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

Для справедливости следует сказать, что и люди, ведущие ручные журналы не лишены шанса разбогатеть. Смотри: Уоррен Баффетт (читай: Modern Many and Banking, Шадрин…). Но эти люди торгуют либо исключительно фундаментальный анализ, либо какие-то его вариации.

 

5 Роботостроение

 

Инструмент, при помощи которого алготрейдер создаёт своих роботов.

 

РоботоСтроение

    Рис.13 Способы создания МТС

 

Основных способа три:

1 При помощи специальных визуальных редакторов;

2 При помощи языков, встроенных в торговые платформы;

3 Создание собственных приводов и платформ.

 

Существуют также несколько гибридных способов написания роботов, вроде написания скриптов в Excel и использования библиотек, таких как StockSharp.

 

5.1 Языки встроенные в торговые платформы

 

Способ создания МТС, некогда выведший алготрейдинг в массы. Во время создания робота предполагается использовать встроенные в платформы скриптовые языки.

Qpile, Lua, MQL, Easy Language — наиболее популярные языки.

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

5.2 Визуальные редакторы

 

На сегодняшний день самый популярный способ создания МТС. Во время создания робота предполагается использовать некие визуальные способы проектирования роботов. Путём перетаскивания «кубиков» логики в панели управления платформы-каркаса.

5.3 Программирование

 

Способ создания МТС, предполагающий написание собственных библиотек и каркасов для создания роботов.

 

Процесс разработки торгового робота мало чем отличается от создания любой другой программы и включает в себя следующие этапы:

  1. Проектирование
  2. Программирование
  3. Тестирование
  4. Поддержка

 

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

 

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

  • Знание одного из языков программирования (С#, C++, VBA, Delphi…).
  • Знание одного из Пользовательских интерфейсов (UI).
  • Знание алгоритмов (в программировании это такие стандартные способы решения различной сложности задач).
  • Знание структур данных (это те которые списки, деревья и т.д., а не тип данных struct).
  • OOP (Объектно-ориентированное программирование).
  • OOD (Объектно-ориентированная архитектура приложения).
  • TDD (Разработка через тестирование).
  • Api доступа к торгам (штука, через которую так или иначе можно программно получить доступ к торгам).

 

Вот так это выглядит в кубиках:

Программирование 0

Рис. 14. Набор каких-то аббревиатур

И обо всём по порядку.

 

Язык программирования.

Ну, тут всё просто. Для того чтобы писать торговых роботов подойдёт практически любой язык программирования. Единственное ограничение это возможность доступа из программы к API доступа к терминалу/бирже.

Самым разумным выбором по моему мнению будет С#. Он невероятно прост в освоении и по скорости исполнения уже практически не уступает С++.

Моя статья о выборе языка: http://sib-algo.ru/?p=59.

 

UI (пользовательский интерфейс)

 

Хороший интерфейс торгового робота должен содержать графики, всплывающие меню, панели с вкладками, диалоговые окна, тысячи кнопок и ещё много чего. Для этого существуют специальные Frameworkи которые позволяют делать интерфейсы быстро и эффективно. Для C# и других языков поддерживаемых .Net это Windows Forms, WPF и Modern UI Runtime.

По мне предпочтительнее Windows Forms. Дёшево и сердито. Первая технология для создания интерфейсов в .Net. Отсюда много книг и хорошая поддержка.

Для WPF придётся выучить язык XAML, а у Modern UI Runtime (оно же Metro) отсутствует поддержка, т.к. технология новая.

WPF быстрее обрабатывает графику, что по идее должно бы давать некоторое преимущество перед Windows Forms. Хотя профит этот не очень очевиден, т.к. модель по хорошему не должна во время торговли тормозиться об прорисовку интерфейса. Между тем при визуализации тестирования в Windows Forms  всё жутко упирается в прорисовку графика. Пытался перейти на WPF одно время, но забил, даже уже и не помню из-за чего. Из проблем вспоминается отсутствие стандартных rich средств работы с биржевыми графиками (если есть поправьте меня). В  Windows Forms есть чудесная для этого штука: Chart. Вроде можно её интегрировать в WPF через окостыливание, но опять же это снижает скорость.

 

Алгоритмы и структуры данных

 

Для того чтобы писать свои мудрёные, сложные и эффективные алгоритмы, надо сначала пописать простые и банальные. И уделить этому очень много времени. Частично этот вопрос разбирается во время обучения языку, однако далеко не полностью. Поэтому придётся отдельно качать несколько специальных книжек и писать сортировки пузырьком и расстановку ферзей…

 

 

OOP Объектно-ориентированное программирование

 

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

 

OOD Объектно-ориентированная архитектура приложения

 

После освоения OOP логичным продолжением является изучение объектно-ориентированного дизайна. Данный скилл позволяет масштабировать и усложнять программу в любой её части, до бесконечности.

Моя статья рецензия на Design Pattern: http://smart-lab.ru/blog/164107.php

 

 

TDD Разработка через тестирование

 

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

 

 

API Интерфейс программирования приложений

 

Для того чтобы из своего робота посылать заявки на биржу и получать информацию о торгах, существуют специальные библиотеки / платформы / программы. Которые, не смотря на свои возможные отличия по замыслу, скорости и реализации, все называются API. По русски: Передаст. Их надо разобрать, изучить и понять, как это всё работает.

Моя статья о Api Quik и SmartCom: http://smart-lab.ru/blog/199423.php

 

6. Заключение

Дерево

Рис. 15. Древо знаний трейдера и алготрейдера ещё раз

 

Многие пункты конечно не равнозначны по глубине и сложности, но думаю общее направление и «опасность» задачи передать удалось.

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

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

Back Top

Responses to “Древо знаний трейдера и алготрейдера 2.0”

  1. Я не программист .Я торгую с 1995г. Я не видел Вашей программы .Я торгую по свечам и объему без индикаторов .Использую правила ВА и техники Ганна .Надеюсь Вы поняли смысл правильных перемен при написании программ .Надеюсь на ваш талант .Благодарен за ваши усилия .Посмотрю вашу программу .В интернете я ezom. Готов общаться в будущем.

    Владимир at
    • Приветствую. Надеюсь найдёте мои программы полезными. Следующие два поисковика планирую на следующей неделе по объёмам как раз.

      Алексей Ван at
  2. Почему опущены знания о риск менеджменте, управления капиталом, управления размером позиции, формирования портфеля и т.д?

    Maxim Terentev at
    • Приветствую.
      Действительно. Огромный и важный блок упустил. Спасибо.
      Если будет следующая версия, дополню, со ссылкой на Ваш коммент.

      Алексей Ван at