Source code for portfolio_toolkit.position.open.open_position_list

from typing import Iterator, List

import pandas as pd

from portfolio_toolkit.asset import PortfolioAsset
from portfolio_toolkit.plot.pie_chart_data import PieChartData

from .open_position import OpenPosition


[docs] class OpenPositionList:
[docs] def __init__(self, positions: List[OpenPosition]): self.positions = positions
def __iter__(self) -> Iterator[OpenPosition]: 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], date: str ) -> "OpenPositionList": """ Create OpenPositionList from a portfolio. """ from .list_from_portfolio import get_open_positions return get_open_positions(portfolio, date)
[docs] def get_pie_chart_data(self, group_by: str = "Ticker") -> PieChartData: from .pie_chart_data import get_pie_chart_data return get_pie_chart_data(self, group_by=group_by)
[docs] def to_list(self) -> List[dict]: """Convert to a list of dictionaries.""" return OpenPosition.to_list(self.positions)
[docs] def to_dataframe(self) -> pd.DataFrame: """Convert to a pandas DataFrame.""" return OpenPosition.to_dataframe(self.positions)