# Microeconomical simulation: coordination/planning between self-interested trading agents

In a typical perfect-information strategy game like Chess, an agent can calculate its best move by searching the state tree for the best possible move, while assuming that the opponent will also make the best possible move (i.e. Mini-max).

I would like to use this approach in a "game" modeling economic activity, where the possible "moves" would be to buy or sell for a given price, and the goal, rather than a specific class of states (e.g. Checkmate), would be to maximize some function F of the agent's state (e.g. F(money, widget) = 10*money + widget).

How to handle buy/sell actions that require coordination between both parties, at the very least agreement upon a price?

The cheap way out would be to set the price beforehand, maybe based upon the current supply -- but the idea of this simulation is to examine how prices emerge when freely determined by "perfectly rational" agents.

A great example of what I do not want is the trading algorithm in SugarScape -- paraphrasing from Growing Artificial Societies p101-102:

when a pair of agents interact to trade, they each compute their internal valuations of the goods, then a bargaining process is conducted and a price is agreed to. If this price makes both agents better off, they complete the transaction

The protocol itself is beautiful, but what it cannot capture (as far as I can tell) is the ability for an agent to pay more than it might otherwise for a good, because it knows that it can sell it for even more at a later date -- what appears to be called "strategic thinking" in this pape at Google Books Multi-Agent-Based Simulation III: 4th International Workshop, MABS 2003... to get realistic behavior like that, it seems one would either (1) have to build an outrageously-complex internal valuation system which could at best only cover situations that were planned for at compile-time, or otherwise (2) have some mechanism to search the state tree... which would require some way of planning future trades.

Note: The chess analogy only works as far as the state-space search goes; the simulation isn't intended to be "zero sum", so a literal mini-max search wouldn't be appropriate -- and ideally, it should work with more than two agents.

• Some bit of control theory would help. news.wisc.edu/22389 and pancap-web01.uncc.edu/Panopto/Pages/Viewer/… Commented Feb 24, 2014 at 3:24
• @rwong - that could be useful for individual agents to determine their individual prices, but I don't see how it could help the coordination between two independent agents - am I missing something? Commented Feb 24, 2014 at 3:55
• do they need coordination? I think the problem falls under en.wikipedia.org/wiki/Non-cooperative_game where the agents make independent decisions. Agreeing on a price would be a situation where the independent decisions happen to match. Commented Feb 24, 2014 at 4:12
• @imel96 - that's an good point, and I think you're correct in that there needn't be coordination on the actual price -- but there are other places where it seems you would need to coordinate; for instance, if I want to buy something from A in order to re-sell it to B, I would ideally get a commitment from B that it would actually buy it...or at the very least, have some way of determining that it's a possibility. But, the latter problem wouldn't fall under the category of "coordination problems", so you're right...maybe not the best statement of the problem. Commented Feb 24, 2014 at 4:49
• The buyer has to choose a bid price, and the seller has to choose an ask price. Commented Feb 24, 2014 at 5:30

Have you considered using an agent or market maker to facilitate the transaction? This is how it works in real stock exchanges. Shares are rarely traded person to person but through a middle man. You mention examining the ability of the system to make one party pay more than absolutely necessary, if they had had access to all the information in the system, which is exactly what happen with the 'spread', the price difference between the offer and bid prices.

• The idea of using a centralized market to facilitate trades had crossed my mind, but it seemed a little forced -- people have been doing independent bilateral trades for millennia. [[br]] More to the point, though, it still doesn't answer the question of how much the widget would be "worth" to an agent (e.g. its max bid/min sell price), since its immediate "use-value" is obviously inadequate (since it doesn't take into account e.g. scarcity or past prices)...or am I missing something else? Commented Jun 26, 2014 at 15:05
• Ok so is the main part of your question: "How to handle buy/sell actions that require coordination between both parties, at the very least agreement upon a price?" That would seem to me to be a market maker. I also think setting a price beforehand would be a good way to start. If each agent is then evaluating what it thinks the widget is worth then that will just be a starting price and the price should move to a realistic price after a while. Commented Jun 26, 2014 at 21:42
• If the main part of the question is about strategic thinking then I think you list the two ways I would do it. The problem is knowing all the information in the 'tree', or in a real market all the information about the companies / assets. The other thing to consider if you want it to be 'realistic' is that the markets we have in capitalism at the moment are weighing machines (of the assets value) in the long term but voting machines (of public sentiment) in the short term. (+ HFT that only cares about volatility) Commented Jun 26, 2014 at 21:44

