Skip to content

plot_position_size


function backtide.analysis.position_size.plot_position_size(run, symbols=None, title=None, legend="upper left", figsize=(900, 600), filename=None, display=True)[source]

Create a position-size over time chart for a single strategy run.

Reconstructs the held quantity per symbol from the run's filled orders and renders one-step line per symbol. Positive values are long positions, negative values are short.

Parameters

run : RunResult

The strategy run to plot.

symbols : list[str] | None, default=None
List of symbols to include in the plot. If None or empty, all traded symbols are included.

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_price

Create a price line chart.

OrderRecord

A record of an order as resolved by the engine.


Example

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

>>> exp = query_experiments().iloc[0]
>>> run = query_strategy_runs(exp.id)[-1]
>>> plot_position_size(run)