Neuronomics. Идея для стартапа 2030 года

Пять лет назад меня осенила идея. Я решил смоделировать ни много ни мало мировую экономику, для того чтобы точно знать какую динамику ожидать от акций, облигаций, курсов валют и т.д. Была только одна маленькая проблемка, модели всего этого не существует. И хуже того, экономисты десятки лет спорят, какая из их куцых эконометрических моделей хотя бы приблизительно верно описывает эти сложнейшие процессы. Поэтому, вместо попыток натянуть выдуманную (и конечно безумно упрощенную) модель на многоликую реальность я вступил на концептуально иной путь — моделировать агентов на микроуровне, чтобы они в изнуряющей борьбе за выживание, путем проб и ошибок приходили к равновесному состоянию, которое на макроуровне выражается в динамике цен, ставок и т.д.

Результат моих исследований описан ниже. Для визуализации записал движение агентов и каждый пиксель в этом видео, скрывает за собой нейросеть, т.е. мозг агента, бьющегося за выживание в конкуренции с подобными себе в жестоком мире наживы и чистогана.


Зачем это вообще нужно легко понять, например, по актуальным сейчас спорам вокруг «торговых войн». Одни (в основном профессиональные экономисты) говорят, что тарифы вредят в конечном итоге экономике в целом. Другие же думают, что страна окажется в выигрыше.

Проверить и доказать на фактах тут ничего нельзя, ведь никто не может поставить эксперимент при прочих равных на одной и той же экономике. Тогда как описанный ниже метод позволяет контролировать условия и получить доказательство наличия или отсутствия выгод того или иного решения.
Содержание:

  1. Общее описание концепции
  2. Описание реализации прототипа (PoC)
  3. Направление развития


1. Общее описание концепции


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

  • Модель Обстфельда-Рогоффа
  • Модель Дорнбуша
  • Монетарная модель Френкеля-Мусса


И это далеко не полный список. Причем одни и те же факторы, например рост дефицита в разных моделях дают противоположный по направленности результат в отношении влияния на валютный курс. Казалось бы, что может быть проще, чем посмотреть на динамику дефицита бюджета и сравнить с курсом?

На практике затруднения такого подхода связаны с проблемой «комбинаторного взрыва», когда действуют сотни разнонаправленных факторов и, хотя действие каждого из них по отдельности может быть еще как-то понятно, их результирующую практически невозможно рассчитать. Ситуация осложняется тем, что в реальной жизни невозможно поставить контролируемый эксперимент, зафиксировав все параметры кроме одного.

Можно подумать, что курс это уж очень сложная штука, однако это касается самых базовых и ключевых понятий, например инфляции. Это основной параметр, регулировать который призваны почти все центробанки мира. Казалось бы, тысячи теоретических ученых и практиков уже давным-давно должны были разобраться в механизме данного явления. Однако член совета директоров Федеральной Резервной Системы (Центробанк США) Даниеэл Тарулло пишет в 2017 году:»Мы до сих пор не имеем теории инфляционной динамики, которая была бы эффективной в режиме реального времени».

Между тем именно инфляция является одним из главных основанием для решений ФРС поднять или опустить ключевую ставку, что оказывает мощнейшее влияние на много триллионные рынки акций и облигаций по всему миру.

Таким образом, понимание принципов функционирования макроэкономики дает возможность применять правильные модели и как следствие эффективно предсказывать развитие ситуации.
Для достижения такого понимания необходимо реализовать крупномасштабную модель экономики, включающую в себя все основные факторы и отрасли, существующие в реальной жизни. Главное отличие данной модели от существующих в отказе от попыток делать предсказания заведомо «правильных» результатов. Вместо этого, в данной работе, используется подход эволюционной борьбы агентов на микроуровне, когда неверные решения ведут к элиминации агентов из генофонда, а те решения, которые ведут к положительному финансовому результату, сохраняются и успешно распространяются при помощи генетического алгоритма.

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

