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#)