Skip to content

plot_volatility


function backtide.analysis.volatility.plot_volatility(data, price_col="close", window=21, title=None, legend="upper left", figsize=(900, 600), filename=None, display=True)[source]

Create a rolling volatility chart.

Plots the rolling standard deviation of percentage returns over a configurable window for one or more symbols. Useful for tracking how risk evolves over time and comparing volatility regimes.

Parameters

data : pd.DataFrame | pl.DataFrame

Input data containing columns symbol, the column specified by price_col, and dt with the datetime.

price_col : str, default="close"
Column name used to compute returns.

window : int, default=21
Rolling window size (number of bars) for computing volatility.

title : str | dict | None, default=None
Title for the plot.

legend : str | dict | None, default="upper left"
Legend for the plot. See the user guide for an extended description of the choices.

  • If None: No legend is shown.
  • If str: Position to display the legend.
  • If dict: Legend configuration.

figsize : tuple[int, int], default=(900, 600)
Figure's size in pixels, format as (x, y).

filename : str | Path | None, default=None
Save the plot using this name. The type of the file depends on the provided name (.html, .png, .pdf, etc...). If filename has no file type, the plot is saved as .html. If None, the plot isn't saved.

display : bool | None, default=True
Whether to render the plot. If None, it returns the figure.

Returns

Figure | None

The Plotly figure object. Only returned if display=None.


See Also

plot_drawdown

Create a drawdown chart.

plot_returns

Create a returns distribution histogram.

plot_seasonality

Create a seasonality heatmap.


Example

>>> import pandas as pd

>>> from backtide.storage import query_bars
>>> from backtide.analysis import plot_volatility

>>> df = query_bars("AAPL", "1d")
>>> plot_volatility(df, window=21)