
Рис.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
1. Всё это и не надо учить. Каждый выбирает столько блоков-знаний сколько ему нужно. И в какой-то момент ты трейдер.
2. Больше знаний — меньше скорость слива.
3. По прибыли — никаких гарантий. Это ж трейдинг)