You can't really simulate agents in same way you would play chess. Simply because the "game" depends heavily on external influence than on players themselves. This all comes down to knowledge. If agent knows from some source the price will go up in the future, it might do something in the present to help itself. Actually, in multi-agent simulations theory, the notion of agent's knowledge is extremely important part. Especially if agent doesn't have full knowledge about whole environment and this knowledge cannot be perfectly trusted. So the agent's goal would be to gather and confirm this knowledge and calculate good's future value based on this knowledge. And getting this knowledge is the hard part, because predicting future isn't really what neither humans nor computers are good at.

• I don't know if I agree with the first sentence: in chess, the entire state is (position of my pieces, position of your pieces). In this model, the entire state is (my goods, my money, your goods, your money), so in both cases there is perfect info. In chess, the possible actions are (move pawn here, move other piece there, ...). In the model,the actions are (buy from X at Y, buy from X at Y+1,...sell to X at Y,...)...in both cases, the only "external" (unknown) part would be the other player(s)' moves, but that doesn't prevent calculation in Chess; you just assume they are as rational as you. Commented Feb 24, 2014 at 7:44
• @MiltonManfried So you are saying your whole simulation is going to have only 2 agents? What is point of such simulation? The point of multi-agent simulation is to have thousands of agents interacting with each other. If you only have 2 participants, you can't really call them agents. Commented Feb 24, 2014 at 7:53
• I didn't mean to imply that; the X/Y were meant to stand in for any agent from 1..numAgents...but I don't see how numAgents > 2 would change the fact that each agent would have access to the full state (perfect information)? Commented Feb 24, 2014 at 14:15
• @MiltonManfried Speculative trading(eg. buy cheap now to sell expensive later) depends on one side believing that price of commodity will change in the future, while the other doesn't have this belief. So one side sees advantage in buying, while other doesn't mind selling. If both sides believe the price will change, then there is no incentive to trade, because they cannot agree on price to buy/sell. If all agents have perfect knowledge, then their beliefs are same, and then there is no reason for trade. Commented Feb 24, 2014 at 16:31
• well put...but that ignores the utility function F; given a typical "realistic" curve with declining marginal utility, an agent with say 100 goods and no money would have an incentive to trade with an agent who had no goods and a lot of money -- and vice-versa. Each agent tries to maximize its own F without caring about that of others. Commented Feb 24, 2014 at 20:13

I just came across this in Game Theory Evolving, H. Gintis, p45:

"In [the neoclassical model], prices move to eliminate excess demand in all markets before any trade actually takes place. Thus, market clearing is not brought about by markets at all, but rather by what later writers have called an "auctioneer" who calls out prices, measures the degree of excess supply and demand in all markets, adjusts prices accordingly, and repeats the process until equilibrium prices are determined. The auctioneer then freezes these equilibrium prices, and agents are allowed to trade freely at these prices. How ironic! Not the buzzing confusion of market competition, but the cool hand of the centralized state apparatus brings about market equilibrium.

"Well, you might reply, we've come a long way since Walrus wrote down his set of equations...Surely someone has provided a plausible decentralized, market-oriented equilibriation mechanism to replace the auctioneer. But in fact, no one has succeeded in producing a plausible dynamic model of market interaction in which prices move toward their market-clearing levels."

Of course, the "auctioneer" model is precisely what is done in SugarScape, and is precisely what I was hoping to avoid.

If true, this is discouraging...but it at least answers why, even ignoring the probably-intractable problem of planning with coordination between agents, I haven't been able to solve this.