Source code for portfolio_toolkit.position.closed.closed_position_list

from typing import Any, Dict, Iterator, List

import pandas as pd

from portfolio_toolkit.asset import PortfolioAsset

from .closed_position import ClosedPosition


[docs] class ClosedPositionList:
[docs] def __init__(self, positions: List[ClosedPosition]): self.positions = positions
def __iter__(self) -> Iterator[ClosedPosition]: return iter(self.positions) def __len__(self) -> int: return len(self.positions) def __getitem__(self, idx): return self.positions[idx]
[docs] @classmethod def from_portfolio( cls, portfolio: List[PortfolioAsset], from_date: str, to_date: str ) -> "ClosedPositionList": """ Create ClosedPositionList from a portfolio. """ from .list_from_portfolio import get_closed_positions return get_closed_positions(portfolio, from_date, to_date)
[docs] def get_stats(self, date: str) -> Dict[str, Any]: from .get_closed_positions_stats import get_closed_positions_stats return get_closed_positions_stats(self, date)
[docs] def to_list(self) -> List[dict]: """Convert to a list of dictionaries.""" return ClosedPosition.to_list(self.positions)
[docs] def to_dataframe(self) -> pd.DataFrame: """Convert to a pandas DataFrame.""" return ClosedPosition.to_dataframe(self.positions)