# Newbie question on volatility surface building

I am trying to build a prototype equity volatility surface for pricing european call options, as a way of learning a new programming language that I am looking at.

Is there anything wrong with the following method which I have put together from research:

1. back out Black Scholes vols from quoted options prices (solve BS formula for volatility)
2. fit = do a polynomial regression between BS vols versus vols from a local volatility model
3. apply cubic splines (in two directions) to fitted vols to allow for interpolation where we don't have a vol point

Questions:

1. Does my approach sound reasonable or is it completely stupid?
2. Should i interpolate missing market data before doing this procedure, for missing options quotes? Or should i interpolate the surface vols instead, once I have fitted the IVs? This I see as building the surface. I anticipate further interpolation will be needed for the days between contract expiries, on an adhoc basis if a user requests an IV for a date we don't have on the built surface.
3. Is this volatility surface only good for one day? Tomorrow, do i need to create a new surface to account for the changed inputs (eg. spot)? Or can i somehow roll forward todays surface tomorrow? Or can i simply use todays surface tomorrow?
4. How and when do you apply the no-arbitrage constraints that i have read about. Is it done during the fitting, somehow the fitting must consider the constraints?

Thanks in advance for all pointers. I have not built a volatility surface from scratch before and would appreciate any useful tips.

• Question 2, no. If you were to trade on this, the more frequent you update, the better, as the more accurate representation of the current state of the market you will have. Of course, there needs to be a balance between accuracy and speed. Nov 10, 2020 at 13:13
• Not sure what you are actually doing in your second point. Can you be more specific? Nov 10, 2020 at 14:44
• @Daneel - I am using Dupire vol model to calculate an IV. First i calibrate that model (calculate the coefficients of the quadratic equation) by doing a regression against the black scholes IV numbers backed out from market. Then with the calibrated model i get a new bunch of IVs that are different from the BS ones. This is what i think is called "fitting". Those fitted IVs are the vol surface, the BS ones are discarded. Nov 10, 2020 at 16:43
• What do you mean by 'vols from a local volatility model' in your 2nd step? Note that Dupire's formula tells you the instantaneous volatility of the asset at spot S and time t, it is not a implied volatility for an option.
– ryc
Nov 12, 2020 at 12:53
• @ryc I am thinking that I could sort of minimise the distance between the implied volatility curve and the instantaneous volatility curve from Dupire .. and that new number is a "fitted" volatility curve. Or is this nonsense? Why not just use Dupire to build the surface, and forget the BSIVs? My basic understanding, is that my fitted vol should fall between the bid/ask on each BSIV. So i will use Dupire to get a vol number, then i fit that to the market implied vol to get a third vol number optimally between the other two. I plot this third vol. Btw, I intend to create a new surface every day. Nov 13, 2020 at 11:11