Результат моих исследований описан ниже. Для визуализации записал движение агентов и каждый пиксель в этом видео, скрывает за собой нейросеть, т.е. мозг агента, бьющегося за выживание в конкуренции с подобными себе в жестоком мире наживы и чистогана.
Зачем это вообще нужно легко понять, например, по актуальным сейчас спорам вокруг «торговых войн». Одни (в основном профессиональные экономисты) говорят, что тарифы вредят в конечном итоге экономике в целом. Другие же думают, что страна окажется в выигрыше.
Проверить и доказать на фактах тут ничего нельзя, ведь никто не может поставить эксперимент при прочих равных на одной и той же экономике. Тогда как описанный ниже метод позволяет контролировать условия и получить доказательство наличия или отсутствия выгод того или иного решения.
1 Общее описание концепции
2 Описание реализации прототипа (PoC)
3 Направление развития
1 Общее описание концепции
Несмотря на то, что достигнуто достаточно хорошее понимание основных принципов функционирования экономики, есть большие трудности с применением знаний на практике.
Например, существуют следующие модели (теории) относительно принципов формирования валютного курса:
• Модель Обстфельда-Рогоффа
• Модель Дорнбуша
• Монетарная модель Френкеля-Мусса
И это далеко не полный список. Причем одни и те же факторы, например рост дефицита в разных моделях дают противоположный по направленности результат в отношении влияния на валютный курс. Казалось бы, что может быть проще, чем посмотреть на динамику дефицита бюджета и сравнить с курсом?
На практике затруднения такого подхода связаны с проблемой «комбинаторного взрыва», когда действуют сотни разнонаправленных факторов и, хотя действие каждого из них по отдельности может быть еще как-то понятно, их результирующую практически невозможно рассчитать. Ситуация осложняется тем, что в реальной жизни невозможно поставить контролируемый эксперимент, зафиксировав все параметры кроме одного.
Можно подумать, что курс это уж очень сложная штука, однако это касается самых базовых и ключевых понятий, например инфляции. Это основной параметр, регулировать который призваны почти все центробанки мира. Казалось бы, тысячи теоретических ученых и практиков уже давным-давно должны были разобраться в механизме данного явления. Однако член совета директоров Федеральной Резервной Системы (Центробанк США) Даниеэл Тарулло пишет в 2017 году: «Мы до сих пор не имеем теории инфляционной динамики, которая была бы эффективной в режиме реального времени».
Между тем именно инфляция является одним из главных основанием для решений ФРС поднять или опустить ключевую ставку, что оказывает мощнейшее влияние на много триллионные рынки акций и облигаций по всему миру.
Таким образом, понимание принципов функционирования макроэкономики дает возможность применять правильные модели и как следствие эффективно предсказывать развитие ситуации.
Для достижения такого понимания необходимо реализовать крупномасштабную модель экономики, включающую в себя все основные факторы и отрасли, существующие в реальной жизни. Главное отличие данной модели от существующих в отказе от попыток делать предсказания заведомо «правильных» результатов. Вместо этого, в данной работе, используется подход эволюционной борьбы агентов на микроуровне, когда неверные решения ведут к элиминации агентов из генофонда, а те решения, которые ведут к положительному финансовому результату, сохраняются и успешно распространяются при помощи генетического алгоритма.
Иными словами, подобно тому, как развивается реальная рыночная экономика, предложенный метод реализует принципы конкуренции и непрерывного развития, отбраковывает тех, кто принимает неэффективные решения. И уже глядя на то, к чему пришли агенты в этой борьбе мы сможем судить о том, что является равновесным состоянием при заданных условиях.
2 Описание имеющегося прототипа
Для проверки работоспособности концепции, т.е. доказательства того, что агенты, действуя на микроуровне, в принципе способны достигать равновесных состояний преследуя только одну цель – выжить, была разработана сильно упрощенная (по сравнению с реальной экономикой) модель, описанная ниже.
Это мир населенный агентами – т.е. жителями, каждый из которых представляет собой отдельную нейросеть, которая анализирует окружающую действительность и принимает те или иные решения. В момент запуска программы нейросетки инициализируются случайными значениями и дальше только те, кто по воле случая «сообразит» как добывать ресурсы и размножаться передают свои гены потомкам, подобно тому, как это происходит в нашей замечательной объективной реальности.

