Каждый раз, когда я читаю что-либо об экономике, я постоянно пропускаю момент между “да, конечно, это всё очевидно” и “почему? как вы это получили?”.
Обычно это связано с тем, что примеры, которые можно привести из реальной жизни, либо элементарные, либо настолько сложные, что уже не помогают в понимании.
Но ведь для иллюстрации идей можно какую-нибудь симуляцию сделать? Не совсем из реальной жизни. Выкинуть незначимое, оставить важное и посмотреть, что получится?
Под катом я расскажу, как попытался написать эмулятор простейшей рыночной конкуренции и что в итоге получилось. Будет много графиков.
Что будем делать?
Рассматриваем, для начала, самую что ни на есть классику, всё как любит дедушка Адам Смит: у нас есть покупатели и производители товаров, которые конкурируют между собой.
Классическая теория утверждает, что в отсутствии других факторов (!) конкуренция между продавцами приводит к оптимизации издержек и установлению равновесной цены.
Более того, утверждается, что эта самая равновесная цена будет значительно ниже, чем если бы продавец был бы один (монополия) или несколько (олигополия).
Звучит здраво, логично, интересно. На практике мы, правда, это наблюдаем далеко не всегда. Слишком много дополнительных факторов.
Постараюсь сформулировать основные причины, почему “чистая” конкуренция практически не встречается в реальной жизни:
- кроме цен товаров, есть ещё понятие качества (иногда именно качество товаров приводится в качестве драйвера конкурентной борьбы), но, в отличие от цены, его гораздо сложнее формализовать
- продавцы товаров конкурируют не только между собой, но и с продавцами смежных товаров (даже если я очень люблю пиццу, меня можно уговорить купить бургер), а также с универсальным конкурентом “ничего не буду покупать”
- покупатели находятся не в равных условиях (есть люди богаче, есть беднее, есть более требовательные к качеству, есть менее)
- производители тоже находятся не в равных условиях (неравенство по капиталам, производственным возможностям, заметности на рынке)
- производители инвестируют заработанные средства в совершенствование своих производственных мощностей
- кроме самих участников процесса купли-продажи есть огромное количество внешних факторов (государства, с налогами и пошлинами, географическое сосредоточение, случайные факторы вроде неурожаев, катастроф или спонтанных человеческих решений)
Есть желание попробовать учесть все эти факторы, кроме последнего.
Формализуем задачу
Основные действующие лица:
- потребители (покупатели, граждане, citizens)
- фабрики (цеха, производители, продавцы, factories)
Потребители регулярно зарабатывают деньги и имеют потребность в продукте (product).
В нашей модели продукт будет только один. Он удовлетворяет разом всю пирамиду потребностей всех потребителей.
Все фабрики производят продукт, различия только в качестве и цене. Фабрики сами выходят на рынок и продают свой продукт гражданам, обойдёмся без посредников.
Цель потребителей — приобрести наилучший для них продукт, потратив минимум денег.
Цель фабрик — максимизировать свои капиталы.
Кроме того, что продукт у нас всего один, у него ещё есть объективная и прозрачная числовая характеристика его качества. И фабрики, и потребители одинаково это самое качество оценивают. Это свойства продукта, которое появляется вместе с его производством.
У фабрик есть какие-то производственные возможности: себестоимость (затраты, ниже которой продукт производиться не будет) и максимальное качество (значение качества, выше которого произвести продукт не получится).
После раунда продаж, фабрики инвестируют часть своих капиталов модернизацию. Т.к. научно-технический прогресс — штука сложная, алгоритм работает таким образом: каждая фабрика, у которой ещё есть деньги, тратит случайное число денег на случайное изменение своих производственных возможностей (может стать хуже).
Когда у фабрики заканчиваются деньги, она больше ничего не производит.
Полный рыночный цикл выглядит следующим образом:
- Фабрики, если могут, производят продукты и демонстрируют их на рынке
- Приходят потребители и выбирают наилучший для себя вариант (из доступных для них)
- Совершаются сделки
- Фабрики совершают модернизацию, если могут
И так — достаточное количество итераций.
Теория гласит, что в таких условиях фабрики будут жестко конкурировать между собой, что приведёт к снижению цены и/или качества продуктов.
Посмотрим, что будет на практике.
Начало реализации
В качестве инструмента для разработки я выбрал python Jupyter Notebook — среду, максимально дружественную к работе с данными, быстрым таблицам и графикам на скорую руку.
Сам процесс эмуляции казался не таким уж страшным, а для подведения результатов хотелось воспользоваться богатым инструментарием pandas.
Код доступен тут
Не думаю, что основная реализация кого-то заинтересует: три класса (фабрика, потребитель и продукт), функции для работы с экземплярами этого класса, функции “рынка”, всё в цикле, всё логируется, результаты пишутся в файл, дальше в дело вступает pandas.
Первые корректировки
Достаточно быстро стало понятно, что в модель можно и нужно вводить неравенство между людьми и между фабриками.
Отмечу сразу, на всякий случай, что названия распределений ниже условные, они взяты в кавычки и являются просто сжатой метафорой. Цели высмеять чьи-то политические убеждения или, тем более, продемонстрировать свои, не ставилось.
Попробовал несколько моделей распределения показателей:
- “коммунизм” — у каждого объекта какое-то случайное число, распределение вероятностей — равномерное
- “развитой социализм” — всё то же самое, распределение вероятностей нормальное (у большинства средняя зарплата)
- “современное общество” — “хвостатое” распределение вероятностей (миллионеры на большем расстоянии от средней зарплаты, чем нищие), функция random.gammavariate
Если для примера взять потребителей, то вид распределения их зарплат напрямую влияет на форму т.н. “кривой спроса” (зависимость доли людей, готовых купить товар, в зависимости от его цены):
Кривая спроса для трёх распределений дохода населения: “коммунизм” (equal), “развитой социализм” (normalize) и “современное общество” (gamma).
Как видно, в случае равномерного распределения кривая спроса превращается в ломаную спроса (вероятность купить 1 при цене товара меньше минимальной зарплаты, потом линейно уменьшается).
В случае равномерного распределения доходов кривая спроса становится похожа на сигмоиду.
В случае же распределения доходов, похожего на настоящее, сигмоида становится асимметричной. И становится более похожей на кривые спроса из учебников экономики:
Значит ли это, что в самой логике кривой спроса заложено неравенство в доходах? Нет, там же миллион факторов. Но мы можем грубо обобщить, сказав, что неравномерность в “силе спроса” (кто-то готов переплатить за чебурек, кто-то готов стоять час в очереди, а кто-то нет) распределена примерно так же, как и реальные доходы населения.
По аналогии можно построить кривую предложения.
Кривая предложения в данном случае — сколько заводов при каких ценах готовы производить продукт заданного качества.
Если мы возьмём 50 заводов, то кривая получается с большим число разломов, а при большом числе — стремится к прямой.
Кривая предложения для k=50 заводов
Кривая предложения для k=1000 заводов
Для получения кривой из учебника, требуется а) много продавцов, б) равномерное распределение по себестоимости.
Это неочевидно, интересно и требует дополнительно интерпретации.
Итак, первая победа.
У нас есть какие-то бледные подобия кривых спроса и предложения из учебников.
Закладываем неравенства и двигаемся дальше.
В большинстве случаев для распределений я заложил гамма-распределения (которые “хвостатые”):
- доходы граждан (см. график ниже, средняя зарплата 25, минимальная 5, максимальная 160 )
- стартовые капиталы фабрик (см. график, логика та же, разброс меньше)
- производственные возможности фабрик (предел качества от 2 до 30, себестоимости — от 1 до 5)
- шансы на успешную модернизацию (а вот они распределены нормально)
Стартовые условия граждан в модели (по горизонтали сумма зарплаты, по вертикали — число граждан, которые имеют такие доходы)
Стартовые капиталы фабрик в модели (по горизонтали капиталы, по вертикали — число фабрик, располагающих такими средствами)
Особенности национальной модернизации
Если бы у нас не было никаких изменений, долговременное моделирование не имело бы большого смысла. Модернизация означает, что фабрики будут пытаться конкурировать между собой. Тем, у кого большие продажи (стартовые капиталы, хорошие условия) не получится долго почивать на лаврах, конкуренты быстро приблизятся по цене и качеству производимых товаров.
Тем не менее, быстро стало понятно, что фабрикам нужна “память”. Часто получалось так, что успешная фабрика начинала цикл отрицательных модернизаций и теряла всё.
Поэтому пришлось добавить такую логику в алгоритм: если до модернизации были продажи, а после неё пропали, то следующий раунд модернизации будет в формате “откатываем всё назад”.
Параметры первой серьёзной эмуляции
Стартовые условия:
- число жителей, N=2000
- число заводов, k=50
- число раундов в модели, после которой смотрим результаты R=30
- чуть-чуть логики и много рандома
Результат пишем в два файла: лог граждан и лог фабрик.
Данные первого лога:
где
id — id купленного товара (надо было нормально назвать)
citizen_id — уникальный номер гражданина,
period — номер раунда эмуляции
money — его зарплата на этом раунде,
quality и price — качество и цена товара, который он купил в этом раунде (-1 в случае, если не купил ничего)
Второй лог
где
id — id фабрики,
period — номер раунда эмуляции,
capital — капитал фабрики на данном раунде,
pur — число продаж в этом раунде,
price — цена продажи
cost, quality — себестоимость и качество соответственно
lag — данные прошлого раунда
Кажется, пора смотреть результаты.
Смотрим результаты
Какой результат хочется посмотреть в первую очередь? Наверное, сколько заводов разорилось, не сумев выставить на рынок интересное предложение.
Итог такой.
- Совсем разорились (ушли в минус) — один завод. Sad but true.
- Нет денег на модернизацию — 45 заводов. Это почти разорились. Но если вдруг на их товар внезапно появится спрос, они, теоретически смогут выкарабкаться.
- Есть капиталы, нет продаж — 3 завода. Когда-то у них всё было хорошо, но потом их отстранили конкуренты.
- Есть капиталы, есть продажи — 2 завода. Один продаёт дорого товар максимального качества, другой — очень дёшево приемлемого качества. Картельный сговор, поделили рынок, вот это всё.
Хотя бы одну продажу за 30 раундов имели 11 заводов.
В динамике всё чуть сложнее. Данных много.
С теми заводами, у которых с продажами не получилось, как в счастливых семьях — всё примерно одинаково. Разница только в скорости падения.
Динамика изменения капитализации тех заводов, у которых не случилось продаж: все начинали из разных стартовых условий, тратили разные суммы на модернизацию, но итог один: все свалились “в ноль” или барахтаются около него.
Интереснее, но и сложнее с более счастливыми “семьями” — у кого продажи всё-таки сложились.
У нас есть чемпион, у которого всё хорошо (id=11) — есть продажи, капитал растёт. Но для того, чтобы найти свою аудиторию, потребовалось 7 ходов.
Единственный конкурент, имеющий продажи (id=0) смог выйти только на третье место по капиталу. Второе место (id=20) с 10 раунда почивает на лаврах и медленно теряет деньги. Остальные теряют деньги быстрее.
Стоит отметить, что наши лидеры по начальным условиям занимали разное положение. Второе место по капиталам “в итоге” (id=0) был абсолютным лидером по начальным капиталам, “победитель на рынке ширпотреба” (id=20) был в гуще лидеров, а вот “чемпион” занимал только 11 место по первоначальным накоплениям.
Кажется, ещё интересно посмотреть динамику продаж самих по себе.
Динамика числа продаж в разбивке по фабрикам.
По-горизонтали: номер раунда. По-вертикали — число потребителей (из 2000), которые делали покупки (у разных фабрик разные оттенки).
На что стоит обратить внимание?
Во-первых, на первом ходу далеко не все жители могли себе позволить купить хоть что-то (очевидно, это люди с минимальными доходами). Достаточно быстро это число сократилось до нуля, потом снова просело, а потом вышло на 100% снабжение.
Во-вторых, какая-то конкуренция была достаточно долго. На первом ходу 6 фабрик имели продажи, на четвёртом — 7, на пятнадцатом — 4. Долго было 3 продавца (у одного совсем микроскопические продажи) и только к 27 ходу его окончательно “отстранили от рынка”.
Кажется, стоит немного увлечься “ошибкой выжившего”?
Посмотрим на наших чемпионов подробнее?
Id=11 (top-1 по продажам и капиталу) “с раздачи” имел приемлемое качество, но высокую цену (price=37, при медианной зарплате в 27.5, т.е. большинство не могли себе позволить купить эту продукцию). Получил 8 процентов рынка. Сделал приемлемую в целом модернизацию — увеличил качество и поднял цену. Получил ноль продаж. Откатился назад. Получил почти 30% рынка (очевидно тут помогли провалы конкурентов). Сделал идеальную модернизацию — увеличил качество и снизил цену. Получил ноль продаж, увы, в этот момент вышли предложения ещё лучше. Для того, чтобы получить продажи потребовалась серия из 4 модернизаций “хотя бы не назад”. К девятому ходу предложение уже выглядело отличным — товар с качеством 43 за 21 (пользователи это отметили, давая ему две трети рынка). Но резкое поднятие цены — и снова ноль продаж. Затем три планомерных тренда: качество — лучше, цена — ниже, продажи — выше.
Динамика изменения основных параметров предложения фабрики id=11 (top-1 по продажам и капиталу).
Пик “карьеры” — 21 ход, 99% рынка, но стоит чуть-чуть поднять цену — и конкуренты тут как тут.
Единственный выживший по продажам, кроме лидера, имел с самого начала низкие цены и низкое качество. Продажи имел нерегулярно, основной вектор модернизации имел на снижении цен. Стабильность получил только на 25 ходу, когда при качестве в 31 смог продавать товар за 3. С тех пор он прочно занял свою нишу и успешно воюет за “низший средний класс”.
Пик “карьеры” — последний ход, 41% рынка.
Интересно, что случилось бы, если бы симуляция продолжилась ещё пару десятков ходов?
Динамика изменения основных параметров предложения фабрики id=0 (top-3 по капиталу, имеет продажи к концу симуляции).
Текущий top-2 по капиталу (id=20), не имеющий продаж последние 10 раундов был лидером по стартовым капиталам (поэтому и не смог потерять всё за 30 ходов), производил умеренно плохой умеренно дешёвый товар. Удачная модернизация качества позволила получить хорошие продажи и достаточно долго их держать. Ухудшение качества долго не сказывалось на доходах, т.к. цена снижалась. Всё закончилось на 20 ходу. Хорошая модернизация не спасла. Наверное, это обидно, иметь стабильные 10% рынка, одновременно улучшить качество и цену и потерять продажи (id=0 вышел с ещё более эффективной модернизацией).
Никакие дальнейшие действия не помогли ни вернуть старую аудиторию, ни найти новую. Тем не менее, от полного разорения фабрику отделяет от 8 до 20 раундов. Время, достаточное для того, чтобы могло наконец-то повезти.
Динамика изменения основных параметров предложения фабрики id=20 (top-2 по капиталу, не имеет продаж последние 10 раундов).
Кажется, какая-то закономерность прослеживается. Фабрики, которые предлагают более качественный товар по низким ценам процветают. Остальные умирают.
Посмотрим, как изменился рынок со стороны потребителя за 30 ходов.
Соотношение цена-качество на начальном этапе. Приводится 50 предложений продуктов на рынке.
По-горизонтали — цена продукта, по-вертикали — его качество.
Синим отмечен “выбор пользователя”, т.е. те продукты, у которых на этом раунде были продажи.
Тут хорошо видно, насколько в неравных условиях находятся фабрики. Кто-то может не делать ничего и иметь хорошие показатели. Фабрикам же “из правого нижнего угла” потребуется существенно больше действий для того, чтобы найти своего потребителя.
Как изменится картина к концу симуляции?
Соотношение цена-качество к концу симуляции. Синим отмечен “выбор пользователя”.
Если в начале большинство покупало товар качеством 26 за 18 (при этом были те, кто покупал товар качеством 30 за 42 и товар качеством 15 за 7), то в конце большинство покупает товар качеством 57 за 24 (а часть — товар качеством 28 за 1.16). Изменения налицо!
А как это выглядело в динамике?
Динамика изменения цены продаваемых товаров.
По горизонтали номер раунда, по вертикали — цена продажи, каждая фабрика отмечена отдельным цветом, чем больше радиус окружности, тем больше объём продаж.
Интересно, но в этой симуляции “премиальный” ценовой сегмент (из-за которого не было большого смысла смотреть среднюю цену или среднее качество) пропал как таковой.
Связано это оказалось с тем, что качество “масс- маркета” сравнялось с качеством “премиальных продуктов” достаточно быстро.
Динамика изменения качества продаваемых товаров
По горизонтали номер раунда, по вертикали — качество продукта, каждая фабрика отмечена отдельным цветом, чем больше радиус окружности, тем больше объём продаж.
Т.е. с точки зрения пользователя стало лучше. Теория торжествует.
Теперь давайте посмотрим, каково стало жить фабрикам. То, что большинство не заработало, это понятно. Интересно, каковы шансы сделать хорошее действо (опустить цены, улучшить качество) и получить улучшение в продажах.
Итак, модернизация №1: снижение цен.
По условию, шанс уйти в нужную сторону 25% (столько же — в обратную, в остальных случаях, модернизация будет по другому параметру).
Если ты всё сделал правильно, шансы улучшения продаж составят 14% (43 исхода из 310) и ещё 5% на то, что станет хуже (но и 3% шансов улучшения продаж при росте цен).
Почти всегда это обуславливается плохой исходной позицией. Но несколько раз это было связано с тем, что и конкуренты не стояли на месте.
Модернизация №2: улучшение качества.
Шансы уйти в правильную сторону те же.
Шансы на улучшение в случае правильных действий — те же 14%, а вот шанс на ухудшение выше — 9% (и 7% шанс на улучшение при движении не в правильную сторону).
Кажется, это не математический эффект. Возможно, просто игра малых чисел.
Остался ещё один вопрос.
У нас “выжило” немного фабрик, большинство разорилось. Неизбежно ли это?
Стоит прогнать ещё пару симуляций, но кажется, что да.
Только дело не в рынке, экономических законах и статистике. Дело в алгоритме выбора.
У нас сейчас выбор пользователя — явная функция от его зарплаты, цены и качества продукта. Соответственно у товара, который хуже идеального на одну миллионную, в текущей модели нет ни единого шанса — все 100% рынка достанутся идеальному товару.
В реальной жизни на выбор пользователя оказывают влияние случайные факторы. Их можно было бы заложить.
На этом пока всё.
Выводы кратко
Неэкономические выводы:
- Играть с такими моделями весело
- Крутить данные можно очень по-разному
- Хорошо, когда всё залогировано
Экономические выводы:
- Кажется, в классической экономической модели неравенства стартовых условий заложены изначально
- Кривые спроса и предложения, похожие на учебные, построить можно, но кривыми (а не ломаными) они будут при очень большом количестве как покупателей, так и продавцов
- В целом, основные положения теории (конкуренция среди продавцов ведёт к улучшению условий покупателей) верна
- Стартовые условия сильно влияют на итоговый результат, но не предопределяют его
- Конкуренция в условиях неравенства ведёт к сегментации рынка (на “премиум сегмент” и “масс-маркет” как в нашем примере)
- Судя по всему, при полностью детерминированном выборе конкуренция ведёт к олигополии
Дальнейшие планы
- Сделать ещё несколько симуляций при разных стартовых условиях (в том числе дать фабрикам побольше времени)
- Перейти к усложнениям
- ввести связь между качеством товара и его ценой,
- ввести какую-то функцию маржинальности (разница между ценой продажи и себестоимостью как функция качества товара)
- ввести несколько типов продуктов и придумать логику их связи между собой
- устроить граждан “работать на завод”, чтобы при разорении завода падал потребительский спрос
- внести случайность в выбор пользователем продукта
vdem
Я бы ввел еще
Ну и еще много чего, лично я бы за такое не брался :)
P.S. А, ну если еще у некоторого потребителя оказывается меньше определенной суммы, его можно вычеркивать из системы, так же следует учесть размножение потребителей, а следовательно еще и ограниченность ресурсов (можно так же взять какую-то фиксированную сумму ресурсов, доступную в симуляции). Производители производят товары из ресурсов, эти товары приобретаются потребителями или другими производителями.
tsaregorodtsev Автор
Спасибо за мысли.
Первый пункт реализован — у всех есть случайная сумма, причём как-то распределённая.
Или я вас неправильно понял?
Второй пункт в планах, да.
Третий и далее — это интересно, спасибо. Надо будет попробовать.
vdem
Вообще к «классическому» рынку это уже никак не относится. У Адама Смита он какой-то идеальный: да, есть конкуренция, но почему-то она есть всегда. В таком упрощенном понимании нет появления монополий. Допустим, какой-то производитель изобрел способ уменьшить издержки/модернизировать производство, и уже получил преимущество перед другими. У него нет стимула оставлять их на рынке, и их шанс выжить — тоже внедрить какое-то новшество. В какой-то момент это двигало научно-технический прогресс, но с появлением монополий государства начали понимать, что они уже тормозят развитие и начали принимать антимонопольные законы. Тут уже не идет о полностью свободном рынке. Я даже не говорю о протекционизме, когда одно государство начинает вводить пошлины, чтобы «своим» производителям было проще конкурировать с зарубежными. Ну и с развитием рынка появляются (вернее, расцветают) банки — производителям нет смысла держать крупные суммы в сейфе (капитал должен быть в обороте, иначе это не капитал а мертвая сумма денег). Это всё очень упрощенно, конечно.
P.S. В общем, чем дальше тем больше некогда свободный (ну почти, условно-свободный) рынок начинают регулировать «сверху».
tsaregorodtsev Автор
Я бы не стал тут торопиться.
Для меня пока что утверждение, что«свободная конкуренция приводит к монополиям» пока что не очевидна. Я бы хотел сначала проверить её, а потом уже вводить государства.
hjornson
Просто рукалицо.
Сколько было производителей потребительских CPU на рынке лет 25 назад и сколько есть сейчас?
note: учесть что амд до сих пор не сожран интелом только благодаря нерыночно-гусударственному антимонопольному регулированию.
tsaregorodtsev Автор
Я же про теорию. В жизни всё сложнее, это ясно.
evtomax
Ну как «сверху». С помощью выборов владельцы капиталов выясняют реальное соотношение сил (у кого больше ресурсов вешать лапшу на уши населению), а затем представители собственников капитала в парламенте принимают законы в интересах этих собственников по соотношению сил, которое было выявлено на выборах.