Пост о статье «Toward a theory of evolution as multilevel learning»

Дисклеймер: статья будет скорее фрагментированной, чем цельной(

Трейдинговая фирма, в которой я работаю, постоянно учится/эволюционирует/адаптируется, как совершать прибыльные сделки.

Есть несколько уровней, на котором происходит обучение/эволюция/адаптация, на каждом уровне появляются новые свойства:

  1. Уровень трейдеров - эти парни следят за рынком и и торговлей. Рынок ценных бумаг постоянно меняется, прибыльность стратегий тоже постоянно меняются, поэтому они вынуждены искать новые и новые способы зарабатывать больше, иногда просто сохранить прежний доход.
  2. Уровень трейдеров+разработчиков - разработчики создали систему для управления и аналитики, благодаря чему способности трейдеров усилились. Разработчиков самостоятельно рассматривать не вижу смысла, потому что без трейдеров они не нужны, а трейдеры без разработчиков что-то заработать смогли бы. На этом уровне появились новое свойство - автоматизируемость. Но теперь для того, чтобы это новое свойство максимизировалось, необходимо трейдерам адаптироваться не только под рынок, а под изменения софта, написанного разработчиками. А разработчики в любом случае выступают в роли поддержки трейдеров.
    Дальнейшие уровни
  3. Добавляем капитал, внутренний или внешний - от этого существенно система не меняется, потому что трейдеры как и владельцы капиталов заинтересованы в максимизации прибыли, однако размер капитала будет создавать ограничения для бизнеса, например если его немного, то возможностей для создания мощного софта будет меньше. А если его очень много, то будут особые ограничения из-за безопасности
  4. Добавляем в рассмотрение других участников, который в образуют рынок. И тут начинается самое интересное, потому что каждый участник рынка может заработать только через убыток другого, потому что игра с отрицательной суммой (отрицательная, а не нулевая потому что есть налоги/комиссии/расходы). Под любой прорыв одного из участников весь рынок будет адаптироваться, стратегии работают временно, это как если бы шахта в любой момент исчезала и появлялась в случайном месте в скале, и нужно было сразу ее искать.

Но мы остановимся на 1 и 2 уровне, потому что мой уровень влияния на уровне лида одной из команд разработки, а значит мне пока хватит уровня выше, в котором связаны трейдинг и разработка. И важно, что я рассматриваю трейдинг+разработку как единое целое, потому что только при их объединении появляется бизнес, зарабатывающий деньги, как без софта, как и без трейдеров стабильные деньги на трейдинге уже не зарабатываются.

Фрустрации
а) Есть неустроенность между трейдерами и разработчиками, это типовая неустроенность между бизнесом и разработкой: разработчики хотят сделать работу “почище”, что бы это не значило, а бизнес хочет “фичи” быстрее. Благодаря такой неустроенности в нашей компании активнее внедряются практики методолгии “DevOps”, таким образом автоматизируется труд разработчика, он все меньше времени тратит на рутину.
б) Еще одна неустроенность между трейдерами и разработчиками: быстрая фича подразумевает некоторый поверхностный подход к ее разработке, поэтому ui/ux прорабатывается в последнюю очередь, поэтому интерфейсы программ не такие удобные, как современные приложения, где важно сделать максимальным путь до кнопки “купить”.
Обе неустроенности формируют точку пересечения между “быстро” и “качественно/удобно”, и в разные моменты времени она может меняться в ту или иную сторону. Но так или иначе все “поделки” в компании были созданы в моменты трудностей, связанных с этой неустроеннстью.

Если говорить о принципах эволюции, то вряд ли я смогу привести пример каждого уровня из своего рабочего проекта, но что-то будет:
а) Перенормируемость - торговлю можно представлять себе на разных уровнях: есть уровень сделки, потом идет уровень особой последовательности сделок, потом уровень торгового бота (тут уже к трейдерам добавился софт). И например, анализируя торговлю за квартал, не нужно думать о сделках и стратегиях (хотя для глубокого анализа нужно), можно анализировать либо прибыльность отдельных ботов, либо групп ботов, которые объединены в семейства по новому типу. Для разных задач анализируются разные уровни, например для проверки торгового бота происходят тесты на уровне микроструктуры рынка (выставление заявок, особенности книг ордеров, привязка к интерфейсам разных бирж)
б) Реаликация - это хорошо заметно на уровне разработки, программисты стремятся переиспользовать уже написанный код для экономии времени.
Расширение - если находится новая стратегия, то трейдеры будут стараться применить его везде до тех пор, пока не дойдет до предела, и в момент таких пределов тоже появляется поле для изобретений для его преодоления
в) Функция потерь - на разных уровнях они будут разные. Для рынка важно, чтобы было много объема (рынок для мира нужен, чтобы "с, ему больше ничего не интересна. Для компании это прибыль. А для трейдеров+разработчиков будут уже особые функции потерь - напрямую влиять на пнл уже сложно, но можно через другие метрики, например “время реагирования на рыночные измерения” и это метрика для софта, который пишут разрабы и которым пользуются трейдеры.

Мне кажется можно потратить с десяток часов, трактуя статью на мой рабочий проект.