This is basic binary tree modelling which works for puts and calls. What you don't show is how to get
Cd - the price of the call in the "up" and "down" underlying price cases. If you know how calls work and how to evaluate those, you can do roughly the same for puts (hint: for calls, the payoff value is
MAX(0, S-K), for puts, the value is
if the price of the put option is not equal to this value, how would you arbitrage it to make riskless profit?
You can't always arbitrage just from the mispricing of a put. You also have to have another derivative (usually a call at the same strike and expiry) in order to pull off an arb.
But let's say a put is priced higher than its value, and a call at the same strike and expiry is fairly priced. You would sell the put, short the stock, and buy the call. Then your price exposure is zero:
- If the stock goes below the strike, you make money on the stock, lose it on the put, and your call is worthless.
- If the stock goes above the strike, you'd make money on the stock, lose it on the call, and the put would be worthless.
Your profit would be the difference between the put you sold and the call you bought, less any borrowing costs for shorting the stock and the difference between the strike and the current stock price.
In reality, though, if a put is "mispriced" in your model, it's because the market is using different values for
d (and/or different discounting rates), and calls will also be "mispriced", negating this arbitrage opportunity. It's called "put-call parity".