Negotiation Assistant Technical Details
When a seller has something that a buyer is interested in, both parties must agree to a price. When supply exceeds demand and prices are low, stores typically take a simple approach to this: you either accept their price or there's no deal. This works fine when there are many sellers competing to sell the same item. But for rarer items, or even just more expensive ones (cars, houses, etc.), there's often an element of negotiation involved.
In a negotiation like this, you never want to truthfully provide your "best price" (BATNA), since the other person will then try to get you to agree to an even better one. Hyperbole, falsehoods, and nitpicking tend to be the way to go. In addition to the downsides of normalizing dishonesty, this can be very stressful for people who aren't used to adversarial negotiation. Just look at the Wikipedia page on negotiation strategies to get an idea of how complicated this can get when one is trying to play optimally.
In theory, the optimal solution is to choose the price that maximizes total utility across both players. But in the real world, we have no good way to determine another human's utility function, and people can simply lie about how much they value the item.
The ideal way to avoid this is to use a mechanism that's strategyproof; designed such that the optimal strategy is for each player to be truthful about their BATNA. For example in a Vickrey auction, there's no incentive to lie or bid less than your maximum; doing so would only put you at a disadvantage.
Unfortunately, in the bargaining game with one seller and one buyer, there is no reasonable
People usually handle this via some form of sequential bargaining. This incentivizes dishonesty, emotional manipulation, brinksmanship, artificial self-restrictions, and other undesirable behavior. It rewards people who have high charisma, have more knowledge of psychology and game theory, and/or are good at manipulating other people. It punishes those who are conflict-averse, empathetic, and/or have poor social skills.
Can we do better than this? Maybe! There are many things working in our advantage. Computers let us do things like keep information private while still performing calculations on it, perform more complicated calculations than humans can perform themselves, and introducing randomness, which all seem like they could be helpful. Additionally, all the proofs above apply to traditionally rational agents, which humans are not. This could potentially be exploited for a net better outcome.
This negotiation assistant is an attempt at such a better system.
- Lower the relevance of manipulation/persuasion tactics. It does this by removing most of the communication that would normally be involved in a negotiation and limiting it to a one-time sharing of numbers. The participants will still want to share relevant information with each other, like past sale prices of similar items, but this is unavoidable, since there's no way around the fact that updating the other player's beliefs about a fair price in your direction will be advantageous. This tool just tries to take out all the non-informative communication, by removing the pressure to give the other person a number they want to hear.
- Discourage lying about what a fair price would be. We don't want a more knowledgeable buyer taking advantage of a seller who doesn't know the real value of their item, or vice versa. To achieve this, the "fair market value" field is shown to the other party. Inputting a grossly unfair price runs the risk of them noticing you were trying to rip them off, and levying whatever social penalties are the norm in that community for that behavior. (Of course this tool can't prevent lying abut other things, such as the quality of the item in question. Do your due diligence.)
- Discourage lying about their BATNA". If the seller's lowest sale price is higher than the buyer's highest offer, no deal with occur and both people will be worse off. This encourages them to both report their true valuation, since doing so ensures that the deal will only fall through if there is no possible deal that both participants would prefer.
- Allow players to keep their BATNAs secret. In order to not be at a disadvantage in future negotiations, people often want to keep their true valuation of an item private.
Vickery auctions are not strategyproof when iterated, for exactly this reason. This tool accomplishes this by partially randomizing the final value, preventing the other player's number from being reverse-engineered. And if both parties are in agreement as to what a fair price would be, that's used instead, and the "best price" never comes into the picture.
The way we do this is by letting both people input their information independently, and having the server return a final price based on the input information. This allows both parties to safely enter their true best guess at a fair market value without the first-mover advantage that this usually entails, along with their true BATNA, without the last mover-advantage that that usually entails
If the seller's lowest price is higher than the buyer's highest price, no deal can be made. If the seller's lowest price equals the buyer's highest price, then a deal is made at that number. If the seller's fair price equals the buyer's fair price, and that price is within the valid interval, a deal is made at that number. If none of those are true, the server creates a probability distribution that's bounded by the "high" and "low" prices, which will be sampled from in order to get the final price. The specific distribution tries to satisfy the following constraints:
- The function assigns nonzero probability to all numbers in the interval, and has only a single peak.
- If the two fair prices are roughly "in agreement", meaning that they're close to each other relative to their magnitude
This breaks the symmetry between buyer and seller, since fair prices at the same distance from each other will have a tighter distribution near the top of the range than at the bottom. But I don't think this advantages either party, and it means that the tightness of the distribution is based on the proportional difference between the fair prices, which is obviously the correct way to do things. , probability concentrates around the midpoint of the fair prices. The more in agreement they are, the more strongly it concentrates.Notably, we don't limit the final price to being between the two fair prices, because this means that if one party provides a fair price way outside of the interval in their favor, the other party who provided a more "reasonable" fair price is at a disadvantage. We don't want to provide an easy way for players to game the system by inputting an unfair "fair price", so if both players don't agree on a fair price, we significantly downweight the relevance of the fair prices and use the more reliable indicators of the prices they're actually willing to pay. Ignoring social repercussions for dishonesty, this means that the optimal strategy for choosing a fair price is to try to guess the other party's fair price and pick one that's close to it but slightly in your favor. This should hopefully lead both players towards the actual fair price as focal point. Adding in the fact that they both get to see each other's fair prices afterwards means there will be punishment for having input an unfair price, which should further reinforce the true fair price as the optimal entry. - If the fair prices are not in agreement, probability concentrates around the midpoint of the low and high prices.
- It doesn't matter which fair price is which. Swapping the buyer's fair price for the seller's price won't change the distribution. There's no particular reason why this needs to be true, it's just nice and elegant.
Ideally we'd reward people for inputting a fair price that's further from their end of the interval, since that's more likely to be honest. But instituting such a reward means that players are incentivized to lie in that direction, and is therefore self-defeating. What we could do is try to make it such that a player moving their fair price away from their end of the interval hurts them less than it would have helped them to move it towards their end, but I think this is impossible given the constraints that the game must be zero-sum and the algorithm must treat both players equivalently. Not sure about this one though, and maybe there's a better way to do this. - If the fair prices are not in agreement but are both to one side of the range, we assume they're meaningless and skew back towards the midpoint of the center of the low and high prices.
- It's scale-invariant, so neither party is advantaged by choosing a different currency.
(Some people don't want to enter a "fair price" when they feel they don't have a good idea of what would be fair, so it's optional. In this case the server internally sets it equal to the midpoint between that user's best price and the other user's fair price.
There are obviously an infinite number of probability distributions that satisfy these constraints, so the exact choice was rather arbitrary. Let a and b be the fair prices (doesn't matter which is which), l be the seller's lowest price, and h be the buyer's highest price. The distribution is then given by this construction, and you can see the exact code here.
You can explore the exact probability density function for a set of given input prices here:
(For simplicity, inputs are limited to integers in the range 1 - 1,000,000,000.)
This system is not immune to gaming; as mentioned above, that's impossible. The buyer can gain an advantage by guessing what the seller's best price will be and making their own best price only slightly higher than that; the same Keynesian beauty contest as occurs in regular sequential bargaining. But the risk of the deal falling through means that it's rational to include a significant margin of error, and input a "best price" that's somewhere in between their true BATNA and their guess at the other party's best price.
The main difference between this system and sequential bargaining on a purely game-theoretic level is that under this system, agents lose the ability to update their own price upon hearing their opponent's. But since the opponent's stated price has no connection to reality, it's questionable whether hearing it really provides much information.
If the user enters multiple items, the same process is used on each item individually. For example, if Alice is willing to sell item #1 for a minimum of $10 and item #2 for a minimum of $20, and Bob is willing to buy item #1 for a maximum of $20 and item #2 for a maximum of $10, a deal will only be struck for item #1, even though adding them together would have both parties comfortable with a combined sale at $30. Combining the prices is tempting, since both parties would prefer more items to sell than fewer. But combining the prices accomplishes this by using up the extra flexibility from items where the buyer is willing to pay more than the seller's minimum, reducing the gains from trade for both parties. This causes both Alice and Bob to have an incentive to negotiate each item independently, defeating the point of offering such functionality.
This tool is primarily useful for highly illiquid markets, where both actors have significant market power. When that's not the case, both players will have a BATNA very close to the going market rate and will have common knowledge of such, obviating the need for bargaining.
There are some potential meta-exploits:
- One person can find out the other's email address and fraudulently input their prices for them. This will be caught by the fact that the server received two copies of that party's data, and it will invalidate the negotiation and send them both a warning. If the attacker somehow manages to prevent the server from receiving the true submission, this can be caught by the victim noticing that the input prices confirmed in the email they received are not the same prices they actually input. (This would still be a bad exploit even without these safeguards, because the attacker could guess wrong and end up inputting a best price that's worse than the other party would actually accept, and they'd notice immediately.)
- A party receiving a final value they don't like can claim they mistyped their email address and didn't receive the results, or that they mistyped their prices, and try to argue for a redo. This seems unavoidable, and it should be handled the same as any other broken deal; if their excuse seems good, accept it, otherwise refuse to deal with them again.
- The code for this application has not been rigorously tested or audited, and it's possible there are unknown bugs that could lead to one party gaining an unfair advantage. (The code for the probability function can be seen here, and I'm happy to share the server code upon request.)
- This tool is hosted on my website. If a user is negotiating with me, they run the risk of me being dishonest and manipulating the results of the tool. If this is a concern, I'm happy to share the server code and set up a mirror of the tool controlled by a neutral-third party.
- When the players first initiate communication, there will be a meta-game of negotiation over whether to use this tool. The party who believes themselves to be better at negotiation will likely try to avoid it, since traditional sequential bargaining would advantage them. But attempts to refuse may give away this belief to the other player, which could come with social penalties or redouble the other player's desire to use the tool. For those afraid of being taken advantage of, it may be easier to defend the position of "I will only deal with this tool" than to win a traditional negotiation.
This is probably not true while the tool is new and uncommon, since cultural inertia and the mere exposure effect make it hard to get people to adpt something they're unfamiliar with. But if this negotiation assistant becomes the norm for negotiations within a certain subculture, it'll have the described benefits. (The suggestion to use the tool would itself be a credible signal of belief in one's inferior negotiating skill, but as long as the parties do actually end up using it, this won't harm them.)
If you have concerns about this system or think you can improve on it, I'd love to hear about it. Various methods to contact me can be found on the homepage, or simply leave a comment below. I offer a competitive reward of $2.57 for any issues found in this system.
With thanks to Ryan Sears for helping me with some of the economics concepts, and to Jonathan King for coming up with the exact probability density function.