I suspect that the reason for that result is the way how you modeled the situation is by having the prices to be offered at random from a sample of numbers in uniform fashion (unless I am misreading the code) but this is unrealistic. As mentioned in the paper Smith's 1962: > each sequence of experiments was conducted over sequences five to ten minutes long So the students had only 5-10 minutes to actually conclude the trades. Students knew their own valuation of the item and they wanted to get it. In such situation it is not in students interest to just choose random price from the sample of prices. Rather students will be choosing from some distribution that will have more mass closer to the their own valuation. My prediction is that if instead of random sampling of prices from the array you will let the program generate numbers from some distribution that has more mass closer to the right price you will see less volatility in the data. For example, instead of using `random.choice(price_deltas)` you could use `random.choice(price_deltas, p=weights)` that allows you to assign weights to numbers so some are more likely than others.