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.
Is it true that caps volatility surface is arbitrage-free if and only if the corresponding caplets volatility surface is arbitrage-free? Is it possible to check the absence of an arbitrage directly on caps without building the corresponding caplets surface? Note that we can't trade individual caplets constituting caps.
Any help, links to resources and thoughts on that matter will be greatly appreciated.