コード例 #1
0
ファイル: report.py プロジェクト: xuover/gs-quant
 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
コード例 #2
0
 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
コード例 #3
0
ファイル: test_reports.py プロジェクト: xuover/gs-quant
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