Блог им. Ermac

Первые шаги в алготрейдинге.

    • 30 мая 2017, 17:38
    • |
    • Pavel
  • Еще

Добрый день, SmartLab!

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

Сначала немного вводной и лирики.
Меня зовут Павел. У меня хорошее математическое образование (МГУ ВМК). Есть достаточно большой опыт в ETL, последние несколько лет активно развиваюсь и работаю в области Data Science, той самой, вокруг которой много хайпа сейчас.

Не так давно, а именно около 3-4 месяцев назад начал интересоваться инвестициями. Почему не раньше? Потому что финансовая грамотность у нас страдает, я не стал исключением.
Толчком ко всему стало прочтение небезызвестной книги «Богатый папа, бедный папа». После — недельные курсы по трейдингу и инвестированию, которые дали самые основы и базовое представление о том, как вообще работает рынок, как организованы торги, шорты-лонги-маржа и прочее и прочее. Переварив немного происходящее, я понял, что надо что-то делать дальше, иначе все как было, так и останется на месте. Как мне кажется, биржа — отличное место приложения существующих знаний. Полная самостоятельность в принятии решений и полная независимость от окружающих.


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

2) Трейдинг. Игра с отрицательной суммой. На текущий момент прочитана книга «Подлые рынки и мозг ящера», в процессе — «Механические торговые системы» и «Технический анализ» Швагера. Все очень интересно. В спекулятивной торговле всегда есть выигравший, проигравший и брокер. Причем соотношение выигравших и проигравших равное в объеме. При большой нерациональности рынка, % брокера достаточно маленький. Кроме того, есть утверждение о том, что проигрывают 90% игроков на рынке. Что ж. Надо быть в этих 10%, у которых, к слову, должна быть та самая половина выигрыша. Чем неэффективней рынок, тем больше возможностей.


Я много работал с данными, я знаю Python. На текущий момент планы написания собственных алгоритмов предсказания и движков для трейдинга. Из существующего и достойного внимания нашел zipline.io, однако прям сходу захотелось большего функционала по обработке данных, подготовке фич и построению моделей. Проще писать с нуля. Мне не интересно использование готовых инструментов типа MQL, я не хочу ограничивать себя существующим функционалом и готовыми индикаторами. Я прекрасно понимаю, что не стохастиком единым. Все, что он показывает — это положение текущей цены относительно предыдущих минимумов и максимумов. Да, конечно, интересный признак и он обязательно будет у меня использоваться. На десятке различных окон с десятком различных сглаживаний. А так же скорость его изменения и скорость изменения скорости)

Готовые решения, как я описал выше, использовать не хочу. Отчасти по причине необходимости изучения нового языка (хотя это не большая проблема), но скорее по причине ограниченного функционала. Да, возможно, будет иметь смысл использовать тот же тслаб для сбора статистики, но я ее и сам могу собрать и построить необходимые графики. Я люблю исходные данные. Логи, сделки, котировки. А уж какие аггрегаты и статистику смотреть — я и сам могу решить.

HFT и арбитраж меня не интересует, С-подобные языки применять не собираюсь, однако возможностей Python вполне хватит, чтобы принимать решения в течение секунд.
Брокером пока для себя выбрал финам, потому что у них есть transaq connector и внятное API. Не надо будет ваять непонятные обертки вокруг QUIK или MT. Если (а еще лучше-когда) все полетит — буду использовать платные прямые коннекты к бирже.

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

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

★8
66 комментариев
Ладно, штампов ты набрался. Зачёт.
Теперь продержись на рынке хотя бы три года и будешь местным старожилом.
avatar
Ну, лучше уж тогда R, что ли. Всяко поудобнее будет питона, хотя он тож неплох.
В плане скорости все скриптовые языки будут проигрывать в производительности компилируемым. Поэтому если не хочешь считать те или иные гипотезы часами или днями бэктестить, то ботай C++/C#. Ну, если не на 3-м или 1-м потоке учился, бро.))) Вообще, в алготрейдинге без хорошего знания программирования (особенно если платформу свою городить хочешь, а не брать готовое, н-р, в том же R) никуда. 
Далее — копай в сторону стохастического анализа и фин.мата. Ну, если на втором потоке учился и фамилия «Смирнов» тебе что-то говорит, то это так, самое начало пути, как говорится. А в остальном — ю ар велкам, бро!)
Бобровский Дмитрий, R я не люблю по религиозным соображениям во-первых. Во-вторых, на нем будет проблематично написать готовый продукт. Мне ведь надо будет запускать процесс, который сам себя мониторит, следит за ошибками, ведет логирование, строит отчетность. В аналитическом функционале он никак не проигрывает R (спорить можно только об удобстве, но не о функционале), но все-таки Python — язык общего назначения. Писать на C-подобных я не хочу, ибо торговать на минутах, даже в пределах нескольких тиков — Python хватит, а удобства у него поболе будет.
avatar
Pavel, ну, вы это разработчикам quantstrat скажите, что тяжело будет. )))
Далее, в R можно использовать C++, Java, скоро можно и C# будет — есть соответствующий проект на githab'е. R встраивается в SQL сервер, RRO была куплена Microsoft. Наверное, им делать было нечего. ;-)
А так — дело Ваше, конечно.