Каждый из этих жителей получает определенную сумму денег. Также агент является резидентом одной из двух стран: условные «США» или «Еврозона». В каждой стране есть своя валюта: «доллар» и «евро». Агенты обладают способностью производить один из двух видов товаров: «сыр» и «вино».
В каждой стране ~50% агентов это «девочки» и они умеют хорошо производить сыр. Особенно хорошо у них это получается, если у них есть вино. Само вино они тоже умеют производить, но получается у них это плохо. Т.е. у каждой единицы товара есть измерение – качество (от 0 до 100%) и если девочки делают сыр, но у них нет вина, то качество получается 10%, но с винишком получается все 100%.
Вторая половина агентов это мальчики и они хорошо лежат на диване делают вино. Особенно если перед этим пожрут сыр. А сыр они делают плохо, в общем, у них все симметрично относительно девочек.
Товары имеют свойство портиться со временем, т.е. с каждым днем качество продуктов падает. Для жизни и для успешного размножения каждый агент должен потреблять тот продукт, который он не умеет производить. Т.е. если агент хорошо производит сыр, то наиболее эффективно для него продавать сыр и покупать вино. Если спроецировать модель на реальную жизнь, то можно сказать, что пекарь хорошо производит булочки и успешно продает их, но для счастья ему нужна водка, селедка и гараж, т.к. одними булочками не обойтись.
Кроме того агенты могут торговать валютой. Например, агент из Европы может продать произведенный (или даже купленный ранее) сыр за доллары, затем поменять их на евро и купить на них еду. Вся торговля осуществляются путем выставления заявок на аукционы. В заявке указывается, какой продукт агент хочет продать (или купить), желаемую цену, качество и дельту на которую он готов подвинуться. Все эти решения агенты принимают на основании команд от нейросетей. Т.е. на вход подается информация об окружающем мире, такая как:
• курсы валют актуальные на текущий день (т.е. не история изменений, а какой курс установлен в ходе последней состоявшейся сессии);
• количество проданных товаров во всем мире, средняя цена продукта и средний возраст;
А так же агенту поступает информация о собственном состоянии:
• сколько у него есть валюты (и по какой цене он её приобрел)
• сколько товара, качество это товара, его себестоимость и т.д.
• состояние собственного здоровья
Нейросеть обрабатывает всю входную информацию и на выход подает решения, такие как: сколько произвести товара, какую цену и за какую валюту продать, по какому курсу поменять одну валюту на другую и т.д.
Если агент действует эффективно, т. е. способен добыть продукт который не может произвести сам и потребляет его, то он получает «жизненную силу». Поддержание любой активности требует этой жизненной силы, в том числе возможность размножаться требует особенно много энергии. Если встречаются два агента разного пола, то они могут принять решение (уберите детей от экранов) заняться сексом и породить еще одного агента.
С каждым прожитым днем жить становится труднее (отнимается больше жизненных сил) и когда их запас иссякает, то агент умирает и передает накопленный запас денег своему наследнику.
Ключевой факт в данном эксперименте заключается в том, что количество долларов и евро в системе строго ограничено и соотношение общего количества валют примерно 1 к 3. Сами агенты об этом не знают. У них есть только некая сумма на руках и они понятия не имеют, сколько денег обращается во всей экономике. Т.е. им не указывается, по какому курсу нужно менять деньги, да и вообще все цены они устанавливают сами. Способность агентов прийти к равновесному курсу, который мы знаем, владея всей полнотой информации, равен 3 к 1, является доказательством концепции возможности нахождения эффективного решения без учителя.
Иными словами, если агенты найдут равновесный курс в результате естественного отбора в упрощенной модели (две страны, две валюты, два товара), то есть вероятность, что они смогут это же сделать и в модели более приближенной к реальному миру.
На картинке ниже мы видим, сколько евро гуляет по рукам внутри Еврозоны и сколько евро обращается во вне (т.е. в данном случае в США). То же самое мы знаем и насчет доллара.

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

