CP Decay Rate Calculator

CP Decay Rate Calculator for CP between 1300 and 2321:

Disclaimer: In testing this calculator against my recorded data, there was no difference in predicted CP/h greater than 0.30, and no difference in predicted %CP/h greater than 0.01% within the bounds of 1300-2321 CP.


CP Decay Rate Calculator for CP 2322 and above:

Note: The minimum value of 2322 is set by the predicted CP at which decay rate becomes 10% of initial CP. However, the actual CP at which decay rate becomes 10% may be slightly higher. Certainly, by 2337 CP the decay rate is effectively 10%.

CP Decay Rate Calculator for CP 250-1299 CP:

Note: The minimum value of 250 is set by the limit of my dataset. Below this value, I no longer trust my numbers to accurately predict decay rate, but below 250 CP you really aren't going to have to worry about decaying too rapidly. My limited data below 250 CP suggests that 1.0% may be the minimum decay rate, and 250 approaches that asymptote.

This page is in beta phase. I have three calculators for CP between 250 and 3617, but these use different formulae. My Java skills aren't up to snuff to put these three calculators all together into one input calculator. Maybe one day... We'll be updating the site and releasing refined calculators when more data becomes available. You can find the analysis leading to these calculators in the article: "An in-depth look at Gym Decay."

I've set up the calculators as long vertical boxes with the hopes that it's still fine for computer access, but friendlier to mobile phones.

4 comments:

  1. Those are *very* nice calculators, congratulations and thank you!

    I could gladly help with your java(script) programming so you can unify all 3 calculators into a single one. Care to share the formulae used?

    ReplyDelete
    Replies
    1. So to be clear, the formula for 1300-2100 is:

      Decay rate (CP/h) = 0.000000000196819448588877 * InitialCP^4 - 0.00000127691766213386 * InitialCP^3 + 0.00318508365091733 * InitialCP^2 - 3.50067982335565 * InitialCP + 2.45983475109574

      and for 250-1299:

      0.0000000000191427876864116 * InitialCP^4 - 0.0000000493858060142652 * InitialCP^3 + 0.0000642743369277974 * InitialCP^2 - 0.0128256672587234 * InitialCP + 2.45983475109574

      Delete
  2. Hey! Yeah sure. I've sorta cheated because I'm using a 4th-order polynomial to generate my data between 1300-2321 CP, but just to get a closest match to my data. I'm using JSCalc.io, so I can just paste the codes here if you want to plug them in yourself to play around with them. I'd institute a minimum of 1%CP/h as the minimum decay rate where things plateau out at the lower end.

    Thanks for the offer! I'm happy to see someone else who's interested :D

    rdr = "real" decay rate in CP/h
    pdr = "predicted decay rate in %CP/h (given by RDR/initial CP)
    inputs.icp = the input CP in the field
    t20 = time until CP is at 20% intiial CP
    t36 = time until CP is at 36% initial CP
    t64 = time until CP is at 64% initial CP

    250-1299 CP as input

    'use strict';
    return{
    rdr: 0.0000000000191427876864116 * Math.pow(inputs.icp, 4) - 0.0000000493858060142652 * Math.pow(inputs.icp, 3) + 0.0000642743369277974 * Math.pow(inputs.icp, 2) - 0.0128256672587234 * inputs.icp + 2.45983475109574,
    pdr: (0.0000000000191427876864116 * Math.pow(inputs.icp, 4) - 0.0000000493858060142652 * Math.pow(inputs.icp, 3) + 0.0000642743369277974 * Math.pow(inputs.icp, 2) - 0.0128256672587234 * inputs.icp + 2.45983475109574) / inputs.icp,
    t20: (inputs.icp - inputs.icp*.20) / (0.0000000000191427876864116 * Math.pow(inputs.icp, 4) - 0.0000000493858060142652 * Math.pow(inputs.icp, 3) + 0.0000642743369277974 * Math.pow(inputs.icp, 2) - 0.0128256672587234 * inputs.icp + 2.45983475109574),
    t36: (inputs.icp - inputs.icp*.36) / (0.0000000000191427876864116 * Math.pow(inputs.icp, 4) - 0.0000000493858060142652 * Math.pow(inputs.icp, 3) + 0.0000642743369277974 * Math.pow(inputs.icp, 2) - 0.0128256672587234 * inputs.icp + 2.45983475109574),
    t64: (inputs.icp - inputs.icp*.64) / (0.0000000000191427876864116 * Math.pow(inputs.icp, 4) - 0.0000000493858060142652 * Math.pow(inputs.icp, 3) + 0.0000642743369277974 * Math.pow(inputs.icp, 2) - 0.0128256672587234 * inputs.icp + 2.45983475109574),
    };

    1300-2321 CP as input

    'use strict';
    return{
    rdr: 0.000000000196819448588877 * Math.pow(inputs.icp, 4) - 0.00000127691766213386 * Math.pow(inputs.icp, 3) + 0.00318508365091733 * Math.pow(inputs.icp, 2) - 3.50067982335565 * inputs.icp + 1452.95301386189,
    pdr: (0.000000000196819448588877 * Math.pow(inputs.icp, 4) - 0.00000127691766213386 * Math.pow(inputs.icp, 3) + 0.00318508365091733 * Math.pow(inputs.icp, 2) - 3.50067982335565 * inputs.icp + 1452.95301386189) / inputs.icp,
    t20: (inputs.icp - inputs.icp*.20) / (0.000000000196819448588877 * Math.pow(inputs.icp, 4) - 0.00000127691766213386 * Math.pow(inputs.icp, 3) + 0.00318508365091733 * Math.pow(inputs.icp, 2) - 3.50067982335565 * inputs.icp + 1452.95301386189),
    t36: (inputs.icp - inputs.icp*.36) / (0.000000000196819448588877 * Math.pow(inputs.icp, 4) - 0.00000127691766213386 * Math.pow(inputs.icp, 3) + 0.00318508365091733 * Math.pow(inputs.icp, 2) - 3.50067982335565 * inputs.icp + 1452.95301386189),
    t64: (inputs.icp - inputs.icp*.64) / (0.000000000196819448588877 * Math.pow(inputs.icp, 4) - 0.00000127691766213386 * Math.pow(inputs.icp, 3) + 0.00318508365091733 * Math.pow(inputs.icp, 2) - 3.50067982335565 * inputs.icp + 1452.95301386189),
    };

    2322+ CP as input

    'use strict';

    return{
    rdr: inputs.icp * 0.1,
    t20: 100*((inputs.icp - inputs.icp*.20) / inputs.icp * 0.1),
    t36: 100*((inputs.icp - inputs.icp*.36) / inputs.icp * 0.1),
    t64: 100*((inputs.icp - inputs.icp*.64) / inputs.icp * 0.1),
    };

    Cheers :)
    Crawdauntz

    ReplyDelete
  3. You can get these candies every time you catch a specific Pokemon, you will get an additional candy for your Pokemon if you transfer it to the Professor.

    Pokemon GO Account

    ReplyDelete