2. Описание имеющегося прототипа


Для проверки работоспособности концепции, т.е. доказательства того, что агенты, действуя на микроуровне, в принципе способны достигать равновесных состояний преследуя только одну цель — выжить, была разработана сильно упрощенная (по сравнению с реальной экономикой) модель, описанная ниже.

Это мир населенный агентами — т.е. жителями, каждый из которых представляет собой отдельную нейросеть, которая анализирует окружающую действительность и принимает те или иные решения. В момент запуска программы нейросетки инициализируются случайными значениями и дальше только те, кто по воле случая «сообразит» как добывать ресурсы и размножаться передают свои гены потомкам, подобно тому, как это происходит в нашей замечательной объективной реальности.

rmpxslkex6af3yywegnsbg7mcu8.jpeg

Каждый из этих жителей получает определенную сумму денег. Также агент является резидентом одной из двух стран: условные «США» или «Еврозона». В каждой стране есть своя валюта: «доллар» и «евро». Агенты обладают способностью производить один из двух видов товаров: «сыр» и «вино».

В каждой стране ~50% агентов это «девочки» и они умеют хорошо производить сыр. Особенно хорошо у них это получается, если у них есть вино. Само вино они тоже умеют производить, но получается у них это плохо. Т.е. у каждой единицы товара есть измерение — качество (от 0 до 100%) и если девочки делают сыр, но у них нет вина, то качество получается 10%, но с винишком получается все 100%.

Вторая половина агентов это мальчики и они хорошо лежат на диване делают вино. Особенно если перед этим пожрут сыр. А сыр они делают плохо, в общем, у них все симметрично относительно девочек.

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

Кроме того агенты могут торговать валютой. Например, агент из Европы может продать произведенный (или даже купленный ранее) сыр за доллары, затем поменять их на евро и купить на них еду. Вся торговля осуществляются путем выставления заявок на аукционы. В заявке указывается, какой продукт агент хочет продать (или купить), желаемую цену, качество и дельту на которую он готов подвинуться. Все эти решения агенты принимают на основании команд от нейросетей. Т.е. на вход подается информация об окружающем мире, такая как:

  • курсы валют актуальные на текущий день (т.е. не история изменений, а какой курс установлен в ходе последней состоявшейся сессии);
  • количество проданных товаров во всем мире, средняя цена продукта и средний возраст.


А так же агенту поступает информация о собственном состоянии:

  • сколько у него есть валюты (и по какой цене он её приобрел)
  • сколько товара, качество это товара, его себестоимость и т.д.
  • состояние собственного здоровья


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

Если агент действует эффективно, т. е. способен добыть продукт который не может произвести сам и потребляет его, то он получает «жизненную силу». Поддержание любой активности требует этой жизненной силы, в том числе возможность размножаться требует особенно много энергии. Если встречаются два агента разного пола, то они могут принять решение (уберите детей от экранов) заняться сексом и породить еще одного агента.

С каждым прожитым днем жить становится труднее (отнимается больше жизненных сил) и когда их запас иссякает, то агент умирает и передает накопленный запас денег своему наследнику.

Ключевой факт в данном эксперименте заключается в том, что количество долларов и евро в системе строго ограничено и соотношение общего количества валют примерно 1 к 3. Сами агенты об этом не знают. У них есть только некая сумма на руках и они понятия не имеют, сколько денег обращается во всей экономике. Т.е. им не указывается, по какому курсу нужно менять деньги, да и вообще все цены они устанавливают сами. Способность агентов прийти к равновесному курсу, который мы знаем, владея всей полнотой информации, равен 3 к 1, является доказательством концепции возможности нахождения эффективного решения без учителя.

Иными словами, если агенты найдут равновесный курс в результате естественного отбора в упрощенной модели (две страны, две валюты, два товара), то есть вероятность, что они смогут это же сделать и в модели более приближенной к реальному миру.

