portfolio_toolkit.position.closed package

Submodules

portfolio_toolkit.position.closed.closed_position module

class portfolio_toolkit.position.closed.closed_position.ClosedPosition(ticker: str, buy_price: float, quantity: float, buy_date: str, sell_price: float, sell_date: str)[fuente]

Bases: Position

buy_date: str
sell_price: float
sell_date: str
value: float
profit: float
return_percentage: float
classmethod to_list(positions: List[ClosedPosition]) List[fuente]

Convert a list of Position objects to a pandas DataFrame.

classmethod to_dataframe(positions: List[ClosedPosition]) DataFrame[fuente]

Convert a list of Position objects to a pandas DataFrame.

__init__(ticker: str, buy_price: float, quantity: float, buy_date: str, sell_price: float, sell_date: str) None
ticker: str
buy_price: float
quantity: float
cost: float

portfolio_toolkit.position.closed.closed_position_list module

class portfolio_toolkit.position.closed.closed_position_list.ClosedPositionList(positions: List[ClosedPosition])[fuente]

Bases: object

__init__(positions: List[ClosedPosition])[fuente]
classmethod from_portfolio(portfolio: List[PortfolioAsset], from_date: str, to_date: str) ClosedPositionList[fuente]

Create ClosedPositionList from a portfolio.

get_stats(date: str) Dict[str, Any][fuente]
to_list() List[dict][fuente]

Convert to a list of dictionaries.

to_dataframe() DataFrame[fuente]

Convert to a pandas DataFrame.

portfolio_toolkit.position.closed.get_closed_positions_stats module

portfolio_toolkit.position.closed.get_closed_positions_stats.get_closed_positions_stats(positions: ClosedPositionList, date: str) Dict[str, Any][fuente]

Calculates a summary of closed positions with key metrics.

Parámetros:
  • positions (List[ClosedPosition]) – List of ClosedPosition objects representing closed positions.

  • date (str) – The date for which the positions are calculated.

Devuelve:

Dictionary containing summary metrics:
  • date: Reference date

  • total_positions: Total number of positions

  • winning_positions: Number of profitable positions

  • losing_positions: Number of unprofitable positions

  • win_rate: Win rate percentage

  • total_profit: Total profit/loss

  • best_return: Best return percentage

  • best_ticker: Ticker with best performance

  • worst_return: Worst return percentage

  • worst_ticker: Ticker with worst performance

Tipo del valor devuelto:

Dict[str, Any]

portfolio_toolkit.position.closed.get_closed_positions_stats.print_closed_positions_summary(positions: ClosedPositionList, date: str) None[fuente]

Prints a summary of closed positions with key metrics only.

This function uses get_closed_positions_summary() and formats the output.

Parámetros:
  • positions (List[ClosedPosition]) – List of ClosedPosition objects representing closed positions.

  • date (str) – The date for which the positions are printed.

Devuelve:

None

portfolio_toolkit.position.closed.list_from_portfolio module

portfolio_toolkit.position.closed.list_from_portfolio.get_closed_positions(assets: List[PortfolioAsset], from_date: str, to_date: str) ClosedPositionList[fuente]

Calculates all closed positions for multiple assets using FIFO logic up to a specific date.

Parámetros:
  • assets (List[PortfolioAsset]) – List of PortfolioAsset objects containing transactions.

  • date (str) – The date up to which closed positions are calculated (YYYY-MM-DD).

Devuelve:

List of all ClosedPosition objects from all assets.

Tipo del valor devuelto:

ClosedPositionList

portfolio_toolkit.position.closed.list_from_portfolio.get_asset_closed_positions(asset: PortfolioAsset, from_date: str, to_date: str) List[ClosedPosition][fuente]

Calculates all closed positions for an asset using FIFO logic up to a specific date. Each “sell” transaction closes positions from the oldest “buy” transactions.

Parámetros:
  • asset (dict) – Asset dictionary containing transactions.

  • date (str) – The date up to which closed positions are calculated (YYYY-MM-DD).

Devuelve:

List of ClosedPosition objects representing closed positions.

Tipo del valor devuelto:

List[ClosedPosition]

portfolio_toolkit.position.closed.plot_closed_positions module

portfolio_toolkit.position.closed.plot_closed_positions.plot_closed_positions(closed_positions: List[ClosedPosition]) BarChartData[fuente]

Plot closed positions grouped by month of sale

portfolio_toolkit.position.closed.plot_closed_positions.plot_closed_positions_by_ticker(closed_positions: List[ClosedPosition]) BarChartData[fuente]

Plot closed positions grouped by ticker

portfolio_toolkit.position.closed.plot_closed_positions.plot_closed_positions_count_by_month(closed_positions: List[ClosedPosition]) BarChartData[fuente]

Plot count of closed positions by month

Module contents

class portfolio_toolkit.position.closed.ClosedPosition(ticker: str, buy_price: float, quantity: float, buy_date: str, sell_price: float, sell_date: str)[fuente]

Bases: Position

__init__(ticker: str, buy_price: float, quantity: float, buy_date: str, sell_price: float, sell_date: str) None
classmethod to_dataframe(positions: List[ClosedPosition]) DataFrame[fuente]

Convert a list of Position objects to a pandas DataFrame.

classmethod to_list(positions: List[ClosedPosition]) List[fuente]

Convert a list of Position objects to a pandas DataFrame.

buy_date: str
sell_price: float
sell_date: str
value: float
profit: float
return_percentage: float
ticker: str
buy_price: float
quantity: float
cost: float
class portfolio_toolkit.position.closed.ClosedPositionList(positions: List[ClosedPosition])[fuente]

Bases: object

__init__(positions: List[ClosedPosition])[fuente]
classmethod from_portfolio(portfolio: List[PortfolioAsset], from_date: str, to_date: str) ClosedPositionList[fuente]

Create ClosedPositionList from a portfolio.

get_stats(date: str) Dict[str, Any][fuente]
to_dataframe() DataFrame[fuente]

Convert to a pandas DataFrame.

to_list() List[dict][fuente]

Convert to a list of dictionaries.