Bull-Spread Valuation Before Expiration with Black-Scholes
Summary
The document addresses how to plot the value of a bull call spread before expiration. It distinguishes an option’s expiration payoff from its current theoretical value: before expiry, the Black-Scholes model prices each call using the current stock price, strike, interest rate, volatility, and remaining time. A spread’s modeled value is then formed from the prices of its long and short calls, which have different strikes.
As expiration approaches, the modeled portfolio value converges toward the expiration payoff, as illustrated in the response’s plots. The answer suggests calculating both call prices across a vector of stock prices and plotting the portfolio value alongside the terminal payoff. It mentions illustrative rate and volatility inputs, but does not establish that Black-Scholes prices will match market prices. The document’s key caveat is conceptual: a pre-expiry graph shows model-based fair value, not a realized payoff, and errors in implementation can still produce an unexpected shape.
Key ideas
- Before expiration, a call’s value is its modeled option price rather than its terminal payoff.
- A bull call spread can be valued by combining Black-Scholes prices for calls with different strikes.
- Calculating prices across stock-price values produces a curve for the spread’s current theoretical value.
- As time to maturity decreases, the modeled value converges toward the expiration payoff.
- The result depends on the pricing model and correct implementation of its inputs.
Tags
Full text
# How do we calculate option payoff before expiration?
# How do we calculate option payoff before expiration?
I am trying to simulate a bull spread option
and I have used an online tutorial to calculate `payoff at expiry` but I am having difficulty simulating the payoff before expiration.
What I have done so far,
```
# payoff for long call
long call premium = bs_model()
long call payoff = max(spot-strike,0)-long call premium
# payoff for short call
short call premium = bs_model()
short call payoff = -1*(max(spot-strike,0)- short call premium)
# Theoretical P&L
theoretical p&l= long call payoff + short call payoff
* bs_model = Black Scholes Model
```
This theoretical P&L I plotted to a graph but instead of getting the smooth sigmoidal curve like the image above I getting a weird graph?
Edit:
The above calculations are my own guess work of calculating theoretical P&L. Can any one share a good link which explains the calculation of theoretical payoff before expiry? I searched all the web and cant find any?
## Answer by Kevin (score 3, accepted)
https://quant.stackexchange.com/a/46784
Somewhere must be a little error, here I used $r=0.02$ and $\sigma=0.25$. In black you have the payoff and in red the current price of the portfolio. Note that as the time to maturity decreases, the red line converges towards the black line. In grey and and yellow (on the secondary axis), you can see the individual call option prices which form your portfolio. So, I am sure you just have a little error somewhere and as Bob said, if you show your calculations, we'll be able to point at it or you may find it yourself.
Here, you can see the plot if the time to maturity is small (e.g. 0.01).
### Edit
All you have to do is to implement the Black Scholes formula for two call options which have different strike prices. To this end, implement the formula above and input a vector of stock prices to this function. It will output you a vector containing the current option prices which you can then plot getting a similar plot as above.
Please note that you do not compute `payoffs before expiry'' but the`fair'' option price according to some model. The Black Scholes formula looks like a payoff weighted with some probabilities, i.e. $C(t,S) = S_t N(d_1)+Ke^{-r(T-t)}N(d_2)$.
If you want to implement this function, you may use the following MATLAB code which can be easily translated into any other coding language.Shown 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.