Recent Posts

Sunday, January 7, 2018

How To Build A Supply Curve?

I did a bit of the software plumbing for my economic/financial agent-based simulator over the holidays. I got a lot of the key architecture in place, I just need to start the hard part -- adding in agent behaviour. I am first working on a stripped-down economic model, and need to figure out how to set up a supply curve. Suggestions are welcome...

Simplest Possible Economy

I decided to attack the simplest possible "economy" for the simulator. The first simplification is that production takes place without a labour input; think of it as a robotic economy. The agents are a relatively small number of firms (ten or so). There are two commodities in the economy: goods and capital.

As one might expect, firms can use capital to either:

  • produce goods; or
  • produce more capital.
Production is based on a simple production function, and takes time. In order to drive anyone with a mainstream economic education crazy, production shows an increasing return to capital. This is simulated by it taking 5 units of capital to create an administrative unit to manage the production of either goods or capital, while firms start with 20 units of capital. In other words, if a firm wants to produce both goods and capital, it would tie up 10 out of 20 units in overhead. After that, production linearly increases as a function of the amount of capital used for production.

(There will probably be a fixed dollar cost per employed unit of capital, to stand in for wages. This helps tie down the price level in dollar terms.)

Demand for goods is created by the government periodically sending in a fixed list of bids for goods, with bids at lower and lower prices. This creates an arbitrary final demand curve. (I have no built the government yet.)

The objective for firms is to maximise their "score." Every dollar of dividends they pay increases their score by 1, and the score itself will compound at a fixed rate. In other words, firms are trying to maximise the present value of their dividend stream. (I have not added this score-keeping function yet.)

Firms are forced to keep a positive cash balance at all times, to avoid the (private equity) tactic of borrowing a gazillion dollars to pay a huge initial dividend. I will eventually have systems to manage firm borrowing, but they are not in place, and I want to get a working simulation before worrying about every conceivable bell and whistle that could be added.

So the question then becomes: what are the "optimal" tactics for firms? They need to decide:
  • production, which happens in real time,
  • at what prices and volumes are orders send to the exchange?
In particular, there is an incentive for specialisation: firms will either produce goods or capital, but not both. The firms producing capital have to hope that other firms will buy capital from them, whereas goods-producing firms know that the government is providing a fixed final demand schedule. However, the key problem is determining the selling price of goods, as that helps pin down the value of capital.

Meanwhile, things are complicated by the fact that the simulation is essentially happening in continuous time. Agents have to make decisions based on market quotes which may have changed by the time they have made their decision. Furthermore, there may not be any market quotes in existence yet (which is what will happen in the beginning of the simulation). (The government demand schedule is assumed to be known, so that will provide some initial guidance for market prices.)

My main efforts will be going back to look at my inflation-linked bond report, and so this project will simmer on the back burner. However, if any readers have suggestions on how to structure behavioural rules, I am open to suggestions. (The code is open source, but I doubt that anyone other than myself can figure it out right now. For experimental work, I code first, document later.) I can try hacking some code together when I want to take a break.

(c) Brian Romanchuk 2018

No comments:

Post a Comment

Note: Posts may be moderated, and there may be a considerable delay before they appear.

Although I welcome people who disagree with me, please be civil.

Please note that my spam comment filter appears to dislike long "anonymous" posts. I get no warning about this, and only go through my "spambox" infrequently. The best bet it to keep comments short, and if you think the spam filter struck, let me know with a short comment.