Put-call parity is a relationship, first identified by Stoll (1969), that must exist between the prices of European put and call options that both have the same underlier, strike price and expiration date. The relationship is derived using arbitrage arguments. Consider two portfolios consisting of:
The call option and an amount of cash equal to the present value of the strike price.
The put option and the underlier.
Exhibit 1 compares the expiration value for these two portfolios, with x representing the common strike price:
What is significant about Exhibit 1 is the fact that the two portfolios (call + cash and put + underlier) have identical expiration values. Irrespective of the value of the underlier at expiration, each portfolio will have the same value as the other.
If the two portfolios are going to have the same value at expiration, then they must have the same value today. Otherwise, an investor could make an arbitrage profit by purchasing the less expensive portfolio, selling the more expensive one and holding the long-short position to expiration. Accordingly, we have the price equality:
c = the current market value of the call;
PV(x) = the present value of the strike price x, discounted from the expiration date at a suitable risk free rate;
p = the current market value of the put;
s = the current market value of the underlier.
Equation  is the put-call parity. Note that it is not based on any option pricing model. It was derived purely using arbitrage arguments. It applies only to European options, since a possibility of early exercise could cause a divergence in the present values of the two portfolios.
Put-call parity offers a simple test of option pricing models. Any option pricing model that produces put and call prices that do not satisfy put-call parity must be rejected as unsound. Such a model will suggest trading opportunities where none exist.