I constructed the local volatility surface of S&P 500 from implied vols and was able to price the options accurately using Monte-Carlo. Let's say I priced a 80% of S0 put option with S0 = 4000. How do I approach the MonteCarlo pricing of this 80% put option if my S moves to 4100 instantaneously? My question is I want to know the price of the option if index moves 100 points? (No other information is available). In my montecarlo simulation i just changed the starting level but does the starting vol for the first time step also changes? Can I use the same local vol surface in all my time steps ? I couldn't match the price of Bloomberg (OVME scenarios tab) if my S shifts 100 points?
There is in my opinion no way you will match OVME (without extreme effort and attention to detail).
- OVME is not MC. If you want to compare like for like, use DLIB.
- The vol surface you use vs what BBG uses is almost certainly different. If you use BBG
moneynessfields you will get the LIVE surface and not
BVOLwhich is used in LV. The latter cannot be loaded in excel or via API without an additional subscription. If you built it yourself, it is highly unlikely you match the mixed lognormal approach of BBG.
- Probably even LV implementation will be different in itself. BBG uses "simply" a grid and non parametric form according to the white paper (I have not read it recently, but that is certainly the case in FX and most likely in equity as well).
- You will need to know (exactly) what BBG does in the scenario shift with local vol. I am not sure about OVME but MARS uses
SHOC, which has a setting to compute scenarios as stick to moneyness or stick to strike.
At the end of the day, if you are confident you have done it correctly and according to general market practice (or whatever paper you prefer), it does not matter so much if you match BBG or not.