Тут видно, что средний курс сделок после некоторых блужданий вышел на целевой уровень. Целевой уровень это красная линия, т.е. реальное соотношение объемов валют и эта информация не доступна агентам.
Однако пока что у нас нет уверенности, что это не случайность. Изменим условия эксперимента, пусть соотношение количества денег будет примерно 1 к 4.3 и посмотрим, что будет в этом случае:
И вновь агенты, приходят к равновесному значению. Теперь, глядя на графики, может показаться, что все это само собой разумеется, однако в действительности несколько лет было потрачено на то, чтобы процесс начал сходиться. В частности оказалось, что критичную роль играет количество агентов, когда их относительно мало, то процесс получается гораздо менее стабильным и для решения проблемы пришлось писать распределенное приложение, выполняющееся на трех ПК одновременно.
Основная сложность заключалась в том, что простого увеличения количества агентов мало, ключевым компонентом успеха оказалось необходимость их кластеризации. Иными словами, эффективным оказалось развитие не 100 (число условное) агентов в одном общем пространстве, а когда они разбиты на 10 «городов» по 10 штук в каждом. Т.е. торговые площадки остаются глобальными и любой агент может торговать с любым другим, но генетический код эволюционирует в пределах своей группы. Только при соблюдении этого условия курс начал сходиться к равновесному.
Приведу несколько важнейших параметров рабочей версии:
• 60 городов
• 5000 жителей в городе
• 4 блока нейросетей (размножение, производство, торговля товарами, торговля валютой)
• нейросети прямые, двуслойные, с регуляризацией (есть подозрение, что лучше будет работать LSTM)
3 Направление развития
Если до сих пор не очень понятно, зачем это все нужно, попробуйте ответить на следующий вопрос – как изменится курс eur/usd если:

