コード例 #1
0
 def get_latest_positions(cls,
                          portfolio_id: str,
                          position_type: str = 'close') -> PositionSet:
     url = '/portfolios/{id}/positions/last?type={ptype}'.format(
         id=portfolio_id, ptype=position_type)
     position_sets = GsSession.current._get(url, cls=PositionSet)['results']
     return position_sets[0] if len(position_sets) > 0 else PositionSet()
コード例 #2
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')
            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))
        if len(position_set.positions) > 0:
            GsPortfolioApi.update_positions(self.__id, [position_set])
コード例 #3
0
ファイル: portfolios.py プロジェクト: stephen-183/gs-quant
 def get_position_set_by_position_type(
         cls, positions_type: str,
         positions_id: str) -> Tuple[Instrument, ...]:
     root = 'deals' if positions_type == 'ETI' else 'books/' + positions_type
     url = '/risk-internal/{}/{}/positions'.format(root, positions_id)
     results = GsSession.current._get(url, timeout=181)
     return [PositionSet.from_dict(res) for res in results['positionSets']]
コード例 #4
0
ファイル: portfolios.py プロジェクト: xuover/gs-quant
 def get_position_set_by_position_type(cls, positions_type: str, positions_id: str,
                                       activity_type: str = 'position') -> Tuple[Instrument, ...]:
     root = 'deals' if positions_type == 'ETI' else 'books/' + positions_type
     if activity_type != 'position':
         url = '/risk-internal/{}/{}/positions?activityType={}'.format(root, positions_id, activity_type)
     else:
         url = '/risk-internal/{}/{}/positions'.format(root, positions_id)
     results = GsSession.current._get(url, timeout=181)
     return tuple(PositionSet.from_dict(res) for res in results['positionSets'])
コード例 #5
0
ファイル: portfolios.py プロジェクト: samwu101/GS-Bot
    def get_positions(cls, portfolio_id: str, start_date: dt.date = None, end_date: dt.date = None, position_type: str = 'close') -> Tuple[PositionSet, ...]:
        url = '/portfolios/{id}/positions?type={positionType}'.format(id=portfolio_id, positionType=position_type)
        if start_date is not None:
            url += '&startDate={sd}'.format(sd=start_date.isoformat())
        if end_date is not None:
            url += '&endDate={sd}'.format(sd=end_date.isoformat())

        res = GsSession.current._get(url)
        return tuple(PositionSet.from_dict(v) for v in res.get('positionSets', ()))
コード例 #6
0
ファイル: portfolios.py プロジェクト: xuover/gs-quant
    def get_latest_positions(cls, portfolio_id: str, position_type: str = 'close') -> Union[PositionSet, dict]:
        url = '/portfolios/{id}/positions/last?type={ptype}'.format(id=portfolio_id, ptype=position_type)
        results = GsSession.current._get(url)['results']

        # Annoyingly, different types are returned depending on position_type

        if isinstance(results, dict) and 'positions' in results:
            results['positions'] = tuple(Position.from_dict(p) for p in results['positions'])

        return PositionSet.from_dict(results)
コード例 #7
0
ファイル: portfolios.py プロジェクト: qg0/gs-quant
 def get_positions_for_date(cls,
                            portfolio_id: str,
                            position_date: dt.date,
                            position_type: str = 'close') -> PositionSet:
     url = '/portfolios/{id}/positions/{date}?type={ptype}'.format(
         id=portfolio_id,
         date=position_date.isoformat(),
         ptype=position_type)
     position_sets = GsSession.current._get(url, cls=PositionSet)['results']
     return position_sets[0] if len(position_sets) > 0 else PositionSet()
コード例 #8
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,))
コード例 #9
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=dt.date.today(),
            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, ))