P.S. Ах, да, забыл сказать, что сейчас вроде ~8к разных пакетов под R написано. ;-)
Бобровский Дмитрий, я не сказал, что этого сделать нельзя. Я объяснил, почему я этого делать не буду. Равно как и MSSql не люблю, люблю Postgres. На вкус и цвет фломастеры разные, и да, еще раз — я просто не люблю R :) Выбирая между R и Python я точно не ограничиваю себя в производительности, тем более до нее дело еще не дошло.
avatar
Pavel, ну, моё дело порекомендовать. ;-)
Pavel, на самом деле, выбор язык дело не принципиальное, можно и на фортране писать, тем более, что там научных библиотек — как грязи. 
Важно не закопаться в нейронках, адабустах, вейвлетах и прочих многопараметрических методах оверфитинга. Надо быть проще. 
Желаю удачи. 
avatar
А там и до хуру рукой подать. Будешь учить других как торховать от уровня по алгоритму. На жизнь хватит.
avatar
 стрелочки не забудь рисовать от уровня, и хлавное по фурье раскладывай, тыж математик. вейвлет анализ добавь. и нейронку. и тохда рынок раскроет перед тобой усе свои секреты.
avatar
Kapeks, ну, смех смехом, а для фитинга параметрических моделей и анализа нестационарности рынка мне и фурье-, и вейвлет-анализ мне помогают. ;-)
Бобровский Дмитрий, во-во молодца! параметрические модели и фиттинг с пирсингом это то шо нужно. видно шо ты человек серьёзный. это усё явно заявка на вход в зал славы российского трейдинха.
avatar
Kapeks, мы с Вами потом кривой капитала померимся. ;-) За хорошим английским стаутом.)
Чувствуется внутренний стержень, самостоятельность мышления, развитое логическое мышление — всё как у меня прям))) — хороший бэкграунд для будущих результатов, а ещё и мат. подготовка — ммм., взрывоопасная смесь)
avatar
Replikant_mih, тебе до него как до Камчатки пешком ) это если объективно, а если субъективно, то как до Марса ))
Zweroboi, возможно), например, если считать, что я с той стороны вектора где стрелочка))
avatar
Replikant_mih, имей в виду, что стрелочка может оказаться в совершенно неожиданном месте ))
Zweroboi, конечно-конечно, это же биржа, я предельно осторожен)), чтобы не допустить стрелочек в неожиданных местах)
avatar
Replikant_mih, 
avatar
Борис Литвинов, А в трейдинге так можно?) — вроде тебе ещё идти и идти до цели, а потом бах, перевернул стрелочку и ту уже у цели, оказывается.
avatar
Replikant_mih, правильная мысль. Далеко пойдете, вот как сможете так в трейдинге вот тогда. Играя в шашки, только в конце игры Вовочка узнал что играет в поддавки.
avatar
Борис Литвинов, Мне ещё с листом бумаги и ручкой из Интерстеллара нравится)
avatar
 а да, чуть не забыл, обязательно следи за новостями с блумберха, а то вдруг пропустишь ставку фрс и данные с еврозоны. и про опек не забывай, лови каждое слово. и побольше читай смартлаб. тут народ тёртый, матёрый. усе как один волки с уоллстрит. профитные до отрыжки.
avatar
Kapeks, гороскопы читать? На фазу луны смотреть?
avatar
Pavel, это ты уж сам решай. фаза она такая, если 380 то нужно 3-й допуск получать по электробезопасности, а луну не каждый день видно, но в телескоп можешь смотреть.

avatar
Kapeks, вейвлет, минет и марафет. :)
avatar
Я вас огорчу. Питон — это только лишь 5-7% от инструментария. Сам им пользуюсь для парсинга репортов.

