Intro

The exact stats and CP of Team Rocket Pokémon were unknown since at least the release of Trainer Levels up to 50. This research aims to fill this knowledge gap and allow us to know how to calculate their attack, defense, and stamina which is used to calculate the CP to more accurately, simulate battles and provide more accurate Team Rocket counters at sites like Pokebattler.com.

The Shadow Pokémon that Rockets use in their battle against you had their IVs changed to:

Attack IV = Floor (2/3 * Pokémon Base ATK + 25)
Defense IV = 15
Stamina IV = 9

Which can be used to calculate their stats using the following formulas:

Attack = 2 * (baseAttack + Attack IV) * rCPM * Rank 
Defense = 0.8 * (baseDefense + 15) * rCPM * Rank
Stamina = 1.1 * (baseStamina + 9) * rCPM * Rank

Where Rank equals 1.0 for a Grunt, 1.05 for a Leader and 1.15 for Giovanni.
With the rCPM (rocket Combat Power Multiplier) increasing with your Trainer Level.

These stats can then be used to calculate the CP of the Shadow Pokémon using the standard CP formula:

CP = Floor(0.1 * Attack * sqrt(Defense) * sqrt(Stamina))

Background story

Since the appearance of Team GO Rocket (TGR) in Pokémon GO in July 2019, their line-ups went through multiple rotations and there were slight changes in their mechanics. In the early beginnings, KakunaMattata known as the creator of PvPoke, Celandro from Pokebattler, dondon151 from GamePress and skewtr made efforts to figure out how to calculate the stats and CP for Rocket’s Shadow Pokémon. This was finished in December 2019 and resulted in formulas as well as Combat Power Multipliers (CPMs) for all available trainer levels. These multipliers increase the difficulty of the Rockets with increasing trainer level and were important to come up with the best Pokémon to beat Team GO Rocket.

Since then, the difficulty and line-ups of Team Go Rocket changed and trainer levels up to level 50 were released as well. However, as far as I am aware, no published research covered these updates. Recently, Pokebattler reached out to the community, asking for data to fill this knowledge gap. Around the same time, I was trying to make a breakpoint calculator to aid in the Silph Mirror Challenge against Cliff and ran into similar problems where the stats of the Shadow Pokémon I encountered did not match the calculated values. After sending some data to Celandro, I was contacted and we continued working on this together, trying to ‘solve’ the stats of the Rocket’s once more…

The Unknowns

The last known information about Shadow Pokémon was that they follow the standard CP formula with multipliers for their individual stats:

CP = Floor(0.1 * Attack * sqrt(Defense) * sqrt(Stamina))

where

Attack = 4 * (baseAttack + 15) * rCPM
Defense = 2 * (baseDefense + 15) * rCPM 
Stamina = (2 * Floor(0.5 * baseStamina) + 14) * rCPM 

rCPM is the rocket Combat Power Multiplier, a multiplier that increases with trainer level.

When calculating the stats of a Shadow Pokémon with these formulas, the values do not match with what you find in the wild. So, beyond elucidating the difficulty scaling above Trainer Level 40, the multipliers for each stat and the rocket combat power multiplier had to be cracked once again. 

The most straightforward method to figure out the stat multipliers is by going into the field. The HP of a Pokémon can be figured out by Yawning it down to 0HP, since Yawn always deals 1 damage. Next, its HP can be compared to a calculated HP value and the ratio between them is your HP multiplier.

From its HP it is a quick way to do the same for Defense, but this time you count the fast moves it takes to KO a Pokémon and with this calculate the damage each move dealt. The damage it received can then be plugged into a reversed damage formula to get the Defense stat of the Pokémon. Compare this to the calculated expected Defense stat for your multiplier.

Finally, the attack stat is deducted by letting a Shadow Pokémon hit your defender once with its fast move, followed by quickly swapping or exiting the battle. You then check the damage you received, plug that into another rewritten damage formula and you get the Attack stat of the Pokémon.

With this method -assuming an identical multiplier for all Pokémon- the job would be done quickly. However, all of this is only possible if you know the stats of the Pokémon, including their IVs… The old consensus of 15/15/14 IVs did not hold anymore when performing the calculations, so there was another variable to be solved…

The Packet Capture

Luckily, Celandro obtained the IVs of some Pokémon through a packet capture from an anonymous email. Below are two examples, Vulpix and Houndoom:

Pokedex ID: 37
CP Multiplier: 0.85374104
CP: 1326
Attack: 89
Defense: 15 
HP: 9
Pokedex ID: 229
CP Multiplier: 0.85374104
CP: 3956
Attack: 174 
Defense: 15 
HP: 9

This showed us that the Defense IV is 15 and the HP IV is an odd 9. The Attack IV seemed to be variable. I will save you some time, but after fiddling around I found out that the Attack IV equals: 

Floor (2/3 * Pokémon Base ATK + 25)

This gives Pokémon with a naturally high base Attack an even larger boost to their Attack stat!
Using these IVs we could go back into the field and battle a lot… A lot of Rocket’s to get as much data as possible to refine and confirm the multipliers until we were sure they were correct.

Multipliers

The multipliers we managed to deduct were significantly different than they used to be, as shown in the table below.

StatNew MultiplierOld Multiplier
Attack2.04.0
Defense0.82.0
HP1.11.0

Since my Trainer Level was 44 during all encounters, it was now possible to correctly calculate the stats and CP of any Shadow Pokémon I would battle against. The Rocket’s difficulty scales with increasing Trainer level, do we have to repeat the same research and encounters for each Trainer Level? Luckily not, that would be too tedious. Simply said, we recorded the CP of Shadow Pokémon for several Trainer Levels and since CP scales with the stats of a Pokémon, we were able to figure out the difficulty multiplier per level. 

The multipliers per level seemed to follow a linear trend, which allowed us to make a reliable calculation based on regression. Until Trainer Level 40 the multiplier, thus difficulty, increases rapidly. Above that, the increase is only about a fifth of the lower levels. The table below lists all the multipliers (rCPM) per Trainer Level.  For use in the formulas, these still have to be multiplied by the CP Multiplier of 0.85374104 as found in the package capture.

LevelrCPMSample size
501.000000008
490.9958967611
480.991793537
470.9876902958
460.9835870521
450.979483817
440.9753805863
430.9712773429
420.967174107
410.9630708621
400.9565336412
390.9380690720
380.919604509
370.9011399317
360.8826753614
350.8642108025
340.8457462315
330.8272816610
320.808817093
310.790352524
300.771887966
290.7534233917
280.7349588214
270.716494255
260.698029680
250.679565120
240.661100553
230.6426359816
220.624171419
210.605706840
200.587242272
190.568777710
180.550313140
170.531848570
160.513384000
150.494919430
140.476454870
130.457990300
120.439525730
110.421061160
100.402596590
90.384132030
80.365667460

Concluding remarks

During the analysis it was quickly observed that the difficulty multipliers for Team GO Rocket Leaders and Giovanni were changed as well, to 1.05 and 1.15 respectively from their previous 1.2 and 1.25.

Due to the limited sample size of CPs, the certainty of the multipliers is not as perfect as the previous analyses, but it does allow us again to make a good estimation of the stats and CP of the Shadow Pokémon.  With the current dataset, the CP of each Pokémon can be calculated with more than 98% accuracy. 

An important running start was the information Celandro got from the packet capture, which immediately gave us the HP and Defense IVs and allowed us to derive the Attack IVs. After that followed a lot of field work and -in my opinion- enjoyable analysis for the desired results. By the time of you reading this, all the new changes are already implemented in Pokebattler, ready to prepare you for Shadow Ho-Oh!