Skip to content

plot_trade_pnl


function backtide.analysis.trade_pnl.plot_trade_pnl(runs, title=None, legend="upper left", figsize=(900, 600), filename=None, display=True)[source]

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

Each marker represents a single closed trade plotted at its exit timestamp. Useful to spot clustering of wins/losses, regime changes, and to compare the timing of returns across strategies.

Parameters

runs : RunResult | list[RunResult]

The per-strategy results to plot. Runs without trades are skipped.

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_pnl

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

plot_pnl_histogram

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

plot_trade_duration

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


Example

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

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