Option Elasticity Ω

Define BS formulae and associated functions.  Also initialize variables/parameters.

t=.;T=.;S=.;St=.;delta=.;sigma=.;r=.;K=.;

d1[S_,K_,r_,delta_,sigma_,T_,t_]:=(Log[S/K]+(r-delta+sigma^2/2)(T-t))/(sigma*Sqrt[T-t]);

d2[S_,K_,r_,delta_,sigma_,T_,t_]:=(Log[S/K]+(r-delta-sigma^2/2)(T-t))/(sigma*Sqrt[T-t]);

CNorm[d_]:=CDF[NormalDistribution[0,1],d];

VCall[S_,K_,r_,delta_,sigma_,T_,t_]:=S*Exp[-delta*(T-t)]*CNorm[d1[S,K,r,delta,sigma,T,t]]-K*Exp[-r*(T-t)]*CNorm[d2[S,K,r,delta,sigma,T,t]];

VPut[S_,K_,r_,delta_,sigma_,T_,t_]:=K*Exp[-r*(T-t)]*CNorm[-d2[S,K,r,delta,sigma,T,t]]-S*Exp[-delta*(T-t)]*CNorm[-d1[S,K,r,delta,sigma,T,t]];

CDelta[S_,K_,r_,delta_,sigma_,T_,t_]:=(1/2) (E^(delta (t-T))) (1+Erf[(((-delta+r+((sigma^2)/2)) (-t+T)+Log[(S/K)])/((Sqrt[2]) sigma (Sqrt[-t+T])))]);

PDelta[S_,K_,r_,delta_,sigma_,T_,t_]:=-(1/2) (E^(delta (t-T))) Erfc[(((-delta+r+((sigma^2)/2)) (-t+T)+Log[(S/K)])/((Sqrt[2]) sigma (Sqrt[-t+T])))];

The elasticity Ω = Δ((Subscript[S, t])/C):

Define (Subscript[Ω, call]) and (Subscript[Ω, put]):

COmega[S_,K_,r_,delta_,sigma_,T_,t_]:=CDelta[S,K,r,delta,sigma,T,t]*S/VCall[S,K,r,delta,sigma,T,t];

FullSimplify[COmega[S,K,r,delta,sigma,T,t]]

POmega[S_,K_,r_,delta_,sigma_,T_,t_]:=PDelta[S,K,r,delta,sigma,T,t]*S/VPut[S,K,r,delta,sigma,T,t];

FullSimplify[POmega[S,K,r,delta,sigma,T,t]]

Plot (Subscript[Ω, call]) For Various Strike Prices

Plot[{COmega[S,100,.05,.02,.1,1,0],COmega[S,90,.05,.02,.1,1,0],COmega[S,110,.05,.02,.1,1,0],COmega[S,120,.05,.02,.1,1,0],COmega[S,80,.05,.02,.1,1,0]},{S,60,130}, AxesLabel->{"(Subscript[S, t])","(Subscript[Ω, call])"},PlotLabel->"(Subscript[Ω, call]) for call w/ various strike prices K when \nr = 5%, δ = 2%, σ = 10%, T=  1, and t = 0", PlotStyle->{{Red,Thick},{Blue,Thick},{Green,Thick},{Green,Thick,Dashed},{Blue,Thick,Dashed}}, PlotLegends->LineLegend[{Directive[Blue,Dashed,Thick],Directive[Blue,Thick],Directive[Red,Thick],Directive[Green,Thick],Directive[Green,Dashed]},{"K=80","K=90","K=100","K=110","K=120"},LegendFunction->"Frame"],GridLines->Automatic]

Plot (Subscript[Ω, put]) For Various Strike Prices

