Gaussian Sampling#
Here we sample the gaussian OU process for different mean reversion speed and number of paths.
Interactive notebook not enabled in docs - how to run it interactively?
The widget below is not enabled in the documentation. You can run the notebook to see the widget in action, see contributing for instructions on how to run the notebook.
from quantflow.sp.ou import Vasicek
from quantflow.utils import plot
import ipywidgets as widgets
import plotly.graph_objects as go
def simulate():
pr = Vasicek(rate=0.5, kappa=kappa.value)
paths = pr.sample(samples.value, 1, 1000)
pdf = paths.pdf(num_bins=50)
pdf["simulation"] = pdf["pdf"]
pdf["analytical"] = pr.marginal(1).pdf(pdf.index)
return pdf
def on_intensity_change(change):
df = simulate()
fig.data[0].x = df.index
fig.data[0].y = df["simulation"]
fig.data[1].x = df.index
fig.data[1].y = df["analytical"]
kappa = widgets.FloatSlider(description="mean reversion", min=0.1, max=5)
samples = widgets.IntSlider(description="paths", min=100, max=10000, step=100)
kappa.value = 1
samples.value = 1000
kappa.observe(on_intensity_change)
samples.observe(on_intensity_change)
df = simulate()
simulation = go.Bar(x=df.index, y=df["simulation"], name="simulation")
analytical = go.Scatter(x=df.index, y=df["analytical"], name="analytical")
fig = go.FigureWidget(data=[simulation, analytical])
widgets.VBox([kappa, samples, fig])
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[1], line 31
29 simulation = go.Bar(x=df.index, y=df["simulation"], name="simulation")
30 analytical = go.Scatter(x=df.index, y=df["analytical"], name="analytical")
---> 31 fig = go.FigureWidget(data=[simulation, analytical])
33 widgets.VBox([kappa, samples, fig])
File ~/.cache/pypoetry/virtualenvs/quantflow-lUXkzsy2-py3.12/lib/python3.12/site-packages/plotly/missing_anywidget.py:13, in FigureWidget.__init__(self, *args, **kwargs)
12 def __init__(self, *args, **kwargs):
---> 13 raise ImportError("Please install anywidget to use the FigureWidget class")
ImportError: Please install anywidget to use the FigureWidget class