Dr. K. L. Metlov (dr_klm) wrote,
Dr. K. L. Metlov
dr_klm

Categories:

пузыри и спекуляция в экономике роботов

Тема пузырей сама по себе интересная, а надувшийся недавно долларовый пузырь в России делает её ещё интереснее. Ну а я давненько не брал в руки шашек, вот и подумал просимулировать экономику роботов, оценить роль спекулянтов, посмотреть как формируются пузыри.

Расчёты базируются на модели Кена Стиглица (Kenneth Steiglitz, не путать с нобелевским лауреатом Джозефом Стиглицем), которая реализована в виде программы на языке J в файле steiglitz.ijs. Почему эта модель ? Потому что она простая и очевидная. Она сама мне пришла в голову и только потом я нашёл (зная что искать) работы Стиглица, который первым исследовал эту модель в середине 90-х.

В основном мы будем следовать этой работе, но продвинемся немного дальше.

Итак, предположим у нас есть экономика с одним видом товара (едой, food) и деньгами (gold). Населяют эту экономику роботы. У каждого робота есть собственные запасы еды (свой склад) и денег (свой кошелёк). Хранилище для еды (идеальный уровень запасов) у каждого робота разное и выбирается случайно в некотором интервале значений. Роботы умеют производить либо еду, либо (копать) золото. Эффективность этих действий у каждого робота тоже разная, и определяется его личным уровнем навыков. Навыков этих два -- навык производства еды и навык производства золота. Если робот решает производить еду, то его запас еды за один ход увеличивается на величину его навыка по производству еды, если решает производить золото, то, аналогично, его золотой запас увеличивается на величину навыка в производстве золота. Как робот решает ? Очень просто, исходя из текущего уровня цены. Если произведенная этим роботом за ход еда стоит больше произведённого им же за ход золота -- он производит еду. Если еда стоит дешевле -- производит золото. На каждом ходу робот так же потребляет единицу еды.

Каждый робот, таким образом, характеризуется тремя случайными числами -- навыком на производство еды, навыком на производство золота и его личным предпочитаемым уровнем хранимых на складе запасов еды. Логика, описанная в предыдущем абзаце, реализована в программе глаголом aprod.

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

И вот, роботы подали заявки. Как проходит аукцион ? Тоже очень просто. Строятся кривые спроса и предложения. Их пересечение определяет текущий уровень цены (в программе его вычисляет глагол auction). Выглядят они примерно так

верхняя кривая -- спрос (при некоторой, отложенной на горизонтальной оси, цене; точнее, на данном графике отложен индекс значения цены, но вы поняли ;-), а нижняя -- предложение. Точка на горизонтальной оси, где кривые пересекаются, дает текущую цену данного аукциона. Потом, когда цена определена, все торги (реализованные глаголом trade) проходят при этой цене (тоесть, если заявка робота "играет" то сам акт купли-продажи осуществляется по этой цене). Удовлетворяются все предложения по продаже, в которых выставлена цена ниже цены аукциона и все предложения по покупке, в которых цена выше. Остальные заявки игнорируются.

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

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

Как эволюционирует цена ? А вот так

Цена периодически флуктуирует вокруг её равновесного значения (равного примерно единице при использованных параметрах модели). Почему так ? Очень просто. Роботы то тупые ! :-) Они ни на что, кроме текущей цены не смотрят. Едят пока есть еда в запасах, потом, когда еда заканчивается (а цена вырастает) начанают лихорадочно производить, потом опять, наработав запасы еды (которой становится "как грязи" а её цена падает, практически до нуля), расслабляются. Вот такие они -- экономические циклы ! ;-)

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

На этом графике роботы слева -- неумёхи, а справа очень талантливые производители пищи. Каждая кривая -- среднее за 100 дней (тоесть за 200 дней мы получаем две кривых). Синяя -- первые сто дней, красная -- вторые. Как видим, бедные стали беднее, а богатые стали богаче.

Такая "идиллия" продолжалась бы до бесконечности, если бы не было спекулянтов. Мы их включим в игру на 200-й день. Спекулянтов будет два вида и они будут умнее простых роботов. Первый вид спекулянтов (с позывным DER, реализованный глаголом ader) умеет считать вторую производную истории изменения цены и понимает, таким образом, когда цена начинает ускоренно расти вверх. Тогда он выставляет заявку на покупку (используя всё своё золото) по цене выше текущей на некоторую, присущую одному ему, случайную маржу. И ждёт. Когда потом он видит, что цена начинает ускоренно падать, он продаёт свой запас тоже с маржой. Второй вид спекулянтов (с позывным AVG, реализованный глаголом aavg) ещё умнее ! Он знает "истинную" цену еде ! ;-) Вычисляет он эту цену путём усреднения исторической цены по некоторому временному окну, с затухающим весом (ширина этого окна определяется параметром beta). Зная цену, AVG ставит заявки на покупку, когда цена опускается ниже известной ему "реальной" цены на некоторую маржу, и заявки на продажу, когда цена поднимается выше (на ту же маржу).

Роботы-спекулянты, таким образом, характеризуются величиной маржи, а робот AVG ещё и параметром beta, определяющим длину его памяти. Кроме того, для простоты предположим что спекулянты не едят. ;-) Рационализировать это можно так, что рабочим роботам еда нужна для производства (которым они занимаются на каждом шаге), а, раз спекулянты производством не занимаются, то еда им не нужна.

