По моему опыту в алготрейдинге (под алготрейдингом я подразумеваю поиск закономерностей и их использование) большая часть времени уходит на исследования, это примерно 90% времени. Однако, часто можно услышать критику примерно следующего плана.
- Нужно писать код на питоне/джаве, можно в два счета набросать торгового робота. Нафиг Си и С++, сложна.
- Не нужно изобретать велосипеды, все уже сделано за нас. Зря потратить время, бери готовое и действуй. Метатрейдер в помощь.
- Нужно всегда писать чистый код, а не говнокод.
Если все это верно, то получается, что успех в алготрейдинге (да и в IT) должен зависеть от этих факторов. Однако, к примеру, на практике большая часть доли в проекте принадлежит обычно не программистам (т.е. людям, которые вообще могут не уметь программировать), хороший код не обязательно принесет много денег, да и сложные алгоритмы порой без разницы, на каком языке реализовывать, быстрее они не напишутся.
Если объяснить проще, то успех не равен чистоте, хорошести и прочим характеристикам кода. Тогда почему происходит акцентуация на подобные факторы?
В качестве примера, возьмем начальное условие, что известен алгоритм «грааля» (допустим, случайно попала инсайдерская информация), но навыков в программировании ровно как у вчерашнего студента. И ситуация наоборот: допустим, навыки программирования как у senior'a, за плечами лет 20 работы в разных крупных фирмах, но при этом в трейдинге — полный ноль.
Сдается мне, в первом случае шансов построить рабочую ТС куда выше. Да и по опыту общения с прогерами могу сказать, что тру программисты обычно не столь рискованные парни, чтобы идти в подобные проекты. Поэтому во втором случае история даже не начнется (скорее всего).
Поэтому, я бы выделил другие важные пункты в алготрейдинге (и не только в алго):
- Нужно уметь работать с переживаниями. Эмоции могут влиять на восприятие, заставлять принимать неверные решения, вызывать избирательность внимания, что в конечном счете может свети результат работы к нулю, даже если это исследования. В алготрейдинге стресса хватает, поэтому этот пункт актуален. Ошибаются все люди, но если есть адекватное восприятие реальности, то после ошибки можно продолжить эффективно работать над проектом. Если же переживания поглощают сознание, то тут уже ничего не сделаешь, все пойдет по неудачному сценарию, так как по факту нет контроля над ситуацией, даже над самим собой нет контроля.
- Важно вовремя соскочить с идеи, если становится понятно, что идея не несет в себе смысла. К примеру, можно угробить на нейросети несколько лет, пытаясь заставить их прогнозировать рынок. А можно, повозившись с нейросетями месяц-другой, прийти к выводу, что эта задача данным инструментом просто так не решается, и приступить к другим исследованиям.
- Не путать скептицизм с предвзятым негативным мнением. Риск может быть уместен. Впрочем, данный пункт все алготрейдеры скорее всего соблюдают, иначе не пошли бы в данную сферу деятельности, а прислушались бы к мнению большинства.
- В разработках нужно уметь не зарываться в сами разработки, важен результат. Поэтому говнокод порой уместен.
- Если речь идет про создание достаточно сложной системы, то писать много кода придется в любом случае, и разница между Си, С++, джавой, питоном тут будет стираться. Если это высокочастотная торговля, то конечно выбор очевиден. Но в других случаях может показаться, что проще будет работать в более «простых» языках. На самом деле, если есть хоть какой-то опыт в программировании, то мне кажется что язык программирования не столь важен, он за вас сложный алгоритм не распишет и всю систему не выстроит. Гемороя будет в любом случае много, а современные языки во много схожи между собой, имеют схожий синтаксис. Не думаю, что тут есть принципиальная разница. Кто начал с питона, тому проще будет на питоне. Кто начал с Си, тому проще будет дальше на Си. Разве что для питона много библиотек для машинного обучения.
- Велосипед конечно не всегда нужен. Но на практике, если велосипед небольшой, на него не уйдет много времени, и уж точно он не станет черной дырой проекта, потому что черной дырой являются исследования закономерностей, которые могут при желания растянуться до бесконечности.
Лично я опыт в крупных фирмах не считаю, там в основном заняты политиграмы нежели поднятия квалификации.