# CAP BSR Calculator Repository

#### GMars

##### It's ya boy GEEEEEEEEMARS
Hi everyone, we've updated the CAP BSR to account for the legal Pokemon in Sword and Shield. Since CAP LC Pokemon are usable in CAP battles now on Pokemon Showdown, they've also been included in this version of the BSR calculator. Big thanks to Quanyails for help with this update and for writing a script to pull the stats for all the SwSh + CAP Pokemon, and thanks to Wulfanator72, LucarioOfLegends, and Jho for help in reviewing which formes should be included in this version.

Last Updated: April 10th, 2020

This thread will also serve to announce updates to the calculator as new main series DLCs are released and made available on Showdown.

Please let us know if you find any errors in the calculator, thank you!

#### Orig Stall Guy

As a math major and statistician. This is awesome.
Would love to work on this in the future.

For 27 stat limits, Ive got some experiments to do.

#### hublo

Doesn't this calculator have a bias towards mixed attackers? Both special sweepiness and physical sweepiness contribute to the rating, but generally you don't run mixed sets. I checked old posts for some insight on the rating formulae, but I wish to learn more.

#### Bughouse

##### Like ships in the night, you're passing me by
hublo
The best way I'd summarize how BSR works with respect to mixed attackers is that a mixed attacker like Infernape isn't a better physical attacker relative to a purely physical attacker like Machmp merely because Infernape can also run special or mixed sets. In terms of their Physical Sweepiness component, the two mons are just evaluated based on Speed and Attack. Special Attack/the ability to go mixed just isn't factored into PS.

In terms of how the final BSR is calculated from PS, PT, SS, and ST, it's not literally just PS + PT + SS + ST, but it's not that far off from that. So, yes, being better at both Physical and Special sweeping will result in a higher BSR than being good at just Physical sweeping alone, even if the Pokemon will only ever run physically attacking sets.

This does mean that Beartic comes out ahead of Golurk in BSR in at least some part due to its higher SS stat, even though neither Golurk nor Beartic will ever be using special attacks. If I assign Beartic the same SS as Golurk, then the BSR gap between the two mons drops to 7 points from the actual 15. So about half of the BSR difference here comes from a special sweepiness rating that will never matter, while the other half comes from Beartic's greater bulk.

 Species Name HP Atk Def SpA SpD Spe SF BST PT ST PS SS BSR Beartic 95 130 80 70 80 50 190 505 131.29520 136.48282 126.62954 83.75912 250.48834 Golurk 89 124 80 55 80 55 211 483 125.57219 130.48354 127.07733 72.08958 235.66864

The fact that Beartic is rewarded like this for a SpA stat it will never use is perhaps not ideal. But the point of BSR is really just to look at stats in a vacuum and in that sense, Beartic really is a more viable special attacker than Golurk is, and the BSR reflects that.

IMO this doesn't mean that BSR is wrong. It really just comes down to the fact that BSR isn't the end-all be-all. It evaluates stats in a vacuum and you then have to look at them with added context of the Pokemon/metagame.

For example, Beartic is ostensibly bulkier than Golurk due to a higher HP base stat of 95 vs 89 and the PT and ST stats reflect that. Yet no one would ever use Beartic defensively in any metagame due to its Ice typing and the many weaknesses that come with that, including to Stealth Rock, as well as its lack of a support movepool that would make a defensive set worthwhile. Golurk on the other hand has a good defensive typing with 3 immunities, as well as Stealth Rock, which in some metagames has led to it being used as a bulky SR setter.
Similarly, if you look at the BSR, you'd say Dragapult is a better physical attacker than special attacker, but we know it usually isn't, and that's because of movepool.

#### hublo

I dug some more in the old threads by X-Act and needless to say I was fascinated by his posts. From what I understood:
• Calc level 100 stats
• Calc the % of pokemon you outspeed
• Assuming each pokemon stat follows a normal distribution, re-scale the stats to have a mean of 100 and a standard deviation of 50
• Plug the values into the sweepiness and tankiness formulae
• Take the mean of the resulting values and re-scale to a mean of 200 and a standard deviation of 100.
I still have some questions though. Where does the +415 in the sweepiness formula come from? Why work with level 100 stats? Why wasn't there a follow up on the typing rate? And what happened to X-Act?

#### Hematite

Where does the +415 in the sweepiness formula come from?
I didn't know this either, but I looked into it and found this explanation! That's actually really fascinating - I'm glad you asked!!

