Generally my question is: what are best practices for building FX volatility surfaces with Quantlib?
In FX options, I would like to price structures such as risk reversals, strangles and butterflies. Of interest are 10D and 25D structures. I want to evaluate the premium and greeks at different points in the lifetime of the option. More concrete: I want to create a backtest of, for example, selling 6M 25D butterflies daily for the past 20 years.
To do this, I would need to generate a volatility surface. A volatility surface in FX is build up by using market volatilities at 10D and 25D strikes. I would transform these delta strikes into real strikes, which are thus at different spot rates for different market tenors.
On stackexchange, there is an example of using a VannaVolgaBarrierEngine. This would seem a good method, but it only allows for 25D quotes. And my use case involves pricing vanilla European options, not barriers or anything exotic.
Therefore: what would be the best method (from https://quantlib-python-docs.readthedocs.io/en/latest/termstructures/volatility.html & https://quantlib-python-docs.readthedocs.io/en/latest/termstructures.html#sabr) for building an FX volatility surface?