def result(self): """ :return: a Pandas DataFrame containing the results of the report job """ status = self.status() if status == ReportStatus.cancelled: raise MqValueError( 'This report job in status "cancelled". Cannot retrieve results.' ) if status == ReportStatus.error: raise MqValueError( 'This report job is in status "error". Cannot retrieve results.' ) if status != ReportStatus.done: raise MqValueError( 'This report job is not done. Cannot retrieve results.') if self.__report_type in [ ReportType.Portfolio_Factor_Risk, ReportType.Asset_Factor_Risk ]: results = GsReportApi.get_factor_risk_report_results( risk_report_id=self.__report_id, start_date=self.__start_date, end_date=self.__end_date) return pd.DataFrame(results) if self.__report_type == ReportType.Portfolio_Performance_Analytics: query = DataQuery(where={'reportId': self.__report_id}, start_date=self.__start_date, end_date=self.__end_date) results = GsDataApi.query_data( query=query, dataset_id=ReportDataset.PPA_DATASET.value) return pd.DataFrame(results) return None
def get_results(self, mode: FactorRiskResultsMode = FactorRiskResultsMode.Portfolio, factors: List[str] = None, factor_categories: List[str] = None, start_date: dt.date = None, end_date: dt.date = None, currency: Currency = None, return_format: ReturnFormat = ReturnFormat.DATA_FRAME) -> Union[Dict, pd.DataFrame]: """ Get the raw results associated with the factor risk report :param mode: results mode; defaults to the portfolio level :param factors: optional list of factors; defaults to all of them :param factor_categories: optional list of factor categories; defaults to all of them :param start_date: start date :param end_date: end date :param currency: currency :param return_format: return format; defaults to a Pandas DataFrame, but can be manually set to ReturnFormat.JSON :return: risk report results """ results = GsReportApi.get_factor_risk_report_results(risk_report_id=self.id, view=mode.value, factors=factors, factor_categories=factor_categories, currency=currency, start_date=start_date, end_date=end_date) return pd.DataFrame(results) if return_format == ReturnFormat.DATA_FRAME else results
def test_get_factor_risk_report_results(mocker): mock_response = [ { "date": "2003-01-03", "factor": "Value", "factorCategory": "Style", "pnl": 0.002877605406002121, "exposure": 12.105457414400002, "sensitivity": 0.026861678358408886, "proportionOfRisk": 0.0038230454885067183 }, { "date": "2003-01-06", "factor": "Value", "factorCategory": "Style", "pnl": 0, "exposure": 12.1028697664, "sensitivity": 0.02668134999120776, "proportionOfRisk": 0.0036290846167489335 } ] # mock GsSession mocker.patch.object( GsSession.__class__, 'default_value', return_value=GsSession.get( Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', return_value=mock_response) # run test response = GsReportApi.get_factor_risk_report_results('reportId') GsSession.current._get.assert_called_with('/risk/factors/reports/reportId/results?') assert response == mock_response