На картинке ниже мы видим, сколько евро гуляет по рукам внутри Еврозоны и сколько евро обращается во вне (т.е. в данном случае в США). То же самое мы знаем и насчет доллара.

bap0hrqyv_9ojch7sbkl1d13nny.png

Бурная динамика вначале связана с особенностью реализации (так было проще) и роли не играет. В этот момент агенты только учатся ходить и размножаться хоть как-нибудь. На картинке ниже мы видим реальное соотношение денежных масс двух валют (красная линия) и тот средний обменный курс (по итогам всех сделок за день), который сложился у агентов.

c_cuh14mpygxwhmxw3krszxe164.png

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

Однако пока что у нас нет уверенности, что это не случайность. Изменим условия эксперимента, пусть соотношение количества денег будет примерно 1 к 4.3 и посмотрим, что будет в этом случае:

lg_orkwvypubaghwxvulud1p3s8.png

И вновь агенты, приходят к равновесному значению. Теперь, глядя на графики, может показаться, что все это само собой разумеется, однако в действительности несколько лет было потрачено на то, чтобы процесс начал сходиться. В частности оказалось, что критичную роль играет количество агентов, когда их относительно мало, то процесс получается гораздо менее стабильным и для решения проблемы пришлось писать распределенное приложение, выполняющееся на трех ПК одновременно.

Основная сложность заключалась в том, что простого увеличения количества агентов мало, ключевым компонентом успеха оказалось необходимость их кластеризации. Иными словами, эффективным оказалось развитие не 100 (число условное) агентов в одном общем пространстве, а когда они разбиты на 10 «городов» по 10 штук в каждом. Т.е. торговые площадки остаются глобальными и любой агент может торговать с любым другим, но генетический код эволюционирует в пределах своей группы. Только при соблюдении этого условия курс начал сходиться к равновесному.

Приведу несколько важнейших параметров рабочей версии:

  • 60 городов
  • 5000 жителей в городе
  • 4 блока нейросетей (размножение, производство, торговля товарами, торговля валютой)
  • нейросети прямые, двуслойные, с регуляризацией (есть подозрение, что лучше будет работать LSTM)


3. Направление развития


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

hqlzyowrh3ffuadcfdvqlfnjdzu.png

А теперь еще учтем, что есть влияние Китая, Канады, Японии и т.д. Можно конечно посчитать это в виде VAR-регрессий (что и делается, только без особого успеха, см. комментарий Тарулло), однако, во-первых это бесконечное упрощение реальных процессов, а во вторых количество известных комбинаций на порядки меньше, чем потенциально возможных. Так что можно представить себе качество такой модели.

