Skip to content

plot_pnl_histogram


function backtide.analysis.pnl_histogram.plot_pnl_histogram(runs, bins=None, title=None, legend="upper right", figsize=(900, 600), filename=None, display=True)[source]

Create a histogram of per-trade PnL for one or more strategy runs.

Each strategy plots its own histogram overlaid on the same axes, so the shape and skew of the trade-PnL distribution can be easily compared.

Parameters

runs : RunResult | list[RunResult]

The per-strategy results to plot.

bins : int | None, default=None
Number of histogram bins. If None, Plotly's default binning algorithm is used.

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

legend : str | dict | None, default="upper right"
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_pnl

Create a PnL-over-time chart for one or more strategy runs.

plot_trade_duration

Create a histogram of trade durations for one or more strategy runs.

plot_trade_pnl

Create a per-trade PnL over time plot for one or more strategy runs.


Example

>>> from backtide.analysis import plot_pnl_histogram
>>> from backtide.storage import query_experiments, query_strategy_runs

>>> exp = query_experiments().iloc[0]
>>> runs = query_strategy_runs(exp.id)
>>> plot_pnl_histogram(runs)