Replicating a Piecewise Derivative Payoff with Options and Bonds
Summary
The document shows how to price a European derivative whose maturity payoff is flat below one threshold, declines linearly between two thresholds, and is flat at a negative value above the second threshold. It identifies the shape as a bear spread and replicates it with a long put at the higher strike, a short put at the lower strike, and a short position in zero-coupon bonds. The present value follows by adding the option prices and discounting the bond payment.
Two alternative derivations clarify the construction. One rewrites the payoff using call payoffs plus a constant, while another builds it segment by segment: start with a bond, add a short lower-strike call to create the downward slope, then a long higher-strike call to restore a flat payoff. Put-call parity allows the call and put representations to be related. The argument relies on European option pricing and no-arbitrage replication; the document does not specify a pricing model or market inputs for valuing the options.
Key ideas
- A piecewise linear payoff can be decomposed into option payoffs and a fixed cash amount.
- A long higher-strike put combined with a short lower-strike put creates the central declining segment.
- A bond position adjusts the spread payoff to match the target payoff’s constant levels.
- The same shape can be built from a bond, a short lower-strike call, and a long higher-strike call.
- Put-call parity relates the put-based and call-based replication portfolios.
Tags
Full text
# Compute the price of a derivative
# Compute the price of a derivative
Consider the payoff function \begin{align*} f(x)=\begin{cases} 3 & \text{if }x\leq 30, \\ 33-x & \text{if }30<x<35, \\ -2 & \text{if } x\geq35. \end{cases} \end{align*}
How would I find todays price of a European-style derivative paying $f(S_T)$ in terms of European put and call options? I am unsure about how to include the payoff functions of call and put options.
## Answer by Kevin (score 6, accepted)
https://quant.stackexchange.com/a/48925
If you plot the function $f$, you see that you have a bear spread. You can build such vertical spreads either with call or put options. For example consider a portfolio selling one put option with strike price $K_1=30$ and purchasing one European-style put option with strike price $K_2=35$. Then, you obtain the payoff \begin{align*} \max\{35-S_T,0\}-\max\{30-S_T,0\} &=\begin{cases} 5 & \text{if }S_T\leq 30, \\ 35-S_T & \text{if }30<S_T<35, \\ 0 & \text{if } S_T\geq35, \end{cases} \\ &= f(S_T)+2. \end{align*} Thus, you can replicate $f(S_T)$ if you sell two zero-coupon bonds (paying $1$ at maturity) and invest in the portfolio described above. Then, by the no-arbitrage principle, the time $t$ price of the payoff $f(S_T)$ is given by $$V(t,S_t)=P(S_t,35,T)-P(S_t,30,T)-2e^{-r(T-t)}.$$
Using the model-free put-call parity $P(S_t,K,T)=Ke^{-r(T-t)}-S_te^{-q(T-t)}+C(S_t,K,T)$, you can equivalently build a portfolio of European-style call options.
## Answer by Gordon (score 5)
https://quant.stackexchange.com/a/48931
It would be much easier to start by writing the payoff using indicator functions. For example, \begin{align*} f(S_T) &= 3 \mathbb{I}_{S_T \le 30} + (33-S_T) \mathbb{I}_{30<S_T < 35} -2 \mathbb{I}_{S_T \ge 35}\\ &=3\big(1-\mathbb{I}_{S_T > 30}\big) + (33-S_T) \big(\mathbb{I}_{S_T > 30} - \mathbb{I}_{S_T \ge 35}\big) -2 \mathbb{I}_{S_T \ge 35}\\ &=3 + (30-S_T)\mathbb{I}_{S_T > 30} + (S_T-35) \mathbb{I}_{S_T \ge 35}\\ &=3 - (S_T-30)\mathbb{I}_{S_T > 30} + (S_T-35) \mathbb{I}_{S_T \ge 35}\\ &=3 - \max(S_T-30, \,0) + \max(S_T-35, \, 0). \end{align*}
## Answer by Slade (score 4)
https://quant.stackexchange.com/a/48930
Here's another way to do it, that I think is useful if you don't recognize/have knowledge of specific option spreads/techniques. This might help you on exams or other problems, although recognizing the different option plays is probably easier.
First you start from the left of the payoff graph, and split the graph into segments, just like how the payoff function itself is split into segments: So there's:
- a horizontal segment of value $3$ (slope $0$) until $S_T = 30$
- a segment of slope $-1$ from $30 \leq S_T \leq 35$
- a horizontal segment of value $-2$ (slope $0$) for $S_T >35$.
So you know that 'no matter what' you have $3 \text{USD}$ at maturity, until something happens at $S_T = 30$, so we just make a portfolio that gives us just that for now. That'd be a long zero coupon bond that pays $3 \text{USD}$ at time $T$, so it's present value in the portfolio is just $3e^{-r(T-t)}$. So the payoff so far that we have constructed is just a horizontal line for all $S_T$.
From there, we know that something occurs to make the slope become from $0$ to $-1$ and that this happens at $S_T = 30$. So we know we need to add to our portfolio a payoff that has slope $-1$ beginning at $S_T = 30$ and value $0$ for $S_T < 30$. If you visualize the type of payoff this is, it's just a call payoff for strike $30$ flipped across the x-axis, so it's a short call position of strike $30$. So now we have a portfolio, $3e^{-r(T-t)} - C(S_t, 30, T)$, and this fulfills the first two segments of the graph since the payoff is $3 + \min(30 - S_T,0)$, which is $3$ below $S_T = 30$ and $33 - S_T$ above $30$.
For the final segment, we know that 'something occurs' at $S_T = 35$ to make the slope $0$ again. This must be something of slope $1$ (since a slope of $1$ and $-1$ will lead to $0$ slope) beginning at $S_T = 35$. So this is just the payoff of a long call position. So we have the final portfolio of $3e^{-r(T-t)} - C(S_t, 30, T) + C(S_t,35,T)$, which has the payoff $3 + \min(30 - S_T,0) + \max(S_T - 35,0)$.
Just to check each case: \begin{align*} f(S_T)=\begin{cases} 3 + \min(30 - S_T,0) + \max(S_T - 35,0) = 3 + 0 + 0 = 3 & \text{if }S_T\leq 30, \\ 3 + \min(30 - S_T,0) + \max(S_T - 35,0) = 3 + (30 - S_T) + 0 = 33- S_T & \text{if }30<S_T<35, \\ 3 + \min(30 - S_T,0) + \max(S_T - 35,0) = 3 + (30 - S_T) + (S_T - 35) = -2 & \text{if } S_T\geq35. \end{cases} \end{align*}
I know @KeSchn already answered but hope this helps since this is how I usually do these. Of course, you can do this multiple ways but this gets to a correct answer relatively quickly.
Edit: Gordon's answer is definitely the way to go if you're comfortable with indicator functions. It does everything the graphical methods do without requiring any visualizing etcShown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.