Why work with level 100 stats?
This is because BSRs are mainly used for Showdown (and specifically CAP), where a standard battle has all Pokémon at level 100 - the goal is for the results to be as practical and relevant as possible, so using something like raw base stats wouldn't really mean anything. Think about a sweeper with base 100 Attack and a sweeper with base 110 Attack - if you just used raw base stats, you'd think the second sweeper was 10% better than the first one, right? But their actual stats if they invest are 299 and 319 - so the second one only hits more like 6.7% harder. The rating system is designed to take that into account!
Of course, if you were using it for a different format, like VGC (level 50) or Little Cup (level 5), you would definitely want to change that!! But level 100 is what's relevant for CAP, so it's the standard for the formula.

Why wasn't there a follow up on the typing rate?
I can't really speak to why anyone else decided against this, but I think it's just a matter of scope. BSR is far from the only factor that tells us about a Pokémon's viability - honestly, I think the most important factor would to account for the base power of moves, followed by damage- or stat-boosting Abilities, because those consistently, directly affect damage output more than conditional type matchups - but I can see why it would be hard to take all of these things into account. Ultimately, BSR is only a guideline anyway - it's not meant to measure how strong a Pokémon is at all, just literally how good its stats alone appear to be.
Buuut aside from that, if we're using it for CAP (which I think is why it was created from the start? but if I'm wrong on that... it's definitely at least its main purpose now), typing will have been decided already by the time BSR is being considered - so it gets taken into account when people decide on the legal ranges during the Stats Discussion stage. Automating that would leave less room for discussion/discretion/case-by-case judgment, and it would also complicate the process more than ease it, because now the approval of the same BSR and bias values could mean something completely different for two different Pokémon and people basically need to relearn the process for every individual CAP.
With that said, I kind of support leaving that out of it, although I'm not sure if this was the rationale behind the original decision.

Aaand no idea on the last one, haha. Sorry :'D

#### Bughouse

##### Like ships in the night, you're passing me by
X-Act retired some time in 2010. It happened around the time of some major changes in his work/life that made him feel he would no longer be able to actively contribute. People across the site definitely had to learn how to take on a lot of the things he was doing. He was very involved and the leading expert on many things beyond BSR.

#### Wulfanator

##### Clefable's wish came true!
I am submitting this for QC since the calculator needed an update to account for the additions of DLC1

For those that prefer google sheets. use this link (make sure to go to File > Make a copy)

Top 50 Usage sheet should be updated closer to the stats stage

Last edited:

#### QxC4eva

Moderator
After realizing people who edit or do experiments with the spreadsheet must keep guessing numbers to get the formulas to work, my OCD has been triggered and I had to fix the spreadsheet. This version should be more intuitive to use and maintain.

• Standardization calculations are now automated
• Cleaned up the spreadsheet formulas so Excel no longer complains about inconsistencies
• Speed factor (SF) converted to percentile format (e.g. 88% SF means you outspeed 88% of all mons)
• Color references now use a heatmap - red/orange/yellow/green rather than the colors of the rainbow
• Maintaining & updating the sheet been made a lot easier - instructions are below
1. Go to the BSR of All Pokemon sheet
2. Scroll down and select the last Pokemon's row, or however many mons you want to add
3. Right click -> Copy
4. Right click again -> Insert Copied Cells
5. Enter in the new Pokemon's name and base stats
1. Go to the BSR of Top 50 CAP Meta Pokemon sheet
2. Replace the Pokemon names with those of the latest top 50
3. The corresponding stats should update automatically. If #N/A errors pop up it means you entered a name not found in the BSR of All Pokemon sheet, and you need to update that list too (see instructions above)
4. Update the footer banner with the new usage month

The formulas have been tweaked so that when you add in new mons, you no longer need to update the selection ranges or the speed factor sheet etc.

#### Quanyails

##### On sabbatical!
If you're the type of person who likes coding instead of a spreadsheet (like me), you might enjoy having the BSR formulas in code!

I've created a Pokemon BSR library in JavaScript here. The algorithm has been verified to match the spreadsheet, so it can also be used to double-check that any changes made to the BSR algorithm didn't mess with the final values. This also contains all of the historical articles on the BSR formula I could find.

You don't need to download the library directly unless you know what you're doing. You can use Breezi on the CAP Discord server to run this code for you through commands!

#### MagikaripIsOP

why does it mess up when i sort by bsr in the all pokemon page?

#### QxC4eva

Moderator
why does it mess up when i sort by bsr in the all pokemon page?
It shouldn't if you select cells A6 to Q655 and sort by column Q - I can confirm that it works for me.

#### MagikaripIsOP

