Example #1
0
 def get(cls, portfolio_id: str = None, portfolio_name: str = None):
     if portfolio_name:
         portfolio = GsPortfolioApi.get_portfolio_by_name(portfolio_name)
         portfolio_id = portfolio.id
     position_date = PositionContext.current.position_date if PositionContext.is_entered else dt.date.today(
     )
     portfolio = GsPortfolioApi.get_portfolio(portfolio_id)
     ret = Portfolio(name=portfolio.name)
     ret.__id = portfolio_id
     ret._get_instruments(position_date, True)
     return ret
Example #2
0
    def save(self):
        if not self.name:
            raise ValueError('name not set')

        try:
            portfolio_id = GsPortfolioApi.get_portfolio_by_name(self.name).id
        except ValueError:
            from gs_quant.target.portfolios import Portfolio as MarqueePortfolio
            portfolio_id = GsPortfolioApi.create_portfolio(MarqueePortfolio('USD', self.name)).id
            _logger.info('Created Marquee portfolio with ID: {}'.format(portfolio_id))

        position_set = PositionSet(
            position_date=dt.date.today(),
            positions=tuple(Position(asset_id=GsAssetApi.get_or_create_asset_from_instrument(i))
                            for i in self.instruments))

        GsPortfolioApi.update_positions(portfolio_id, (position_set,))
Example #3
0
    def save(self, overwrite: Optional[bool] = False):
        if self.portfolios:
            raise ValueError('Cannot save portfolios with nested portfolios')

        if self.__id:
            if not overwrite:
                raise ValueError(
                    f'Portfolio with id {id} already exists. Use overwrite=True to overwrite'
                )
        else:
            if not self.__name:
                raise ValueError('name not set')

            try:
                self.__id = GsPortfolioApi.get_portfolio_by_name(
                    self.__name).id
                if not overwrite:
                    raise RuntimeError(
                        f'Portfolio {self.__name} with id {self.__id} already exists. Use overwrite=True to overwrite'
                    )
            except ValueError:
                from gs_quant.target.portfolios import Portfolio as MarqueePortfolio
                self.__id = GsPortfolioApi.create_portfolio(
                    MarqueePortfolio('USD', self.__name)).id
                _logger.info(
                    f'Created Marquee portfolio {self.__name} with id {self.__id}'
                )

        position_set = PositionSet(
            position_date=self.__position_context.position_date,
            positions=tuple(
                Position(
                    asset_id=GsAssetApi.get_or_create_asset_from_instrument(i))
                for i in self.instruments))

        GsPortfolioApi.update_positions(self.__id, [position_set])
Example #4
0
 def load_from_portfolio_name(name: str):
     portfolio = GsPortfolioApi.get_portfolio_by_name(name)
     return Portfolio.load_from_portfolio_id(portfolio.id)
Example #5
0
 def from_portfolio_name(name: str):
     portfolio = GsPortfolioApi.get_portfolio_by_name(name)
     ret = Portfolio.load_from_portfolio_id(portfolio.id)
     ret.name = name
     return ret