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']]
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'])
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', ()))
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)