А теперь еще учтем, что есть влияние Китая, Канады, Японии и т.д. Можно конечно посчитать это в виде VAR-регрессий (что и делается, только без особого успеха, см. комментарий Тарулло), однако, во-первых это бесконечное упрощение реальных процессов, а во вторых количество известных комбинаций на порядки меньше, чем потенциально возможных. Так что можно представить себе качество такой модели.
Альтернативой этому является моделирование реальных процессов на микроуровне только с большей вычислительной мощностью. Если окажется, что результаты множества запусков будут сходиться к одному и тому же решению и это будет подтверждено наблюдениями на практике, то это будет невыразимо мощный инструмент, как для инвесторов, так и для регуляторов типа ЦБ.
Очевидно, что для модерирования приближенной к реальности макроэкономической системы необходимо гораздо больше модулей. Необходимо разработать архитектуру приложения, способного запускаться в распределенном по кластеру режиме (одновременно на всех нодах) и реализовать следующий функционал:
1. Агенты — физлица. Могут обучаться, т. е. повышать свою производительность. Могут устраиваться на работу к агентам: фирмам, в банки или в госаппарат. Могут делать покупки, болеть, выходить на пенсию, делать вклады или брать кредиты. Могут покупать долю в фирмах (компаниях), т.е. становиться акционерами.
2. Агенты — фирмы (компании) которые нанимают физлиц и платят им зарплату. Произведенный продукт реализовывают на рынке. Могут делать вклады или брать кредиты. Способны платить налоги и уклоняться от них. Фирмы могут производить товары и услуги, такие как: еду, одежду, транспорт, жилье, нефть, средства производства, развлечения, частная медицина.
3. Агенты — банки, предлагают депозиты и кредиты. Нанимают сотрудников (агентов физлиц), осуществляют взаимодействие с ЦБ.
4. Минфин – управляется напрямую (т.е. не через моделирование нейросетями). Задает правила налогообложения (НДС, НДФЛ, социальные налоги, налог на прибыль корпораций, экспортно/импортные пошлины и т.д.). Определение уровня расходов на сферы здравоохранения, образования, обороны, пенсионного обеспечения. Выпускает гособлигации. Эти все значения публикуются госорганами и вводятся в модель экзогенно.
5. ЦБ – также экзогенные параметры, такие как операции по генерации и стерилизации денежной массы. Управление ключевыми ставками.
6. Госаппарат — набор специфичных агентов физлиц реализующих госуслуги (здравоохранение, образование, оборона, правоохранительные органы).
7. Судебная система — степень хаоса в модели. Представляет собой набор коэффициентов, которые увеличивают или уменьшают риски для бизнеса. Например, коэффициент 0.1 означает, вероятность в 10% потерять фирму в результате рейдерского захвата. Или несправедливого начисления налогов и т. д.
8. Площадки для совершения сделок с валютой, акций, облигаций, товарами, вакансий, финансовых услуг (кредиты/депозиты).
9. Вспомогательные экзогенные параметры: запасы нефти, легкость ведения бизнеса, среднее время жизни и т.д.
Такой набор функций необходимо будет реализовать для нескольких крупнейших экономик (США, Китай, Еврозона и т. д.). Пропорции в кол-ве агентов, ключевые параметры, коэффициенты и т. д. должны быть настроены в соответствии с результатами международных исследований (МВФ, ООН и т. д.).
Ключевая трудность: реализовать быстрые и надежные алгоритмы распределенного совершения сделок и операций. Если делать все последовательно, никаких ресурсов не хватит, чтобы весь описанный функционал отработал за приемлемое время. Необходимо предусмотреть высокую масштабируемость, позволяющую подключать дополнительные вычислительные мощности «на лету», а также максимально простое добавление функционала в ходе продвижения разработки.
И все это конечно требует технологий BigData. Прототип был написан на C#, однако сегодня бы выбрал легко масштабируемые SpringBootYarn + HBase. Собственно думаю основная причина, по которой это до сих пор не реализовано в том, что это требует огромного количества ресурсов, в смысле железа + хорошей экспертизы в дешевых технологиях типа Hadoop. Ну и сама идея также не тривиальна. По крайней мере, нигде не встречал ничего подобного. Пользуясь случаем, прошу коллективный разум кидать ссылки, если кто-то знаком с работами в этом направлении.
Естественно, если до сих пор это держалось на энтузиазме, в свободное от работы время, с целью убедится в работоспособности концепции, то дальнейшее развитие требует full-time и больших финансовых вложений. Честно говоря, веры в многомиллионные инвестиции, которые необходимы для перехода от PoC к полноценной модели, у меня нет. Когда я начинал, думал что ресурсов это будет требовать на порядок меньше. Однако я убежден, что когда-нибудь эта идея обязательно найдет воплощение. По крайней мере, когда железо необходимое для таких объемов расчетов будет стоить намного дешевле и это станет доступно не только финансовым (и неповоротливым) гигантам, но и энтузиастам вроде меня.
Лирическое заключение:
Деньги это все конечно здорово, однако есть какое-то особенное удовольствие сидеть долгими зимними вечерами, глядя на копошение этих маленьких порождений моей воли. Есть в этом что-то приятное, от ощущения себя творцом, пусть такой примитивной, но все-таки жизни. Вполне возможно, что то мимолетное дрожание пикселя это любовный танец, призванный показать самочке, как щедро одарен жизненной силой наш самец и какая он выгодная партия для неё. И даже не исключу, что чуют они в этом бытие какой-то свой, невыразимый, пиксельный смысл…
ссылка на оригинал статьи https://habr.com/ru/post/465747/
Добавить комментарий