import%20marimo%0A%0A__generated_with%20%3D%20%220.18.4%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0Awith%20app.setup%3A%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20from%20qsmile%20import%20SampleDataReader%2C%20SVIModel%2C%20XCoord%2C%20YCoord%2C%20fit%0A%0A%20%20%20%20reader%20%3D%20SampleDataReader()%0A%20%20%20%20return%20SVIModel%2C%20XCoord%2C%20YCoord%2C%20fit%2C%20reader%0A%0A%0A%40app.cell%0Adef%20_(reader)%3A%0A%20%20%20%20chain_dirty%20%3D%20reader.get_chain(%22SPX%22%2C%20%222026-04-03%22%2C%20%222026-06-30%22)%0A%20%20%20%20chain_dirty%0A%20%20%20%20return%20(chain_dirty%2C)%0A%0A%0A%40app.cell%0Adef%20_(chain_dirty)%3A%0A%20%20%20%20chain_clean%20%3D%20chain_dirty.filter()%0A%20%20%20%20chain_clean%0A%20%20%20%20return%20(chain_clean%2C)%0A%0A%0A%40app.cell%0Adef%20_(chain_clean)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(10%2C%205))%0A%20%20%20%20chain_clean.plot(ax%3D_ax)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(chain_clean)%3A%0A%20%20%20%20vldta%20%3D%20chain_clean.to_vols()%0A%20%20%20%20return%20(vldta%2C)%0A%0A%0A%40app.cell%0Adef%20_(vldta)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(10%2C%205))%0A%20%20%20%20vldta.plot(ax%3D_ax)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(SVIModel%2C%20fit%2C%20vldta)%3A%0A%20%20%20%20%23%20fixed_strike_vols%20%3D%20chain.filter().to_vols()%0A%20%20%20%20result%20%3D%20fit(vldta%2C%20model%3DSVIModel)%0A%20%20%20%20model%20%3D%20result.model%0A%20%20%20%20return%20(model%2C)%0A%0A%0A%40app.cell%0Adef%20_(XCoord%2C%20YCoord%2C%20model%2C%20vldta)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(10%2C%205))%0A%20%20%20%20space%20%3D%20XCoord.StandardisedStrike%2C%20YCoord.TotalVariance%0A%20%20%20%20space%20%3D%20XCoord.FixedStrike%2C%20YCoord.Volatility%0A%20%20%20%20vldta.transform(*space).plot(ax%3D_ax)%0A%20%20%20%20model.transform(*space).plot(ax%3D_ax)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
12765eebaae26ea8bb155142615d225a