Hedging of an option book in an incomplete market with transaction costs is an important problem in finance that many banks have to solve on a daily basis. In this paper we develop a stochastic programming (SP) model for the hedging problem in a realistic setting, where all transactions take place at observed bid and ask prices. The SP model relies on a realistic modelling of the important risk factors for the application, the price of the underlying security and the volatility surface. The volatility surface is unobservable and must be estimated from a cross-section of observed option quotes that contain noise and possibly arbitrage. In order to produce arbitrage-free volatility surfaces with high quality as input to the SP model a novel non-parametric estimation method is used. The dimension of the volatility surface is infinite and in order to be able solve the problem numerically we use discretization and PCA to reduce the dimensions of the problem. Testing the model out-of-sample for options on the Swedish OMXS30 index, we show that the SP model is able to produce a hedge that has both a lower realized risk and cost compared with dynamic delta and delta-vega hedging strategies.