The Grand Unified Catch Theory: Curveballs

Since release, there have been many rumors about how to optimize your chances of catching a Pokemon. These are a few that we've seen recently:

"When using berries, ultra balls are worse than great."
"While the pokeball is twitching, close your fists to keep the pokemon in the ball."
"Always try a pokeball before using an ultra ball."

We hoped to settle the debates on catch mechanics by finding the equation which Niantic uses to determine catch probability of Pokemon. We believe we have found the equation, and it depends on the following 7 variables:

  • Pokemon species
  • Pokemon level
  • Ball type (Poke, Great, or Ultra)
  • Curveball
  • Razz Berry use
  • Throw bonus (Nice, Great, or Excellent)
  • and the recent addition of Pokemon type medals

Because we have a lot to say about the formula and the statistical analysis is much longer than usual, the full results will be staggered over the next few days.

In this article, we will give a general overview of the unified formula and the analysis for the curveball bonus. We call it the "Grand Unified Catch Theory," or GUCT.

Grand Unified Catch Theory

The key to finding the GUCT equation was figuring out how catch bonuses stack. We were lucky to have a dataset of 58,330 Pokemon catch attempts, which we used to run mean squares regressions on a variety of test functions. In the end, we found only one function which fit the data, and it revealed that:

Applying any kind of bonus effectively gives you the chance to throw more than one Poke Ball per try.

Previously we determined the catch probability of a Poke Ball:

$$pbProbability = \frac{BaseCaptureRate}{2*CPMultiplier}$$

With Base Capture Rate dependent on Pokemon species and CPMultiplier dependent on Pokemon level. You can read more about BCR here and CPM here.

Given that, the GUCT can be stated as

$$Probability= 1- \left(1-\frac{BCR}{2*CPM} \right)^{Multipliers}$$

where,

$$Multipliers=Ball*Curve*Berry*Throw*Medal $$

Ball, Curve, Berry, Throw and Medal are set multipliers which are equal to 1 when not applied. A priori, the factors did not have to be multiplicative, but after our trials of various test functions, multiplying the bonuses is what matched the data.


Here is a plot of catch rate as predicted by GUCT against the entire data set. In red is the GUCT catch rate for a bin of data, plotted against the actual capture percentage of that bin, with error bars showing the 1-sigma confidence interval. In blue is the line y=x, which should fit if GUCT is correct. There is a clear fit across the whole range of catch probabilities.

guct full comparison

Prior to this project, the Ball bonuses had already been discovered in a previous study:

Ball TypeBall Factor
Poke Ball1
Great Ball1.5
Ultra Ball2
The Curveball Bonus

Our analysis strongly suggests that the Curve factor is equal to 1.7.

So without any other bonuses, curving is equivalent to using 1.7 Poke Balls each turn. And since the Ultra Ball bonus is 2, a curved Ultra Ball is equivalent to using 1.7 * 2 = 3.4 Poke Balls each turn.

BallsPokeGreatUltra
Straight Throw11.52
Curve Ball1.72.553.4

The graph below shows much your catch rate can improve by throwing curveballs consistently:

trainer catch rate - curve bonus

Click here to learn more about how we generated this graph.

Analysis

Our pre-0.41 data set from GamePress Researcher CreativiTimothy was used to find out the effect of all factors other than medals. Each row of the data stated which factors were in play (Great Balls, Excellent throws, etc).

The formula for simple throws with Great and Ultra Balls was already known to be the GUCT formula, but with all factors equal to 1 except for the Ball factor. The next step was to add in curveballs, which make up the majority of our sample. The desired result was the catch probability function f(x) as a function of the inner term, 0.5*BaseCapRate/CpM, which we'll call x. This term is also the catch probability for a simple Poke Ball throw, or GO+ capture attempt without medal bonuses.

After binning the data into even intervals of dx=0.04, the catch rate within each bin was averaged to produce the bin's probability. A best fit was done to the binned data using the SciPy library in Python, and after a variety of guesses, the function which came out best and held for all ball types was

$$f(x)=1 - (1-x)^{Ball*C}$$

The fit was done separately for each type of ball, and so there were different best-fit parameters C for each type. The table below shows the corresponding best-fit exponents, their standard deviations, the guess of Ball * 1.7 which we used in the GUCT, the experimental/theoretical difference, and the sample size:

bestfitstdevBF*1.7 guessΔN
Poke1.6880.0111.70.01244046
Great2.6050.0462.550.0553455
Ultra3.450.0913.40.051486

After keeping only first-throw attempt data where only ball and curve bonuses apply, SciPy curve fit found that the optimal number to fit all three equations was 1.6903, with a standard deviation of 0.007. Since the Ball multipliers were round numbers, we are very inclined to believe that Niantic chose a round number for the Curve multiplier, namely 1.7. This is easily within error, because our Poke Ball catch rate had been rounded to two decimal places, and the 0.007 standard deviation brings 1.6903 nearly to 1.7 anyway. Thus we consider the evidence sufficient to conclude that 1.7 is the curveball multiplier.

Here are the three fits for Poke, Great, and Ultra Balls, respectively. The x-axis is x=0.5*BaseCapRate/CpM and the y-axis is the probability of catching a Pokemon with that x value.

poke ball curve catch rate graph case1
great ball curve catch rate graph case2
ultra ball curve catch rate graph case3
Confirmation Tests

In order to make sure that the binning did not cause any problems, we did several tests using the unbinned data to confirm accuracy of the multiplier. We first restricted the data to capture attempts without throw bonus and where berries were not used. Then, for each throw in our sample, we calculated the expected catch rate using the ball factors and newly established curve multiplier.

Using these catch rates, we ran a series of two tailed binomial tests to see if the actual probability of successful capture from our sample is statistically different than the calculated catch rate. Based on 904 calculated catch rates, only 11 had observed catch rates that were statistically different from the calculated rate. Since fewer than 5% of the tests rejected the hypothesis that the calculated rate is correct, we believe that our calculated curve multiplier of 1.7 is accurate.

Quick Links
Raids
Raid Boss List
Raid Boss List
Raid Boss Counters
Raid Boss Counters
Tools

Pokemon List

IV Calculator

Moves List

Appraisals

Egg Chart

Type Chart

Power Up Costs

Buddy Distances

CP Calculator
Rankings

Gym Attackers

Gym Defenders

DPS per type