Suppose you want to determine how to price a product and you initially don’t know what the market is willing to pay. This post outlines some of the things you might think about, and how Bayesian modeling might help.
This post is not the final word on the subject, or even my final word on the subject. It is essentially a reply to a friend’s question turned into a blog post rather than an email.
You must have some idea, however vague, what the market value of your product is. If you had absolutely no idea what a product is worth, you wouldn’t be considering it as a business opportunity.
There is always prior information. As a former colleague would say, when you want to measure the distance to the moon, you know not to pick up a yard stick. Whenever you do an experiment, something motivated you to do the experiment.
This is an ideal application of Bayesian statistics because you have valuable prior information before you have data. Until you have a moderate amount of data, your prior information may be more useful than your data.
Some people will say you should only act on data, not on subjective prior knowledge, but this is impossible. When you offer your product for the first time, you have no data. All you have to go on is prior information. You could hide your prior information in the design of an experiment rather than making it explicit in a prior distribution, but it’s still there.
Assume the market price for some product can be modeled by a random variable X that depends on some parameter θ. I’m not saying that the price is random in any philosophical sense, only that it is useful to model it as random. More on this line of thinking here.
By modeling market price as a random variable rather than a single number, we’re acknowledging that it has some fuzziness to it. Different customers are willing to pay different amounts for the same product. Maybe the prices they’re willing to pay are tightly distributed around some center, or maybe there’s substantial variance.
When we make a sale, or fail to make a sale, we learn something about θ. But notice that we don’t observe X per se, we observe whether a particular sample from X was above or below the offer price. You’re not conducting a survey where you ask “What is the highest price p that you’d be willing to pay” and get a candid answer. You make an offer x, and it is either accepted or rejected. You observe whether x < p or x > p.
This means the likelihood function is similar to what you’d see in modeling survival data, but a little different. When someone dies, you fully observe their survival time. But if you follow up with someone and they’re still alive, you only know a lower bound on their survival time, not the survival time itself. We say the data is censored because we haven’t yet observed everything we want to know.
Survival data is usually asymmetric, censored on one side but not the other. You could have two-sided censoring, but that’s less common.
With pricing your data is always censored in both directions. You either get a lower bound or an upper bound on what someone would have been willing to pay.
After each offer and response, you can update your estimate of θ. Each interaction gives you a better idea of the distribution on θ.
Now suppose after numerous observations you’re moderately confident in your knowledge of θ. Now what?
One response is “Well then you charge what the market is most likely to bear.” That’s kind of a simplistic optimization. It implicitly assumes you’re OK with a 50% chance of a sale going through. Maybe your business is struggling and you don’t have many leads. Then you want a higher conversion rate. Or maybe you’re doing well, have plenty leads, and are OK with a low conversion rate. This is especially the case if the distribution on market price has a lot of variance; if the variance is low it makes more sense to think of “the” price as if it were a single number.
So far I have implicitly assumed that the only consequence of asking too much is a lost sale. But if you ask for too much, you might lose future sales, even if you get the current sale. I’ve also assumed that customers always prefer lower prices. That’s not the case. Asking too little for a product can hurt your credibility, for example.
Estimating willingness to pay is complicated, and determining what to do once you’ve made that estimate is complicated as well. This post is just a sketch of the thought process a company might go through.
4 thoughts on “A Bayesian approach to pricing”
If willing to assume the demand curve slopes downward, https://pubsonline.informs.org/doi/abs/10.1287/mnsc.2020.3602 give a simple rule, (max_price – marginal_cost)/2. (Although that gives you the problem of figuring out the max possible price someone will purchase the product for.)
Or you could think of a market price as the intersection of supply and demand. The more of a commodity the product is and the broader the sales channel, the more uniform that price will be. Differentiation or multiple channels/individual negotiations/pricing means there is not even just one price for the exact same product. Depending on the level of sale (broad vs individual), you’d either model the quantity sold or probability of a sale per customer. But I wouldn’t recommend modeling the price directly. That’s something you control. What you don’t control is the response, so that needs to be modeled.
This is a really cool idea – but what’s a real life example of something you could apply a randomized pricing strategy to? Wouldn’t customers get bothered if they saw price fluctuations for themselves or differences from peers?
If you’re selling consumer goods to a huge market, you have to offer a fixed price. But in high-end sales this isn’t the case. Often you’re not selling exactly the same product to any two customers but rather variations and customizations, often with a service contract.
It’s a subtle point, but the algorithm I outline above is not setting prices at random. It picks them deterministically. The prices fluctuate adaptively, so you might describe them informally as “random”, but technically they’re not.
The algorithm is motivated by a thought process that models willingness to pay as a random variable, but you could write code to implement the algorithm and remove all evidence that you ever thought about anything being random. The end result is a deterministic algorithm. If you run it with a given set of inputs, then start over and run it again with the same inputs, you’ll get exactly the same outputs.