Let's say we have 2 pokemons of the same type. Their CP will depend on the following values:
- IV (IndividualStamina, IndividualAttack, IndividualDefense)
- CpMultiplier
- AdditionalCpMultiplier
These values, together with move types, weight, height are what makes your pokemon unique.
Mechanisms that change these values:
- IV are fixed since catching a pokemon and never change
- CpMultiplier seems to be fixed and never changes it depends on player level at the time a pokemon was caught (list is here https://docs.google.com/spreadsheets/u/1/d/1I0Kt_QblThH2rf7vdZOC2L1Nuf7Y1xx68j_KYwfcpXc/htmlview?sle=true#)
- AdditionalCpMultiplier is 0 at beginning and increases with every Power-up (it appears to scale better with higher IVs)
A perfect pokemon at catch time would be one that has
- 100% IV (all three values are 15)
- CpModifier is 0.7903 (caught at player level 40)
- Best move combo/type
My recommendation on pokemons to keep: Long-term (for powerups)
- 90% or more IV
- CpModifier higher than 0.7 (caught at level 28 or higher)-
Later you can additonally filter these based on move sets.
Short-term (just so your pokemon inventory is not empty, do not power-up, not for end-game)
- CP > 1000 or some other value you like