Вы определитесь, кем себя видите. Если квантом, то R+MatLab+Python+Excel. Если алготрейдером, то Си и апи.
avatar
Евгений, ёпрст, до чего нород докатился, кванты отдельно, алготрейдеры отдельно, потом выяснится шо надо определяться хто ты: трейдер, трейдун али трейдовик. посоны я хочу проснуться. хде тут выход?
avatar
Евгений, чем MatLab или R по функциональности лучше Python? 
Excel? Тем, что есть готовые функции прикольные? Или тем, что MatLab платный? Сообщество везде огромное, различия в функционале номинальные.

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

HFT — да, Си, но еще раз — я пока смотрю на интрадей на минутах/тиках. Python должно хватить. И да, буду использовтаь API существующих терминалов или прямое подключение к бирже. На надо думать, что Python не может быть быстрым. Принятия решения в течение нескольких секунд должно хватать, я не собираюсь скальпингом заниматься.
avatar
Pavel, Ну, справедливости ради, несколько секунд это многовато не только для тиков, но и для минуток на мой взгляд).
avatar
Replikant_mih, если не разводить турусы на колесах, секунды не будет, от 0,1 до 0,3 с должен в любом случае укладываться. Тем более, что таймфрейм минута не означает необходимости по сто раз на дню переворачиваться. Если среднее время удержания позиции порядка дня и больше, все будет в порядке.
avatar
SergeyJu, вот я тоже подумал, что Питон не настолько медленный и что надо что-то серьёзное наворотить, чтоб несколько секунд было)
avatar
Pavel, Excel хорош когда надо наглядно на данные посмотреть — в табличном виде, ну и какие-то вещи в экселе быстрее можно сделать — но их мало, чисто для таких вещей его держать не стоит). Только чтоб в табличке покопаться — фильтровать, сортировать)), ну может сводная и график — но эксель — точно не must have для алго))
avatar
Replikant_mih, иногда полезно поковыряться в данных ручками. И посмотреть, что получается, глазками. Лучше экселя трудно что-то придумать для этой цели. Тьюки вообще любил карандашом  на бумажке поковыряться в данных. Хорошая забытая книга.
nashol.com/2014110180366/analiz-rezultatov-nabludenii-razvedochnii-analiz-tuki-dj-1981.html
avatar
SergeyJu, Ну да, я тоже люблю это делать, для этого он и нужен, хотя когда-то давно я через формулы и кучи вспомогательных столбцов делал бэктестинг)) — но это извращение, а именно с табличкой поработать — это да.
avatar
Pavel, всё с вами понятно.

Не слейте всё сразу :-)
avatar
Порекомендовал бы в первый год не брать плечи. Так как вы еще мало знаете себя и на что способен рынок. Но я знаю, что вы меня не послушаете и будете брать максимальные плечи )

Сам использую R для изучения рынка, пока это изучение бесполезно. Пишу на MQL, он хорош. Хотя Финамовскую опцию не пробовал. Excel удобен для ведения журнала и анализа собственных сделок по стратегиям и т.д. Первые программы для рынка тоже писал на питоне. Но потом полюбил R за его дата ориентированность.

Чем тратить время на трейдинг, возможно, лучше потратить его на саморазвитие по специальности, это может принести больше денег. Так было в моем случае.
avatar
SciFi,  зря думаете, что во все плечи буду залезать. Профит = статистика * риск-менеджмент, а не плечи * удача. У меня нет цели заработать миллионы, причем не позднее, чем завтра, но цели ставить надо, без этого никуда. Пока это скорее интересное приложение знаний и времени, которое в последствии может приносить доход. И основную работу с развитием в своей области никто не отменял)
avatar
Удачи.
avatar
Оооо, парень, исходя из того, что ты написал, ты тут уже в первом топовом проценте ) отправил тебе добавить в друзья и добавил в читаемое ) не слушай никого делай как сам написал
Zweroboi, тоже в друзья добавил)), было бы IPO — ещё б и акций немного прикупил))
avatar
Replikant_mih, просто отправь парню денег без IPO, точно лучше чем себе на депозит занесёшь )

Zweroboi, не, я бы на долгосрок взял, не хочу участвовать в первых слитых депозитах))

на счёт лучше — это врядли. Если хочешь подискутировать предметно — вэлкам!, если не хочешь или не предметно — тогда нах.

