Ejemplo n.º 1
0
    def get_portfolio_by_name(cls, name: str) -> Portfolio:
        ret = GsSession.current._get('/portfolios?name={}'.format(name))
        num_found = ret.get('totalResults', 0)

        if num_found == 0:
            raise ValueError('Portfolio {} not found'.format(name))
        elif num_found > 1:
            raise ValueError('More than one portfolio named {} found'.format(name))
        else:
            return Portfolio.from_dict(ret['results'][0])
Ejemplo n.º 2
0
def test_normalized_performance_default_aum():
    idx = pd.date_range('2020-01-02', freq='D', periods=3)
    expected = pd.Series(data=[1, 1 / 0.8, 1 / 0.6],
                         index=idx,
                         name='normalizedPerformance',
                         dtype='float64')

    with DataContext(datetime.date(2020, 1, 1), datetime.date(2019, 1, 3)):

        df = MarketDataResponseFrame(data=ppa_data, dtype="float64")
        replace = Replacer()

        # mock GsPortfolioApi.get_reports()
        mock = replace('gs_quant.api.gs.portfolios.GsPortfolioApi.get_reports',
                       Mock())
        mock.return_value = [
            Report.from_dict({
                'id': 'RP1',
                'positionSourceType': 'Portfolio',
                'positionSourceId': 'MP1',
                'type': 'Portfolio Performance Analytics',
                'parameters': {
                    'transactionCostModel': 'FIXED'
                }
            })
        ]

        # mock PerformanceReport.get_many_measures()
        mock = replace(
            'gs_quant.markets.report.PerformanceReport.get_many_measures',
            Mock())
        mock.return_value = df

        # mock PerformanceReport.get_custom_aum()
        mock = replace(
            'gs_quant.api.gs.portfolios.GsPortfolioApi.get_custom_aum', Mock())
        mock.return_value = aum

        # mock PerformanceReport.get()
        mock = replace('gs_quant.markets.report.PerformanceReport.get', Mock())
        mock.return_value = PerformanceReport(
            report_id='RP1',
            position_source_type='Portfolio',
            position_source_id='MP1',
            report_type='Portfolio Performance Analytics',
            parameters=ReportParameters(transaction_cost_model='FIXED'))

        mock = replace(
            'gs_quant.api.gs.portfolios.GsPortfolioApi.get_portfolio', Mock())
        mock.return_value = Portfolio('USD', 'P1', id_='MP1')

        actual = mr.normalized_performance('MP1', None)
        assert all(actual.values == expected.values)
        replace.restore()