How a Call Option on a Forward Works and Is Discounted
Summary
A call option on a forward gives its holder the right to enter a forward contract at the option’s expiry. Whether exercise is worthwhile depends on the forward price at that time relative to the strike. The resulting exposure is to the forward contract; it differs from simply valuing the underlying spot asset at the option expiry.
The document also distinguishes option expiry from the forward’s later delivery date. When delivery occurs later, pricing uses discounting to that delivery date, while the option’s exercise depends on the forward price at expiry. A Black-style pricing example compares implementations and discusses how results change when forward maturity differs from option expiry. The answer is primarily an intuition and pricing illustration; its numerical setup depends on specified rates, volatility, dates, and day-count conventions, so it does not establish universal pricing inputs.
Key ideas
- A call on a forward grants the right to enter the forward at the option expiry.
- Exercise value depends on the forward price at expiry relative to the strike.
- The forward delivery date can be later than the option expiry, creating a separate discounting horizon.
- The pricing example highlights the need to align dates and day-count conventions across implementations.
Tags
Full text
# Call option on forward
# Call option on forward
What is the trade description behind a call option on a forward? How can it be described with words and not with mathematical formulas?
So what is the intuition behind the following payoff:
$$Payoff_{1}=\max\left(F\left(T,\tilde{T}\right)-K,0\right)$$
and how does it differ from the following payoff:
$$Payoff_{2}=\max\left(S\left(T\right)-K \cdot p\left(T,\tilde{T}\right),0\right),$$
where $T$ is the call option expiry, $\tilde{T}$ is the delivery date of the underlying, $F\left(t,\tilde{T}\right)$ is the current forward price, $S\left(t\right)$ is the spot price, $p\left(t,\tilde{T}\right)$ is a zero coupon bond maturing at $\tilde{T}$ and $K$ is a strike.
## Answer by AKdemy (score 3, accepted)
https://quant.stackexchange.com/a/74155
A call option on a forward is in essence identical to any other call option - buying a call gives you to right to buy some underlying (can be a stock, a future, a forward, a commodity, an interest rate swap, ... ). I think you are confusing value (zero at initiation of a forward) with price (the cash price of the asset as specified in the forward contract). Instead of spot prices, you use the forward price - that is really the difference.
The delivery date of the forward is the date when the underlying of the forward is transferred. In an option on a forward, you buy the right to buy the forward at some time T. What matters for exercising the option is what the forward price is relative to your strike -> max(F-K,0). It is the same for stock options by the way. You may receive the stock (if it is not cash settled) but it is completely independent of what the stock may be worth at some time in the future (after you exercise). In the worst case, you exercise the option on Friday because S > K but on Monday the firm goes bankrupt and your stock is now worthless. If you do not want to be exposed to changes in the price of the underlying after you exercise, you just sell the stock (or the forward - which in OTC often means you buy an offsetting position).
You can have a look at this answer to see how a spot and forward option look like in FX. This assumes that the forward expires at the exercise time.
With regards to discounting from T̃ or T
If you have a forward that expires later, you get the discounting from the expiry date (delivery date) of the forward. Everything else is identical. You can see this nicely at Matlab's website (where you can even run the code without having a license). An intuitive explanation is given on Wikipedia. It can be replicated quickly in any programming language. Below, I will use Julia.
We first need to import relevant packages, define the CDF and Black pricer. Note that T and T̃ are needed for pricing with Black on forwards where T̃ > T.
```
using Distributions, DataFrames, Dates
N(x) = cdf(Normal(0,1),x)
# generic Black-76 allowing for futures and forwards
function Black(F,K,T,T̃,rd,σ)
d1 = ( log(F/K) + 0.5*σ^2*T ) / (σ*sqrt(T))
d2 = d1 - σ*sqrt(T)
c = exp(-rd*T̃)*(F*N(d1) - K*N(d2))
p = exp(-rd*T̃)*(K*N(-d2)-F*N(-d1))
return c, p
end
```
For the rates, we need to be consistent with the Matlab implementation, which uses 30/360 (SIA) in the examples on the webpage. Details for the so called `Basis` in the `intenvset` interest rate structure can be found here. EndTimes is the year fraction.
```
# rates
ValuationDate = Date(2014,1,1);
EndDates = Date(2015,1,1);
Rates = 0.03
# Matlab Basis set to 1 is 30/360 (SIA) https://uk.mathworks.com/help/fininst/intenvset.html#namevaluepairarguments
months = Dates.month(EndDates) - Dates.month(ValuationDate) # compute month difference
years = Dates.year(EndDates) - Dates.year(ValuationDate)
days = (years*12+months)*30
T̃ = days/360
println("Days = $days")
println("Disc $(exp(-Rates*T̃))" )
println("EndTimes = $(T̃)")
```
$Matlab \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; Julia$
Now, all that is left is to define the option parameters to match Matlab exactly.
```
# option
Strike = (200,90) # call / put
AssetPrice = 107
Sigma = 0.28
Settle = Date(2014,1,1)
Maturity = Date(2014,10,1)
months = Dates.month(Maturity) - Dates.month(Settle) # compute month difference
years = Dates.year(Maturity) - Dates.year(Settle)
days = (years*12+months)*30
T = days/360
DataFrame(Call = Black.(AssetPrice,Strike,T,T̃,Rates,Sigma)[1][1],
Put = Black.(AssetPrice,Strike,T,T̃,Rates,Sigma)[2][2])
```
$Matlab \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; Julia$
A bit more interesting is to check what happens when the expiry of the forward is set to a date far out. Within Matlab, if `ForwardMaturity` is not passed, the function calculates prices of future options. If ForwardMaturity is passed, the function computes prices of forward options. For the same option, setting ForwardMaturity to 'Jan-1-2032' (you can try this out yourself on Matlab's website) will give the following results (note, that the second result is an option on a future (or where the forward expires at option expiry).
$Matlab \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; Julia$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.