Plot[{POmega[S,100,.05,.02,.1,1,0],POmega[S,90,.05,.02,.1,1,0],POmega[S,110,.05,.02,.1,1,0],POmega[S,120,.05,.02,.1,1,0],POmega[S,80,.05,.02,.1,1,0]},{S,60,130}, AxesLabel->{"(Subscript[S, t])","(Subscript[Ω, put])"},PlotLabel->"(Subscript[Ω, put]) for put w/ various strike prices K when \nr = 5%, δ = 2%, σ = 10%, T=  1, and t = 0", PlotStyle->{{Red,Thick},{Blue,Thick},{Green,Thick},{Green,Thick,Dashed},{Blue,Thick,Dashed}}, PlotLegends->LineLegend[{Directive[Blue,Dashed,Thick],Directive[Blue,Thick],Directive[Red,Thick],Directive[Green,Thick],Directive[Green,Dashed]},{"K=80","K=90","K=100","K=110","K=120"},LegendFunction->"Frame"],GridLines->Automatic]

Surface Plot of (Subscript[Ω, call]) For Varying Stock and Strike Prices

Plot3D[COmega[S,K,.05,.02,.75,1,0],{S,50,130},{K,50,120}, AxesLabel->{"(Subscript[S, t])","K", "(Subscript[Ω, call])"},PlotLabel->"(Subscript[Ω, call])(S,K) when r = 5%, δ = 2%, σ = 0.75, T=  1, and t = 0", ColorFunction->Function[{x,y,z},Hue[0.65*(1-z)]]]

Contour Plot of (Subscript[Ω, call]) For Varying Stock and Strike Prices

ContourPlot[COmega[S,K,.05,.02,.75,1,0],{S,50,130},{K,50,120}, FrameLabel->{"(Subscript[S, t])","K"},PlotLabel->"(Subscript[Ω, call])(S,K) when r = 5%, δ = 2%, σ = 0.75, T=  1, and t = 0",PlotLegends->Automatic, ColorFunction->"TemperatureMap", Contours->45]

Surface Plot of (Subscript[Ω, call]) For Varying Volatility and Strike Prices

Plot3D[COmega[100,K,.05,.02,sigma,1,0],{sigma,0.1,1/5},{K,70,120}, PlotPoints->45,AxesLabel->{"σ","K", "(Subscript[Ω, call])"},PlotLabel->"(Subscript[Ω, call])(σ, K) when S = 100, r = 5%, δ = 2%, T=  1, and t = 0", ColorFunction->Function[{x,y,z},Hue[0.65*(1-z)]],PlotRange->All]

Contour Plot of (Subscript[Ω, call]) For Varying Volatility and Strike Prices

Quiet[ContourPlot[COmega[100,K,.05,.02,sigma,1,0],{sigma,1/10,2/10},{K,70,120}, Contours->45,FrameLabel->{"σ","K"},PlotLabel->"(Subscript[Ω, call])(σ, K) when S = 100, r = 5%, δ = 2%, T=  1, and t = 0", PlotLegends->Automatic, ColorFunction->"TemperatureMap"]]

Surface Plot of (Subscript[Ω, call]) For Varying Volatility and Strike Prices - Close Up

Quiet[Plot3D[COmega[100,K,.05,.02,sigma,1,0],{sigma,1/10,2/10},{K,101,105}, PlotPoints->45,AxesLabel->{"σ","K", "(Subscript[Ω, call])"},PlotLabel->"(Subscript[Ω, call])(σ, K) when S = 100, r = 5%, δ = 2%, T=  1, and t = 0.", ColorFunction->Function[{x,y,z},Hue[0.65*(1-z)]],PlotRange->All]]

Contour Plot of Call Ω For Varying Volatility and Strike Prices - Close Up

Quiet[ContourPlot[COmega[100,K,.05,.02,sigma,1,0],{sigma,1/10,2/10},{K,101,105}, Contours->45,FrameLabel->{"σ","K"},PlotLabel->"(Subscript[Ω, call])(σ,K) when S = 100, r = 5%, δ = 2%, T=  1, and t = 0", PlotLegends->Automatic, ColorFunction->"TemperatureMap"]]