Price Optimization in Mobile Gaming

Pocket Gems
Pocket Gems Tech Blog
7 min readSep 16, 2020

By Jialiang Shi

Special thanks to Maxim Levet and Spencer Stanley, who helped develop the method described here.

Background

Combinations of digital goods, commonly known as “value packs,” are a major source of revenue for mobile games. So, as a mobile gaming company, it’s critically important that we price our value packs correctly. Our approach allows us to estimate the fundamental “value” of each digital good by fitting a simple model to observed conversion rates of existing value packs.

Methodology

First, we need to decide what we’re actually trying to optimize. That’s the easy part: revenue.

Let’s run a little thought experiment. Imagine that we priced a value pack in our store at $0. It might fly off the digital shelves, but no matter how many we sold, we’d make $0. On the other hand, imagine that we priced the pack at an arbitrarily high value, such as all the money in the world. In that admittedly absurd scenario, we would also make $0 because nobody would buy it. Therefore, it’s reasonable to assume that there exists some price between $0 and all the money in the world where we’d collect the most revenue. For any given pack, that price is considered the optimal price.

Next, for any given value pack, how do we estimate its optimal price? Instead of explicit experimentation, we developed an alternative approach where we tried to estimate the fundamental value of each digital good. If we can do that, then we can estimate the value of a pack as simply the sum of the values of its constituent goods.

To begin developing this equation, we need to choose a functional form that exhibits the qualities described in our thought experiment above.

Expected Conversion Rates

Let’s start with a simple hypothetical model of conversion rates. We’re looking for a function that takes both the contents of the value pack and its price as inputs, and outputs the expected conversion rate. For a given value pack (i.e., one with constant contents), we’d want a function where the conversion rate decreases as the price increases, eventually decreasing to zero as the price approaches infinity. Well, below is what we came up with.

Eq. 1: Expected Conversion Rate

Where:

  • Ppurchase is the probability of purchase (i.e., the expected conversion rate)
  • p is the price of the value pack
  • 𝜆 is a constant that is related to the perceived value of the items in the pack

This equation has the requisite boundary conditions, namely:

It also has convenient mathematical properties, which you’ll see in a moment!

Expected Revenue

All right, that stuff about conversion rates is all fine and well, but isn’t expected revenue the part we actually care about? The good news is that we can modify Eq. 1 fairly easily to accomplish this. Since the expected revenue of the pack is simply the price of the pack multiplied by the probability of purchase, we have:

Eq. 2: Expected Revenue

We’ll skip the math involved in getting to this next part, but we should note that this function has one very interesting property:

The maximum expected revenue of a given value pack is at p = 𝜆 !

Therefore, 𝜆 can be taken as a measure of the fundamental value of the pack. We should note that we made the brave assumption that users are homogeneous, and that 𝜆 is therefore identical for every user.

We further assumed that 𝜆 is equal to the sum of the values of the constituents of the value pack. In other words, 𝜆 can be written as follows:

Eq. 3: 𝜆 as a function of its constituent parts

Where:

  • x is the amount of resource i contained in the value pack
  • aᵢ is the value of one unit of resource i

Value of Each Resource

Consider Eq. 1 for a moment, by taking the log of both sides and then rearranging terms, we can solve for 𝜆 (which you’ll recall is the fundamental value of the value pack).

Eq. 4: Solving for the value of each resource

Note: for any given real-world value pack, every value in the above equation is known except for aᵢ. That means that the above equation can essentially be boiled down to a simple linear regression where the target variable is:

… and the coefficients are aᵢ.

“Real World” Example

Let’s take the above learnings and apply them to a hypothetical scenario. Imagine that in one of our games, let’s call it “Peace Frontier,” we have a bunch of different resources like gems, wood, energy crystals, etc. Players can then use in-game currency, let’s call it gold, to purchase value packs with a combination of different in-game resources.

Let’s now imagine that in Peace Frontier we ran a limited-time campaign where we offered a number of value packs.

Step 1: Observed Conversion Rates

Below is a hypothetical chart with the observed conversion rates of various value packs at different prices in Peace Frontier.

Fig. 1: Conversion Rates by Offer Price

Overall, the higher the offer price is, the lower the conversion rate is, which is not surprising.

Step 2: Model Fitting and Evaluation

We then take the above data and use linear regression to estimate the value of each resource (as described by Eq. 4). After that, we plug those estimates back into Eq. 1 to estimate the expected conversion rate of each pack, and compare those to the observed conversion rates.

Fig. 2: Conversion Rate Actual vs. Predicted

The R ² of our model is 0.65, which roughly means that our model is 65% better than naïvely predicting the mean conversion rate every time. That’s not bad considering the wide range of conversion rates represented in the chart!

Step 3: Generate Optimal Price

Now that we have estimates for the values of each resource and trust that our model is working well enough, let’s see if we priced our value packs at the correct level.

Below is a chart of the offer price vs. the “true value” (using our estimates of 𝜆) of each pack.

Fig. 3: Offer Price vs. Offer Value

Evidently, it appears that most of our value packs were not optimally priced. Indeed Fig. 1 shows that our users found little value in our highest-priced packs and shied away from them accordingly. If we had priced the value packs lower, more in line with their fundamental value, they would have been more attractive, making the program more beneficial to both us and our players.

We haven’t run a limited-time offer since developing this model but it’s fun to speculate about what might happen. For instance, the two value packs that were priced at 8,000 had conversion rates of around 8%. Our analysis indicates that the “correct” price for these packs was around 3,300. Had we applied that price, we would have achieved conversion rates of 35%-40%. The resulting revenue increase would have been roughly 70%.

Parting Thoughts

Estimating the “true” value of any digital good is challenging. That being said, we feel that our approach in this case was useful. By using simple math, we were able to create a model, extract meaningful information about purchase behavior, and use that information to inform our pricing strategy.

One thing to note, however, is that our approach makes another important assumption, namely, that the relationship between value and quantity is linear. That seems obvious, but, upon reflection, may not be true. Users who are willing to spend $10 for a value pack might be unwilling to spend $100 for a larger pack, no matter how valuable it is. Finding a way to address that particular issue was slightly out of scope for this initial strategy, but may be something we consider next time. To that end, we’re eager to try out the model on our next special offer and see how it performs.

We hope you found this insightful! If you’d like to learn more about what we do at Pocket Gems, take a look at some of our other blog posts, or if you’re interested in joining Pocket Gems, we’re hiring!

--

--