It shouldn't if you select cells A6 to Q655 and sort by column Q - I can confirm that it works for me.
when i click q it deselects what i highlighted

#### MagikaripIsOP

Doesn't bsr weigh mixed offense too highly? Looking at Marshadow and Mew for example:

Marshadow: 90 hp, 125 attack, 80 defense, 90 special attack, 90 special defense, 125 speed
-bst: 600
-bsr: 388.4

Mew: 100 everything
-bst: 600
-bsr: 391.2

How would mew have a higher bsr? Isn't it almost clear Marshadow has a better stat distribution?

#### QxC4eva

Moderator
MagikaripIsOP I moved your question here. The answer is yes. BSR will assume all 6 stats are used so every spread will be treated as a mixed wall and mixed attacker that will sweep. Just like BST. That means mixed attacker spreads will have naturally higher BSRs and BSTs. We had this problem in the CAP 28 stats and ended up applying a mask to lessen the limit for mixed attackers. Another quick fix is being proposed to take on the issue better

As for the real solution, it's to consider only the attacking stat being used. For BST this will be HP+max(Atk,SpA)+Def+SpD+Spe.
For BSR it'll be max(PS,SS)+PT+ST.

Obviously that assumes we can go only physical or special in offense and not mixed, which is wrong. The formula should therefore be max(PS,SS,MS)+PT+ST where MS is the rating for mixed sweepiness. We don't have such a rating yet so it needs to be derived - there's a number of possible models for it and it's a matter of working out the 'best' one. Anyone interested having a go can feel free to get in touch with me :)

#### MagikaripIsOP

MagikaripIsOP I moved your question here. The answer is yes. BSR will assume all 6 stats are used so every spread will be treated as a mixed wall and mixed attacker that will sweep. Just like BST. That means mixed attacker spreads will have naturally higher BSRs and BSTs. We had this problem in the CAP 28 stats and ended up applying a mask to lessen the limit for mixed attackers. Another quick fix is being proposed to take on the issue better

As for the real solution, it's to consider only the attacking stat being used. For BST this will be HP+max(Atk,SpA)+Def+SpD+Spe.
For BSR it'll be max(PS,SS)+PT+ST.

Obviously that assumes we can go only physical or special in offense and not mixed, which is wrong. The formula should therefore be max(PS,SS,MS)+PT+ST where MS is the rating for mixed sweepiness. We don't have such a rating yet so it needs to be derived - there's a number of possible models for it and it's a matter of working out the 'best' one. Anyone interested having a go can feel free to get in touch with me :)
Wouldn’t it be better to go with max(ps,ss) for now since the vast majority of Pokémon only run one? Of course there are exceptions but far less than going with the current route.

also since I’m here again, I managed toget the spreadsheet sorting work for me. Any reason it doesnt have every Pokémon. Too consuming?

I don’t want to sound pushy or anything by the way, just genuine questions

#### QxC4eva

Moderator
Here's a revamp of the BSR calculator for CAP 29.

Changes
• Upgraded to the new formulas discussed in this PR thread
• Added a calculator for the Turns (T) value *
• Modified the Speed Factor (SF) to account for speed ties
• Added in the new CAPs and prevos as well as the new mons from Crown Tundra
• Updated the top 50 based on the Snake Draft usage stats of 11/2020
• Added a toggle for which offense ratings to show - if the TL sets PS and SS limits, keep this at "PS+SS"; otherwise select "S only"
* If you want to play around with the Turns value calculator I recommend saving a separate copy of the file cause the formulas will read from the result of the green cell, which will subsequently alter your stat ratings if you're also submitting for CAP 29. Submissions will need to use the default value T=1.99517. If in doubt just don't touch anything there and you'll be good ;)

Big shout out to MrDollSteak for adding in the new mons and also independently implementing a separate version of this update so we can cross check each other for mistakes. We'll be around to assist with any issues with the calculator - feel free to give us a ping.

#### QxC4eva

Moderator
BSR calc update for CAP 30! Added Chromera and Dorsoil and updated the top 50 to the Swiss Tour stats.
Thanks to Tada and MDS for giving me all the data to copy paste over.

Edit: direct link to the spreadsheet without the archive folder

Use file > make a copy to use it in google sheets. Or file > download to use it in your own spreadsheet program.

Edit 2: Updated the targets list in T value sheet to the new top 50. Apologies that I forgot to update this earlier. The corrected default T is now 1.86611 as opposed to what it was previously (1.94534). Fortunately, this fix has a very minimal effect on BSR values with a difference of only 1-2 units. Follow the same link.

Last edited: