Рис.1. Паника
THIS IS SPARTA M@THERFUCKERS OLD SCHOOL ALGO.
Что нужно знать, для того чтобы быть успешным трейдером и алготрейдером?
А ТЫ!? Хочешь на пьедестал ЛЧИ!?
Мат. часть inside.
АТТЕНШН! Эта статья более чем на половину о дисциплинах входящих в
Old School Algo, и более чем полностью является логичным продолжением моего предыдущего поста. Поэтому внимательно ознакомьтесь с классификацией (
smart-lab.ru/blog/155908.php ) алготрейдеров и комментариями к ней, прежде чем писать сюда!
OLD SCHOOL ALGO SKILL TREE
Plan:
- Введение.
- Зависимость между Трейдингом, Алготрейдингом и Программированием. Попытка передать мой взгляд на то, что из чего вырастает и что от чего зависит.
- Trading Skill Tree. Науки и умения трейдера.
- Old School Programming Skill Tree. Науки и умения Old School программиста, без учёта трейдинга.
- Old School Algo Skill Tree. Собственно.
- Заключение.
- ...
- PROFIT!
1. Введение.
суть:
В этом посте попытаюсь в графическом виде показать те знания, которыми нужно/можно обладать, чтобы стать трейдером и алготрейдером.
Пойдём от большего к частному и посмотрим какие науки/профессии/знания затрагивает специализация Old School Algo. Рассмотрим также смежные дисциплины и очень подробно системообразующую, т.е. Трейдинг как таковой.
мотиватор:
Программирование торговых роботов чертовски увлекательное занятие, скажу я вам. Мир вокруг и внутри безвозвратно меняется, когда нечто архи сложное и непостижимое, нечто состоящее из тысяч шестерёнок и громыхающих поршней, известных лишь тебе, запускается, и работает именно так как ты хочешь. И однажды, после десятков таких грандиозных взлётов, происходит момент, после которого просто не возможно не чувствовать себя счастливейшим и умнейшим человеком. После этого всё остальное уходит на второй план…
Это героин.
Это мечта… Мечта каждого настоящего лентяя. Играть в Диаблу и чтоб в это время твоя программа зарабатывала деньги. Насос по выкачиванию денег из рынка. Философский камень...
демотиватор:
Однако если бы четыре года и два диплома назад, я увидел, какой длинный путь впереди, который, кстати, ещё не окончен, я, быть может, и не вступил на эту дорогу.
Свет в конце тоннеля всё дальше и дальше, а денег на счету всё меньше и меньше.
2. Зависимости между трейдингом и алготрейдингом и место программирования в этом всём.
Очевидно, на первый взгляд, самые большие части нашей декомпозиции:
Рис. 2. Составляющие Old School алготрейдинга
Но если посмотреть со стороны Трейдинга, а ведь мы хотим сделать дерево знаний хоть капельку универсальным, то алготрейдинг и программирование это всё-таки одна из составляющих трейдинга, вытекающая из него, вот примерно в таких пропорциях:
Рис. 3. Взгляд трейдера на программирование и алготрейдинг
И даже так:
Рис.4. Взгляд алготрейдера на программирование и алготрейдинг
Вот именно так я и смотрю на проблему и, исходя из этого, будет строиться весь дальнейший research.
Ещё раз прописью: Есть большая такая профессия «Трейдинг», внутри неё есть специализация «Алготрейдинг», Внутри этой специализации четыре «Школы», каждая со своим подходом к предмету, А «Программирование» как таковое используется в трёх школах алготрейдинга и по-разному.
Я специалист школы алготрейдинга «Old School Algo», поэтому описывая «Программирование» основной упор буду делать именно на такой вид алготрейдинга.
Интересно, что true программисты, все области нашей жизни, для которых им приходиться делать программное обеспечение, называют «Предметная область». И с точки зрения этого самого true программиста предыдущий рисунок не верен. И трейдинг, по мнению программиста, не что иное, как очередная предметная область, маленькое такое пятнышко, на обширном полотнище его знаний.)) Хорошо, что мы с вами не на Хабре...
3. Trading Skill Tree.
Лирическое отступление:
Вот вроде не первый день замужем, а гугл между тем, когда его спрашиваешь: «Что должен знать трейдер?
Собака!», постоянно отправляет на сайты форекс-кухонь. Контент подобных статей заставляет плакать и смеяться… смеяться и плакать… Советую попробовать.
Ну а для Тимофея и комсомольцам восьмидесятых, в связи с этим, подарок: незаметная такая SEO оптимизация для поста:
Пост о том что должен знать трейдер.
Здесь рассматриваются знания необходимые трейдеру.
Кто такой трейдер? Кто такой алготрейдер?
Открой в себе трейдера! )
Необходимые знания для трейдера
Трейдинг как профессия
Алготрейдинг как профессия.
Конец лирического отступления.
Из чего состоит трейдинг:
- Фундаментальное понимание функционирования предприятий, экономик, рынка ценных бумаг в частности и глобальных рынков в целом. По мне, в идеале, это диплом «Финансы и Кредит».
- Всевозможные виды технического анализа и рыночных парадигм.
- Знание о том, как нужно создавать торговые системы. Назовём это системостроение).
- Знание технологий торговли или иными словами способы доступа на рынок.
Рассмотрим ниже каждый пункт в отдельности, а пока:
Рис. 5. Четыре кита трейдинга
ФиК.
Гуглим список предметов, необходимых для получения диплома и выбираем самое необходимое, чтобы не
тупить ссат под себя и пускать слюну читая ГУРУ (Олейника там, или Мартынова):
Рис. 6. Мат-часть трейдинга.
Можно долго спорить о необходимости и глубине знаний во всех этих областях для трейдера и алготрейдера, но вот лично по себе знаю. Следя за новостями и читая Смарт-лаб на протяжении нескольких лет, хочешь или нет, но собственная тупость и непонимание некоторых событий и слов заставляют лезть в Фин. Словарь, Вики,
Лурку и врагу не пожелаешь: Modern Many and Banking. Т.ч. со временем узнать это придётся, даже если не хочется.
Системостроение.
Открываем Кургузкина «Системный подход»,
перечитываем перелистываем с пасмурным лицом, возводим необходимые знания в степень, кой чего добавляем:
Рис. 7. Системостроение в разрезе
Методологии программного исследования рынка раскрыл отдельно, т.к. это для алготрейдера очень важный пункт. Подробнее:
- Параметры устанавливаемые вручную. Это когда в тестере/коде напрямую забиваются параметры используемой во время тестирования Торговой Системы.
- Серия тестов с автоматическим перебором параметров. Процесс, при котором МТС тестируется с различными параметрами в автоматическом режиме.
- Серия тестов с динамической переоптимизацией во время прогона. Сразу пример: на основе 2010 года система себя оптимизирует, затем торгует 2011, затем оптимизируется на основе 2011, затем торгует 2012 и т.д.
- Органика. Ну, на сегодняшний день это всё-таки обход всех вообще возможных точек входа и выхода на НЕЕbichеском сервере с 1000+ процессорами и попытки сделать из этого какие-то выводы.
Технический Анализ.
УУУ… Грустно становится… Сколько же их там видов? А самое главное, сколько можно и нужно знать? На эти вопросы, наверное, никто не ответит, поэтому просто перечислю то, что вспомнилось за минуту:
Рис.8. Невероятно короткий и не полный перечень школ ТА.
Если кто-то знает сайт \ ссылку с классифицированной и систематизированной информацией по какой-то из ветвей нашего дерева. Делитесь ссылкой, и родина вас не забудет.
Технологии торговли.
Рис.9. Способы доступа на рынок.
Спорная конечно ветвь. Т.к. по глубине разные блоки отличаются кардинально. На что-то надо потратить всего несколько десятков часов, а на что-то пять тысяч! НО! Изучение одного из этих «лёгких» пунктов, вроде следования за Гуру, и является для многих этим вашим «трейдингом».
Ну и соберём всё выше написанное в кучу:
Рис.10. Trader Skill Tree ver. 0.1
Внимательно смотрим, критикуем, предлагаем свои варианты, дополнения.
4. Old School Programming Skill Tree.
Процесс разработки торгового робота мало чем отличается от создания любой другой программы и включает в себя следующие этапы:
- Проектирование
- Программирование
- Тестирование
- Поддержка
В большинстве случаев во время создания сложных платформ и программ, вроде Торговых роботов, эти вещи делают разные люди. Т.е. проектированием занимается один человек, а тестированием другой. Но в нашем случае все эти функции придётся взять на себя...
Исходя из этого посмотрим из чего состоит программирование Торговых роботов, если исключить предметную область и по возможности отсечь всё лишнее:
- Знание одного из языков программирования (С#, C++, VBA, Delphi...).
- Знание одного из Пользовательских интерфейсов (UI).
- Знание алгоритмов (в программировании это такие стандартные способы решения различной сложности задач).
- Знание структур данных (это те которые списки, деревья и т.д., а не тип данных struct).
- OOP (Объектно-ориентированное программирование).
- OOD (Объектно-ориентированная архитектура приложения).
- TDD (Разработка через тестирование).
- Api доступа к торгам (библиотека/платформа доступа к торгам).
Вот так это выглядит в кубиках:
Рис. 11. Набор каких-то аббревиатур
И обо всём по порядку.
Язык программирования.
Ну, тут всё просто. Для того чтобы писать торговых роботов подойдёт практически любой язык программирования. Единственное ограничение это возможность доступа из программы к API доступа к торгам, которые написаны (Внезапно!) на C++.
Самым разумным выбором по моему скромному будет С#. Он невероятно прост в освоении и по скорости исполнения уже практически не уступает С++.
UI (пользовательский интерфейс)
Хороший интерфейс торгового робота должен содержать графики, всплывающие меню, панели с вкладками, диалоговые окна, тысячи кнопок и ещё много чего. Для этого существуют специальные Frameworkи которые позволяют делать интерфейсы быстро и эффективно. Для C# и других языков поддерживаемых .Net это Windows Forms, WPF и Modern UI Runtime.
По мне предпочтительнее Windows Forms. Дёшево и сердито. Первая технология для создания интерфейсов в .Net. Отсюда много книг и хорошая поддержка.
Для WPF придётся выучить язык XAML, а у Modern UI Runtime (оно же Metro) отсутствует поддержка, т.к. технология новая.
Алгоритмы и структуры данных
Для того чтобы писать свои мудрёные, сложные и эффективные алгоритмы, надо сначала пописать простые и банальные. И уделить этому очень много времени. Частично этот вопрос разбирается во время обучения языку, однако далеко не полностью. Поэтому придётся отдельно качать несколько специальных книжек и писать сортировки пузырьком и расстановку ферзей...
OOP Объектно-ориентированное программирование
Данная концепция позволяет ускорить процесс разработки, а заодно меняет представление о
мире, вселенной, второй мировой, Путине, будущем программировании и алгоритмах. Ну и хватит.
OOD Объектно-ориентированная архитектура приложения
После освоения OOP логичным продолжением является изучение объектно-ориентированного дизайна. Данный скилл позволяет масштабировать и усложнять программу в любой её части, до бесконечности.
TDD Разработка через тестирование
Одна из «гибких» методологий разработки ПО. Поскольку ошибки в коде робота могут принести не иллюзорные проблемы. Придётся привыкнуть тестировать модули, прежде чем подключать их к работающим системам.
API Интерфейс программирования приложений
Для того чтобы из своего робота посылать заявки на биржу и получать информацию о торгах, существуют специальные библиотеки / платформы / программы. Которые, не смотря на свои возможные отличия по замыслу, скорости и реализации, все называются API.
По русски: Передаст. Их надо разобрать, изучить и понять, как это всё работает. Как минимум сначала надо изучить Quik Api, а затем вероятно и Plaza.
5. Old School Algo Skill Tree.
Рис.12. Дерево знаний Old School алготрейдера ver. 0.1
6. Заключение
Страшно… По многим пунктам надо читать по нескольку книг и тратить несколько месяцев жизни. Причём, если на знания трейдера можно со спокойно душой кое-где подзабить, то всё что входит Old School надо задрачивать несколько тысяч часов. Многие пункты конечно не равнозначны по глубине и сложности, но думаю общее направление и «опасность» задачи передать удалось.
Надеюсь, несколько человек возьмут на вооружение, а несколько справедливо бросят C# на полку и начнут изучать TSLab или S#.Studio.
Это не истина в последней инстанции. Я
простой человек супер-мен конечно, но мог что-то забыть, а чего-то и вовсе не знать. Профессионалов прошу в обсуждение. В следующих версиях (если они будут) адекватные мнения будут учтены.
1. Codecademy
Самый популярный сервис в области обучения программированию с нуля, получивший несколько значительных раундов финансирования. Известен тем, что абсолютно бесплатен и создан специально для тех, кто ничего в программировании не понимает. Учит базовым принципам работы с JavaScript, HTML and CSS, Python и Ruby. Обучение проходит в форме коротких упражнений с простыми заданиями и инструкциями. Пользователь пишет код и сразу видит результат своих действий.
Для дополнительной мотивации в Codecademy придумали систему поощрительных бейджей за выполненное задание, прохождение раздела или сдачу тестов. Сервис внимательно следит за успеваемостью и последовательно выстраивает курс обучения, подсказывая, какие темы нужно дальше изучить. Также любой желающий может сделать собственный курс или написать несколько упражнений для остальных пользователей. Самый популярный курс называется Code Year — пройдя его, можно научиться делать сайты или игры.
Ссылка на сервис: codecademy. com
2. Code School
Если Codecademy исповедует минималистичный подход к обучению, то в Code School любят фантазировать и экспериментировать. Самое интересное у них — не базовые уроки по Ruby, JavaScript, HTML/CSS и iOS, а курсы-продолжения, такие как Rails for Zombies. Кредо компании — Learn by Doing («Обучайся, действуя»). Вместо скучных абстрактных заданий они предлагают пользователям программировать то, что им интересно, например игры про зомби.
Все базовые курсы состоят из пяти уровней, каждый из которых начинается с 15-минутных обучающих видео. Затем следуют упражнения, в процессе выполнения которых сразу можно получить фидбэк и увидеть свои результаты. Так, например, в курсе для создания приложений для iPhone есть эмулятор, показывающий, как код будет выглядеть на экране гаджета. Здесь тоже не обошлось без геймификации: нужно зарабатывать очки и получать бейджи.
Ссылка на сервис: codeschool. com
3. Treehouse
Treehouse делают акцент на обучающем видео. Даже если вы не готовы к полноценному курсу по созданию сайта, приложения для iPhone или Android, а просто хотите получить базовые знания о том, что такое интернет и как он работает, стоит подписаться на их канал на YouTube. Тех, кто решит начать изучать Ruby on Rails, PHP и другие языки программирования, на сайте ждёт более 1 000 видеоуроков. Они собраны в курсы, посвящённые веб-дизайну, программированию, технологическому предпринимательству и многому другому.
Видео постоянно обновляются, так что курсы морально не устаревают. После каждого видео даются практические задания, интерактивные квизы. В конце каждого курса у вас будет готов небольшой проект. После этого сервис подскажет, что стоит изучить дальше. На сайте есть хороший пользовательский форум, можно получить фидбэк от экспертов, поучаствовать в мастер-классах. Единственный недостаток — обучение стоит денег, от $250 до $490 в год. У Treehouse есть отличный бесплатный дочерний проект для тех, кто уже чему-то научился, — Code Racer. Там нужно кодить на скорость, соревнуясь с противником. В процессе ему можно всячески мешать: например, забрасывать его экран фотографиями кошек.
Ссылка на сервис: teamtreehouse. com
4. Udacity
Если обучение в одиночку вам не подходит, можно пройти онлайн-курсы с другими начинающими на Coursera, Udacity и других профильных сайтах. Плюс таких курсов в том, что у вас есть хоть и удалённый, но учитель, и определённый темп обучения, который не позволяет расслабляться. Курс Introduction to Computer Science (на видео) очень популярен среди новичков. Udacity, созданный на базе Стэнфордского университа, хорош тем, что совершенно бесплатно предоставляет университетские курсы в адаптированной под удалённое обучение форме. Рядом с каждым курсом есть шкала сложности. Предполагается, что, пройдя курс с нулевой сложностью, вы будете готовы к прохождению остальных, где изучаются конкретные языки. На Coursera тоже немало курсов для начинающих программистов, например, посвящённый Python и про создание креативных мобильных приложений.
Ссылка на сервис: udacity. com
5. Sparki
Если подавить гордость и признать, что все вышеуказанные курсы всё равно слишком сложны, можно начать с тех, что созданы специально для детей. Например, приложение для iPad и iPhone Move the Turtle. Это игра, которая обучает программированию через небольшие задания, каждое из которых заставляет двигаться черепашку. Сервис Alice, созданный в Carnegie Mellon University, учит созданию движущихся 3D-героев, параллельно давая основы C++ и Java. Hackety Hack — приложение, обучающее азам Ruby. В отличие от предыдущих оно делает это не через картинки, а уже через конкретные языковые команды. Но, конечно, самое лучшее для детей — это роботы, запрограммированные выполнять простые команды, которые сначала нужно прописать в виде компьютерного кода. Один из таких — робот Sparki, собравший деньги на Kickstarter. Сделать предзаказ можно здесь, и стоить он будет всего $100.
взято отсюда: vk.com/sinaybiznes
daje 1/10 chast' ukazannyh znaniy dast salary $50k+ v god
vash trading prinosit stolko? esli net — luchshe prosto ustroites na rabotu s takimi znaniyami )
no chestno govorya
realnie traders govoryat tak: «parni, esli by my ne torgovali, to my by vodili gruzoviki»… ^) vse eto ne nado… eto prostaya professiya
2 качаем тслаб — там уже есть несколько готовых ботов
3 запускаем и торгуем
А ведь движение цены — это случайный процесс.
Как же Вы будете строить прибыльную систему не зная принципов работы со случайными процессами?
Математическая статистика не заменяет Теорию вероятностей, а лишь дополняет её практическим инструментом.
— OLD SCHOOL ALGO SKILL TREE
Plan:
1.Введение.
2.Зависимость между Трейдингом, Алготрейдингом и Программированием. Попытка передать мой взгляд на то, что из чего вырастает и что от чего зависит.
3. Trading Skill Tree. Науки и умения трейдера.
…
PROFIT!
— Трейдер и без математики может быть успешным, если его научат прибыльно торговать.
Либо он сам внимательно и вдумчиво изучая графики цен в барах без всяких индикаторов обнаружит закономерности для входа в сделки — их полно на четырехчасовках и днях.
А вот построить свою серьёзную прибыльную торговую систему без применения знаний Теории вероятностей, ИМХО, невозможно.
Некоторые разработчики систем просто подменяют знание интуитивным пониманием вероятностных характеристик случайных событий и случайных процессов.
Самое интересное, что программы подобные ТСлаб как раз показывают четко какие стратегии будут прибыльными, а какие нет.
Данная карта очень классная штука. Еще раз спасибо автору. Дает осознание того, сколько что нужно знать и чего не хватает для прибыльности на рынке. Кстати, автор все это знает?
Правила торговли /управление капиталом/ индикаторы с вопросом, потому как один раз это понять не получиться и постоянно нужно находиться в поиске. Ну или это я так пока думаю))
Статья через чур замудренная, не все так сложно на самом деле
Хотя знаете, думайте как хотите. Вам же дальше торговать :-)
Quantative analyst безусловно на данный момент является отдельной необъятной наукой, включающей в себя гораздо больше знаний, чем описаны в этом посте.
Но, эту науку всё таки породил трейдинг. И в связи с этим мне кажется, что Трейдинг с такой позиции не является частью своего потомка, а как раз наоборот.
Стоило ли усложнять пост рассказами о том, что Old School Algo, можно рассматривать как часть quantative analyst, в виде Quantitative developer + Algorithmic trading quantitative analyst + Risk management +…? Возможно, так бы было справедливее… Возможно, стоит написать об этом отдельно… А возможно ни то и ни другое…
Кванты в какой-то момент, отгородились от окружающих, Заявив о том, что эволюция была такова: Трейдер => Алго Трейдер => Квант. И мне кажется, что это не правильная и не очень «популярная» позиция, и я не готов её отстаивать. Хотя позиция эта мне вполне понятная, ведь, по сути, моя классификация алго трейдеров, да и этот пост, тоже устанавливают какие-то эволюционные рамки, возможно, не такие радикальные, но кому-то наверняка обидные. И, тем не менее, за рамки Алго не выходящие.
Ещё раз спасибо. Ваш комментарий натолкнул меня на мысли большие, чем сотня других. Действительно, возможно ради научной достоверности стоит расширить наше дерево в сторону Quant и описать данный взгляд на проблему. В общем надо над этим поразмыслить.
Знание одного из Пользовательских интерфейсов (UI).
Знание алгоритмов…
Знание структур данных (это те которые списки, деревья…
OOP (Объектно-ориентированное программирование).
OOD (Объектно-ориентированная архитектура приложения).
Не нужно пугать начинающих алготрейдеров умными словами. Все это (кроме простого алгоритма) совершенно не нужно для реализации любой не сверхнавороченной системы
Уважаемый. Для вас в начале поста висит Плашка «АТТЕНШН»
«Настоящий ученый должен знать все о немногом и немного обо всем».
Так вот, Ваша схема — это «все», а отдельные группки прямоугольников (по группировке можно подискутировать) — это «немногое».
Если заменить в цитате Тимирязева «ученый» на «трейдер», то получим правильное утверждение.
Кстати, в разделе тестирования пропущен толстенький квардат оценки устойчивости… Но это отдельная, еще более пугающая песня :)
Оценка устойчивости, Да, важная вещь. Вылетела из головы. Надо вписать.
На мой взгляд много лишних блоков, на фоне которых ключевые моменты теряются.
Главный вопрос для меня: а стоит ли одному человеку пытаться охватить необъятное?
Например, у Вас даже в рамках этой статьи просматриваются явные и глубокие провалы в области «проектирования» и «дизайна».
Причём, нельзя сказать, что это Ваша «беда». Просто профиль деятельности другой.
Трудно представить, как я буду писать быстрые коннекторы на нэйтив Си с хитрыми вставками на асме, а потом я же буду создавать удобный юзер-интерфейс =))). Как минимум что-то одно будет напоминать Ладу «Калину». А скорее весь продукт станет «жёлтеньким».
Полагаю, Вы недооцениваете синергетический эффект командной работы.
Я и сам такой. Страдаю этим недугом по факту. Мысленно уже понимаю, но по жизни всё ещё иду под девизом «я знаю короткую дорогу!» =)))
ЗЫ Конкретно по тексту потом выскажусь (тугодум я).
Каждый ведь сам за себя в трейдинге. У нас в Новосибирске community трейдеров толком нет, а про алго вообще слёзы.
Придётся одному похоже…
Я вот сотоварищи, к примеру, есть.
Так что команда НГУ искренне жмет руку команде НГТУ. :)
А вот то, что каждый за себя в трейдинге, это да. Здесь даже не в деньгах дело, существенно разнятся задачи, подходы, темпераменты, работоспособность, менталитет, возраст, уровень образования вообще и в трейдинге в частности… Просто только командовать и хаять, а «скомандиться» ох как непросто, сто раз Вы правы :)
Мне это кажется очень сложным сейчас. Ведь для того чтобы команда поняла к примеру мои разработки, надо привести весь код к одному виду, выучить таки UML и всё закомментировать как минимум. А это ещё пол года.
Новосибирское сообщество трейдеров и алготрейдеров конечно надо развивать. Так что команда НГТУ (декан говорил, что пару лет назад ещё одного алготрейдера выпустили))) в количестве двух человек жмём руку команды из НГУ))
hexlet.org/open_lectures/13zeros/#more-7177
Автор много денег поднял? ))
пс. просто интересно
Вот: smart-lab.ru/blog/154747.php
Если хотите совет — то не тратьте время на доказывание и отстаивание своего мнения. Это бессмысленная возня, которой забит Smart-Lab. Реализуйте свои мысли в программном коде или ручной торговле, рынок всех рассудит.
Это пройдет.
Ну, вот вы как старший товарищ с двенадцатилетним стажем поясните, в чём именно оно странно составлено. И где там перепутан ёж со слоном. А я поправлю, и в следующей версии поясню: мол, так и так, господин flipper сказал так-то и был прав, поэтому дерево вот здесь порезано, а здесь расширено.
Я, как и 99.99% обитателей Смарт-Лаба, да и вообще трейдеров, спец далеко не во всех областях, которые затрагиваются в этом дереве, явно и не явно, хотя оно достаточно мало даже на текущей стадии разработки. И собственно этот пост был попыткой найти кусочек правды, как для себя, так и для других.
Вот сделайте доброе дело! Всмотритесь в последний рисунок и объясните, что ж там не так. А мы все — нубасы, вам спасибо скажем. ( это не стёб)
А то вот так про кашу как-то не серьёзно…
это работало и всегда будет работать.