И вот как будет выглядеть эволюция цены, когда на 200-м шаге мы введём в игру спекулянтов (т.е. до 200-го шага им не разрешалось давать никаких заявок).

Что мы видим ? Во-первых, флуктуации цены значительно уменьшаются ! Рынок как бы становится стабильнее. Во вторых, если глянуть на распределения богатства от уровня умения

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

Общий уровень богатства (сумма всего золота и текущая стоимость всех запасов еды)

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

У спекулянтов тоже особой халявы не наблюдается. Если посмотреть на их богатство

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

Можно было бы из всего этого сделать (и он сделан многими) вывод о безусловной полезности спекулянтов. Цену стабилизируют, "стабильность" приводит к социальной справедливости, формируют средний класс, дают другим заработать (а сами либо еле концы с концами сводят, либо довольствуются малым). Ну просто лапочки, а не спекулянты ! ;-)

Есть, однако, тут одно "но"...

Пузыри. Я не зря симулировал экономику для этой иллюстрации на протяжении 1000 дней, а строил на графиках выше только до 800-го. Это потому, что, если нарисовать цену дальше

мы увидим тот самый, гигантский экономический пузырь ! Да, да, вот тот пик справа -- это он самый и есть. Тоесть вот оно -- тишь да гладь, полный стабилизец. А потом, вдруг ! Ни с того ни с сего ! Цена еды кааак выростет !

Что же происходит ? Давайте ка посмотрим на этот пик поближе

Нет, это не одна точка. Это десяток точек во время которых жизнь роботов кардинально меняется. Но почему ? Давайте нарисуем их запасы еды и золота

Что мы видим ? Золото практически стабильно. А с едой, действительно, что-то странное. Мы видим, что роботы снова расслябляются от стабильной хорошей жизни. Накопившие запас, спекулятнты AVG начинают поддерживать цену да так хорошо, что обычные роботы снижают своё производство. Ну а зачем работать, если еда есть в магазине, цена не меняется ? Вот они и бросают производство еды. Некоторое время (за счёт запасов) это не производит видимого эффекта, только общий запас еды на складах падает и падает... Со временем, это приводит к дефициту. Цена начинает расти. В игру тут же включаются, спавшие раньше, спекулянты DER, которые усиливают тренд, делая его ещё выше. Тренд становится таким высоким, что в него начинает верить и AVG, поддерживая высокую цену и так до тех пор, пока не включится производство и цена снова не упадёт.

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

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


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

Если построить общее богатство за весь период времени

мы снова увидим гигантский пик, когда все сидят на уменьшающихся запасах еды, цена которых, тем не менее, растёт и чувствуют себя богатыми буратинами. Потом, конечно, наступает прозрение...

Но кто же платит за "банкет" ?

Построим ещё раз распределение богатства по уровню умения.

Этот график полностью аналогичен, тому, который мы строили выше для "золотого века" спекулянтов. С той лишь разницей, что на нём добавились две линии. Одна из них (так получилось) прошла всё ещё до пузыря (и демонстрирует уже известный нам тренд социальной стабильности) другая (самая верхняя голубая линия) построена после того как пузырь лопнул. Посмотрите на её левую часть ? Где бедные ? Где средний класс ? Вот они то за "банкет" и заплатили. Заметьте ещё ряд пиков на голубой линии в самой левой части. Это "миллионеры из трущоб", прямо как 90-е. :-)

update 24.12.1012: попробовал запустить свою программу под Windows и обнаружил, что получаются другие графики. Это может быть либо потому, что там другой генератор случайных чисел, либо (за счёт, скажем, векторизации) вычисления ведутся с другой точностью. Решение задачи нестабильно (в этом, собственно, главное его свойство), а значит имеет свойство усиливать такие нюансы. Поэтому, если хотите получить точно такие же графики как у меня, попробуйте использовать такую же 32-битную версию J803 для Linux. Под Windows эволюция получается немного другой (но она показывает те же особенности, просто, может быть не так наглядно, как приведенные здесь графики). Может быть можно подобрать другие параметры, при которых эволюция под Windows даст такой же наглядный результат, но я этого сделать не могу, поскольку Windows у меня нет.
Tags: j, popul, sci
Subscribe

  • Дмитрий Муратов

    Не знаю кто такой Дмитрий Муратов, никогда не слышал о нём. Но, если ему дали Нобелевскую премию мира -- хорошим человеком он быть не может.

  • украинская государственность

    шагает семимильными шагами. ;-) Причём, всё быстрее. Вот вроде бы только-только была "не Россия", потом стала "анти-Россия", совсем недолго побыла…

  • Украина: от анти-России к лже-России

    Многие сочувствуют нам в Донбассе. Здесь под украинскими обстрелами постоянно гибнут дети, разрушаются жилые дома. Гибнут здесь и украинские солдаты,…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 14 comments

  • Дмитрий Муратов

    Не знаю кто такой Дмитрий Муратов, никогда не слышал о нём. Но, если ему дали Нобелевскую премию мира -- хорошим человеком он быть не может.

  • украинская государственность

    шагает семимильными шагами. ;-) Причём, всё быстрее. Вот вроде бы только-только была "не Россия", потом стала "анти-Россия", совсем недолго побыла…

  • Украина: от анти-России к лже-России

    Многие сочувствуют нам в Донбассе. Здесь под украинскими обстрелами постоянно гибнут дети, разрушаются жилые дома. Гибнут здесь и украинские солдаты,…