Theoretically callable/puttable bond can have call option and put option on the very same date. Usually they have the same strike and that strike is 100, but let's say the C/P bond has put at 150 and call at 20.
Assuming the forward price is 100 and no discounting takes place, how is this resolved? Should I ask the user to specify the order? Should I value both simultaneously?
Put first: C/P Bond = max(150, min(100, 20)) = 150
Call first: C/P Bond = min(20, max(100, 150)) = 20
Both:
- Bond = 100
- -Call = -max(100-20, 0) = -80
- Put = max(150-100, 0) = 50
- C/P Bond = 100-80+50 = 70