Альтернативой этому является моделирование реальных процессов на микроуровне только с большей вычислительной мощностью. Если окажется, что результаты множества запусков будут сходиться к одному и тому же решению и это будет подтверждено наблюдениями на практике, то это будет невыразимо мощный инструмент, как для инвесторов, так и для регуляторов типа ЦБ.
Очевидно, что для модерирования приближенной к реальности макроэкономической системы необходимо гораздо больше модулей. Необходимо разработать архитектуру приложения, способного запускаться в распределенном по кластеру режиме (одновременно на всех нодах) и реализовать следующий функционал:

  1. Агенты — физлица. Могут обучаться, т. е. повышать свою производительность. Могут устраиваться на работу к агентам: фирмам, в банки или в госаппарат. Могут делать покупки, болеть, выходить на пенсию, делать вклады или брать кредиты. Могут покупать долю в фирмах (компаниях), т.е. становиться акционерами.
  2. Агенты — фирмы (компании) которые нанимают физлиц и платят им зарплату. Произведенный продукт реализовывают на рынке. Могут делать вклады или брать кредиты. Способны платить налоги и уклоняться от них. Фирмы могут производить товары и услуги, такие как: еду, одежду, транспорт, жилье, нефть, средства производства, развлечения, частная медицина.
  3. Агенты — банки, предлагают депозиты и кредиты. Нанимают сотрудников (агентов физлиц), осуществляют взаимодействие с ЦБ.
  4. Минфин — управляется напрямую (т.е. не через моделирование нейросетями). Задает правила налогообложения (НДС, НДФЛ, социальные налоги, налог на прибыль корпораций, экспортно/импортные пошлины и т.д.). Определение уровня расходов на сферы здравоохранения, образования, обороны, пенсионного обеспечения. Выпускает гособлигации. Эти все значения публикуются госорганами и вводятся в модель экзогенно.
  5. ЦБ — также экзогенные параметры, такие как операции по генерации и стерилизации денежной массы. Управление ключевыми ставками.
  6. Госаппарат — набор специфичных агентов физлиц реализующих госуслуги (здравоохранение, образование, оборона, правоохранительные органы).
  7. Судебная система — степень хаоса в модели. Представляет собой набор коэффициентов, которые увеличивают или уменьшают риски для бизнеса. Например, коэффициент 0.1 означает, вероятность в 10% потерять фирму в результате рейдерского захвата. Или несправедливого начисления налогов и т. д.
  8. Площадки для совершения сделок с валютой, акций, облигаций, товарами, вакансий, финансовых услуг (кредиты/депозиты).
  9. Вспомогательные экзогенные параметры: запасы нефти, легкость ведения бизнеса, среднее время жизни и т.д.


Такой набор функций необходимо будет реализовать для нескольких крупнейших экономик (США, Китай, Еврозона и т. д.). Пропорции в кол-ве агентов, ключевые параметры, коэффициенты и т. д. должны быть настроены в соответствии с результатами международных исследований (МВФ, ООН и т. д.).

Ключевая трудность: реализовать быстрые и надежные алгоритмы распределенного совершения сделок и операций. Если делать все последовательно, никаких ресурсов не хватит, чтобы весь описанный функционал отработал за приемлемое время. Необходимо предусмотреть высокую масштабируемость, позволяющую подключать дополнительные вычислительные мощности «на лету», а также максимально простое добавление функционала в ходе продвижения разработки.

И все это конечно требует технологий BigData. Прототип был написан на C#, однако сегодня бы выбрал легко масштабируемые SpringBootYarn + HBase. Собственно думаю основная причина, по которой это до сих пор не реализовано в том, что это требует огромного количества ресурсов, в смысле железа + хорошей экспертизы в дешевых технологиях типа Hadoop. Ну и сама идея также не тривиальна. По крайней мере, нигде не встречал ничего подобного. Пользуясь случаем, прошу коллективный разум кидать ссылки, если кто-то знаком с работами в этом направлении.

Естественно, если до сих пор это держалось на энтузиазме, в свободное от работы время, с целью убедится в работоспособности концепции, то дальнейшее развитие требует full-time и больших финансовых вложений. Честно говоря, веры в многомиллионные инвестиции, которые необходимы для перехода от PoC к полноценной модели, у меня нет. Когда я начинал, думал что ресурсов это будет требовать на порядок меньше. Однако я убежден, что когда-нибудь эта идея обязательно найдет воплощение. По крайней мере, когда железо необходимое для таких объемов расчетов будет стоить намного дешевле и это станет доступно не только финансовым (и неповоротливым) гигантам, но и энтузиастам вроде меня.

Лирическое заключение:

Деньги это все конечно здорово, однако есть какое-то особенное удовольствие сидеть долгими зимними вечерами, глядя на копошение этих маленьких порождений моей воли. Есть в этом что-то приятное, от ощущения себя творцом, пусть такой примитивной, но все-таки жизни. Вполне возможно, что то мимолетное дрожание пикселя это любовный танец, призванный показать самочке, как щедро одарен жизненной силой наш самец и какая он выгодная партия для неё. И даже не исключу, что чуют они в этом бытие какой-то свой, невыразимый, пиксельный смысл…

© Habrahabr.ru