Finite-Difference Theta Acceleration and Its Limits Across Options
Summary
The document examines how an option’s theta changes as time passes, sometimes described as theta acceleration. It distinguishes the textbook Black–Scholes theta from a finite-difference estimate obtained by repricing after a one-day time shift. Comparing successive estimates gives a practical way to track changes in theta while holding other inputs constant. The discussion notes that this measure can help analyze the relative decay of near- and longer-dated options in a calendar spread.
The examples emphasize that theta’s familiar acceleration toward expiry is most representative of at-the-money options. In-the-money and out-of-the-money options can show different shapes, including a turn toward zero. The document also suggests separating time-related P&L into carry and roll-down when explaining changes in theta, since interactions with other market inputs may matter more than a pure second derivative with respect to time. The examples are illustrative and model-based, not evidence of a trading edge.
Key ideas
- Finite-difference theta can be estimated by repricing an option after a small time shift.
- Comparing successive theta estimates measures how theta changes over time.
- The familiar acceleration of theta toward expiry is most applicable to at-the-money options.
- Moneyness affects the shape of theta changes, so other options may show a turning point.
- Carry, roll-down, and interactions with changing market inputs can be more useful for P&L attribution than a pure time second derivative.
Tags
Full text
# Theta changes over time
# Theta changes over time
Theta is the change of an options value with respect to time. But theta itself changes over time. Today's option theta is not the same as tomorrow's option theta. What is the greek name for this value? And where can I learn more about it?
This would seem like a useful measurement in things like calendar spreads where the theta decay of the near term option against the longer term option's theta decay is a consideration.
## Answer by AKdemy (score 7)
https://quant.stackexchange.com/a/74856
The classic textbook depiction of theta decay shows that it accelerates until expiry. It is frequently shown with regards to the option value as shown below.
This only holds for ATM options though, because an ITM option will not be worth zero at expiration, and an OTM option will already be almost worthless some time prior to expiry. Therefore, there will be an inflection point and turnaround somewhere after which theta goes towards zero.
(FD) Finite difference theta (a 1 day bump and reprice theta) is simple to implement for the purpose of figuring out theta and its change over time. You can look here for some details. In Julia, you could use the following code to get a DataFrame of theta and its change for various days to expiry, holding all else equal. This code includes the model theta (textbook Black Scholes theta), but the Black Scholes price itself is sufficient if you only use FD theta.
```
#import packages
using Plots, Distributions,DataFrames, PlotThemes, PrettyTables, Interact
# define PDF and CDF
N(x) = cdf(Normal(0,1),x)
n(x) = pdf(Normal(0,1),x)
#define Black Scholes with theta (cp = 1 is call, -1 is put)
function BSM(S,K,t,r,d,σ, cp)
d1 = ( log(S/K) + (r - d + 1/2*σ^2)*t ) / (σ*sqrt(t))
d2 = d1 - σ*sqrt(t)
opt = cp*exp(-d*t)S*N(cp*d1) - cp*exp(-r*t)*K*N(cp*d2)
theta = (-(S * exp(-d*t)*n(d1)* σ )/ (2 * sqrt(t)) - r * cp * K * exp(-r*t) * N(cp *d2) +cp*d * S * exp(-d*t)*N(cp *d1))/365
return opt, theta
end
# define inputs
S,K,r,d,σ,cp_flag = 100,100,0.0,0.02,0.38,1
# compute results
t = 1/365:1/365:42/365
days = 1:1:42
collect(days)
res = BSM.(S,K,reverse(t),r,d,σ,cp_flag)
val = [x[1] for x in res]
theta_bump = append!([val[i+1]-val[i] for i in 1:1:length(val)-1],(cp_flag==1 ? max(S-K,0) : max(K-S,0))+(-val[end]))
theta_change = append!([theta_bump[i+1]-theta_bump[i] for i in 1:1:length(theta_bump)-1], 0)
# output in dataframe
df= DataFrame("Days"=> reverse(days), "TV" => [x[1] for x in res], "Theta" => [x[2] for x in res], "Theta Bumped" => theta_bump, "Theta Acc" => theta_change)
PrettyTables.pretty_table(df, border_crayon = Crayons.crayon"blue", header_crayon = Crayons.crayon"bold green", formatters = ft_printf("%.4f", [2,3,4,5]))
```
In the DataFrame below,
- TV is the theoretical value of a call,
- theta is Black Scholes model theta,
- theta bumped is the finite difference theta, and
- theta acc is the theta acceleration, which becomes bigger and bigger the closer to expiration in this ATM example (S=K=100).
We can use the DataFrame to make an interactive chart using a syntax similar to the one used here. You can clearly see that the shape from the textbook figure above is only valid for approximately ATM options.
Including acceleration, you see the following for an OTM Call:
ITM Call
OTM Put (why theta can be positive here is explained in this answer)
and so forth...
Another observation that may be interesting: Theta crosses the ratio of the price over the number of days left to expiry (P/N) from above at the lowest level of P/N when plotted with time remaining until expiration. This point corresponds graphically to the falling inflection point of theta.
To get this for calendar spreads, you just need to combine two positions.
## Answer by Dimitri Vulis (score 6)
https://quant.stackexchange.com/a/74853
This old question Why we consider second derivative w.rt price but only first derivative w.r.t time and volatility suggests that it may just be called "acceleration".
If I were pricing some exotic instrument, and wanted to use a Taylor expansion to explain the changes in theta from one day to the next, then:
1 I'd disaggregate the P&L due to passage of time into carry and rolldown, and try to attribute separately the changes in each.
2 I'd expect that the cross-gammas between the time and various other inputs (e.g., the rolldown changed because some market data changed; carry changed because some floater coupon got reset) affect things more than any second derivative wrt time.
It doesn't sound like the most useful calculation, but might be nice to have in place for all first order greeks, to ensure that the numbers add up.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.