Suppose that one has a caps/floors volatility surface and wants to check whether this surface admits arbitrage. What is the theoretical and practical way to do it?
Lets talk only about caps for simplicity, since a cap and a floor with the same strike and expiry have the same volatility (similarly to vanilla call and put options). An interest rate cap is a series of individual vanilla call options (caplets) on the interest rate. Given a flat cap volatility (the one that correctly reprices the cap as a sum of caplets with the flat volatility) one can derive spot volatilites of individual caplets via a procedure known as caplet volatility stripping. Therefore it is possible to build a caplet volatility surface from the given cap volatility surface, i.e. a volatility surface of vanilla European call options constituting caps. Note however that we can't trade individual caplets constituting caps.
I asked this question on the Quantitative Finance StackExchange and got an answer suggesting that a necessary and sufficient condition for an arbitrage-free cap volatility surface is the existence of a corresponding caplet volatility surface, however I can't figure out how one came to such a conclusion. Is that true? Can anyone provide a more rigorous explanation how existence of a caplet volatility surface is a necessary and sufficient condition for a no-arbitrage on caps? When given the cap quotes for various strikes and tenors the corresponding caplet volatility surface does not exist?
Any help, links to resources and thoughts on that matter will be greatly appreciated.