История создания биржевого торгового советника PIAdviser
Мое первое знакомство с фондовым рынком и биржей началось с прочтения книг Теодора Драйзера «Финансист», «Титан» и «Стоик» еще до 90-х. Позже, в 1994 году я приобрел свои первые акции, это были привилегированные акции ММТ. Важно то, что инвестиции в российские акции на протяжении многих лет приносили мне стабильный ежегодный доход, исключением был только кризисный 1998 год. Моя же трейдерская деятельность, наоборот, чаще приносила мне разочарования и потери. Однако, трейдинг отличается от инвестирования примерно также, как коробка передач отличается от сцепления, при этом два этих устройства используются для передвижения. В те времена я очень желал заниматься активным трейдингом.
Я читал много материалов на тему трейдинга и проникся идеей создания эффективной торговой системы (далее – ТС). Я анализировал графики и придумывал торговые правила для ТС. Постепенно я пришел к выводу, что надо создавать персональную торговую систему – только для себя. Накопив практического опыта в трейдинге, а именно в спекулировании российскими акциями через торговый терминал NetInvestor, в 2000 году было принято окончательное решение о создании своей ТС. В этот период времени я служил в отделе ценных бумаг в Банке Петровский (Санкт-Петербург).
Опытные трейдеры знают на сколько важно контролировать риски и использовать защитные заявки. Но даже при любо степени опытности, ошибки и срывы случаются у всех трейдеров. Даже единичные случае игнорирования - не выставления стоп-заявок, типа: стоп-лос, тэйк-профит и скользящий-стоп могут свести на нет предыдущий торговый успех, и даже привести к разорению. Чтобы научиться вести трейдинг по безопасному алгоритму, т.е. с отслеживанием открытой позиции и с выставлением стоп-приказов, требуется время, которое и нарабатывает полезные торговые привычки, без которых не выжить и не выиграть в жестоких биржевых джунглях.
Но продолжу свой рассказ. Решение о создании торговой системы было принято, оставалось теперь найти программиста, который воплотит мои торговые наработки в программу. Изначально требования к программе были примерно такими: облегчить труд трейдера, помочь ему быстрее и точнее находить выгодные бумаги и моменты, напоминать о защитных заявках, контролировать риски, прививать и нарабатывала полезные торговые привычки и в итоге стабильно получать доход на бирже. Еще не совсем понимая, что я пытаюсь создать, но слова помощник и советник я использовал активно. Видимо тогда мной движило большое желание сделать программу, которая стала бы советником и помощником, а главное контролером при торговле. Почему контролером? – потому что мой отрицательный опыт трейдинга дал мне понимание того, что торговая система без самой дисциплины – бесполезная вещь. Только дисциплина и планирование торговли способны привести к успеху – к прибыли на непредсказуемом и также перспективном фондовом рынке. Думаю, что подсознанием сидело желание получить уверенность в завтрашнем торговом дне.
Итак, далее. Нужна была программа – советник с контролем рисков и позиций. Требования к программе были сформулированы, нечто напоминающее техническое задание было написано, оставалось найти программиста. Тогда, в 2000 году подобных программных продуктов для российских бирж, просто не существовало. А у меня не было никакого опыта разработки подобных программ, то есть я был пионером, как бы пафосно это не звучало. Но молодость и отсутствие опыта вместе могут давать потрясающий результаты, замечу, как положительные, так и отрицательные. Признаюсь, что тогда абсолютно не отдавал себе отчета о предстоящих трудностях. Из-за вышеперечисленных фактов и большого желание создать свою программу, никаких сомнений и колебаний не было.
Поиски программиста длились достаточно долго, я специально не предпринимал особых усилий, просто распространял информацию среди своих знакомых. И однажды на мой зов откликнулись. Я познакомился с Дмитрием - молодой студент ЛГУ. Чуть позже к нам присоединился веб-мастер Алексейю. Как я уже писал ранее, у меня было что-то похожее на техническое задание (далее – ТЗ), но его пришлось переписывать, т.к. Дмитрий его забраковал. У меня возникли первые сложности, так как понимать и рассказывать об этом это одно, а изложить на бумаге в виде понятных и логических алгоритмов, чтобы это понял программист, - совершенно другое. Оказалось это не просто. Мое первое настоящее ТЗ примерно на 10 страницах я писал наверное три месяца. Впоследствии мне пришлось писать и переписывать эти ТЗ наверное до сотни раз. Надо было готовить много логических выражений и формул, рисовать много разных блок-схем и прочее. На Рисунке 1 приведен пример одного листа из технического задания. За пять лет, в течении которых разрабатывалась программа, были написаны многие сотни листов технической документации. Если посчитать, то только на их написание ушел примерно год работы. Представьте себе целый год, - год кропотливой, но интересной работы.
Следующие трудности, о которых я не подозревал, были проблемы с объяснением программистам того, что я написал в ТЗ. Мы с программистами хоть и говорили на одном языке, но мыслили и понимали на разных. Они на своем программистском, а я на своем трейдерском. Чтобы объяснить ТЗ и сделать процесс разработки более эффективным, мне приходилось обучать их теории и практики трейдинга, всему тому, что я знал сам. К моему счастью, кроме навыков программирования, Дмитрий еще обладал и отличной математической подготовкой, он часто находил в моих алгоритмах неточности и ошибки и тут же предлагал способы их улучшения. В дальнейшем Дмитрий так втянулся в наш общий проект, что внес много своих предложений в торговые алгоритмы и трейдинг-логику. Порой, несмотря на отсутствие биржевого опыта, у него получалось найти варианты, увеличивающие эффективность торговой системы. Думаю, что без его не замыленного взгляда на трейдинг, программа вряд ли стала одновременно и продвинутой и доступной для массового использования. Но это все произойдет после, а пока были трудовые будни.
Вспоминаю, что в начале моего проекта, один мой хороший знакомый, директор компании «Петербургского Межбанковского Финансового Дома» (ПМФД) Андрей Язев, кстати разработчик программы NetInvestor, как-то сказал мне примерно следующее: «…то, какую программу мы себе представляем и какую получаем в результате, большая разница…». Смысл его слов я осознал уже намного позже, когда наша программа приняла некие визуальные контуры. Вспоминаю, первый впечатления от программы, что-то грубое, бесформенное, напоминающее скорее плохую пародию на настоящую программу. Многие визуальные компоненты и опции реализовать в программе сразу не получилось, а что было реализовано, не особо нравилось. Но все равно, факт появления самой программы, вдохновлял, и немного опьянял. Первой нашей проблемой было то, что не существовало аналогичных программ, на которые можно было ориентироваться, а вторая проблема, мы и сами еще не имели цельного мнения, как должна выглядеть наша программа. Поэтому интерфейс программы и функционал приходилось разрабатывать что называется на ощупь. Я мечтал быстрее закончить работу над программой и быстрее использовать ее в торговле. Однако, оказалось, что создание программного продукта – это процесс практически бесконечный, как и эволюция. Для тертых разработчиков это не является секретом, более того, это единственно-возможный путь разработки качественного коробочного программного обеспечения, но для меня дилетанта ай-ти дел, это стало неожиданным сюрпризом. Мы с Дмитрием постоянно договаривались о сроках сдачи, но новые задания все увеличивались, а сроки выпуска все отодвигались. Постоянно надо было что-то доделать, переделать и конца и краю этому не было видно. Получается, что мы сами росли и развивались вместе с программой, поэтому и постоянно выдвигали все более новые критерии и требования к нашей разработке.
Скажу, что разработка программы продвигалась медленно. Первое, Дмитрий был еще не столь опытным айтишником, а второе он еще учился и причем на «отлично», а это требовало немало усилий, поэтому у него было не там много свободного времени. Случались и кризисы, когда мне заявляли мои знакомые или друзья: «…сколько можно тратить времени и сил и денег на эту бесполезную работу, просиживая вечера и выходные дни за компьютером, кому нужна эта программа?...». Были периоды безденежья, Порой все наваливалось разом: усталость, критика, кризис идей, безденежье, тогда случались депрессии. Иногда руки опускались и ничего не хотелось делать.
Сейчас я это вспоминаю как старый фильм, где я был не участником, а зрителем. За период пять лет, в течении которого разрабатывалась программа было выпущено много версий и релизов программы. За время разработки мы с Дмитрием провели сотни тестов и экспериментов, подбирая необходимые параметры и коэффициенты, а также проверяя различные наши идеи и гипотезы. Бывали и дискуссии и споры, но заканчивалось они все благополучно.
Помню, как много усилий было отдано созданию функции «Тестирование и оптимизация торговой системы - ТС». Я просиживал за ПК дни на пролет, включаю ночи, делая и делая тесты, - сотни тестов, проверяя корректность работы торговой системы и расчета показателей ТС. Процесс тестирования настолько мне опостылел, что порой только от одной мысли о нем, хотелось вопить. Иногда для тестирования программы я привлекал знакомых студентов, оказывая им материальную поддержку. Не передать моего счастья, когда Дмитрий выпустил версию с частичной автоматизацией процесса тестирования!
Оглядываясь в прошлое, вспоминая сделанную работу: сотни листов документации – ТЗ, сотни экспериментов и тестов, бесконечные встречи и переговоры, - не верится, что мы все это осилили. Сейчас же пользователь может легко и просто протестировать торговую систему на истории за несколько лет и получив все основные показатели и даже график кривой счета.
Совместно с Дмитрием, в творческом тандеме были реализованы оригинальные функции, например, четыре типа торговых тактик, показатель прогноз прибыли, который указывает на «сильные» и «слабые» бумаги, текстовые описания к каждому торговому сигналу и многое другое.
Да, но мне следует сказать еще про одного участника нашего проекта – вебмастера Алексея. Он помогал решать задачи по активации и защите программы, а также сервисному обслуживанию на сайте. Кроме этого он также поддерживал актуальность баз данных и работоспособность серверной части программы, без которой она не могла бы полноценно функционировать.
Когда все только начиналось, я планировал разработать программу и использовать только для себя, но в процессе ее создания мы пришли к выводу, что программа должна быть коробочной и ее надо сделать доступной для других.
Существенно то, что совместная работа над проектом позволила всем ее участникам лучше разобраться в деталях трейдинга, методах оценки торговых систем, а также в потребностях трейдеров и инвесторов. Безусловно, что за время разработки все мы более стали опытнее, а программа - совершеннее. Мне повезло, что моим партнером по проекту выпало стать именно Дмитрию. Думаю, так как без его энтузиазма, творческого подхода и огромного трудолюбия программа не стала бы такой уникальной и классной. Кстати, название персональный торговый советник - Personal Investment Adviser, а сокращенно PIAdviser придумал Дмитрий.
Первая публичная версия программы для пользователей была выпущена в августе 2005 года. С этого момента она находится на сайте i-tt.ru в свободном доступе, ее можно cкачать и 14 дней бесплатно протестировать. Немного позже появились три модификации программы: версии Web Edition для вэб-браузера и локальные версии: Classic Edition и Premier Edition.
Начиная с 2005 года уже было выпущено порядка 29 релизов. Развитие и совершенствование программы продолжается. В 2014 году у программы насчитывалось уже более двадцати тысяч зарегистрированных пользователей (юзеров). Вот такая вот история, из идеи сделать программу для себя получился коробочный продукт, который стал популярным на российском рынке, его оценили и покупают.
Personal Investment Adviser
Общий Telegram-чат для вопросов, для трейдеров и инвесторов