# Interpolate option volatility in delta space in R

I have a bunch of deltas and option implied vols at those deltas. I would like to interpolate them in R. Interpolating them in delta space seems difficult, since normally you would like the ATM calls and puts to paste together, but in delta space they will be on opposite ends of the x-axis (delta). I was thinking of simply doing the following:

# first convert everything to moneyness type measure
sample_delta = c(seq(-.5, -.05, by=.05), seq(.05, .55, by=.05))
sample_vols = runif(n = length(sample_delta)) # some made up vols
d1 = ifelse(sample_delta < 0, qnorm(sample_delta +1), qnorm(sample_delta))
s = spline(d1, sample_vols)


The issue is that I have to go back and forth converting between d1 and delta when at the end of the day I just want things to be in standardized delta space. Does R have any packages to do this? For example quantmod or something of the sort.

To make things more clear: Given a bunch of deltas and implied vols, I would like to generate an entire vol surface. What is the best way to do this?

• Just use absolute value of delta? – user2183336 May 3 '13 at 22:56
• Use put call parity to standardize everything to either put deltas or call deltas. If you have a mix of each, pick the convention. For example, if you have -20 delta for the put, it corresponds approximately to a 80 delta call. Note you can't take simply take the absolute value of a negative delta and use it meaningfully in this context. it would imply that C+P=S-K, when in reality we have C-P=S-K (taking r=0, q=0) by PC parity. – Veeken May 3 '13 at 23:22
• moreover you know that this spline will introduce errors: deltas between nodes will not fit into BS – 4pie0 May 4 '13 at 1:03
• @user2183336: can't use absolute value of delta becuase the put vol at .45 delta will surely be different than the call vol at .45 delta – Alex May 4 '13 at 1:36
• @cf16: could you eleborate? why will deltas in between nodes not work? i realize it's not an arb free framework, is that what you mean? – Alex May 4 '13 at 1:38