avatar
не взлетит
sore, да кто его, хотелось бы увидеть когда подгорать начнет у него. Трейдер + программист это смесь успеха
avatar
Борис Литвинов, где?
ну, в добрый путь!
VladMih, выходит, шо мало того, шо я тебя заебал, так еще и наебал! как же ты так облажался то с плюсованием?
avatar
VladMih, Нуу, лёгкие задатки к негибкости я тоже увидел, но это скорее между строк, а так Павел все адекватно и аргументированно обосновывает.
avatar
VladMih, будущий надеюсь
avatar
VladMih, Лучше правильные штампы, чем неправильные))))
avatar
Я бы начал с того, что хорошо знаю. А там куда лет через пять кривая выведет, не известно. На пути к целям, подходы в трейдинге могут не раз поменяться. Сейчас начнете квантом на питоне, а душа потянет в другое.
Я в свое время в идеале знал delphi, а когда принял решение войти в индустрию, пришлось квалифицироваться на шарп. В итоге через некоторый промежуток времени ни то ни то, как первичный инструмент, не понадобилось. Только как прикладное для обслуживания второстепенных задач.
Смотрю на коллег по цеху, в принципе все так же.
Так что думаю вы, пока найдете свой путь, пройдете не мало. А пока дерзайте с того что есть, с базы.
avatar
VladMih, возражу. Я не отрубаю эту возможность, но не вижу в ней решающего преимущества, которое она мне может дать именно сейчас. На все принцип Парето. 80-20. Если я почувствую, что узким местом станет именно производительность, я рассмотрю варианты. Пока же для быстрого старта и проверки своих сил текущего инструментария более чем достаточно. Как было правильно замечено, изучение нового языка не является проблемой само по себе. Главное — алгоритмы, которые используются, и на текущий момент задачи проще решать средствами, которые лучше знаешь.
avatar
Visual basic наше все. А hft можно и на ассемблере писать. Он точно всех сишников порвет
Блин, как смайлы ставить в комментариях?
Странно что люди советуют R вместо питона. Если подумать то питон даже удобнее в подготовке данных, да и в основном функционал такой же, а то может и больше для исследований данных. 
По поводу медленных вычеслений, так вроде как можно юзать панды и нумпи с другими матиматическими библиотеками, с тем же мкл от интела и скорость увеличится :)(это вроде и для р справедливо)
По личному опыту знаю, лучше уж сперва работать в том что хорошо знаете, а как надо будет… можно будет и другой язык изучить и тд :)
Quantopian не устроил, поэтому решил писать все сам. Немного не понял ваш ход мыслей. Может оптимизатора там и нет, но в остальном на уровне quantopian инструментов нет, и писать их можно десятками лет.
avatar
Egor Prosto, Вопрос звучит здраво.
Возможно, когда доберусь до непосредственно внедрения в продакшн модели, я либо форкнусь от них, либо буду подсматривать, используя best practice. Я просто хочу сказать, что бегло посмотрев на zipline, я не увидел в нем ровно то, что мне необходимо. Я ни в коем случае не хочу сказать, что то, что они сделали — плохо. Труд такого количества людей ценен.

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

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

Да, если Вы про Jupyter ноутбуки — не они придумали их, и да, я тоже пользуюсь этим инструментом. У меня пока своя небольшая вируталочка, на которой я сам себе админ. У меня установлен python3 и все необходимые пакеты. Я не пользуюсь anaconda, все необходимое ставлю сам.

Ну и в конце замечу, что кода там не так много и про десятки лет — это очень преувеличено (еще раз — я про zipline)
avatar
Начать с собственного велосипеда прекрасная идея для молодого выпускника :) времени ж дофига
P.s. А что в data science мало платят? в северной америке берут нарасхват
avatar
nbvehrfr,  я вроде нигде не упоминал про возраст. Говоря про образование, я не говорил, что получил его вчера. И про уровень своего дохода тоже ничего не говорил. К слову, в России сейчас специалисты тоже более чем востребованы, и предложений с хорошими условиями для хороших людей хватает.
avatar
Самое ценное было бы самым простым по реализации, но самым продуктивным по набиранию реального опыта. Делаете двух роботов. Первый на двух скользящих средних. Второй на линейной регрессии. Настраиваете их так, чтобы они совершали не больше двух сделок в день и не меньше двух сделок в неделю (в среднем). И запускаете в реальные торги (с первым плечом) на акциях сбера, фРТС и сишке. Стараетесь продержаться в такой торговле хотя бы полгода (лучше год) и особо ничего не менять, а лишь оттачивать технику. Для этого эксперимента достаточно тысяч 200 денег рублевых.
avatar
Sergey Pavlov, спасибо за мнение. Я собираюсь идти от данных и статистики. Не говорю, что не буду использовать всякие средние — буду, это один из базовых аггрегатов, однако общепринятые готовые сигналы вроде пересечения средних и стохастики сами по себе перегреты и не вижу смысла сливать деньги на них. 
avatar

теги блога Pavel

....все тэги



UPDONW
Новый дизайн