Save Portfolio#

morningstar_data.direct.user_items.save_portfolio(
portfolio_name: str,
portfolio_type: PortfolioType,
holdings: DataFrame | None = None,
overwrite_if_exists: bool = False,
) DataFrame#
Save or update a portfolio.
Args:

portfolio_name (str): Name of the portfolio. portfolio_type (PortfolioType):Type of the portfolio. Supported portfolio types: client_accounts, model_portfolios, custom_benchmarks. overwrite_if_exists(bool): If True, an existing portfolio will be overwritten with new name and holdings. holdings:(DataFrame,’Optional’) : A DataFrame object containing holdings to save to this portfolio.

Returns:

DataFrame: A DataFrame object with portfolio id and name. The returned DataFrame columns include:

  • Name

  • Portfolio Id

Examples:

import morningstar_data as md from morningstar_data.direct.user_items.portfolio import PortfolioType

holdings_data_frame=DataFrame([[“FOUSA00DFS;FO”,”2020-10-31”, 33.33],

[“0P000002RH;ST”,”2020-10-31”,66.67]],

columns=[“HoldingId”,”Portfolio Date”,”Weight”])

df = md.direct.user_items.save_portfolio(portfolio_name=”new_portfolio”,

portfolio_type = PortfolioType.model_portfolios, holdings = holdings_data_frame, overwrite_if_exists=False)

df

Output:

Name Portfolio Id =============== ==================================== new_portfolio 295F7E59-15AC-4424-958E-3BD8B0A733EE

… ========================= ===============

Update existing list:

The returned DataFrame columns include:
  • Status

  • Name

  • Portfolio Id

  • Modified Date

Examples:

import morningstar_data as md
from morningstar_data.direct.user_items.portfolio import PortfolioType
holdings_data_frame=DataFrame([["FOUSA00DFS;FO","2020-05-31", 50],
                          ["0P000002RH;ST","2020-05-31",50]],
                columns=["HoldingId","Portfolio Date","Weight"])
df = md.direct.user_items.save_portfolio(portfolio_name="new_portfolio",
                                     portfolio_type = PortfolioType.model_portfolios,
                                     holdings= holdings_data_frame,
                                     overwrite_if_exists=True)
df
Output:

Name Portfolio Id =============== ==================================== new_portfolio 295F7E59-15AC-4424-958E-3BD8B0A733EE

… ========================= ===============